Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
;/* ; * Microsoft Confidential ; * Copyright (C) Microsoft Corporation 1991 ; * All Rights Reserved. ; */ data segment public 'DATA'
; ;*************************************************************************** ; Equates ;*************************************************************************** ;
;Match Flags
Numeric_Value equ 8000h ; ;AN000; Signed_Numeric_Value equ 4000h ; ;AN000; Simple_String equ 2000h ; ;AN000; Date_String equ 1000h ; ;AN000; Time_String equ 0800h ; ;AN000; Complex_List equ 0400h ; ;AN000; Filespec equ 0200h ; ;AN000; Drive_Only equ 0100h ; ;AN000; Quoted_String equ 0080h ; ;AN000; Ignore_Colon equ 0010h ; ;AN000; Repeats_Allowed equ 0002h ; ;AN000; Optional equ 0001h ; ;AN000;
;Function_Flags
File_Table_Capitalize equ 1 ; ;AN000;
;Result buffer type returned rb_Number equ 1 rb_List_Index equ 2 rb_String equ 3 rb_Complex equ 4 rb_Filespec equ 5 rb_Drive equ 6 rb_Date equ 7 rb_Time equ 8 rb_Quoted_String equ 9
;Extra delimeters and EOL
Delimiters_Only equ 1 ; ;AN000; EOL_Or_Delimiters equ 2 ; ;AN000;
Semi_Colon equ ";" ; ;AN000; Tab equ 09h ; ;AN000; Colon1 equ ":" ; ;AN000; NUL equ "0"
;Parse Errors
No_Error equ 0 ; ;AN000; Too_Many_Operands equ 1 ; ;AN000; Operand_Missing equ 2 ; ;AN000; Not_In_Switch_List equ 3 ; ;AN000; Not_In_Keyword_List equ 4 ; ;AN000; Out_Of_Range equ 6 ; ;AN000; Not_In_Value_List equ 7 ; ;AN000; Not_In_String_List equ 8 ; ;AN000; Syntax_Error equ 9 ; ;AN000; End_Of_Parse equ -1 ; ;AN000;
;Other
None equ 0 ; ;AN000; No_Error equ 0 ; ;AN000; Switch_Found equ 0FFFFh ; ;AN000; Range_Ok equ 1 ; ;AN000; Command_Line_Parms equ 81h ; ;AN000;
; ;***************************************************************************** ; Parse Structures ;***************************************************************************** ;
Control struc
Match_Flags dw ? Function_Flags dw ? Result dw ? Values dw ? Num_Keywords db ? Keyword db ?
Control ends
File_Name_Return struc ; ;AN000;
Drive_Type db 0 ; ;AN000; Drive_Item_Tag db 0 ; ;AN000; Synonym dw 0 ; ;AN000; String_Value_ptr db 0 ;File Name ;AN000;
File_Name_Return ends ; ;AN000;
; ;************************************************************************** ; Parse tables ;************************************************************************** ;
Command_Line_Table label byte ; ;AN000;
dw Command_Control ;Point to next level ;AN000; db Delimiters_Only ; ;AN000; db 1 ; ;AN000; db Semi_Colon ; ;AN000;
; ;************************************************************************** ; Define Positionals, Switches and Keywords ;************************************************************************** ;
Command_Control label byte ; ;AN000;
db 1,2 ;File names Positional (1 required) ;AN000; dw Positional_Control1 ;Pointer to control table ;AN000; dw Positional_Control2 ;Pointer to control table ;AN000; db 1 ; 1 switch dw Switch_Control1 ; Pointer to control table db None ;No Keywords (maxk) ;AN000;
; ;************************************************************************** ;Control Tables ;************************************************************************** ;
Positional_Control1 label byte ; ;AN000;
dw Filespec ;Match_Flag ;AN000; dw File_Table_Capitalize ;No function flags ;AN000; dw File_Name_Buffer1 ;Where it will be returned ;AN000; dw No_Value ;No value ranges defined ;AN000; db None ;No defined switches/keywords ;AN000;
Positional_Control2 label byte ; ;AN000;
dw Filespec+Optional ;Match_Flag ;AN000;
dw File_Table_Capitalize ;No function flags ;AN000; dw File_Name_Buffer2 ;Where it will be returned ;AN000; dw No_Value ;No value ranges defined ;AN000; db None ;No defined switches/keywords ;AN000;
Switch_Control1 label byte ; used by /?
dw 0 ; Match Mask dw 0 ; Func Mask dw Switch_Buffer1 ; ptr to Results dw No_Value ; ptr to Value db 1 ; # of synonyms sw1_s1 db "/?",0 ; 1st synonym
No_Value label byte ; ;AN000; db 0 ; ;AN000;
; ;************************************************************************ ; PARSE Return Buffers ;************************************************************************ ; File_name_Buffer1 label byte ; ;AN000;
rb_type1 db 0 ;type returned ;AN000; rb_item_tag1 db 0 ;matched item tag ;AN000; rb_synonym1 dw 0 ;found synonyms ;AN000; rb_string1_off dw 0 ;Offset of string ;AN000; rb_string1_seg dw 0 ;Offset of string ;AN000;
File_name_Buffer2 label byte ; ;AN000;
rb_type2 db 0 ;type returned ;AN000; rb_item_tag2 db 0 ;matched item tag ;AN000; rb_synonym2 dw 0 ;found synonyms ;AN000; rb_string2_off dw 0 ;Offset of string ;AN000; rb_string2_seg dw 0 ;Offset of string ;AN000;
Switch_Buffer1 label byte ; used by /?
sw_type1 db 0 ; type returned sw_tag1 db 0 ; matched item tag sw_synonym1 dw 0 ; found synonym sw_padding1 dd 0 ; pad it out
data ends
|