Annotation of mstools/h/winnt.h, revision 1.1.1.1

1.1       root        1: /*++ BUILD Version: 0047    // Increment this if a change has global effects
                      2: 
                      3: Copyright (c) 1990  Microsoft Corporation
                      4: 
                      5: Module Name:
                      6: 
                      7:     winnt.h
                      8: 
                      9: Abstract:
                     10: 
                     11:     This module defines the 32-Bit Windows types and constants that are
                     12:     defined by NT, but exposed through the Win32 API.
                     13: 
                     14: Created:
                     15: 
                     16:     18-Sep-1990
                     17: 
                     18: Revision History:
                     19: 
                     20: --*/
                     21: 
                     22: #ifndef _WINNT_
                     23: #define _WINNT_
                     24: 
                     25: #ifdef MIPS                   
                     26: #define UNALIGNED __unaligned 
                     27: #else                         
                     28: #define UNALIGNED             
                     29: #endif                        
                     30: typedef void *PVOID;    
                     31: 
                     32: //
                     33: // Basics
                     34: //
                     35: 
                     36: #ifndef VOID
                     37: #define VOID    void
                     38: typedef char CHAR;
                     39: typedef short SHORT;
                     40: typedef long LONG;
                     41: #endif
                     42: 
                     43: //
                     44: // UNICODE
                     45: //
                     46: 
                     47: typedef unsigned short WCHAR;    // wc,   16-bit UNICODE character
                     48: typedef WCHAR *LPWCH, *PWCH;     // pwc
                     49: typedef WCHAR *LPWSTR, *PWSTR;   // pwsz, 0x0000 terminated UNICODE strings only
                     50: 
                     51: 
                     52: //
                     53: // Portable UNICODE types and macros
                     54: //
                     55: 
                     56: #ifdef  UNICODE
                     57: typedef WCHAR TCHAR;
                     58: #define TEXT(quote) L##quote
                     59: #else
                     60: typedef char TCHAR;
                     61: #define TEXT(quote) quote
                     62: #endif
                     63: 
                     64: typedef TCHAR  *LPTSTR;
                     65: 
                     66: typedef SHORT *PSHORT;  
                     67: typedef LONG *PLONG;    
                     68: typedef PVOID HANDLE;   
                     69: typedef HANDLE *PHANDLE;    
                     70: #define UNICODE_NULL ((WCHAR)0) 
                     71: #define MINCHAR     0x80        
                     72: #define MAXCHAR     0x7f        
                     73: #define MINSHORT    0x8000      
                     74: #define MAXSHORT    0x7fff      
                     75: #define MINLONG     0x80000000  
                     76: #define MAXLONG     0x7fffffff  
                     77: #define MAXBYTE     0xff        
                     78: #define MAXWORD     0xffff      
                     79: #define MAXDWORD    0xffffffff  
                     80: 
                     81: //
                     82: // Macros used to eliminate compiler warning generated when formal
                     83: // parameters or local variables are not declared.
                     84: //
                     85: // Use DBG_UNREFERENCED_PARAMETER() when a parameter is not yet
                     86: // referenced but will be once the module is completely developed.
                     87: //
                     88: // Use DBG_UNREFERENCED_LOCAL_VARIABLE() when a local variable is not yet
                     89: // referenced but will be once the module is completely developed.
                     90: //
                     91: // Use UNREFERENCED_PARAMETER() if a parameter will never be referenced.
                     92: //
                     93: // DBG_UNREFERENCED_PARAMETER and DBG_UNREFERENCED_LOCAL_VARIABLE will
                     94: // eventually be made into a null macro to help determine whether there
                     95: // is unfinished work.
                     96: //
                     97: 
                     98: #if ! (defined(lint) || defined(_lint))
                     99: #define UNREFERENCED_PARAMETER(P)          (P)
                    100: #define DBG_UNREFERENCED_PARAMETER(P)      (P)
                    101: #define DBG_UNREFERENCED_LOCAL_VARIABLE(V) (V)
                    102: 
                    103: #else // lint or _lint
                    104: 
                    105: // Note: lint -e530 says don't complain about uninitialized variables for
                    106: // this.  line +e530 turns that checking back on.  Error 527 has to do with
                    107: // unreachable code.
                    108: 
                    109: #define UNREFERENCED_PARAMETER(P)          \
                    110:     /*lint -e527 -e530 */ \
                    111:     { \
                    112:         (P) = (P); \
                    113:     } \
                    114:     /*lint +e527 +e530 */
                    115: #define DBG_UNREFERENCED_PARAMETER(P)      \
                    116:     /*lint -e527 -e530 */ \
                    117:     { \
                    118:         (P) = (P); \
                    119:     } \
                    120:     /*lint +e527 +e530 */
                    121: #define DBG_UNREFERENCED_LOCAL_VARIABLE(V) \
                    122:     /*lint -e527 -e530 */ \
                    123:     { \
                    124:         (V) = (V); \
                    125:     } \
                    126:     /*lint +e527 +e530 */
                    127: 
                    128: #endif // lint or _lint
                    129: 
                    130: 
                    131: /*lint -e767 */  // Don't complain about different definitions 
                    132: #define STATUS_WAIT_0                    ((DWORD   )0x00000000L)    
                    133: #define STATUS_ABANDONED_WAIT_0          ((DWORD   )0x00000080L)    
                    134: #define STATUS_TIMEOUT                   ((DWORD   )0x00000102L)    
                    135: #define STATUS_PENDING                   ((DWORD   )0x00000103L)    
                    136: #define STATUS_DATATYPE_MISALIGNMENT     ((DWORD   )0x80000002L)    
                    137: #define STATUS_BREAKPOINT                ((DWORD   )0x80000003L)    
                    138: #define STATUS_SINGLE_STEP               ((DWORD   )0x80000004L)    
                    139: #define STATUS_ACCESS_VIOLATION          ((DWORD   )0xC0000005L)    
                    140: #define STATUS_NONCONTINUABLE_EXCEPTION  ((DWORD   )0xC0000025L)    
                    141: #define STATUS_CONTROL_C_EXIT            ((DWORD   )0xC000013AL)    
                    142: /*lint +e767 */  // Resume checking for different macro definitions 
                    143: #define MAXIMUM_WAIT_OBJECTS 64     // Maximum number of wait objects
                    144: 
                    145: #define MAXIMUM_SUSPEND_COUNT MAXCHAR // Maximum times thread can be suspended
                    146: typedef DWORD KSPIN_LOCK;  
                    147: 
                    148: #ifdef i386
                    149: 
                    150: //
                    151: //  Define the size of the 80387 save area, which is in the context frame.
                    152: //
                    153: 
                    154: #define SIZE_OF_80387_ENVIRONMENT   108
                    155: #define SIZE_OF_80387_REGISTERS      80
                    156: 
                    157: //
                    158: // The following flags control the contents of the CONTEXT structure.
                    159: //
                    160: 
                    161: #define CONTEXT_i386    0x00010000    // this assumes that i386 and
                    162: #define CONTEXT_i486   0x00010000    // i486 have identical context records
                    163: 
                    164: #define CONTEXT_CONTROL         (CONTEXT_i386 | 0x00000001L) // SS:SP, CS:IP, FLAGS, BP
                    165: #define CONTEXT_INTEGER         (CONTEXT_i386 | 0x00000002L) // AX, BX, CX, DX, SI, DI
                    166: #define CONTEXT_SEGMENTS        (CONTEXT_i386 | 0x00000004L) // DS, ES, FS, GS
                    167: #define CONTEXT_FLOATING_POINT  (CONTEXT_i386 | 0x00000008L) // 387 state
                    168: #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | 0x00000010L) // DB 0-3,6,7
                    169: 
                    170: #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER |\
                    171:                      CONTEXT_SEGMENTS)
                    172: 
                    173: typedef struct _FLOATING_SAVE_AREA {
                    174:     DWORD   ControlWord;
                    175:     DWORD   StatusWord;
                    176:     DWORD   TagWord;
                    177:     DWORD   ErrorOffset;
                    178:     DWORD   ErrorSelector;
                    179:     DWORD   DataOffset;
                    180:     DWORD   DataSelector;
                    181:     BYTE    RegisterArea[SIZE_OF_80387_REGISTERS];
                    182: } FLOATING_SAVE_AREA;
                    183: 
                    184: typedef FLOATING_SAVE_AREA *PFLOATING_SAVE_AREA;
                    185: 
                    186: //
                    187: // Context Frame
                    188: //
                    189: //  This frame has a several purposes: 1) it is used as an argument to
                    190: //  NtContinue, 2) is is used to constuct a call frame for APC delivery,
                    191: //  and 3) it is used in the user level thread creation routines.
                    192: //
                    193: //  The layout of the record conforms to a standard call frame.
                    194: //
                    195: 
                    196: typedef struct _CONTEXT {
                    197: 
                    198:     //
                    199:     // The flags values within this flag control the contents of
                    200:     // a CONTEXT record.
                    201:     //
                    202:     // If the context record is used as an input parameter, then
                    203:     // for each portion of the context record controlled by a flag
                    204:     // whose value is set, it is assumed that that portion of the
                    205:     // context record contains valid context. If the context record
                    206:     // is being used to modify a threads context, then only that
                    207:     // portion of the threads context will be modified.
                    208:     //
                    209:     // If the context record is used as an IN OUT parameter to capture
                    210:     // the context of a thread, then only those portions of the thread's
                    211:     // context corresponding to set flags will be returned.
                    212:     //
                    213:     // The context record is never used as an OUT only parameter.
                    214:     //
                    215: 
                    216:     DWORD ContextFlags;
                    217: 
                    218:     //
                    219:     // This section is specified/returned if CONTEXT_DEBUG_REGISTERS is
                    220:     // set in ContextFlags.  Note that CONTEXT_DEBUG_REGISTERS is NOT
                    221:     // included in CONTEXT_FULL.
                    222:     //
                    223: 
                    224:     DWORD   Dr0;
                    225:     DWORD   Dr1;
                    226:     DWORD   Dr2;
                    227:     DWORD   Dr3;
                    228:     DWORD   Dr6;
                    229:     DWORD   Dr7;
                    230: 
                    231:     //
                    232:     // This section is specified/returned if the
                    233:     // ContextFlags word contians the flag CONTEXT_FLOATING_POINT.
                    234:     //
                    235: 
                    236:     FLOATING_SAVE_AREA FloatSave;
                    237: 
                    238:     //
                    239:     // This section is specified/returned if the
                    240:     // ContextFlags word contians the flag CONTEXT_SEGMENTS.
                    241:     //
                    242: 
                    243:     DWORD   SegGs;
                    244:     DWORD   SegFs;
                    245:     DWORD   SegEs;
                    246:     DWORD   SegDs;
                    247: 
                    248:     //
                    249:     // This section is specified/returned if the
                    250:     // ContextFlags word contians the flag CONTEXT_INTEGER.
                    251:     //
                    252: 
                    253:     DWORD   Edi;
                    254:     DWORD   Esi;
                    255:     DWORD   Ebx;
                    256:     DWORD   Edx;
                    257:     DWORD   Ecx;
                    258:     DWORD   Eax;
                    259: 
                    260:     //
                    261:     // This section is specified/returned if the
                    262:     // ContextFlags word contians the flag CONTEXT_CONTROL.
                    263:     //
                    264: 
                    265:     DWORD   Ebp;
                    266:     DWORD   Eip;
                    267:     DWORD   SegCs;              // MUST BE SANITIZED
                    268:     DWORD   EFlags;             // MUST BE SANITIZED
                    269:     DWORD   Esp;
                    270:     DWORD   SegSs;
                    271: 
                    272: } CONTEXT;
                    273: 
                    274: 
                    275: 
                    276: typedef CONTEXT *PCONTEXT;
                    277: 
                    278: #endif // i386
                    279: 
                    280: typedef struct _LDT_ENTRY {
                    281:     WORD    LimitLow;
                    282:     WORD    BaseLow;
                    283:     union {
                    284:         struct {
                    285:             BYTE    BaseMid;
                    286:             BYTE    Flags1;     // Declare as bytes to avoid alignment
                    287:             BYTE    Flags2;     // Problems.
                    288:             BYTE    BaseHi;
                    289:         } Bytes;
                    290:         struct {
                    291:             DWORD   BaseMid : 8;
                    292:             DWORD   Type : 5;
                    293:             DWORD   Dpl : 2;
                    294:             DWORD   Pres : 1;
                    295:             DWORD   LimitHi : 4;
                    296:             DWORD   Sys : 1;
                    297:             DWORD   Reserved_0 : 1;
                    298:             DWORD   Default_Big : 1;
                    299:             DWORD   Granularity : 1;
                    300:             DWORD   BaseHi : 8;
                    301:         } Bits;
                    302:     } HighWord;
                    303: } LDT_ENTRY, *PLDT_ENTRY;
                    304: 
                    305: 
                    306: #ifdef MIPS
                    307: 
                    308: //
                    309: // The following flags control the contents of the CONTEXT structure.
                    310: //
                    311: 
                    312: #define CONTEXT_R3000   0x00010000    // this assumes that r3000 and
                    313: #define CONTEXT_R4000   0x00010000    // r4000 have identical context records
                    314: 
                    315: #define CONTEXT_CONTROL         (CONTEXT_R3000 | 0x00000001L)
                    316: #define CONTEXT_FLOATING_POINT  (CONTEXT_R3000 | 0x00000002L)
                    317: #define CONTEXT_INTEGER         (CONTEXT_R3000 | 0x00000004L)
                    318: 
                    319: #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
                    320: 
                    321: //
                    322: // Context Frame
                    323: //
                    324: //  N.B. This frame must be exactly a multiple of 16 bytes in length.
                    325: //
                    326: //  This frame has a several purposes: 1) it is used as an argument to
                    327: //  NtContinue, 2) it is used to constuct a call frame for APC delivery,
                    328: //  3) it is used to construct a call frame for exception dispatching
                    329: //  in user mode, and 4) it is used in the user level thread creation
                    330: //  routines.
                    331: //
                    332: //  The layout of the record conforms to a standard call frame.
                    333: //
                    334: 
                    335: typedef struct _CONTEXT {
                    336: 
                    337:     //
                    338:     // This section is always present and is used as an argument build
                    339:     // area.
                    340:     //
                    341: 
                    342:     DWORD Argument[4];
                    343: 
                    344:     //
                    345:     // This section is specified/returned if the ContextFlags word contains
                    346:     // the flag CONTEXT_FLOATING_POINT.
                    347:     //
                    348: 
                    349:     DWORD FltF0;
                    350:     DWORD FltF1;
                    351:     DWORD FltF2;
                    352:     DWORD FltF3;
                    353:     DWORD FltF4;
                    354:     DWORD FltF5;
                    355:     DWORD FltF6;
                    356:     DWORD FltF7;
                    357:     DWORD FltF8;
                    358:     DWORD FltF9;
                    359:     DWORD FltF10;
                    360:     DWORD FltF11;
                    361:     DWORD FltF12;
                    362:     DWORD FltF13;
                    363:     DWORD FltF14;
                    364:     DWORD FltF15;
                    365:     DWORD FltF16;
                    366:     DWORD FltF17;
                    367:     DWORD FltF18;
                    368:     DWORD FltF19;
                    369:     DWORD FltF20;
                    370:     DWORD FltF21;
                    371:     DWORD FltF22;
                    372:     DWORD FltF23;
                    373:     DWORD FltF24;
                    374:     DWORD FltF25;
                    375:     DWORD FltF26;
                    376:     DWORD FltF27;
                    377:     DWORD FltF28;
                    378:     DWORD FltF29;
                    379:     DWORD FltF30;
                    380:     DWORD FltF31;
                    381: 
                    382:     //
                    383:     // This section is specified/returned if the ContextFlags word contains
                    384:     // the flag CONTEXT_INTEGER.
                    385:     //
                    386:     // N.B. The registers gp, sp, and ra are defined in this section, but are
                    387:     //  considered part of the control context rather than part of the integer
                    388:     //  context.
                    389:     //
                    390:     // N.B. Register zero is not stored in the frame.
                    391:     //
                    392: 
                    393:     DWORD IntZero;
                    394:     DWORD IntAt;
                    395:     DWORD IntV0;
                    396:     DWORD IntV1;
                    397:     DWORD IntA0;
                    398:     DWORD IntA1;
                    399:     DWORD IntA2;
                    400:     DWORD IntA3;
                    401:     DWORD IntT0;
                    402:     DWORD IntT1;
                    403:     DWORD IntT2;
                    404:     DWORD IntT3;
                    405:     DWORD IntT4;
                    406:     DWORD IntT5;
                    407:     DWORD IntT6;
                    408:     DWORD IntT7;
                    409:     DWORD IntS0;
                    410:     DWORD IntS1;
                    411:     DWORD IntS2;
                    412:     DWORD IntS3;
                    413:     DWORD IntS4;
                    414:     DWORD IntS5;
                    415:     DWORD IntS6;
                    416:     DWORD IntS7;
                    417:     DWORD IntT8;
                    418:     DWORD IntT9;
                    419:     DWORD IntK0;
                    420:     DWORD IntK1;
                    421:     DWORD IntGp;
                    422:     DWORD IntSp;
                    423:     DWORD IntS8;
                    424:     DWORD IntRa;
                    425:     DWORD IntLo;
                    426:     DWORD IntHi;
                    427: 
                    428:     //
                    429:     // This section is specified/returned if the ContextFlags word contains
                    430:     // the flag CONTEXT_FLOATING_POINT.
                    431:     //
                    432: 
                    433:     DWORD Fsr;
                    434: 
                    435:     //
                    436:     // This section is specified/returned if the ContextFlags word contains
                    437:     // the flag CONTEXT_CONTROL.
                    438:     //
                    439:     // N.B. The registers gp, sp, and ra are defined in the integer section,
                    440:     //   but are considered part of the control context rather than part of
                    441:     //   the integer context.
                    442:     //
                    443: 
                    444:     DWORD Fir;
                    445:     DWORD Psr;
                    446: 
                    447:     //
                    448:     // The flags values within this flag control the contents of
                    449:     // a CONTEXT record.
                    450:     //
                    451:     // If the context record is used as an input parameter, then
                    452:     // for each portion of the context record controlled by a flag
                    453:     // whose value is set, it is assumed that that portion of the
                    454:     // context record contains valid context. If the context record
                    455:     // is being used to modify a thread's context, then only that
                    456:     // portion of the threads context will be modified.
                    457:     //
                    458:     // If the context record is used as an IN OUT parameter to capture
                    459:     // the context of a thread, then only those portions of the thread's
                    460:     // context corresponding to set flags will be returned.
                    461:     //
                    462:     // The context record is never used as an OUT only parameter.
                    463:     //
                    464: 
                    465:     DWORD ContextFlags;
                    466: 
                    467:     DWORD Fill[2];
                    468: } CONTEXT, *PCONTEXT;
                    469: 
                    470: #endif // MIPS
                    471: 
                    472: 
                    473: #ifdef MIPS
                    474: 
                    475: VOID
                    476: __jump_unwind (
                    477:     PVOID Fp,
                    478:     PVOID TargetPc
                    479:     );
                    480: 
                    481: #endif // MIPS
                    482: 
                    483: #define EXCEPTION_NONCONTINUABLE 0x1    // Noncontinuable exception
                    484: #define EXCEPTION_MAXIMUM_PARAMETERS 4  // maximum number of exception parameters
                    485: 
                    486: //
                    487: // Exception record definition.
                    488: //
                    489: 
                    490: typedef struct _EXCEPTION_RECORD {
                    491:     DWORD    ExceptionCode;
                    492:     DWORD ExceptionFlags;
                    493:     struct _EXCEPTION_RECORD *ExceptionRecord;
                    494:     PVOID ExceptionAddress;
                    495:     DWORD NumberParameters;
                    496:     DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
                    497:     } EXCEPTION_RECORD;
                    498: 
                    499: typedef EXCEPTION_RECORD *PEXCEPTION_RECORD;
                    500: 
                    501: //
                    502: // Typedef for pointer returned by exception_info()
                    503: //
                    504: 
                    505: typedef struct _EXCEPTION_POINTERS {
                    506:     PEXCEPTION_RECORD ExceptionRecord;
                    507:     PCONTEXT ContextRecord;
                    508: } EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
                    509: #define PROCESS_TERMINATE         (0x0001)  
                    510: #define PROCESS_VM_READ           (0x0010)  
                    511: #define PROCESS_VM_WRITE          (0x0020)  
                    512: #define PROCESS_DUP_HANDLE        (0x0040)  
                    513: #define PROCESS_CREATE_PROCESS    (0x0080)  
                    514: #define PROCESS_SET_INFORMATION   (0x0200)  
                    515: #define PROCESS_QUERY_INFORMATION (0x0400)  
                    516: #define PROCESS_ALL_ACCESS        (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \
                    517:                                    0xFFF)
                    518: #define THREAD_TERMINATE               (0x0001)  
                    519: #define THREAD_SUSPEND_RESUME          (0x0002)  
                    520: #define THREAD_GET_CONTEXT             (0x0008)  
                    521: #define THREAD_SET_CONTEXT             (0x0010)  
                    522: #define THREAD_SET_INFORMATION         (0x0020)  
                    523: #define THREAD_QUERY_INFORMATION       (0x0040)  
                    524: #define THREAD_SET_THREAD_TOKEN        (0x0080)
                    525: #define THREAD_IMPERSONATE             (0x0100)
                    526: #define THREAD_DIRECT_IMPERSONATION    (0x0200)
                    527: #define THREAD_ALL_ACCESS         (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \
                    528:                                    0x3FF)
                    529: #define TLS_MINIMUM_AVAILABLE 64    
                    530: #define THREAD_BASE_PRIORITY_MAX    2   // maximum thread base priority boost
                    531: #define THREAD_BASE_PRIORITY_MIN    -2  // minimum thread base priority boost
                    532: #define EVENT_MODIFY_STATE      0x0002  
                    533: #define EVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) 
                    534: #define MUTANT_QUERY_STATE      0x0001
                    535: 
                    536: #define MUTANT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|\
                    537:                           MUTANT_QUERY_STATE)
                    538: #define SEMAPHORE_MODIFY_STATE      0x0002  
                    539: #define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) 
                    540: 
                    541: #define PROCESSOR_INTEL_386     386
                    542: #define PROCESSOR_INTEL_486     486
                    543: #define PROCESSOR_INTEL_860     860
                    544: #define PROCESSOR_MIPS_R2000    2000
                    545: #define PROCESSOR_MIPS_R3000    3000
                    546: #define PROCESSOR_MIPS_R4000    4000
                    547: 
                    548: #define PROCESSOR_STEP_A0 0x00000000
                    549: #define PROCESSOR_STEP_B0 0x00010000
                    550: #define PROCESSOR_STEP_C0 0x00020000
                    551: #define PROCESSOR_STEP_D0 0x00030000
                    552: #define PROCESSOR_STEP_E0 0x00040000
                    553: #define PROCESSOR_STEP_F0 0x00050000
                    554: #define PROCESSOR_STEP_G0 0x00060000
                    555: #define PROCESSOR_STEP_H0 0x00070000
                    556: #define PROCESSOR_STEP_I0 0x00080000
                    557: 
                    558: #define PROCESSOR_OPTION_387        0x00000001
                    559: #define PROCESSOR_OPTION_WEITEK     0x00000002
                    560: 
                    561: typedef struct _MEMORY_BASIC_INFORMATION {
                    562:     PVOID BaseAddress;
                    563:     PVOID AllocationBase;
                    564:     DWORD AllocationProtect;
                    565:     DWORD RegionSize;
                    566:     DWORD State;
                    567:     DWORD Protect;
                    568:     DWORD Type;
                    569: } MEMORY_BASIC_INFORMATION;
                    570: typedef MEMORY_BASIC_INFORMATION *PMEMORY_BASIC_INFORMATION;
                    571: #define SECTION_QUERY       0x0001
                    572: #define SECTION_MAP_WRITE   0x0002
                    573: #define SECTION_MAP_READ    0x0004
                    574: #define SECTION_MAP_EXECUTE 0x0008
                    575: #define SECTION_EXTEND_SIZE 0x0010
                    576: 
                    577: #define SECTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SECTION_QUERY|\
                    578:                             SECTION_MAP_WRITE |      \
                    579:                             SECTION_MAP_READ |       \
                    580:                             SECTION_MAP_EXECUTE |    \
                    581:                             SECTION_EXTEND_SIZE)
                    582: #define PAGE_NOACCESS          0x01     
                    583: #define PAGE_READONLY          0x02     
                    584: #define PAGE_READWRITE         0x04     
                    585: #define MEM_COMMIT           0x1000     
                    586: #define MEM_RESERVE          0x2000     
                    587: #define MEM_DECOMMIT         0x4000     
                    588: #define MEM_RELEASE          0x8000     
                    589: #define MEM_FREE            0x10000     
                    590: #define MEM_PRIVATE         0x20000     
                    591: #define FILE_SHARE_READ                 0x00000001  
                    592: #define FILE_SHARE_WRITE                0x00000002  
                    593: #define FILE_ATTRIBUTE_READONLY         0x00000001  
                    594: #define FILE_ATTRIBUTE_HIDDEN           0x00000002  
                    595: #define FILE_ATTRIBUTE_SYSTEM           0x00000004  
                    596: #define FILE_ATTRIBUTE_ARCHIVE          0x00000020  
                    597: #define FILE_ATTRIBUTE_NORMAL           0x00000080  
                    598: #define FILE_CASE_SENSITIVE_SEARCH      0x00000001  
                    599: #define FILE_CASE_PRESERVED_NAMES       0x00000002  
                    600: #define FILE_UNICODE_ON_DISK            0x00000004  
                    601: #define DUPLICATE_CLOSE_SOURCE      0x00000001  
                    602: #define DUPLICATE_SAME_ACCESS       0x00000002  
                    603: typedef PVOID PSECURITY_DESCRIPTOR;     
                    604: typedef PVOID PSID;     
                    605: typedef DWORD ACCESS_MASK;      
                    606: #define DELETE                           (0x00010000L)
                    607: #define READ_CONTROL                     (0x00020000L)
                    608: #define WRITE_DAC                        (0x00040000L)
                    609: #define WRITE_OWNER                      (0x00080000L)
                    610: #define SYNCHRONIZE                      (0x00100000L)
                    611: 
                    612: #define STANDARD_RIGHTS_REQUIRED         (0x000F0000L)
                    613: 
                    614: #define STANDARD_RIGHTS_READ             (READ_CONTROL)
                    615: #define STANDARD_RIGHTS_WRITE            (READ_CONTROL)
                    616: #define STANDARD_RIGHTS_EXECUTE          (READ_CONTROL)
                    617: 
                    618: #define STANDARD_RIGHTS_ALL              (0x001F0000L)
                    619: 
                    620: #define SPECIFIC_RIGHTS_ALL              (0x0000FFFFL)
                    621: 
                    622: //
                    623: // AccessSystemAcl access type
                    624: //
                    625: 
                    626: #define ACCESS_SYSTEM_SECURITY           (0x01000000L)
                    627: 
                    628: //
                    629: // MaximumAllowed access type
                    630: //
                    631: 
                    632: #define MAXIMUM_ALLOWED                  (0x02000000L)
                    633: 
                    634: //
                    635: //  These are the generic rights.
                    636: //
                    637: 
                    638: #define GENERIC_READ                     (0x80000000L)
                    639: #define GENERIC_WRITE                    (0x40000000L)
                    640: #define GENERIC_EXECUTE                  (0x20000000L)
                    641: #define GENERIC_ALL                      (0x10000000L)
                    642: // Obsolete definition - not portable.
                    643: // replaced by DWORD definition below
                    644: //typedef struct _SECURITY_INFORMATION {
                    645: //   DWORD Owner :1;
                    646: //   DWORD Group :1;
                    647: //   DWORD Dacl :1;
                    648: //   DWORD Sacl :1;
                    649: //   DWORD Reserved :28;
                    650: //   } SECURITY_INFORMATION, *PSECURITY_INFORMATION;
                    651: 
                    652: 
                    653: typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION;
                    654: 
                    655: #define OWNER_SECURITY_INFORMATION       (0X00000001L)
                    656: #define GROUP_SECURITY_INFORMATION       (0X00000002L)
                    657: #define DACL_SECURITY_INFORMATION        (0X00000004L)
                    658: #define SACL_SECURITY_INFORMATION        (0X00000008L)
                    659: #define HEAP_SERIALIZE          0x00000001      
                    660: typedef struct _RTL_CRITICAL_SECTION {
                    661: 
                    662: 
                    663:     PVOID CallingAddress;
                    664:     PVOID CallersCaller;
                    665:     PVOID Spare[5];
                    666: 
                    667: 
                    668:     //
                    669:     //  The following three fields control entering and exiting the critical
                    670:     //  section for the resource
                    671:     //
                    672: 
                    673:     LONG LockCount;
                    674:     LONG RecursionCount;
                    675:     HANDLE OwningThread;        // from the thread's ClientId->UniqueThread
                    676:     HANDLE LockSemaphore;
                    677:     KSPIN_LOCK SpinLock;
                    678: 
                    679: } RTL_CRITICAL_SECTION;
                    680: typedef RTL_CRITICAL_SECTION *PRTL_CRITICAL_SECTION;
                    681: #define DLL_PROCESS_ATTACH 1    
                    682: #define DLL_THREAD_ATTACH  2    
                    683: #define DLL_THREAD_DETACH  3    
                    684: #define DLL_PROCESS_DETACH 0    
                    685: 
                    686: //
                    687: // Defines for the READ flags for Eventlogging
                    688: //
                    689: #define EVENTLOG_SEQUENTIAL_READ       0X0001
                    690: #define EVENTLOG_SEEK_READ             0X0002
                    691: #define EVENTLOG_FORWARDS_READ         0X0004
                    692: #define EVENTLOG_BACKWARDS_READ                0X0008
                    693: 
                    694: //
                    695: // The types of events that can be logged.
                    696: //
                    697: #define EVENTLOG_ERROR_TYPE            0x0001
                    698: #define EVENTLOG_WARNING_TYPE          0x0002
                    699: #define EVENTLOG_INFORMATION_TYPE      0x0003
                    700: 
                    701: #define DBG_CONTINUE                    ((DWORD   )0x00010002L) 
                    702: #define DBG_TERMINATE_THREAD            ((DWORD   )0x40010003L) 
                    703: #define DBG_TERMINATE_PROCESS           ((DWORD   )0x40010004L) 
                    704: #define DBG_CONTROL_C                   ((DWORD   )0x40010005L) 
                    705: #define DBG_EXCEPTION_NOT_HANDLED       ((DWORD   )0x80010001L) 
                    706: 
                    707: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.