Annotation of mstools/h/winbase.h, revision 1.1

1.1     ! root        1: /*++ BUILD Version: 0001    // Increment this if a change has global effects
        !             2: 
        !             3: Copyright (c) 1990  Microsoft Corporation
        !             4: 
        !             5: Module Name:
        !             6: 
        !             7:     winbase.h
        !             8: 
        !             9: Abstract:
        !            10: 
        !            11:     This module defines the 32-Bit Windows Base APIs
        !            12: 
        !            13: Created:
        !            14: 
        !            15:     18-Sep-1990
        !            16: 
        !            17: Revision History:
        !            18: 
        !            19: --*/
        !            20: 
        !            21: #ifndef _WINBASE_
        !            22: #define _WINBASE_
        !            23: 
        !            24: /*
        !            25:  * Compatability macros
        !            26:  */
        !            27: 
        !            28: #define DefineHandleTable(w)            ((w),TRUE)
        !            29: #define LimitEmsPages(dw)
        !            30: #define SetSwapAreaSize(w)              (w)
        !            31: #define LockSegment(w)                  GlobalFix((HANDLE)(w))
        !            32: #define UnlockSegment(w)                GlobalUnfix((HANDLE)(w))
        !            33: 
        !            34: #define Yield()
        !            35: 
        !            36: #define INVALID_HANDLE_VALUE (HANDLE)-1
        !            37: #define FILE_BEGIN           0
        !            38: #define FILE_CURRENT         1
        !            39: #define FILE_END             2
        !            40: #define FILE_ATTRIBUTE_DIRECTORY    0x00000010
        !            41: 
        !            42: #define WAIT_OBJECT_0       ((STATUS_WAIT_0 ) + 0 )
        !            43: 
        !            44: #define WAIT_ABANDONED         ((STATUS_ABANDONED_WAIT_0 ) + 0 )
        !            45: #define WAIT_ABANDONED_0       ((STATUS_ABANDONED_WAIT_0 ) + 0 )
        !            46: 
        !            47: #define WAIT_TIMEOUT                    STATUS_TIMEOUT
        !            48: #define STILL_ACTIVE                    STATUS_PENDING
        !            49: #define EXCEPTION_ACCESS_VIOLATION      STATUS_ACCESS_VIOLATION
        !            50: #define EXCEPTION_DATATYPE_MISALIGNMENT STATUS_DATATYPE_MISALIGNMENT
        !            51: #define EXCEPTION_BREAKPOINT            STATUS_BREAKPOINT
        !            52: #define EXCEPTION_SINGLE_STEP           STATUS_SINGLE_STEP
        !            53: #define CONTROL_C_EXIT                  STATUS_CONTROL_C_EXIT
        !            54: 
        !            55: //
        !            56: // File creation flags must start in second byte since they
        !            57: // are combined with the attributes
        !            58: //
        !            59: 
        !            60: #define FILE_FLAG_WRITE_THROUGH     0x00000100
        !            61: #define FILE_FLAG_OVERLAPPED        0x00000200
        !            62: #define FILE_FLAG_NO_BUFFERING      0x00000400
        !            63: #define FILE_FLAG_RANDOM_ACCESS     0x00000800
        !            64: #define FILE_FLAG_SEQUENTIAL_SCAN   0x00001000
        !            65: 
        !            66: #define CREATE_NEW          1
        !            67: #define CREATE_ALWAYS       2
        !            68: #define OPEN_EXISTING       3
        !            69: #define OPEN_ALWAYS         4
        !            70: #define TRUNCATE_EXISTING   5
        !            71: 
        !            72: //
        !            73: // Define the NamedPipe definitions
        !            74: //
        !            75: 
        !            76: 
        !            77: //
        !            78: // Define the dwOpenMode values for CreateNamedPipe
        !            79: //
        !            80: 
        !            81: #define PIPE_ACCESS_INBOUND         0x00000001
        !            82: #define PIPE_ACCESS_OUTBOUND        0x00000002
        !            83: #define PIPE_ACCESS_DUPLEX          0x00000003
        !            84: 
        !            85: //
        !            86: // Define the Named Pipe End flags for GetNamedPipeInfo
        !            87: //
        !            88: 
        !            89: #define PIPE_CLIENT_END             0x00000000
        !            90: #define PIPE_SERVER_END             0x00000001
        !            91: 
        !            92: //
        !            93: // Define the dwPipeMode values for CreateNamedPipe
        !            94: //
        !            95: 
        !            96: #define PIPE_WAIT                   0x00000000
        !            97: #define PIPE_NOWAIT                 0x00000001
        !            98: #define PIPE_READMODE_BYTE          0x00000000
        !            99: #define PIPE_READMODE_MESSAGE       0x00000002
        !           100: #define PIPE_TYPE_BYTE              0x00000000
        !           101: #define PIPE_TYPE_MESSAGE           0x00000004
        !           102: 
        !           103: //
        !           104: // Define the well known values for CreateNamedPipe nMaxInstances
        !           105: //
        !           106: 
        !           107: #define PIPE_UNLIMITED_INSTANCES    255
        !           108: 
        !           109: //
        !           110: // Special values for mailslot information.
        !           111: //
        !           112: 
        !           113: //
        !           114: // Special value for NextMessageSize to indicate that there is no next
        !           115: // message.
        !           116: //
        !           117: 
        !           118: #define MAILSLOT_NO_MESSAGE             -1
        !           119: 
        !           120: //
        !           121: // Special value for mailslot size creation to indicate that the system
        !           122: // should choose the size of the mailslot buffer.
        !           123: //
        !           124: 
        !           125: #define MAILSLOT_SIZE_AUTO               0
        !           126: 
        !           127: //
        !           128: // Special value for read timeout to indicate that mailslot reads should
        !           129: // never timeout.
        !           130: //
        !           131: 
        !           132: #define MAILSLOT_WAIT_FOREVER           -1
        !           133: 
        !           134: //
        !           135: //  File structures
        !           136: //
        !           137: 
        !           138: typedef struct _OVERLAPPED {
        !           139:     DWORD   Internal;
        !           140:     DWORD   InternalHigh;
        !           141:     DWORD   Offset;
        !           142:     DWORD   OffsetHigh;
        !           143:     HANDLE  hEvent;
        !           144: } OVERLAPPED, *LPOVERLAPPED;
        !           145: 
        !           146: typedef struct _SECURITY_ATTRIBUTES {
        !           147:     DWORD nLength;
        !           148:     LPVOID lpSecurityDescriptor;
        !           149:     BOOL bInheritHandle;
        !           150: } SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
        !           151: 
        !           152: typedef struct _PROCESS_INFORMATION {
        !           153:     HANDLE hProcess;
        !           154:     HANDLE hThread;
        !           155:     DWORD dwProcessId;
        !           156:     DWORD dwThreadId;
        !           157: } PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION;
        !           158: 
        !           159: //
        !           160: //  File System time stamps are represented with the following structure:
        !           161: //
        !           162: 
        !           163: typedef struct _FILETIME {
        !           164:     DWORD dwLowDateTime;
        !           165:     DWORD dwHighDateTime;
        !           166: } FILETIME, *PFILETIME, *LPFILETIME;
        !           167: 
        !           168: //
        !           169: // System time is represented with the following structure:
        !           170: //
        !           171: 
        !           172: typedef struct _SYSTEMTIME {
        !           173:     WORD wYear;
        !           174:     WORD wMonth;
        !           175:     WORD wDayOfWeek;
        !           176:     WORD wDay;
        !           177:     WORD wHour;
        !           178:     WORD wMinute;
        !           179:     WORD wSecond;
        !           180:     WORD wMilliseconds;
        !           181: } SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
        !           182: 
        !           183: typedef DWORD (*PTHREAD_START_ROUTINE)(
        !           184:     LPVOID lpThreadParameter
        !           185:     );
        !           186: typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
        !           187: 
        !           188: typedef RTL_CRITICAL_SECTION CRITICAL_SECTION;
        !           189: typedef PRTL_CRITICAL_SECTION PCRITICAL_SECTION;
        !           190: typedef PRTL_CRITICAL_SECTION LPCRITICAL_SECTION;
        !           191: 
        !           192: #ifdef i386
        !           193: typedef PLDT_ENTRY LPLDT_ENTRY;
        !           194: #else
        !           195: typedef LPVOID LPLDT_ENTRY;
        !           196: #endif
        !           197: 
        !           198: #define MUTEX_MODIFY_STATE MUTANT_QUERY_STATE
        !           199: #define MUTEX_ALL_ACCESS MUTANT_ALL_ACCESS
        !           200: 
        !           201: //
        !           202: // Provider capabilities flags.
        !           203: //
        !           204: 
        !           205: #define PCF_DTRDTS       ((DWORD)0x0001)
        !           206: #define PCF_RTSCTS       ((DWORD)0x0002)
        !           207: #define PCF_CD           ((DWORD)0x0004)
        !           208: #define PCF_PARITY_CHECK ((DWORD)0x0008)
        !           209: #define PCF_XONXOFF      ((DWORD)0x0010)
        !           210: #define PCF_SETXCHAR     ((DWORD)0x0020)
        !           211: #define PCF_TOTTIMEOUTS  ((DWORD)0x0040)
        !           212: #define PCF_INTTIMEOUTS  ((DWORD)0x0080)
        !           213: #define PCF_SPECIALCHARS ((DWORD)0x0100)
        !           214: #define PCF_16BITMODE    ((DWORD)0x0200)
        !           215: 
        !           216: //
        !           217: // Comm provider settable parameters.
        !           218: //
        !           219: 
        !           220: #define SP_PARITY         ((DWORD)0x0001)
        !           221: #define SP_BAUD           ((DWORD)0x0002)
        !           222: #define SP_DATABITS       ((DWORD)0x0004)
        !           223: #define SP_STOPBITS       ((DWORD)0x0008)
        !           224: #define SP_HANDSHAKING    ((DWORD)0x0010)
        !           225: #define SP_PARITY_CHECK   ((DWORD)0x0020)
        !           226: #define SP_CARRIER_DETECT ((DWORD)0x0040)
        !           227: 
        !           228: //
        !           229: // Settable baud rates in the provider.
        !           230: //
        !           231: 
        !           232: #define BAUD_075          ((DWORD)0x00000001)
        !           233: #define BAUD_110          ((DWORD)0x00000002)
        !           234: #define BAUD_134_5        ((DWORD)0x00000004)
        !           235: #define BAUD_150          ((DWORD)0x00000008)
        !           236: #define BAUD_300          ((DWORD)0x00000010)
        !           237: #define BAUD_600          ((DWORD)0x00000020)
        !           238: #define BAUD_1200         ((DWORD)0x00000040)
        !           239: #define BAUD_1800         ((DWORD)0x00000080)
        !           240: #define BAUD_2400         ((DWORD)0x00000100)
        !           241: #define BAUD_4800         ((DWORD)0x00000200)
        !           242: #define BAUD_7200         ((DWORD)0x00000400)
        !           243: #define BAUD_9600         ((DWORD)0x00000800)
        !           244: #define BAUD_14400        ((DWORD)0x00001000)
        !           245: #define BAUD_19200        ((DWORD)0x00002000)
        !           246: #define BAUD_38400        ((DWORD)0x00004000)
        !           247: #define BAUD_56K          ((DWORD)0x00008000)
        !           248: #define BAUD_USER         ((DWORD)0x10000000)
        !           249: 
        !           250: //
        !           251: // Settable Data Bits
        !           252: //
        !           253: 
        !           254: #define DATABITS_5        ((WORD)0x0001)
        !           255: #define DATABITS_6        ((WORD)0x0002)
        !           256: #define DATABITS_7        ((WORD)0x0004)
        !           257: #define DATABITS_8        ((WORD)0x0008)
        !           258: #define DATABITS_16       ((WORD)0x0010)
        !           259: #define DATABITS_16X      ((WORD)0x0020)
        !           260: 
        !           261: //
        !           262: // Settable Stop and Parity bits.
        !           263: //
        !           264: 
        !           265: #define STOPBITS_10       ((WORD)0x0001)
        !           266: #define STOPBITS_15       ((WORD)0x0002)
        !           267: #define STOPBITS_20       ((WORD)0x0004)
        !           268: #define PARITY_NONE       ((WORD)0x0100)
        !           269: #define PARITY_ODD        ((WORD)0x0200)
        !           270: #define PARITY_EVEN       ((WORD)0x0400)
        !           271: #define PARITY_MARK       ((WORD)0x0800)
        !           272: #define PARITY_SPACE      ((WORD)0x1000)
        !           273: 
        !           274: typedef struct _COMMPROP {
        !           275:     WORD wPacketLength;
        !           276:     WORD wPacketVersion;
        !           277:     DWORD dwServiceMask;
        !           278:     DWORD dwMaxConfigData;
        !           279:     DWORD dwMaxTxQueue;
        !           280:     DWORD dwMaxRxQueue;
        !           281:     DWORD dwMaxBaud;
        !           282:     DWORD dwDefTxQueue;
        !           283:     DWORD dwDefRxQueue;
        !           284:     DWORD dwDefBaud;
        !           285:     WORD wDefDataBits;
        !           286:     WORD wDefStopParity;
        !           287:     DWORD dwProvSubType;
        !           288:     DWORD dwProvCapabilities;
        !           289:     DWORD dwSettableParams;
        !           290:     DWORD dwSettableBaud;
        !           291:     WORD wSettableData;
        !           292:     WORD wSettableStopParity;
        !           293:     DWORD dwCurrentTxQueue;
        !           294:     DWORD dwCurrentRxQueue;
        !           295:     DWORD dwProvSpec1;
        !           296:     DWORD dwProvSpec2;
        !           297:     WCHAR ProvChar[1];
        !           298: } COMMPROP,*LPCOMMPROP;
        !           299: 
        !           300: typedef struct _COMSTAT {
        !           301:     DWORD fCtsHold : 1;
        !           302:     DWORD fDsrHold : 1;
        !           303:     DWORD fRlsdHold : 1;
        !           304:     DWORD fXoffHold : 1;
        !           305:     DWORD fXoffSent : 1;
        !           306:     DWORD fEof : 1;
        !           307:     DWORD fTxim : 1;
        !           308:     DWORD fReserved : 17;
        !           309:     DWORD cbInQue;
        !           310:     DWORD cbOutQue;
        !           311: } COMSTAT, *LPCOMSTAT;
        !           312: 
        !           313: //
        !           314: // DTR Control Flow Values.
        !           315: //
        !           316: #define DTR_CONTROL_DISABLE    0x00
        !           317: #define DTR_CONTROL_ENABLE     0x01
        !           318: #define DTR_CONTROL_HANDSHAKE  0x02
        !           319: 
        !           320: //
        !           321: // RTS Control Flow Values
        !           322: //
        !           323: #define RTS_CONTROL_DISABLE    0x00
        !           324: #define RTS_CONTROL_ENABLE     0x01
        !           325: #define RTS_CONTROL_HANDSHAKE  0x02
        !           326: 
        !           327: typedef struct _DCB {
        !           328:     DWORD DCBlength;      /* sizeof(DCB)                     */
        !           329:     DWORD BaudRate;       /* Baudrate at which running       */
        !           330:     DWORD fBinary: 1;     /* Binary Mode (skip EOF check)    */
        !           331:     DWORD fParity: 1;     /* Enable parity checking          */
        !           332:     DWORD fOutxCtsFlow:1; /* CTS handshaking on output       */
        !           333:     DWORD fOutxDsrFlow:1; /* DSR handshaking on output       */
        !           334:     DWORD fDtrControl:2;  /* DTR Flow control                */
        !           335:     DWORD fDummy: 2;      /* Reserved                        */
        !           336:     DWORD fOutX: 1;       /* Enable output X-ON/X-OFF        */
        !           337:     DWORD fInX: 1;        /* Enable input X-ON/X-OFF         */
        !           338:     DWORD fPeChar: 1;     /* Enable Parity Err Replacement   */
        !           339:     DWORD fNull: 1;       /* Enable Null stripping           */
        !           340:     DWORD fRtsControl:2;  /* Rts Flow control                */
        !           341:     DWORD fDummy2:2;      /* Reserved                        */
        !           342:     WORD TxDelay;         /* Amount of time between chars    */
        !           343:     WORD XonLim;          /* Transmit X-ON threshold         */
        !           344:     WORD XoffLim;         /* Transmit X-OFF threshold        */
        !           345:     BYTE ByteSize;        /* Number of bits/byte, 4-8        */
        !           346:     BYTE Parity;          /* 0-4=None,Odd,Even,Mark,Space    */
        !           347:     BYTE StopBits;        /* 0,1,2 = 1, 1.5, 2               */
        !           348:     char XonChar;         /* Tx and Rx X-ON character        */
        !           349:     char XoffChar;        /* Tx and Rx X-OFF character       */
        !           350:     char PeChar;          /* Parity error replacement char   */
        !           351:     char EofChar;         /* End of Input character          */
        !           352:     char EvtChar;         /* Recieved Event character        */
        !           353: } DCB, *LPDCB;
        !           354: 
        !           355: typedef struct _COMMTIMEOUTS {
        !           356:     DWORD ReadIntervalTimeout;          /* Maximum time between read chars. */
        !           357:     DWORD ReadTotalTimeoutMultiplier;   /* Multiplier of characters.        */
        !           358:     DWORD ReadTotalTimeoutConstant;     /* Constant in milliseconds.        */
        !           359:     DWORD WriteTotalTimeoutMultiplier;  /* Multiplier of characters.        */
        !           360:     DWORD WriteTotalTimeoutConstant;    /* Constant in milliseconds.        */
        !           361: } COMMTIMEOUTS,*LPCOMMTIMEOUTS;
        !           362: 
        !           363: typedef struct _SYSTEM_INFO {
        !           364:     DWORD dwOemId;
        !           365:     DWORD dwPageSize;
        !           366:     LPVOID lpMinimumApplicationAddress;
        !           367:     LPVOID lpMaximumApplicationAddress;
        !           368:     DWORD dwActiveProcessorMask;
        !           369:     DWORD dwNumberOfProcessors;
        !           370:     DWORD dwProcessorType;
        !           371:     DWORD dwProcessorRevision;
        !           372:     DWORD dwProcessorOptions;
        !           373: } SYSTEM_INFO, *LPSYSTEM_INFO;
        !           374: 
        !           375: #define FreeModule(hLibModule) FreeLibrary((hLibModule))
        !           376: #define MakeProcInstance(lpProc,hInstance) (lpProc)
        !           377: #define FreeProcInstance(lpProc)
        !           378: 
        !           379: /* Global Memory Flags */
        !           380: #define GMEM_FIXED          0x0000
        !           381: #define GMEM_MOVEABLE       0x0002
        !           382: #define GMEM_NOCOMPACT      0x0010
        !           383: #define GMEM_NODISCARD      0x0020
        !           384: #define GMEM_ZEROINIT       0x0040
        !           385: #define GMEM_MODIFY         0x0080
        !           386: #define GMEM_DISCARDABLE    0x0100
        !           387: #define GMEM_NOT_BANKED     0x1000
        !           388: #define GMEM_SHARE          0x2000
        !           389: #define GMEM_DDESHARE       0x2000
        !           390: #define GMEM_NOTIFY         0x4000
        !           391: #define GMEM_LOWER          GMEM_NOT_BANKED
        !           392: #define GMEM_VALID_FLAGS    0x7F72
        !           393: #define GMEM_INVALID_HANDLE 0x8000
        !           394: 
        !           395: #define GHND                (GMEM_MOVEABLE | GMEM_ZEROINIT)
        !           396: #define GPTR                (GMEM_FIXED | GMEM_ZEROINIT)
        !           397: 
        !           398: #define GlobalDiscard( h )              (HANDLE)(h)
        !           399: #define GlobalLRUNewest( h )            (HANDLE)(h)
        !           400: #define GlobalLRUOldest( h )            (HANDLE)(h)
        !           401: #define GlobalCompact( dw )             (0x100000L)
        !           402: #define GlobalFix( h )                  (h)
        !           403: #define GlobalUnfix( h )                ((BOOL)h)
        !           404: #define GlobalUnWire( h )               (TRUE)
        !           405: #define GlobalWire( h )                 (LPSTR)(h)
        !           406: 
        !           407: /* Flags returned by GlobalFlags (in addition to GMEM_DISCARDABLE) */
        !           408: #define GMEM_DISCARDED      0x4000
        !           409: #define GMEM_LOCKCOUNT      0x00FF
        !           410: 
        !           411: typedef struct _MEMORYSTATUS {
        !           412:     DWORD dwLength;
        !           413:     DWORD dwMemoryLoad;
        !           414:     DWORD dwTotalPhys;
        !           415:     DWORD dwAvailPhys;
        !           416:     DWORD dwTotalPageFile;
        !           417:     DWORD dwAvailPageFile;
        !           418:     DWORD dwTotalVirtual;
        !           419:     DWORD dwAvailVirtual;
        !           420: } MEMORYSTATUS, *LPMEMORYSTATUS;
        !           421: 
        !           422: /* Local Memory Flags */
        !           423: #define LMEM_FIXED          0x0000
        !           424: #define LMEM_MOVEABLE       0x0002
        !           425: #define LMEM_NOCOMPACT      0x0010
        !           426: #define LMEM_NODISCARD      0x0020
        !           427: #define LMEM_ZEROINIT       0x0040
        !           428: #define LMEM_MODIFY         0x0080
        !           429: #define LMEM_DISCARDABLE    0x0F00
        !           430: #define LMEM_VALID_FLAGS    0x0F72
        !           431: #define LMEM_INVALID_HANDLE 0x8000
        !           432: 
        !           433: #define LHND                (LMEM_MOVEABLE | LMEM_ZEROINIT)
        !           434: #define LPTR                (LMEM_FIXED | LMEM_ZEROINIT)
        !           435: 
        !           436: #define NONZEROLHND         (LMEM_MOVEABLE)
        !           437: #define NONZEROLPTR         (LMEM_FIXED)
        !           438: 
        !           439: #define LocalShrink( h, n ) (0x10000)
        !           440: #define LocalCompact( h ) (0x10000)
        !           441: #define LocalDiscard( h ) (NULL)
        !           442: 
        !           443: /* Flags returned by LocalFlags (in addition to LMEM_DISCARDABLE) */
        !           444: #define LMEM_DISCARDED      0x4000
        !           445: #define LMEM_LOCKCOUNT      0x00FF
        !           446: 
        !           447: //
        !           448: // dwCreationFlag values
        !           449: //
        !           450: 
        !           451: #define DEBUG_PROCESS               0x00000001
        !           452: #define DEBUG_ONLY_THIS_PROCESS     0x00000002
        !           453: 
        !           454: #define CREATE_SUSPENDED            0x00000004
        !           455: 
        !           456: #define DETACHED_PROCESS            0x00000008
        !           457: 
        !           458: #define CREATE_NEW_CONSOLE          0x00000010
        !           459: 
        !           460: #define PROFILE_USER                0x10000000
        !           461: #define PROFILE_KERNEL              0x20000000
        !           462: #define PROFILE_SERVER              0x40000000
        !           463: 
        !           464: #define THREAD_PRIORITY_LOWEST          THREAD_BASE_PRIORITY_MIN
        !           465: #define THREAD_PRIORITY_BELOW_NORMAL    (THREAD_PRIORITY_LOWEST+1)
        !           466: #define THREAD_PRIORITY_NORMAL          0
        !           467: #define THREAD_PRIORITY_HIGHEST         THREAD_BASE_PRIORITY_MAX
        !           468: #define THREAD_PRIORITY_ABOVE_NORMAL    (THREAD_PRIORITY_HIGHEST-1)
        !           469: #define THREAD_PRIORITY_ERROR_RETURN    (MAXLONG)
        !           470: 
        !           471: //
        !           472: // Debug APIs
        !           473: //
        !           474: #define EXCEPTION_DEBUG_EVENT       1
        !           475: #define CREATE_THREAD_DEBUG_EVENT   2
        !           476: #define CREATE_PROCESS_DEBUG_EVENT  3
        !           477: #define EXIT_THREAD_DEBUG_EVENT     4
        !           478: #define EXIT_PROCESS_DEBUG_EVENT    5
        !           479: #define LOAD_DLL_DEBUG_EVENT        6
        !           480: #define UNLOAD_DLL_DEBUG_EVENT      7
        !           481: #define OUTPUT_DEBUG_STRING_EVENT   8
        !           482: 
        !           483: typedef struct _EXCEPTION_DEBUG_INFO {
        !           484:     EXCEPTION_RECORD ExceptionRecord;
        !           485:     DWORD dwFirstChance;
        !           486: } EXCEPTION_DEBUG_INFO, *LPEXCEPTION_DEBUG_INFO;
        !           487: 
        !           488: typedef struct _CREATE_THREAD_DEBUG_INFO {
        !           489:     HANDLE hThread;
        !           490:     LPTHREAD_START_ROUTINE lpStartAddress;
        !           491: } CREATE_THREAD_DEBUG_INFO, *LPCREATE_THREAD_DEBUG_INFO;
        !           492: 
        !           493: typedef struct _CREATE_PROCESS_DEBUG_INFO {
        !           494:     HANDLE hFile;
        !           495:     HANDLE hProcess;
        !           496:     HANDLE hThread;
        !           497:     LPVOID lpBaseOfImage;
        !           498:     DWORD dwDebugInfoFileOffset;
        !           499:     DWORD nDebugInfoSize;
        !           500:     LPTHREAD_START_ROUTINE lpStartAddress;
        !           501: } CREATE_PROCESS_DEBUG_INFO, *LPCREATE_PROCESS_DEBUG_INFO;
        !           502: 
        !           503: typedef struct _EXIT_THREAD_DEBUG_INFO {
        !           504:     DWORD dwExitCode;
        !           505: } EXIT_THREAD_DEBUG_INFO, *LPEXIT_THREAD_DEBUG_INFO;
        !           506: 
        !           507: typedef struct _EXIT_PROCESS_DEBUG_INFO {
        !           508:     DWORD dwExitCode;
        !           509: } EXIT_PROCESS_DEBUG_INFO, *LPEXIT_PROCESS_DEBUG_INFO;
        !           510: 
        !           511: typedef struct _LOAD_DLL_DEBUG_INFO {
        !           512:     HANDLE hFile;
        !           513:     LPVOID lpBaseOfDll;
        !           514:     DWORD dwDebugInfoFileOffset;
        !           515:     DWORD nDebugInfoSize;
        !           516: } LOAD_DLL_DEBUG_INFO, *LPLOAD_DLL_DEBUG_INFO;
        !           517: 
        !           518: typedef struct _UNLOAD_DLL_DEBUG_INFO {
        !           519:     LPVOID lpBaseOfDll;
        !           520: } UNLOAD_DLL_DEBUG_INFO, *LPUNLOAD_DLL_DEBUG_INFO;
        !           521: 
        !           522: typedef struct _OUTPUT_DEBUG_STRING_INFO {
        !           523:     LPSTR lpDebugStringData;
        !           524:     WORD fUnicode;
        !           525:     WORD nDebugStringLength;
        !           526: } OUTPUT_DEBUG_STRING_INFO, *LPOUTPUT_DEBUG_STRING_INFO;
        !           527: 
        !           528: typedef struct _DEBUG_EVENT {
        !           529:     DWORD dwDebugEventCode;
        !           530:     DWORD dwProcessId;
        !           531:     DWORD dwThreadId;
        !           532:     union {
        !           533:         EXCEPTION_DEBUG_INFO Exception;
        !           534:         CREATE_THREAD_DEBUG_INFO CreateThread;
        !           535:         CREATE_PROCESS_DEBUG_INFO CreateProcessInfo;
        !           536:         EXIT_THREAD_DEBUG_INFO ExitThread;
        !           537:         EXIT_THREAD_DEBUG_INFO ExitProcess;
        !           538:         LOAD_DLL_DEBUG_INFO LoadDll;
        !           539:         UNLOAD_DLL_DEBUG_INFO UnloadDll;
        !           540:         OUTPUT_DEBUG_STRING_INFO DebugString;
        !           541:     } u;
        !           542: } DEBUG_EVENT, *LPDEBUG_EVENT;
        !           543: 
        !           544: typedef PCONTEXT LPCONTEXT;
        !           545: typedef PEXCEPTION_RECORD LPEXCEPTION_RECORD;
        !           546: typedef EXCEPTION_POINTERS LPEXCEPTION_POINTERS;
        !           547: 
        !           548: #define DRIVE_REMOVABLE 2
        !           549: #define DRIVE_FIXED     3
        !           550: #define DRIVE_REMOTE    4
        !           551: #define DRIVE_CDROM     5
        !           552: #define DRIVE_RAMDISK   6
        !           553: 
        !           554: 
        !           555: #define GetFreeSpace(w)                 (0x100000L)
        !           556: 
        !           557: 
        !           558: #define FILE_TYPE_UNKNOWN   0x0000
        !           559: #define FILE_TYPE_DISK      0x0001
        !           560: #define FILE_TYPE_CHAR      0x0002
        !           561: #define FILE_TYPE_PIPE      0x0003
        !           562: #define FILE_TYPE_REMOTE    0x8000
        !           563: 
        !           564: 
        !           565: #define STD_INPUT_HANDLE    (DWORD)-10
        !           566: #define STD_OUTPUT_HANDLE   (DWORD)-11
        !           567: #define STD_ERROR_HANDLE      (DWORD)-12
        !           568: 
        !           569: #define NOPARITY            0
        !           570: #define ODDPARITY           1
        !           571: #define EVENPARITY          2
        !           572: #define MARKPARITY          3
        !           573: #define SPACEPARITY         4
        !           574: 
        !           575: #define ONESTOPBIT          0
        !           576: #define ONE5STOPBITS        1
        !           577: #define TWOSTOPBITS         2
        !           578: 
        !           579: #define IGNORE              0       // Ignore signal
        !           580: #define INFINITE            0xFFFFFFFF  // Infinite timeout
        !           581: 
        !           582: //
        !           583: // Basud rates at which the communication device operates
        !           584: //
        !           585: 
        !           586: #define CBR_110             110
        !           587: #define CBR_300             300
        !           588: #define CBR_600             600
        !           589: #define CBR_1200            1200
        !           590: #define CBR_2400            2400
        !           591: #define CBR_4800            4800
        !           592: #define CBR_9600            9600
        !           593: #define CBR_14400           14400
        !           594: #define CBR_19200           19200
        !           595: #define CBR_38400           38400
        !           596: #define CBR_56000           56000
        !           597: #define CBR_128000          128000
        !           598: #define CBR_256000          256000
        !           599: 
        !           600: //
        !           601: // Error Flags
        !           602: //
        !           603: 
        !           604: #define CE_RXOVER           0x0001  // Receive Queue overflow
        !           605: #define CE_OVERRUN          0x0002  // Receive Overrun Error
        !           606: #define CE_RXPARITY         0x0004  // Receive Parity Error
        !           607: #define CE_FRAME            0x0008  // Receive Framing error
        !           608: #define CE_BREAK            0x0010  // Break Detected
        !           609: #define CE_TXFULL           0x0100  // TX Queue is full
        !           610: #define CE_PTO              0x0200  // LPTx Timeout
        !           611: #define CE_IOE              0x0400  // LPTx I/O Error
        !           612: #define CE_DNS              0x0800  // LPTx Device not selected
        !           613: #define CE_OOP              0x1000  // LPTx Out-Of-Paper
        !           614: #define CE_MODE             0x8000  // Requested mode unsupported
        !           615: 
        !           616: #define IE_BADID            (-1)    // Invalid or unsupported id
        !           617: #define IE_OPEN             (-2)    // Device Already Open
        !           618: #define IE_NOPEN            (-3)    // Device Not Open
        !           619: #define IE_MEMORY           (-4)    // Unable to allocate queues
        !           620: #define IE_DEFAULT          (-5)    // Error in default parameters
        !           621: #define IE_HARDWARE         (-10)   // Hardware Not Present
        !           622: #define IE_BYTESIZE         (-11)   // Illegal Byte Size
        !           623: #define IE_BAUDRATE         (-12)   // Unsupported BaudRate
        !           624: 
        !           625: //
        !           626: // Events
        !           627: //
        !           628: 
        !           629: #define EV_RXCHAR           0x0001  // Any Character received
        !           630: #define EV_RXFLAG           0x0002  // Received certain character
        !           631: #define EV_TXEMPTY          0x0004  // Transmitt Queue Empty
        !           632: #define EV_CTS              0x0008  // CTS changed state
        !           633: #define EV_DSR              0x0010  // DSR changed state
        !           634: #define EV_RLSD             0x0020  // RLSD changed state
        !           635: #define EV_BREAK            0x0040  // BREAK received
        !           636: #define EV_ERR              0x0080  // Line status error occurred
        !           637: #define EV_RING             0x0100  // Ring signal detected
        !           638: #define EV_PERR             0x0200  // Printer error occured
        !           639: #define EV_RX80FULL         0x0400  // Receive buffer is 80 percent full
        !           640: #define EV_EVENT1           0x0800  // Provider specific event 1
        !           641: #define EV_EVENT2           0x1000  // Provider specific event 2
        !           642: 
        !           643: //
        !           644: // Escape Functions
        !           645: //
        !           646: 
        !           647: #define SETXOFF             1       // Simulate XOFF received
        !           648: #define SETXON              2       // Simulate XON received
        !           649: #define SETRTS              3       // Set RTS high
        !           650: #define CLRRTS              4       // Set RTS low
        !           651: #define SETDTR              5       // Set DTR high
        !           652: #define CLRDTR              6       // Set DTR low
        !           653: #define RESETDEV            7       // Reset device if possible
        !           654: #define SETBREAK            8       // Set the device break line.
        !           655: #define CLRBREAK            9       // Clear the device break line.
        !           656: 
        !           657: //
        !           658: // PURGE function flags.
        !           659: //
        !           660: #define PURGE_TXABORT       0x0001  // Kill the pending/current writes to the comm port.
        !           661: #define PURGE_RXABORT       0x0002  // Kill the pending/current reads to the comm port.
        !           662: #define PURGE_TXCLEAR       0x0004  // Kill the transmit queue if there.
        !           663: #define PURGE_RXCLEAR       0x0008  // Kill the typeahead buffer if there.
        !           664: 
        !           665: #define LPTx                0x80    // Set if ID is for LPT device
        !           666: 
        !           667: //
        !           668: // Modem Status Flags
        !           669: //
        !           670: #define MS_CTS_ON           ((DWORD)0x0010)
        !           671: #define MS_DSR_ON           ((DWORD)0x0020)
        !           672: #define MS_RING_ON          ((DWORD)0x0040)
        !           673: #define MS_RLSD_ON          ((DWORD)0x0080)
        !           674: 
        !           675: //
        !           676: // WaitSoundState() Constants
        !           677: //
        !           678: 
        !           679: #define S_QUEUEEMPTY        0
        !           680: #define S_THRESHOLD         1
        !           681: #define S_ALLTHRESHOLD      2
        !           682: 
        !           683: //
        !           684: // Accent Modes
        !           685: //
        !           686: 
        !           687: #define S_NORMAL      0
        !           688: #define S_LEGATO      1
        !           689: #define S_STACCATO    2
        !           690: 
        !           691: //
        !           692: // SetSoundNoise() Sources
        !           693: //
        !           694: 
        !           695: #define S_PERIOD512   0     // Freq = N/512 high pitch, less coarse hiss
        !           696: #define S_PERIOD1024  1     // Freq = N/1024
        !           697: #define S_PERIOD2048  2     // Freq = N/2048 low pitch, more coarse hiss
        !           698: #define S_PERIODVOICE 3     // Source is frequency from voice channel (3)
        !           699: #define S_WHITE512    4     // Freq = N/512 high pitch, less coarse hiss
        !           700: #define S_WHITE1024   5     // Freq = N/1024
        !           701: #define S_WHITE2048   6     // Freq = N/2048 low pitch, more coarse hiss
        !           702: #define S_WHITEVOICE  7     // Source is frequency from voice channel (3)
        !           703: 
        !           704: #define S_SERDVNA     (-1)  // Device not available
        !           705: #define S_SEROFM      (-2)  // Out of memory
        !           706: #define S_SERMACT     (-3)  // Music active
        !           707: #define S_SERQFUL     (-4)  // Queue full
        !           708: #define S_SERBDNT     (-5)  // Invalid note
        !           709: #define S_SERDLN      (-6)  // Invalid note length
        !           710: #define S_SERDCC      (-7)  // Invalid note count
        !           711: #define S_SERDTP      (-8)  // Invalid tempo
        !           712: #define S_SERDVL      (-9)  // Invalid volume
        !           713: #define S_SERDMD      (-10) // Invalid mode
        !           714: #define S_SERDSH      (-11) // Invalid shape
        !           715: #define S_SERDPT      (-12) // Invalid pitch
        !           716: #define S_SERDFQ      (-13) // Invalid frequency
        !           717: #define S_SERDDR      (-14) // Invalid duration
        !           718: #define S_SERDSR      (-15) // Invalid source
        !           719: #define S_SERDST      (-16) // Invalid state
        !           720: 
        !           721: #define NMPWAIT_WAIT_FOREVER            0xffffffff
        !           722: #define NMPWAIT_NOWAIT                  0x00000001
        !           723: #define NMPWAIT_USE_DEFAULT_WAIT        0x00000000
        !           724: 
        !           725: #define FS_CASE_IS_PRESERVED            FILE_CASE_PRESERVED_NAMES
        !           726: #define FS_CASE_SENSITIVE               FILE_CASE_SENSITIVE_SEARCH
        !           727: #define FS_UNICODE_STORED_ON_DISK       FILE_UNICODE_ON_DISK
        !           728: 
        !           729: #define FILE_MAP_WRITE      SECTION_MAP_WRITE
        !           730: #define FILE_MAP_READ       SECTION_MAP_READ
        !           731: #define FILE_MAP_ALL_ACCESS SECTION_ALL_ACCESS
        !           732: 
        !           733: #define OF_READ             0x00000000
        !           734: #define OF_WRITE            0x00000001
        !           735: #define OF_READWRITE        0x00000002
        !           736: #define OF_SHARE_COMPAT     0x00000000
        !           737: #define OF_SHARE_EXCLUSIVE  0x00000010
        !           738: #define OF_SHARE_DENY_WRITE 0x00000020
        !           739: #define OF_SHARE_DENY_READ  0x00000030
        !           740: #define OF_SHARE_DENY_NONE  0x00000040
        !           741: #define OF_PARSE            0x00000100
        !           742: #define OF_DELETE           0x00000200
        !           743: #define OF_VERIFY           0x00000400
        !           744: #define OF_CANCEL           0x00000800
        !           745: #define OF_CREATE           0x00001000
        !           746: #define OF_PROMPT           0x00002000
        !           747: #define OF_EXIST            0x00004000
        !           748: #define OF_REOPEN           0x00008000
        !           749: 
        !           750: typedef struct _OFSTRUCT {
        !           751:     BYTE cBytes;
        !           752:     BYTE fFixedDisk;
        !           753:     WORD nErrCode;
        !           754:     WORD Reserved1;
        !           755:     WORD Reserved2;
        !           756:     BYTE szPathName[120];
        !           757: } OFSTRUCT, *LPOFSTRUCT, *POFSTRUCT;
        !           758: 
        !           759: LONG
        !           760: APIENTRY
        !           761: InterlockedIncrement(
        !           762:     LPLONG lpAddend
        !           763:     );
        !           764: 
        !           765: LONG
        !           766: APIENTRY
        !           767: InterlockedDecrement(
        !           768:     LPLONG lpAddend
        !           769:     );
        !           770: 
        !           771: // MVDM related Stuff
        !           772: #define MAXIMUM_VDM_COMMAND_LENGTH     128
        !           773: #define MAXIMUM_VDM_ENVIORNMENT        32*1024
        !           774: #define MAXIMUM_VDM_CURRENT_DIR        64
        !           775: 
        !           776: // VDMState defines
        !           777: #define ASKING_FOR_FIRST_COMMAND 1     // Very First call.
        !           778: #define ASKING_FOR_WOW_BINARY   2      // Caller is WOWVDM
        !           779: #define ASKING_FOR_DOS_BINARY   4      // Caller is DOSVDM
        !           780: #define ASKING_FOR_SECOND_TIME  8      // Caller is asking second time after
        !           781:                                        // allocating bigger buffers.
        !           782: typedef struct _VDMINFO {
        !           783:     LPVOID CmdLine;
        !           784:     LPVOID Enviornment;
        !           785:     USHORT CmdSize;
        !           786:     USHORT CurDrive;
        !           787:     ULONG  EnviornmentSize;
        !           788:     ULONG  ErrorCode;
        !           789:     ULONG  VDMState;
        !           790:     ULONG  iTask;
        !           791: } VDMINFO, *PVDMINFO;
        !           792: 
        !           793: DWORD
        !           794: APIENTRY
        !           795: FreeResource(
        !           796:         HANDLE hResData
        !           797:         );
        !           798: 
        !           799: LPSTR
        !           800: APIENTRY
        !           801: LockResource(
        !           802:         HANDLE hResData
        !           803:         );
        !           804: 
        !           805: #define UnlockResource(hResData) ((hResData), 0)
        !           806: #define MAXINTATOM 0xC000
        !           807: #define MAKEINTATOM(i)  (LPSTR)((DWORD)((WORD)(i)))
        !           808: 
        !           809: int
        !           810: APIENTRY
        !           811: WinMain(
        !           812:     HANDLE hInstance,
        !           813:     HANDLE hPrevInstance,
        !           814:     LPSTR lpCmdLine,
        !           815:     int nShowCmd
        !           816:     );
        !           817: 
        !           818: BOOL
        !           819: APIENTRY
        !           820: FreeLibrary(
        !           821:     HANDLE hLibModule
        !           822:     );
        !           823: 
        !           824: FARPROC
        !           825: APIENTRY
        !           826: GetProcAddress(
        !           827:     HANDLE hModule,
        !           828:     LPSTR lpProcName
        !           829:     );
        !           830: 
        !           831: DWORD
        !           832: APIENTRY
        !           833: GetVersion( VOID );
        !           834: 
        !           835: HANDLE
        !           836: APIENTRY
        !           837: GlobalAlloc(
        !           838:     DWORD dwFlags,
        !           839:     DWORD dwBytes
        !           840:     );
        !           841: 
        !           842: HANDLE
        !           843: APIENTRY
        !           844: GlobalReAlloc(
        !           845:     HANDLE hMem,
        !           846:     DWORD dwBytes,
        !           847:     DWORD dwFlags
        !           848:     );
        !           849: 
        !           850: DWORD
        !           851: APIENTRY
        !           852: GlobalSize(
        !           853:     HANDLE hMem
        !           854:     );
        !           855: 
        !           856: DWORD
        !           857: APIENTRY
        !           858: GlobalFlags(
        !           859:     HANDLE hMem
        !           860:     );
        !           861: 
        !           862: 
        !           863: LPSTR
        !           864: APIENTRY
        !           865: GlobalLock(
        !           866:     HANDLE hMem
        !           867:     );
        !           868: 
        !           869: 
        !           870: HANDLE
        !           871: APIENTRY
        !           872: GlobalHandle(
        !           873:     LPSTR pMem
        !           874:     );
        !           875: 
        !           876: 
        !           877: BOOL
        !           878: APIENTRY
        !           879: GlobalUnlock(
        !           880:     HANDLE hMem
        !           881:     );
        !           882: 
        !           883: 
        !           884: LPVOID
        !           885: APIENTRY
        !           886: GlobalFree(
        !           887:     HANDLE hMem
        !           888:     );
        !           889: 
        !           890: 
        !           891: VOID
        !           892: APIENTRY
        !           893: GlobalMemoryStatus(
        !           894:     LPMEMORYSTATUS lpBuffer
        !           895:     );
        !           896: 
        !           897: HANDLE
        !           898: APIENTRY
        !           899: LocalAlloc(
        !           900:     DWORD dwFlags,
        !           901:     DWORD dwBytes
        !           902:     );
        !           903: 
        !           904: HANDLE
        !           905: APIENTRY
        !           906: LocalReAlloc(
        !           907:     HANDLE hMem,
        !           908:     DWORD dwBytes,
        !           909:     DWORD dwFlags
        !           910:     );
        !           911: 
        !           912: LPSTR
        !           913: APIENTRY
        !           914: LocalLock(
        !           915:     HANDLE hMem
        !           916:     );
        !           917: 
        !           918: HANDLE
        !           919: APIENTRY
        !           920: LocalHandle(
        !           921:     LPSTR pMem
        !           922:     );
        !           923: 
        !           924: BOOL
        !           925: APIENTRY
        !           926: LocalUnlock(
        !           927:     HANDLE hMem
        !           928:     );
        !           929: 
        !           930: DWORD
        !           931: APIENTRY
        !           932: LocalSize(
        !           933:     HANDLE hMem
        !           934:     );
        !           935: 
        !           936: DWORD
        !           937: LocalFlags(
        !           938:     HANDLE hMem
        !           939:     );
        !           940: 
        !           941: HANDLE
        !           942: APIENTRY
        !           943: LocalFree(
        !           944:     HANDLE hMem
        !           945:     );
        !           946: 
        !           947: LPVOID
        !           948: APIENTRY
        !           949: VirtualAlloc(
        !           950:     LPVOID lpAddress,
        !           951:     DWORD dwSize,
        !           952:     DWORD flAllocationType,
        !           953:     DWORD flProtect
        !           954:     );
        !           955: 
        !           956: BOOL
        !           957: APIENTRY
        !           958: VirtualFree(
        !           959:     LPVOID lpAddress,
        !           960:     DWORD dwSize,
        !           961:     DWORD dwFreeType
        !           962:     );
        !           963: 
        !           964: BOOL
        !           965: APIENTRY
        !           966: VirtualProtect(
        !           967:     LPVOID lpAddress,
        !           968:     DWORD dwSize,
        !           969:     DWORD flNewProtect,
        !           970:     PDWORD lpflOldProtect
        !           971:     );
        !           972: 
        !           973: DWORD
        !           974: APIENTRY
        !           975: VirtualQuery(
        !           976:     LPVOID lpAddress,
        !           977:     PMEMORY_BASIC_INFORMATION lpBuffer,
        !           978:     DWORD dwLength
        !           979:     );
        !           980: 
        !           981: HANDLE
        !           982: APIENTRY
        !           983: HeapCreate(
        !           984:     DWORD flOptions,
        !           985:     DWORD dwInitialSize,
        !           986:     DWORD dwMaximumSize
        !           987:     );
        !           988: 
        !           989: BOOL
        !           990: APIENTRY
        !           991: HeapDestroy(
        !           992:     HANDLE hHeap
        !           993:     );
        !           994: 
        !           995: LPSTR
        !           996: APIENTRY
        !           997: HeapAlloc(
        !           998:     HANDLE hHeap,
        !           999:     DWORD dwBytes
        !          1000:     );
        !          1001: 
        !          1002: BOOL
        !          1003: APIENTRY
        !          1004: HeapFree(
        !          1005:     HANDLE hHeap,
        !          1006:     LPSTR lpMem
        !          1007:     );
        !          1008: 
        !          1009: DWORD
        !          1010: APIENTRY
        !          1011: HeapSize(
        !          1012:     HANDLE hHeap,
        !          1013:     LPSTR lpMem
        !          1014:     );
        !          1015: 
        !          1016: 
        !          1017: HANDLE
        !          1018: APIENTRY
        !          1019: OpenProcess(
        !          1020:     DWORD dwDesiredAccess,
        !          1021:     BOOL bInheritHandle,
        !          1022:     DWORD dwProcessId
        !          1023:     );
        !          1024: 
        !          1025: HANDLE
        !          1026: APIENTRY
        !          1027: GetCurrentProcess(
        !          1028:     VOID
        !          1029:     );
        !          1030: 
        !          1031: DWORD
        !          1032: APIENTRY
        !          1033: GetCurrentProcessId(
        !          1034:     VOID
        !          1035:     );
        !          1036: 
        !          1037: VOID
        !          1038: APIENTRY
        !          1039: ExitProcess(
        !          1040:     DWORD dwExitCode
        !          1041:     );
        !          1042: 
        !          1043: BOOL
        !          1044: APIENTRY
        !          1045: TerminateProcess(
        !          1046:     HANDLE hProcess,
        !          1047:     DWORD dwExitCode
        !          1048:     );
        !          1049: 
        !          1050: BOOL
        !          1051: APIENTRY
        !          1052: GetExitCodeProcess(
        !          1053:     HANDLE hProcess,
        !          1054:     LPDWORD lpExitCode
        !          1055:     );
        !          1056: 
        !          1057: 
        !          1058: VOID
        !          1059: APIENTRY
        !          1060: FatalExit(
        !          1061:     DWORD dwExitCode
        !          1062:     );
        !          1063: 
        !          1064: LPVOID
        !          1065: APIENTRY
        !          1066: GetEnvironmentStrings(
        !          1067:     VOID
        !          1068:     );
        !          1069: 
        !          1070: VOID
        !          1071: APIENTRY
        !          1072: RaiseException(
        !          1073:     DWORD dwExceptionCode,
        !          1074:     DWORD dwExceptionFlags,
        !          1075:     DWORD nNumberOfArguments,
        !          1076:     LPDWORD lpArguments
        !          1077:     );
        !          1078: 
        !          1079: EXCEPTION_DISPOSITION
        !          1080: APIENTRY
        !          1081: UnhandledExceptionFilter(
        !          1082:     struct _EXCEPTION_POINTERS *ExceptionInfo
        !          1083:     );
        !          1084: 
        !          1085: HANDLE
        !          1086: APIENTRY
        !          1087: CreateThread(
        !          1088:     LPSECURITY_ATTRIBUTES lpThreadAttributes,
        !          1089:     DWORD dwStackSize,
        !          1090:     LPTHREAD_START_ROUTINE lpStartAddress,
        !          1091:     LPVOID lpParameter,
        !          1092:     DWORD dwCreationFlags,
        !          1093:     LPDWORD lpThreadId
        !          1094:     );
        !          1095: 
        !          1096: HANDLE
        !          1097: APIENTRY
        !          1098: GetCurrentThread(
        !          1099:     VOID
        !          1100:     );
        !          1101: 
        !          1102: DWORD
        !          1103: APIENTRY
        !          1104: GetCurrentThreadId(
        !          1105:     VOID
        !          1106:     );
        !          1107: 
        !          1108: BOOL
        !          1109: APIENTRY
        !          1110: SetThreadPriority(
        !          1111:     HANDLE hThread,
        !          1112:     int nPriority
        !          1113:     );
        !          1114: 
        !          1115: int
        !          1116: APIENTRY
        !          1117: GetThreadPriority(
        !          1118:     HANDLE hThread
        !          1119:     );
        !          1120: 
        !          1121: VOID
        !          1122: APIENTRY
        !          1123: ExitThread(
        !          1124:     DWORD dwExitCode
        !          1125:     );
        !          1126: 
        !          1127: BOOL
        !          1128: APIENTRY
        !          1129: TerminateThread(
        !          1130:     HANDLE hThread,
        !          1131:     DWORD dwExitCode
        !          1132:     );
        !          1133: 
        !          1134: BOOL
        !          1135: APIENTRY
        !          1136: GetExitCodeThread(
        !          1137:     HANDLE hThread,
        !          1138:     LPDWORD lpExitCode
        !          1139:     );
        !          1140: 
        !          1141: BOOL
        !          1142: APIENTRY
        !          1143: GetThreadSelectorEntry(
        !          1144:     HANDLE hThread,
        !          1145:     DWORD dwSelector,
        !          1146:     LPLDT_ENTRY lpSelectorEntry
        !          1147:     );
        !          1148: 
        !          1149: DWORD
        !          1150: APIENTRY
        !          1151: GetLastError(
        !          1152:     VOID
        !          1153:     );
        !          1154: 
        !          1155: VOID
        !          1156: APIENTRY
        !          1157: SetLastError(
        !          1158:     DWORD dwErrCode
        !          1159:     );
        !          1160: 
        !          1161: BOOL
        !          1162: APIENTRY
        !          1163: GetOverlappedResult(
        !          1164:     HANDLE hFile,
        !          1165:     LPOVERLAPPED lpOverlapped,
        !          1166:     LPDWORD lpNumberOfBytesTransferred,
        !          1167:     BOOL bWait
        !          1168:     );
        !          1169: 
        !          1170: BOOL
        !          1171: APIENTRY
        !          1172: SetErrorMode(
        !          1173:     BOOL bMode
        !          1174:     );
        !          1175: 
        !          1176: 
        !          1177: BOOL
        !          1178: APIENTRY
        !          1179: ReadProcessMemory(
        !          1180:     HANDLE hProcess,
        !          1181:     LPVOID lpBaseAddress,
        !          1182:     LPVOID lpBuffer,
        !          1183:     DWORD nSize,
        !          1184:     LPDWORD lpNumberOfBytesRead
        !          1185:     );
        !          1186: 
        !          1187: BOOL
        !          1188: APIENTRY
        !          1189: WriteProcessMemory(
        !          1190:     HANDLE hProcess,
        !          1191:     LPVOID lpBaseAddress,
        !          1192:     LPVOID lpBuffer,
        !          1193:     DWORD nSize,
        !          1194:     LPDWORD lpNumberOfBytesWritten
        !          1195:     );
        !          1196: 
        !          1197: BOOL
        !          1198: APIENTRY
        !          1199: GetThreadContext(
        !          1200:     HANDLE hThread,
        !          1201:     LPCONTEXT lpContext
        !          1202:     );
        !          1203: 
        !          1204: BOOL
        !          1205: APIENTRY
        !          1206: SetThreadContext(
        !          1207:     HANDLE hThread,
        !          1208:     LPCONTEXT lpContext
        !          1209:     );
        !          1210: 
        !          1211: DWORD
        !          1212: APIENTRY
        !          1213: SuspendThread(
        !          1214:     HANDLE hThread
        !          1215:     );
        !          1216: 
        !          1217: DWORD
        !          1218: APIENTRY
        !          1219: ResumeThread(
        !          1220:     IN HANDLE hThread
        !          1221:     );
        !          1222: 
        !          1223: VOID
        !          1224: APIENTRY
        !          1225: DebugBreak(
        !          1226:     VOID
        !          1227:     );
        !          1228: 
        !          1229: BOOL
        !          1230: APIENTRY
        !          1231: WaitForDebugEvent(
        !          1232:     LPDEBUG_EVENT lpDebugEvent,
        !          1233:     DWORD dwMilliseconds
        !          1234:     );
        !          1235: 
        !          1236: BOOL
        !          1237: APIENTRY
        !          1238: ContinueDebugEvent(
        !          1239:     DWORD dwProcessId,
        !          1240:     DWORD dwThreadId,
        !          1241:     DWORD dwContinueStatus
        !          1242:     );
        !          1243: 
        !          1244: BOOL
        !          1245: APIENTRY
        !          1246: DebugActiveProcess(
        !          1247:     DWORD dwProcessId
        !          1248:     );
        !          1249: 
        !          1250: VOID
        !          1251: APIENTRY
        !          1252: InitializeCriticalSection(
        !          1253:     LPCRITICAL_SECTION lpCriticalSection
        !          1254:     );
        !          1255: 
        !          1256: VOID
        !          1257: APIENTRY
        !          1258: EnterCriticalSection(
        !          1259:     LPCRITICAL_SECTION lpCriticalSection
        !          1260:     );
        !          1261: 
        !          1262: VOID
        !          1263: APIENTRY
        !          1264: LeaveCriticalSection(
        !          1265:     LPCRITICAL_SECTION lpCriticalSection
        !          1266:     );
        !          1267: 
        !          1268: VOID
        !          1269: APIENTRY
        !          1270: DeleteCriticalSection(
        !          1271:     LPCRITICAL_SECTION lpCriticalSection
        !          1272:     );
        !          1273: 
        !          1274: BOOL
        !          1275: APIENTRY
        !          1276: SetEvent(
        !          1277:     HANDLE hEvent
        !          1278:     );
        !          1279: 
        !          1280: BOOL
        !          1281: APIENTRY
        !          1282: ResetEvent(
        !          1283:     HANDLE hEvent
        !          1284:     );
        !          1285: 
        !          1286: BOOL
        !          1287: APIENTRY
        !          1288: PulseEvent(
        !          1289:     HANDLE hEvent
        !          1290:     );
        !          1291: 
        !          1292: BOOL
        !          1293: APIENTRY
        !          1294: ReleaseSemaphore(
        !          1295:     HANDLE hSemaphore,
        !          1296:     LONG lReleaseCount,
        !          1297:     LPLONG lpPreviousCount
        !          1298:     );
        !          1299: 
        !          1300: BOOL
        !          1301: APIENTRY
        !          1302: ReleaseMutex(
        !          1303:     HANDLE hMutex
        !          1304:     );
        !          1305: 
        !          1306: DWORD
        !          1307: APIENTRY
        !          1308: WaitForSingleObject(
        !          1309:     HANDLE hHandle,
        !          1310:     DWORD dwMilliseconds
        !          1311:     );
        !          1312: 
        !          1313: DWORD
        !          1314: APIENTRY
        !          1315: WaitForMultipleObjects(
        !          1316:     DWORD nCount,
        !          1317:     LPHANDLE lpHandles,
        !          1318:     BOOL bWaitAll,
        !          1319:     DWORD dwMilliseconds
        !          1320:     );
        !          1321: 
        !          1322: VOID
        !          1323: APIENTRY
        !          1324: Sleep(
        !          1325:     DWORD dwMilliseconds
        !          1326:     );
        !          1327: 
        !          1328: HANDLE
        !          1329: APIENTRY
        !          1330: LoadResource(
        !          1331:     HANDLE hModule,
        !          1332:     HANDLE hResInfo
        !          1333:     );
        !          1334: 
        !          1335: DWORD
        !          1336: APIENTRY
        !          1337: SizeofResource(
        !          1338:     HANDLE hModule,
        !          1339:     HANDLE hResInfo
        !          1340:     );
        !          1341: 
        !          1342: ATOM
        !          1343: APIENTRY
        !          1344: GlobalDeleteAtom(
        !          1345:     ATOM nAtom
        !          1346:     );
        !          1347: 
        !          1348: BOOL
        !          1349: APIENTRY
        !          1350: InitAtomTable(
        !          1351:     DWORD nSize
        !          1352:     );
        !          1353: 
        !          1354: ATOM
        !          1355: APIENTRY
        !          1356: DeleteAtom(
        !          1357:     ATOM nAtom
        !          1358:     );
        !          1359: 
        !          1360: DWORD
        !          1361: APIENTRY
        !          1362: SetHandleCount(
        !          1363:     DWORD dwNumber
        !          1364:     );
        !          1365: 
        !          1366: DWORD
        !          1367: APIENTRY
        !          1368: GetLogicalDrives(
        !          1369:     VOID
        !          1370:     );
        !          1371: 
        !          1372: BOOL
        !          1373: APIENTRY
        !          1374: LockFile(
        !          1375:     HANDLE hFile,
        !          1376:     DWORD dwFileOffsetHigh,
        !          1377:     DWORD dwFileOffsetLow,
        !          1378:     DWORD nNumberOfBytesToLock
        !          1379:     );
        !          1380: 
        !          1381: BOOL
        !          1382: APIENTRY
        !          1383: UnlockFile(
        !          1384:     HANDLE hFile,
        !          1385:     DWORD dwFileOffsetHigh,
        !          1386:     DWORD dwFileOffsetLow,
        !          1387:     DWORD nNumberOfBytesToUnlock
        !          1388:     );
        !          1389: 
        !          1390: DWORD
        !          1391: APIENTRY
        !          1392: GetFileType(
        !          1393:     HANDLE hFile
        !          1394:     );
        !          1395: 
        !          1396: DWORD
        !          1397: APIENTRY
        !          1398: GetFileSize(
        !          1399:     HANDLE hFile,
        !          1400:     LPDWORD lpFileSizeHigh
        !          1401:     );
        !          1402: 
        !          1403: HANDLE
        !          1404: APIENTRY
        !          1405: GetStdHandle(
        !          1406:     DWORD nStdHandle
        !          1407:     );
        !          1408: 
        !          1409: BOOL
        !          1410: APIENTRY
        !          1411: SetStdHandle(
        !          1412:     DWORD nStdHandle,
        !          1413:     HANDLE hHandle
        !          1414:     );
        !          1415: 
        !          1416: BOOL
        !          1417: APIENTRY
        !          1418: WriteFile(
        !          1419:     HANDLE hFile,
        !          1420:     LPVOID lpBuffer,
        !          1421:     DWORD nNumberOfBytesToWrite,
        !          1422:     LPDWORD lpNumberOfBytesWritten,
        !          1423:     LPOVERLAPPED lpOverlapped
        !          1424:     );
        !          1425: 
        !          1426: BOOL
        !          1427: APIENTRY
        !          1428: ReadFile(
        !          1429:     HANDLE hFile,
        !          1430:     LPVOID lpBuffer,
        !          1431:     DWORD nNumberOfBytesToRead,
        !          1432:     LPDWORD lpNumberOfBytesRead,
        !          1433:     LPOVERLAPPED lpOverlapped
        !          1434:     );
        !          1435: 
        !          1436: BOOL
        !          1437: APIENTRY
        !          1438: FlushFileBuffers(
        !          1439:     HANDLE hFile
        !          1440:     );
        !          1441: 
        !          1442: BOOL
        !          1443: APIENTRY
        !          1444: SetEndOfFile(
        !          1445:     HANDLE hFile
        !          1446:     );
        !          1447: 
        !          1448: DWORD
        !          1449: APIENTRY
        !          1450: SetFilePointer(
        !          1451:     HANDLE hFile,
        !          1452:     LONG lDistanceToMove,
        !          1453:     PLONG lpDistanceToMoveHigh,
        !          1454:     DWORD dwMoveMethod
        !          1455:     );
        !          1456: 
        !          1457: BOOL
        !          1458: APIENTRY
        !          1459: FindClose(
        !          1460:     HANDLE hFindFile
        !          1461:     );
        !          1462: 
        !          1463: BOOL
        !          1464: APIENTRY
        !          1465: GetFileTime(
        !          1466:     HANDLE hFile,
        !          1467:     LPFILETIME lpCreationTime,
        !          1468:     LPFILETIME lpLastAccessTime,
        !          1469:     LPFILETIME lpLastWriteTime
        !          1470:     );
        !          1471: 
        !          1472: BOOL
        !          1473: APIENTRY
        !          1474: SetFileTime(
        !          1475:     HANDLE hFile,
        !          1476:     LPFILETIME lpCreationTime,
        !          1477:     LPFILETIME lpLastAccessTime,
        !          1478:     LPFILETIME lpLastWriteTime
        !          1479:     );
        !          1480: 
        !          1481: BOOL
        !          1482: APIENTRY
        !          1483: CloseHandle(
        !          1484:     HANDLE hObject
        !          1485:     );
        !          1486: 
        !          1487: BOOL
        !          1488: APIENTRY
        !          1489: DuplicateHandle(
        !          1490:     HANDLE hSourceProcessHandle,
        !          1491:     HANDLE hSourceHandle,
        !          1492:     HANDLE hTargetProcessHandle,
        !          1493:     LPHANDLE lpTargetHandle,
        !          1494:     DWORD dwDesiredAccess,
        !          1495:     BOOL bInheritHandle,
        !          1496:     DWORD dwOptions
        !          1497:     );
        !          1498: 
        !          1499: DWORD
        !          1500: APIENTRY
        !          1501: LoadModule(
        !          1502:     LPSTR lpModuleName,
        !          1503:     LPVOID lpParameterBlock
        !          1504:     );
        !          1505: 
        !          1506: DWORD
        !          1507: APIENTRY
        !          1508: WinExec(
        !          1509:     LPSTR lpCmdLine,
        !          1510:     WORD nCmdShow
        !          1511:     );
        !          1512: 
        !          1513: BOOL
        !          1514: APIENTRY
        !          1515: BuildCommDCB(
        !          1516:     LPSTR lpDef,
        !          1517:     LPDCB lpDCB
        !          1518:     );
        !          1519: 
        !          1520: BOOL
        !          1521: APIENTRY
        !          1522: ClearCommBreak(
        !          1523:     HANDLE hFile
        !          1524:     );
        !          1525: 
        !          1526: BOOL
        !          1527: APIENTRY
        !          1528: ClearCommError(
        !          1529:     HANDLE hFile,
        !          1530:     LPDWORD lpErrors,
        !          1531:     LPCOMSTAT lpStat
        !          1532:     );
        !          1533: 
        !          1534: BOOL
        !          1535: APIENTRY
        !          1536: SetupComm(
        !          1537:     HANDLE hFile,
        !          1538:     DWORD dwInQueue,
        !          1539:     DWORD dwOutQueue
        !          1540:     );
        !          1541: 
        !          1542: BOOL
        !          1543: APIENTRY
        !          1544: EnableCommNotification(
        !          1545:     HANDLE hFile,
        !          1546:     HANDLE hWnd,
        !          1547:     DWORD dwInTrigger,
        !          1548:     DWORD dwOutTrigger
        !          1549:     );
        !          1550: 
        !          1551: BOOL
        !          1552: APIENTRY
        !          1553: EscapeCommFunction(
        !          1554:     HANDLE hFile,
        !          1555:     DWORD dwFunc
        !          1556:     );
        !          1557: 
        !          1558: BOOL
        !          1559: APIENTRY
        !          1560: ExtendedProviderFunction(
        !          1561:     HANDLE hFile,
        !          1562:     WORD wCatagory,
        !          1563:     WORD wFunction,
        !          1564:     LPVOID lpParam,
        !          1565:     LPVOID lpData,
        !          1566:     DWORD dwParamLength,
        !          1567:     LPDWORD lpDataLength
        !          1568:     );
        !          1569: 
        !          1570: BOOL
        !          1571: APIENTRY
        !          1572: GetCommConfig(
        !          1573:     HANDLE hFile,
        !          1574:     LPVOID lpCOMMCONFIG,
        !          1575:     DWORD dwSize
        !          1576:     );
        !          1577: 
        !          1578: BOOL
        !          1579: APIENTRY
        !          1580: GetCommMask(
        !          1581:     HANDLE hFile,
        !          1582:     LPDWORD lpEvtMask
        !          1583:     );
        !          1584: 
        !          1585: BOOL
        !          1586: APIENTRY
        !          1587: GetCommModemStatus(
        !          1588:     HANDLE hFile,
        !          1589:     LPDWORD lpModemStat
        !          1590:     );
        !          1591: 
        !          1592: BOOL
        !          1593: APIENTRY
        !          1594: GetCommState(
        !          1595:     HANDLE hFile,
        !          1596:     LPDCB lpDCB
        !          1597:     );
        !          1598: 
        !          1599: BOOL
        !          1600: APIENTRY
        !          1601: GetCommTimeouts(
        !          1602:     HANDLE hFile,
        !          1603:     LPCOMMTIMEOUTS lpCommTimeouts
        !          1604:     );
        !          1605: 
        !          1606: BOOL
        !          1607: APIENTRY
        !          1608: PurgeComm(
        !          1609:     HANDLE hFile,
        !          1610:     DWORD dwFlags
        !          1611:     );
        !          1612: 
        !          1613: BOOL
        !          1614: APIENTRY
        !          1615: SetCommBreak(
        !          1616:     HANDLE hFile
        !          1617:     );
        !          1618: 
        !          1619: BOOL
        !          1620: APIENTRY
        !          1621: SetCommConfig(
        !          1622:     HANDLE hFile,
        !          1623:     LPVOID lpCOMMCONFIG,
        !          1624:     DWORD dwSize
        !          1625:     );
        !          1626: 
        !          1627: BOOL
        !          1628: APIENTRY
        !          1629: SetCommMask(
        !          1630:     HANDLE hFile,
        !          1631:     DWORD dwEvtMask
        !          1632:     );
        !          1633: 
        !          1634: BOOL
        !          1635: APIENTRY
        !          1636: SetCommState(
        !          1637:     HANDLE hFile,
        !          1638:     LPDCB lpDCB
        !          1639:     );
        !          1640: 
        !          1641: BOOL
        !          1642: APIENTRY
        !          1643: SetCommTimeouts(
        !          1644:     HANDLE hFile,
        !          1645:     LPCOMMTIMEOUTS lpCommTimeouts
        !          1646:     );
        !          1647: 
        !          1648: BOOL
        !          1649: APIENTRY
        !          1650: TransmitCommChar(
        !          1651:     HANDLE hFile,
        !          1652:     char cChar
        !          1653:     );
        !          1654: 
        !          1655: BOOL
        !          1656: APIENTRY
        !          1657: WaitCommEvent(
        !          1658:     HANDLE hFile,
        !          1659:     LPDWORD lpEvtMask,
        !          1660:     HANDLE hEvent
        !          1661:     );
        !          1662: 
        !          1663: BOOL
        !          1664: APIENTRY
        !          1665: Beep(
        !          1666:     DWORD dwFreq,
        !          1667:     DWORD dwDuration
        !          1668:     );
        !          1669: 
        !          1670: VOID
        !          1671: APIENTRY
        !          1672: OpenSound(
        !          1673:     VOID
        !          1674:     );
        !          1675: 
        !          1676: VOID
        !          1677: APIENTRY
        !          1678: CloseSound(
        !          1679:     VOID
        !          1680:     );
        !          1681: 
        !          1682: VOID
        !          1683: APIENTRY
        !          1684: StartSound(
        !          1685:     VOID
        !          1686:     );
        !          1687: 
        !          1688: VOID
        !          1689: APIENTRY
        !          1690: StopSound(
        !          1691:     VOID
        !          1692:     );
        !          1693: 
        !          1694: DWORD
        !          1695: APIENTRY
        !          1696: WaitSoundState(
        !          1697:     DWORD nState
        !          1698:     );
        !          1699: 
        !          1700: DWORD
        !          1701: APIENTRY
        !          1702: SyncAllVoices(
        !          1703:     VOID
        !          1704:     );
        !          1705: 
        !          1706: DWORD
        !          1707: APIENTRY
        !          1708: CountVoiceNotes(
        !          1709:     DWORD nVoice
        !          1710:     );
        !          1711: 
        !          1712: LPDWORD
        !          1713: APIENTRY
        !          1714: GetThresholdEvent(
        !          1715:     VOID
        !          1716:     );
        !          1717: 
        !          1718: DWORD
        !          1719: APIENTRY
        !          1720: GetThresholdStatus(
        !          1721:     VOID
        !          1722:     );
        !          1723: 
        !          1724: DWORD
        !          1725: APIENTRY
        !          1726: SetSoundNoise(
        !          1727:     DWORD nSource,
        !          1728:     DWORD nDuration
        !          1729:     );
        !          1730: 
        !          1731: DWORD
        !          1732: APIENTRY
        !          1733: SetVoiceAccent(
        !          1734:     DWORD nVoice,
        !          1735:     DWORD nTempo,
        !          1736:     DWORD nVolume,
        !          1737:     DWORD nMode,
        !          1738:     DWORD nPitch
        !          1739:     );
        !          1740: 
        !          1741: DWORD
        !          1742: APIENTRY
        !          1743: SetVoiceEnvelope(
        !          1744:     DWORD nVoice,
        !          1745:     DWORD nShape,
        !          1746:     DWORD nRepeat
        !          1747:     );
        !          1748: 
        !          1749: DWORD
        !          1750: APIENTRY
        !          1751: SetVoiceNote(
        !          1752:     DWORD nVoice,
        !          1753:     DWORD nValue,
        !          1754:     DWORD nLength,
        !          1755:     DWORD nCdots
        !          1756:     );
        !          1757: 
        !          1758: DWORD
        !          1759: APIENTRY
        !          1760: SetVoiceQueueSize(
        !          1761:     DWORD nVoice,
        !          1762:     DWORD nBytes
        !          1763:     );
        !          1764: 
        !          1765: DWORD
        !          1766: APIENTRY
        !          1767: SetVoiceSound(
        !          1768:     DWORD nVoice,
        !          1769:     LONG lFrequency,
        !          1770:     DWORD nDuration
        !          1771:     );
        !          1772: 
        !          1773: DWORD
        !          1774: APIENTRY
        !          1775: SetVoiceThreshold(
        !          1776:     DWORD nVoice,
        !          1777:     DWORD nNotes
        !          1778:     );
        !          1779: 
        !          1780: int
        !          1781: APIENTRY
        !          1782: MulDiv(
        !          1783:     int nNumber,
        !          1784:     int nNumerator,
        !          1785:     int nDenominator
        !          1786:     );
        !          1787: 
        !          1788: VOID
        !          1789: APIENTRY
        !          1790: GetSystemTime(
        !          1791:     LPSYSTEMTIME lpSystemTime
        !          1792:     );
        !          1793: 
        !          1794: BOOL
        !          1795: APIENTRY
        !          1796: SetSystemTime(
        !          1797:     LPSYSTEMTIME lpSystemTime
        !          1798:     );
        !          1799: 
        !          1800: VOID
        !          1801: APIENTRY
        !          1802: GetSystemInfo(
        !          1803:     LPSYSTEM_INFO lpSystemInfo
        !          1804:     );
        !          1805: 
        !          1806: 
        !          1807: //
        !          1808: // Routines to convert back and forth between system time and file time
        !          1809: //
        !          1810: 
        !          1811: BOOL
        !          1812: APIENTRY
        !          1813: SystemTimeToFileTime(
        !          1814:     LPSYSTEMTIME lpSystemTime,
        !          1815:     LPFILETIME lpFileTime
        !          1816:     );
        !          1817: 
        !          1818: BOOL
        !          1819: APIENTRY
        !          1820: FileTimeToSystemTime(
        !          1821:     LPFILETIME lpFileTime,
        !          1822:     LPSYSTEMTIME lpSystemTime
        !          1823:     );
        !          1824: 
        !          1825: LONG
        !          1826: APIENTRY
        !          1827: CompareFileTime(
        !          1828:     LPFILETIME lpFileTime1,
        !          1829:     LPFILETIME lpFileTime2
        !          1830:     );
        !          1831: 
        !          1832: BOOL
        !          1833: APIENTRY
        !          1834: FileTimeToDosDateTime(
        !          1835:     LPFILETIME lpFileTime,
        !          1836:     LPWORD lpFatDate,
        !          1837:     LPWORD lpFatTime
        !          1838:     );
        !          1839: 
        !          1840: BOOL
        !          1841: APIENTRY
        !          1842: DosDateTimeToFileTime(
        !          1843:     WORD wFatDate,
        !          1844:     WORD wFatTime,
        !          1845:     LPFILETIME lpFileTime
        !          1846:     );
        !          1847: 
        !          1848: DWORD
        !          1849: APIENTRY
        !          1850: GetTickCount(
        !          1851:     VOID
        !          1852:     );
        !          1853: 
        !          1854: DWORD
        !          1855: APIENTRY
        !          1856: FormatMessage(
        !          1857:     DWORD dwFlags,
        !          1858:     LPVOID lpSource,
        !          1859:     DWORD dwMessageId,
        !          1860:     DWORD dwLanguageId,
        !          1861:     LPSTR lpBuffer,
        !          1862:     DWORD nSize,
        !          1863:     LPVOID lpArguments
        !          1864:     );
        !          1865: 
        !          1866: #define FORMAT_MESSAGE_ALLOCATE_BUFFER 0x00000100
        !          1867: #define FORMAT_MESSAGE_IGNORE_INSERTS  0x00000200
        !          1868: #define FORMAT_MESSAGE_FROM_STRING     0x00000400
        !          1869: #define FORMAT_MESSAGE_FROM_HMODULE    0x00000800
        !          1870: #define FORMAT_MESSAGE_FROM_SYSTEM     0x00001000
        !          1871: #define FORMAT_MESSAGE_MAX_WIDTH_MASK  0x000000FF
        !          1872: 
        !          1873: 
        !          1874: BOOL
        !          1875: APIENTRY
        !          1876: CreatePipe(
        !          1877:     PHANDLE hReadPipe,
        !          1878:     PHANDLE hWritePipe,
        !          1879:     LPSECURITY_ATTRIBUTES lpPipeAttributes,
        !          1880:     DWORD nSize
        !          1881:     );
        !          1882: 
        !          1883: BOOL
        !          1884: APIENTRY
        !          1885: ConnectNamedPipe(
        !          1886:     HANDLE hNamedPipe,
        !          1887:     LPOVERLAPPED lpOverlapped
        !          1888:     );
        !          1889: 
        !          1890: BOOL
        !          1891: APIENTRY
        !          1892: DisconnectNamedPipe(
        !          1893:     HANDLE hNamedPipe
        !          1894:     );
        !          1895: 
        !          1896: BOOL
        !          1897: APIENTRY
        !          1898: SetNamedPipeHandleState(
        !          1899:     HANDLE hNamedPipe,
        !          1900:     LPDWORD lpMode,
        !          1901:     LPDWORD lpMaxCollectionCount,
        !          1902:     LPDWORD lpCollectDataTimeout
        !          1903:     );
        !          1904: 
        !          1905: BOOL
        !          1906: APIENTRY
        !          1907: GetNamedPipeInfo(
        !          1908:     HANDLE hNamedPipe,
        !          1909:     LPDWORD lpFlags,
        !          1910:     LPDWORD lpOutBufferSize,
        !          1911:     LPDWORD lpInBufferSize,
        !          1912:     LPDWORD lpMaxInstances
        !          1913:     );
        !          1914: 
        !          1915: BOOL
        !          1916: APIENTRY
        !          1917: PeekNamedPipe(
        !          1918:     HANDLE hNamedPipe,
        !          1919:     LPVOID lpBuffer,
        !          1920:     DWORD nBufferSize,
        !          1921:     LPDWORD lpBytesRead,
        !          1922:     LPDWORD lpTotalBytesAvail,
        !          1923:     LPDWORD lpBytesLeftThisMessage
        !          1924:     );
        !          1925: 
        !          1926: BOOL
        !          1927: APIENTRY
        !          1928: TransactNamedPipe(
        !          1929:     HANDLE hNamedPipe,
        !          1930:     LPVOID lpInBuffer,
        !          1931:     DWORD nInBufferSize,
        !          1932:     LPVOID lpOutBuffer,
        !          1933:     DWORD nOutBufferSize,
        !          1934:     LPDWORD lpBytesRead,
        !          1935:     LPOVERLAPPED lpOverlapped
        !          1936:     );
        !          1937: 
        !          1938: HANDLE
        !          1939: APIENTRY
        !          1940: CreateMailslotA(
        !          1941:     IN LPSTR lpName,
        !          1942:     IN DWORD nMaxMessageSize,
        !          1943:     IN DWORD nMailslotSize,
        !          1944:     IN DWORD lReadTimeout,
        !          1945:     IN LPSECURITY_ATTRIBUTES lpSecurityAttributes OPTIONAL
        !          1946:     );
        !          1947: HANDLE
        !          1948: APIENTRY
        !          1949: CreateMailslotW(
        !          1950:     IN LPWSTR lpName,
        !          1951:     IN DWORD nMaxMessageSize,
        !          1952:     IN DWORD nMailslotSize,
        !          1953:     IN DWORD lReadTimeout,
        !          1954:     IN LPSECURITY_ATTRIBUTES lpSecurityAttributes OPTIONAL
        !          1955:     );
        !          1956: #ifdef UNICODE
        !          1957: #define CreateMailslot CreateMailslotW
        !          1958: #else
        !          1959: #define CreateMailslot CreateMailslotA
        !          1960: #endif // !UNICODE
        !          1961: 
        !          1962: BOOL
        !          1963: APIENTRY
        !          1964: GetMailslotInfo(
        !          1965:     IN HANDLE hMailslot,
        !          1966:     OUT LPDWORD lpMaxMessageSize OPTIONAL,
        !          1967:     OUT LPDWORD lpMailslotSize OPTIONAL,
        !          1968:     OUT LPDWORD lpNextSize OPTIONAL,
        !          1969:     OUT LPDWORD lpMessageCount OPTIONAL,
        !          1970:     OUT LPDWORD lpReadTimeout OPTIONAL
        !          1971:     );
        !          1972: 
        !          1973: BOOL
        !          1974: APIENTRY
        !          1975: SetMailslotInfo(
        !          1976:     IN HANDLE hMailslot,
        !          1977:     IN DWORD lReadTimeout
        !          1978:     );
        !          1979: 
        !          1980: LPVOID
        !          1981: APIENTRY
        !          1982: MapViewOfFile(
        !          1983:     HANDLE hFileMappingObject,
        !          1984:     DWORD dwDesiredAccess,
        !          1985:     DWORD dwFileOffsetHigh,
        !          1986:     DWORD dwFileOffsetLow,
        !          1987:     DWORD dwNumberOfBytesToMap
        !          1988:     );
        !          1989: 
        !          1990: BOOL
        !          1991: APIENTRY
        !          1992: FlushViewOfFile(
        !          1993:     LPVOID lpBaseAddress,
        !          1994:     DWORD dwNumberOfBytesToFlush
        !          1995:     );
        !          1996: 
        !          1997: BOOL
        !          1998: APIENTRY
        !          1999: UnmapViewOfFile(
        !          2000:     LPVOID lpBaseAddress
        !          2001:     );
        !          2002: 
        !          2003: //
        !          2004: // _l Compat Functions
        !          2005: //
        !          2006: 
        !          2007: int
        !          2008: APIENTRY
        !          2009: lstrcmp(
        !          2010:     LPSTR lpString1,
        !          2011:     LPSTR lpString2
        !          2012:     );
        !          2013: 
        !          2014: int
        !          2015: APIENTRY
        !          2016: lstrcmpi(
        !          2017:     LPSTR lpString1,
        !          2018:     LPSTR lpString2
        !          2019:     );
        !          2020: 
        !          2021: LPSTR
        !          2022: APIENTRY
        !          2023: lstrcpy(
        !          2024:     LPSTR lpString1,
        !          2025:     LPSTR lpString2
        !          2026:     );
        !          2027: 
        !          2028: LPSTR
        !          2029: APIENTRY
        !          2030: lstrcat(
        !          2031:     LPSTR lpString1,
        !          2032:     LPSTR lpString2
        !          2033:     );
        !          2034: 
        !          2035: int
        !          2036: APIENTRY
        !          2037: lstrlen(
        !          2038:     LPSTR lpString
        !          2039:     );
        !          2040: 
        !          2041: int
        !          2042: APIENTRY
        !          2043: OpenFile(
        !          2044:     LPSTR lpFileName,
        !          2045:     LPOFSTRUCT lpReOpenBuff,
        !          2046:     WORD wStyle
        !          2047:     );
        !          2048: 
        !          2049: int
        !          2050: APIENTRY
        !          2051: OpenSystemFile(
        !          2052:     LPSTR lpFileName,
        !          2053:     LPOFSTRUCT lpReOpenBuff,
        !          2054:     WORD wStyle
        !          2055:     );
        !          2056: 
        !          2057: int
        !          2058: APIENTRY
        !          2059: _lopen(
        !          2060:     LPSTR lpPathName,
        !          2061:     int iReadWrite
        !          2062:     );
        !          2063: 
        !          2064: int
        !          2065: APIENTRY
        !          2066: _lcreat(
        !          2067:     LPSTR lpPathName,
        !          2068:     WORD  iAttribute
        !          2069:     );
        !          2070: 
        !          2071: DWORD
        !          2072: APIENTRY
        !          2073: _lread(
        !          2074:     int hFile,
        !          2075:     LPSTR lpBuffer,
        !          2076:     int nBytes
        !          2077:     );
        !          2078: 
        !          2079: DWORD
        !          2080: APIENTRY
        !          2081: _lwrite(
        !          2082:     int hFile,
        !          2083:     LPSTR lpBuffer,
        !          2084:     int nBytes
        !          2085:     );
        !          2086: 
        !          2087: int
        !          2088: APIENTRY
        !          2089: _lclose(
        !          2090:     int hFile
        !          2091:     );
        !          2092: 
        !          2093: int
        !          2094: APIENTRY
        !          2095: _llseek(
        !          2096:     int hFile,
        !          2097:     int lOffset,
        !          2098:     int iOrigin
        !          2099:     );
        !          2100: 
        !          2101: DWORD
        !          2102: APIENTRY
        !          2103: TlsAlloc(
        !          2104:     VOID
        !          2105:     );
        !          2106: 
        !          2107: LPVOID
        !          2108: APIENTRY
        !          2109: TlsGetValue(
        !          2110:     DWORD dwTlsIndex
        !          2111:     );
        !          2112: 
        !          2113: BOOL
        !          2114: APIENTRY
        !          2115: TlsSetValue(
        !          2116:     DWORD dwTlsIndex,
        !          2117:     LPVOID lpTlsValue
        !          2118:     );
        !          2119: 
        !          2120: BOOL
        !          2121: APIENTRY
        !          2122: TlsFree(
        !          2123:     DWORD dwTlsIndex
        !          2124:     );
        !          2125: 
        !          2126: //
        !          2127: // Dual Mode API below this line. Dual Mode Structures also included.
        !          2128: //
        !          2129: 
        !          2130: #define STARTF_USESHOWWINDOW    1
        !          2131: #define STARTF_USESIZE          2
        !          2132: #define STARTF_USEPOSITION      4
        !          2133: #define STARTF_USECOUNTCHARS    8
        !          2134: #define STARTF_USEFILLATTRIBUTE 16
        !          2135: 
        !          2136: typedef struct _STARTUPINFOA {
        !          2137:     DWORD   cb;
        !          2138:     LPSTR   lpReserved;
        !          2139:     LPSTR   lpDesktop;
        !          2140:     LPSTR   lpTitle;
        !          2141:     DWORD   dwX;
        !          2142:     DWORD   dwY;
        !          2143:     DWORD   dwXSize;
        !          2144:     DWORD   dwYSize;
        !          2145:     DWORD   dwXCountChars;
        !          2146:     DWORD   dwYCountChars;
        !          2147:     DWORD   dwFillAttribute;
        !          2148:     DWORD   dwFlags;
        !          2149:     WORD    wShowWindow;
        !          2150:     WORD    cbReserved2;
        !          2151:     LPBYTE  lpReserved2;
        !          2152: } STARTUPINFOA, *LPSTARTUPINFOA;
        !          2153: typedef struct _STARTUPINFOW {
        !          2154:     DWORD   cb;
        !          2155:     LPWSTR  lpReserved;
        !          2156:     LPWSTR  lpDesktop;
        !          2157:     LPWSTR  lpTitle;
        !          2158:     DWORD   dwX;
        !          2159:     DWORD   dwY;
        !          2160:     DWORD   dwXSize;
        !          2161:     DWORD   dwYSize;
        !          2162:     DWORD   dwXCountChars;
        !          2163:     DWORD   dwYCountChars;
        !          2164:     DWORD   dwFillAttribute;
        !          2165:     DWORD   dwFlags;
        !          2166:     WORD    wShowWindow;
        !          2167:     WORD    cbReserved2;
        !          2168:     LPBYTE  lpReserved2;
        !          2169: } STARTUPINFOW, *LPSTARTUPINFOW;
        !          2170: #ifdef UNICODE
        !          2171: #define STARTUPINFO STARTUPINFOW
        !          2172: #define LPSTARTUPINFO LPSTARTUPINFOW
        !          2173: #else
        !          2174: #define STARTUPINFO STARTUPINFOA
        !          2175: #define LPSTARTUPINFO LPSTARTUPINFOA
        !          2176: #endif // UNICODE
        !          2177: 
        !          2178: typedef struct _WIN32_FIND_DATAA {
        !          2179:     DWORD dwFileAttributes;
        !          2180:     FILETIME ftCreationTime;
        !          2181:     FILETIME ftLastAccessTime;
        !          2182:     FILETIME ftLastWriteTime;
        !          2183:     DWORD nFileSizeHigh;
        !          2184:     DWORD nFileSizeLow;
        !          2185:     CHAR   cFileName[ MAX_PATH ];
        !          2186: } WIN32_FIND_DATAA, *PWIN32_FIND_DATAA, *LPWIN32_FIND_DATAA;
        !          2187: typedef struct _WIN32_FIND_DATAW {
        !          2188:     DWORD dwFileAttributes;
        !          2189:     FILETIME ftCreationTime;
        !          2190:     FILETIME ftLastAccessTime;
        !          2191:     FILETIME ftLastWriteTime;
        !          2192:     DWORD nFileSizeHigh;
        !          2193:     DWORD nFileSizeLow;
        !          2194:     WCHAR  cFileName[ MAX_PATH ];
        !          2195: } WIN32_FIND_DATAW, *PWIN32_FIND_DATAW, *LPWIN32_FIND_DATAW;
        !          2196: #ifdef UNICODE
        !          2197: #define WIN32_FIND_DATA WIN32_FIND_DATAW
        !          2198: #define PWIN32_FIND_DATA PWIN32_FIND_DATAW
        !          2199: #define LPWIN32_FIND_DATA LPWIN32_FIND_DATAW
        !          2200: #else
        !          2201: #define WIN32_FIND_DATA WIN32_FIND_DATAA
        !          2202: #define PWIN32_FIND_DATA PWIN32_FIND_DATAA
        !          2203: #define LPWIN32_FIND_DATA LPWIN32_FIND_DATAA
        !          2204: #endif // UNICODE
        !          2205: 
        !          2206: HANDLE
        !          2207: APIENTRY
        !          2208: CreateMutexA(
        !          2209:     LPSECURITY_ATTRIBUTES lpMutexAttributes,
        !          2210:     BOOL bInitialOwner,
        !          2211:     LPSTR lpName
        !          2212:     );
        !          2213: HANDLE
        !          2214: APIENTRY
        !          2215: CreateMutexW(
        !          2216:     LPSECURITY_ATTRIBUTES lpMutexAttributes,
        !          2217:     BOOL bInitialOwner,
        !          2218:     LPWSTR lpName
        !          2219:     );
        !          2220: #ifdef UNICODE
        !          2221: #define CreateMutex CreateMutexW
        !          2222: #else
        !          2223: #define CreateMutex CreateMutexA
        !          2224: #endif // !UNICODE
        !          2225: 
        !          2226: HANDLE
        !          2227: APIENTRY
        !          2228: OpenMutexA(
        !          2229:     DWORD dwDesiredAccess,
        !          2230:     BOOL bInheritHandle,
        !          2231:     LPSTR lpName
        !          2232:     );
        !          2233: HANDLE
        !          2234: APIENTRY
        !          2235: OpenMutexW(
        !          2236:     DWORD dwDesiredAccess,
        !          2237:     BOOL bInheritHandle,
        !          2238:     LPWSTR lpName
        !          2239:     );
        !          2240: #ifdef UNICODE
        !          2241: #define OpenMutex OpenMutexW
        !          2242: #else
        !          2243: #define OpenMutex OpenMutexA
        !          2244: #endif // !UNICODE
        !          2245: 
        !          2246: HANDLE
        !          2247: APIENTRY
        !          2248: CreateEventA(
        !          2249:     LPSECURITY_ATTRIBUTES lpEventAttributes,
        !          2250:     BOOL bManualReset,
        !          2251:     BOOL bInitialState,
        !          2252:     LPSTR lpName
        !          2253:     );
        !          2254: HANDLE
        !          2255: APIENTRY
        !          2256: CreateEventW(
        !          2257:     LPSECURITY_ATTRIBUTES lpEventAttributes,
        !          2258:     BOOL bManualReset,
        !          2259:     BOOL bInitialState,
        !          2260:     LPWSTR lpName
        !          2261:     );
        !          2262: #ifdef UNICODE
        !          2263: #define CreateEvent CreateEventW
        !          2264: #else
        !          2265: #define CreateEvent CreateEventA
        !          2266: #endif // !UNICODE
        !          2267: 
        !          2268: HANDLE
        !          2269: APIENTRY
        !          2270: OpenEventA(
        !          2271:     DWORD dwDesiredAccess,
        !          2272:     BOOL bInheritHandle,
        !          2273:     LPSTR lpName
        !          2274:     );
        !          2275: HANDLE
        !          2276: APIENTRY
        !          2277: OpenEventW(
        !          2278:     DWORD dwDesiredAccess,
        !          2279:     BOOL bInheritHandle,
        !          2280:     LPWSTR lpName
        !          2281:     );
        !          2282: #ifdef UNICODE
        !          2283: #define OpenEvent OpenEventW
        !          2284: #else
        !          2285: #define OpenEvent OpenEventA
        !          2286: #endif // !UNICODE
        !          2287: 
        !          2288: HANDLE
        !          2289: APIENTRY
        !          2290: CreateSemaphoreA(
        !          2291:     LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,
        !          2292:     LONG lInitialCount,
        !          2293:     LONG lMaximumCount,
        !          2294:     LPSTR lpName
        !          2295:     );
        !          2296: HANDLE
        !          2297: APIENTRY
        !          2298: CreateSemaphoreW(
        !          2299:     LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,
        !          2300:     LONG lInitialCount,
        !          2301:     LONG lMaximumCount,
        !          2302:     LPWSTR lpName
        !          2303:     );
        !          2304: #ifdef UNICODE
        !          2305: #define CreateSemaphore CreateSemaphoreW
        !          2306: #else
        !          2307: #define CreateSemaphore CreateSemaphoreA
        !          2308: #endif // !UNICODE
        !          2309: 
        !          2310: HANDLE
        !          2311: APIENTRY
        !          2312: OpenSemaphoreA(
        !          2313:     DWORD dwDesiredAccess,
        !          2314:     BOOL bInheritHandle,
        !          2315:     LPSTR lpName
        !          2316:     );
        !          2317: HANDLE
        !          2318: APIENTRY
        !          2319: OpenSemaphoreW(
        !          2320:     DWORD dwDesiredAccess,
        !          2321:     BOOL bInheritHandle,
        !          2322:     LPWSTR lpName
        !          2323:     );
        !          2324: #ifdef UNICODE
        !          2325: #define OpenSemaphore OpenSemaphoreW
        !          2326: #else
        !          2327: #define OpenSemaphore OpenSemaphoreA
        !          2328: #endif // !UNICODE
        !          2329: 
        !          2330: HANDLE
        !          2331: APIENTRY
        !          2332: CreateFileMappingA(
        !          2333:     HANDLE hFile,
        !          2334:     LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
        !          2335:     DWORD flProtect,
        !          2336:     DWORD dwMaximumSizeHigh,
        !          2337:     DWORD dwMaximumSizeLow,
        !          2338:     LPSTR lpName
        !          2339:     );
        !          2340: HANDLE
        !          2341: APIENTRY
        !          2342: CreateFileMappingW(
        !          2343:     HANDLE hFile,
        !          2344:     LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
        !          2345:     DWORD flProtect,
        !          2346:     DWORD dwMaximumSizeHigh,
        !          2347:     DWORD dwMaximumSizeLow,
        !          2348:     LPWSTR lpName
        !          2349:     );
        !          2350: #ifdef UNICODE
        !          2351: #define CreateFileMapping CreateFileMappingW
        !          2352: #else
        !          2353: #define CreateFileMapping CreateFileMappingA
        !          2354: #endif // !UNICODE
        !          2355: 
        !          2356: HANDLE
        !          2357: APIENTRY
        !          2358: OpenFileMappingA(
        !          2359:     DWORD dwDesiredAccess,
        !          2360:     BOOL bInheritHandle,
        !          2361:     LPSTR lpName
        !          2362:     );
        !          2363: HANDLE
        !          2364: APIENTRY
        !          2365: OpenFileMappingW(
        !          2366:     DWORD dwDesiredAccess,
        !          2367:     BOOL bInheritHandle,
        !          2368:     LPWSTR lpName
        !          2369:     );
        !          2370: #ifdef UNICODE
        !          2371: #define OpenFileMapping OpenFileMappingW
        !          2372: #else
        !          2373: #define OpenFileMapping OpenFileMappingA
        !          2374: #endif // !UNICODE
        !          2375: 
        !          2376: DWORD
        !          2377: APIENTRY
        !          2378: GetLogicalDriveStringsA(
        !          2379:     DWORD nBufferLength,
        !          2380:     LPSTR lpBuffer
        !          2381:     );
        !          2382: DWORD
        !          2383: APIENTRY
        !          2384: GetLogicalDriveStringsW(
        !          2385:     DWORD nBufferLength,
        !          2386:     LPWSTR lpBuffer
        !          2387:     );
        !          2388: #ifdef UNICODE
        !          2389: #define GetLogicalDriveStrings GetLogicalDriveStringsW
        !          2390: #else
        !          2391: #define GetLogicalDriveStrings GetLogicalDriveStringsA
        !          2392: #endif // !UNICODE
        !          2393: 
        !          2394: HANDLE
        !          2395: APIENTRY
        !          2396: LoadLibraryA(
        !          2397:     LPSTR lpLibFileName
        !          2398:     );
        !          2399: HANDLE
        !          2400: APIENTRY
        !          2401: LoadLibraryW(
        !          2402:     LPWSTR lpLibFileName
        !          2403:     );
        !          2404: #ifdef UNICODE
        !          2405: #define LoadLibrary LoadLibraryW
        !          2406: #else
        !          2407: #define LoadLibrary LoadLibraryA
        !          2408: #endif // !UNICODE
        !          2409: 
        !          2410: DWORD
        !          2411: APIENTRY
        !          2412: GetModuleFileNameA(
        !          2413:     HANDLE hModule,
        !          2414:     LPSTR lpFilename,
        !          2415:     DWORD nSize
        !          2416:     );
        !          2417: DWORD
        !          2418: APIENTRY
        !          2419: GetModuleFileNameW(
        !          2420:     HANDLE hModule,
        !          2421:     LPWSTR lpFilename,
        !          2422:     DWORD nSize
        !          2423:     );
        !          2424: #ifdef UNICODE
        !          2425: #define GetModuleFileName GetModuleFileNameW
        !          2426: #else
        !          2427: #define GetModuleFileName GetModuleFileNameA
        !          2428: #endif // !UNICODE
        !          2429: 
        !          2430: HANDLE
        !          2431: APIENTRY
        !          2432: GetModuleHandleA(
        !          2433:     LPSTR lpModuleName
        !          2434:     );
        !          2435: HANDLE
        !          2436: APIENTRY
        !          2437: GetModuleHandleW(
        !          2438:     LPWSTR lpModuleName
        !          2439:     );
        !          2440: #ifdef UNICODE
        !          2441: #define GetModuleHandle GetModuleHandleW
        !          2442: #else
        !          2443: #define GetModuleHandle GetModuleHandleA
        !          2444: #endif // !UNICODE
        !          2445: 
        !          2446: BOOL
        !          2447: APIENTRY
        !          2448: CreateProcessA(
        !          2449:     LPSTR lpApplicationName,
        !          2450:     LPSTR lpCommandLine,
        !          2451:     LPSECURITY_ATTRIBUTES lpProcessAttributes,
        !          2452:     LPSECURITY_ATTRIBUTES lpThreadAttributes,
        !          2453:     BOOL bInheritHandles,
        !          2454:     DWORD dwCreationFlags,
        !          2455:     LPVOID lpEnvironment,
        !          2456:     LPSTR lpCurrentDirectory,
        !          2457:     LPSTARTUPINFOA lpStartupInfo,
        !          2458:     LPPROCESS_INFORMATION lpProcessInformation
        !          2459:     );
        !          2460: BOOL
        !          2461: APIENTRY
        !          2462: CreateProcessW(
        !          2463:     LPWSTR lpApplicationName,
        !          2464:     LPWSTR lpCommandLine,
        !          2465:     LPSECURITY_ATTRIBUTES lpProcessAttributes,
        !          2466:     LPSECURITY_ATTRIBUTES lpThreadAttributes,
        !          2467:     BOOL bInheritHandles,
        !          2468:     DWORD dwCreationFlags,
        !          2469:     LPVOID lpEnvironment,
        !          2470:     LPWSTR lpCurrentDirectory,
        !          2471:     LPSTARTUPINFOW lpStartupInfo,
        !          2472:     LPPROCESS_INFORMATION lpProcessInformation
        !          2473:     );
        !          2474: #ifdef UNICODE
        !          2475: #define CreateProcess CreateProcessW
        !          2476: #else
        !          2477: #define CreateProcess CreateProcessA
        !          2478: #endif // !UNICODE
        !          2479: 
        !          2480: VOID
        !          2481: APIENTRY
        !          2482: FatalAppExitA(
        !          2483:     WORD wAction,
        !          2484:     LPSTR lpMessageText
        !          2485:     );
        !          2486: VOID
        !          2487: APIENTRY
        !          2488: FatalAppExitW(
        !          2489:     WORD wAction,
        !          2490:     LPWSTR lpMessageText
        !          2491:     );
        !          2492: #ifdef UNICODE
        !          2493: #define FatalAppExit FatalAppExitW
        !          2494: #else
        !          2495: #define FatalAppExit FatalAppExitA
        !          2496: #endif // !UNICODE
        !          2497: 
        !          2498: VOID
        !          2499: APIENTRY
        !          2500: GetStartupInfoA(
        !          2501:     LPSTARTUPINFOA lpStartupInfo
        !          2502:     );
        !          2503: VOID
        !          2504: APIENTRY
        !          2505: GetStartupInfoW(
        !          2506:     LPSTARTUPINFOW lpStartupInfo
        !          2507:     );
        !          2508: #ifdef UNICODE
        !          2509: #define GetStartupInfo GetStartupInfoW
        !          2510: #else
        !          2511: #define GetStartupInfo GetStartupInfoA
        !          2512: #endif // !UNICODE
        !          2513: 
        !          2514: LPSTR
        !          2515: APIENTRY
        !          2516: GetCommandLineA(
        !          2517:     VOID
        !          2518:     );
        !          2519: LPWSTR
        !          2520: APIENTRY
        !          2521: GetCommandLineW(
        !          2522:     VOID
        !          2523:     );
        !          2524: #ifdef UNICODE
        !          2525: #define GetCommandLine GetCommandLineW
        !          2526: #else
        !          2527: #define GetCommandLine GetCommandLineA
        !          2528: #endif // !UNICODE
        !          2529: 
        !          2530: DWORD
        !          2531: APIENTRY
        !          2532: GetEnvironmentVariableA(
        !          2533:     LPSTR lpName,
        !          2534:     LPSTR lpBuffer,
        !          2535:     DWORD nSize
        !          2536:     );
        !          2537: DWORD
        !          2538: APIENTRY
        !          2539: GetEnvironmentVariableW(
        !          2540:     LPWSTR lpName,
        !          2541:     LPWSTR lpBuffer,
        !          2542:     DWORD nSize
        !          2543:     );
        !          2544: #ifdef UNICODE
        !          2545: #define GetEnvironmentVariable GetEnvironmentVariableW
        !          2546: #else
        !          2547: #define GetEnvironmentVariable GetEnvironmentVariableA
        !          2548: #endif // !UNICODE
        !          2549: 
        !          2550: BOOL
        !          2551: APIENTRY
        !          2552: SetEnvironmentVariableA(
        !          2553:     LPSTR lpName,
        !          2554:     LPSTR lpValue
        !          2555:     );
        !          2556: BOOL
        !          2557: APIENTRY
        !          2558: SetEnvironmentVariableW(
        !          2559:     LPWSTR lpName,
        !          2560:     LPWSTR lpValue
        !          2561:     );
        !          2562: #ifdef UNICODE
        !          2563: #define SetEnvironmentVariable SetEnvironmentVariableW
        !          2564: #else
        !          2565: #define SetEnvironmentVariable SetEnvironmentVariableA
        !          2566: #endif // !UNICODE
        !          2567: 
        !          2568: VOID
        !          2569: APIENTRY
        !          2570: OutputDebugStringA(
        !          2571:     LPSTR lpOutputString
        !          2572:     );
        !          2573: VOID
        !          2574: APIENTRY
        !          2575: OutputDebugStringW(
        !          2576:     LPWSTR lpOutputString
        !          2577:     );
        !          2578: #ifdef UNICODE
        !          2579: #define OutputDebugString OutputDebugStringW
        !          2580: #else
        !          2581: #define OutputDebugString OutputDebugStringA
        !          2582: #endif // !UNICODE
        !          2583: 
        !          2584: HANDLE
        !          2585: APIENTRY
        !          2586: FindResourceA(
        !          2587:     HANDLE hModule,
        !          2588:     LPSTR lpName,
        !          2589:     LPSTR lpType
        !          2590:     );
        !          2591: HANDLE
        !          2592: APIENTRY
        !          2593: FindResourceW(
        !          2594:     HANDLE hModule,
        !          2595:     LPWSTR lpName,
        !          2596:     LPWSTR lpType
        !          2597:     );
        !          2598: #ifdef UNICODE
        !          2599: #define FindResource FindResourceW
        !          2600: #else
        !          2601: #define FindResource FindResourceA
        !          2602: #endif // !UNICODE
        !          2603: 
        !          2604: BOOL
        !          2605: APIENTRY
        !          2606: EnumResourceTypesA(
        !          2607:     HANDLE hModule,
        !          2608:     FARPROC lpEnumFunc,
        !          2609:     LONG lParam
        !          2610:     );
        !          2611: BOOL
        !          2612: APIENTRY
        !          2613: EnumResourceTypesW(
        !          2614:     HANDLE hModule,
        !          2615:     FARPROC lpEnumFunc,
        !          2616:     LONG lParam
        !          2617:     );
        !          2618: #ifdef UNICODE
        !          2619: #define EnumResourceTypes EnumResourceTypesW
        !          2620: #else
        !          2621: #define EnumResourceTypes EnumResourceTypesA
        !          2622: #endif // !UNICODE
        !          2623: 
        !          2624: 
        !          2625: BOOL
        !          2626: APIENTRY
        !          2627: EnumResourceNamesA(
        !          2628:     HANDLE hModule,
        !          2629:     LPSTR lpType,
        !          2630:     FARPROC lpEnumFunc,
        !          2631:     LONG lParam
        !          2632:     );
        !          2633: BOOL
        !          2634: APIENTRY
        !          2635: EnumResourceNamesW(
        !          2636:     HANDLE hModule,
        !          2637:     LPWSTR lpType,
        !          2638:     FARPROC lpEnumFunc,
        !          2639:     LONG lParam
        !          2640:     );
        !          2641: #ifdef UNICODE
        !          2642: #define EnumResourceNames EnumResourceNamesW
        !          2643: #else
        !          2644: #define EnumResourceNames EnumResourceNamesA
        !          2645: #endif // !UNICODE
        !          2646: 
        !          2647: ATOM
        !          2648: APIENTRY
        !          2649: GlobalAddAtomA(
        !          2650:     LPSTR lpString
        !          2651:     );
        !          2652: ATOM
        !          2653: APIENTRY
        !          2654: GlobalAddAtomW(
        !          2655:     LPWSTR lpString
        !          2656:     );
        !          2657: #ifdef UNICODE
        !          2658: #define GlobalAddAtom GlobalAddAtomW
        !          2659: #else
        !          2660: #define GlobalAddAtom GlobalAddAtomA
        !          2661: #endif // !UNICODE
        !          2662: 
        !          2663: ATOM
        !          2664: APIENTRY
        !          2665: GlobalFindAtomA(
        !          2666:     LPSTR lpString
        !          2667:     );
        !          2668: ATOM
        !          2669: APIENTRY
        !          2670: GlobalFindAtomW(
        !          2671:     LPWSTR lpString
        !          2672:     );
        !          2673: #ifdef UNICODE
        !          2674: #define GlobalFindAtom GlobalFindAtomW
        !          2675: #else
        !          2676: #define GlobalFindAtom GlobalFindAtomA
        !          2677: #endif // !UNICODE
        !          2678: 
        !          2679: DWORD
        !          2680: APIENTRY
        !          2681: GlobalGetAtomNameA(
        !          2682:     ATOM nAtom,
        !          2683:     LPSTR lpBuffer,
        !          2684:     DWORD nSize
        !          2685:     );
        !          2686: DWORD
        !          2687: APIENTRY
        !          2688: GlobalGetAtomNameW(
        !          2689:     ATOM nAtom,
        !          2690:     LPWSTR lpBuffer,
        !          2691:     DWORD nSize
        !          2692:     );
        !          2693: #ifdef UNICODE
        !          2694: #define GlobalGetAtomName GlobalGetAtomNameW
        !          2695: #else
        !          2696: #define GlobalGetAtomName GlobalGetAtomNameA
        !          2697: #endif // !UNICODE
        !          2698: 
        !          2699: ATOM
        !          2700: APIENTRY
        !          2701: AddAtomA(
        !          2702:     LPSTR lpString
        !          2703:     );
        !          2704: ATOM
        !          2705: APIENTRY
        !          2706: AddAtomW(
        !          2707:     LPWSTR lpString
        !          2708:     );
        !          2709: #ifdef UNICODE
        !          2710: #define AddAtom AddAtomW
        !          2711: #else
        !          2712: #define AddAtom AddAtomA
        !          2713: #endif // !UNICODE
        !          2714: 
        !          2715: ATOM
        !          2716: APIENTRY
        !          2717: FindAtomA(
        !          2718:     LPSTR lpString
        !          2719:     );
        !          2720: ATOM
        !          2721: APIENTRY
        !          2722: FindAtomW(
        !          2723:     LPWSTR lpString
        !          2724:     );
        !          2725: #ifdef UNICODE
        !          2726: #define FindAtom FindAtomW
        !          2727: #else
        !          2728: #define FindAtom FindAtomA
        !          2729: #endif // !UNICODE
        !          2730: 
        !          2731: DWORD
        !          2732: APIENTRY
        !          2733: GetAtomNameA(
        !          2734:     ATOM nAtom,
        !          2735:     LPSTR lpBuffer,
        !          2736:     DWORD nSize
        !          2737:     );
        !          2738: DWORD
        !          2739: APIENTRY
        !          2740: GetAtomNameW(
        !          2741:     ATOM nAtom,
        !          2742:     LPWSTR lpBuffer,
        !          2743:     DWORD nSize
        !          2744:     );
        !          2745: #ifdef UNICODE
        !          2746: #define GetAtomName GetAtomNameW
        !          2747: #else
        !          2748: #define GetAtomName GetAtomNameA
        !          2749: #endif // !UNICODE
        !          2750: 
        !          2751: DWORD
        !          2752: APIENTRY
        !          2753: GetProfileIntA(
        !          2754:     LPSTR lpAppName,
        !          2755:     LPSTR lpKeyName,
        !          2756:     DWORD nDefault
        !          2757:     );
        !          2758: DWORD
        !          2759: APIENTRY
        !          2760: GetProfileIntW(
        !          2761:     LPWSTR lpAppName,
        !          2762:     LPWSTR lpKeyName,
        !          2763:     DWORD nDefault
        !          2764:     );
        !          2765: #ifdef UNICODE
        !          2766: #define GetProfileInt GetProfileIntW
        !          2767: #else
        !          2768: #define GetProfileInt GetProfileIntA
        !          2769: #endif // !UNICODE
        !          2770: 
        !          2771: DWORD
        !          2772: APIENTRY
        !          2773: GetProfileStringA(
        !          2774:     LPSTR lpAppName,
        !          2775:     LPSTR lpKeyName,
        !          2776:     LPSTR lpDefault,
        !          2777:     LPSTR lpReturnedString,
        !          2778:     DWORD nSize
        !          2779:     );
        !          2780: DWORD
        !          2781: APIENTRY
        !          2782: GetProfileStringW(
        !          2783:     LPWSTR lpAppName,
        !          2784:     LPWSTR lpKeyName,
        !          2785:     LPWSTR lpDefault,
        !          2786:     LPWSTR lpReturnedString,
        !          2787:     DWORD nSize
        !          2788:     );
        !          2789: #ifdef UNICODE
        !          2790: #define GetProfileString GetProfileStringW
        !          2791: #else
        !          2792: #define GetProfileString GetProfileStringA
        !          2793: #endif // !UNICODE
        !          2794: 
        !          2795: BOOL
        !          2796: APIENTRY
        !          2797: WriteProfileStringA(
        !          2798:     LPSTR lpAppName,
        !          2799:     LPSTR lpKeyName,
        !          2800:     LPSTR lpString
        !          2801:     );
        !          2802: BOOL
        !          2803: APIENTRY
        !          2804: WriteProfileStringW(
        !          2805:     LPWSTR lpAppName,
        !          2806:     LPWSTR lpKeyName,
        !          2807:     LPWSTR lpString
        !          2808:     );
        !          2809: #ifdef UNICODE
        !          2810: #define WriteProfileString WriteProfileStringW
        !          2811: #else
        !          2812: #define WriteProfileString WriteProfileStringA
        !          2813: #endif // !UNICODE
        !          2814: 
        !          2815: DWORD
        !          2816: APIENTRY
        !          2817: GetProfileSectionA(
        !          2818:     LPSTR lpAppName,
        !          2819:     LPSTR lpReturnedString,
        !          2820:     DWORD nSize
        !          2821:     );
        !          2822: DWORD
        !          2823: APIENTRY
        !          2824: GetProfileSectionW(
        !          2825:     LPWSTR lpAppName,
        !          2826:     LPWSTR lpReturnedString,
        !          2827:     DWORD nSize
        !          2828:     );
        !          2829: #ifdef UNICODE
        !          2830: #define GetProfileSection GetProfileSectionW
        !          2831: #else
        !          2832: #define GetProfileSection GetProfileSectionA
        !          2833: #endif // !UNICODE
        !          2834: 
        !          2835: DWORD
        !          2836: APIENTRY
        !          2837: WriteProfileSectionA(
        !          2838:     LPSTR lpAppName,
        !          2839:     LPSTR lpString
        !          2840:     );
        !          2841: DWORD
        !          2842: APIENTRY
        !          2843: WriteProfileSectionW(
        !          2844:     LPWSTR lpAppName,
        !          2845:     LPWSTR lpString
        !          2846:     );
        !          2847: #ifdef UNICODE
        !          2848: #define WriteProfileSection WriteProfileSectionW
        !          2849: #else
        !          2850: #define WriteProfileSection WriteProfileSectionA
        !          2851: #endif // !UNICODE
        !          2852: 
        !          2853: DWORD
        !          2854: APIENTRY
        !          2855: GetPrivateProfileIntA(
        !          2856:     LPSTR lpAppName,
        !          2857:     LPSTR lpKeyName,
        !          2858:     DWORD nDefault,
        !          2859:     LPSTR lpFileName
        !          2860:     );
        !          2861: DWORD
        !          2862: APIENTRY
        !          2863: GetPrivateProfileIntW(
        !          2864:     LPWSTR lpAppName,
        !          2865:     LPWSTR lpKeyName,
        !          2866:     DWORD nDefault,
        !          2867:     LPWSTR lpFileName
        !          2868:     );
        !          2869: #ifdef UNICODE
        !          2870: #define GetPrivateProfileInt GetPrivateProfileIntW
        !          2871: #else
        !          2872: #define GetPrivateProfileInt GetPrivateProfileIntA
        !          2873: #endif // !UNICODE
        !          2874: 
        !          2875: DWORD
        !          2876: APIENTRY
        !          2877: GetPrivateProfileStringA(
        !          2878:     LPSTR lpAppName,
        !          2879:     LPSTR lpKeyName,
        !          2880:     LPSTR lpDefault,
        !          2881:     LPSTR lpReturnedString,
        !          2882:     DWORD nSize,
        !          2883:     LPSTR lpFileName
        !          2884:     );
        !          2885: DWORD
        !          2886: APIENTRY
        !          2887: GetPrivateProfileStringW(
        !          2888:     LPWSTR lpAppName,
        !          2889:     LPWSTR lpKeyName,
        !          2890:     LPWSTR lpDefault,
        !          2891:     LPWSTR lpReturnedString,
        !          2892:     DWORD nSize,
        !          2893:     LPWSTR lpFileName
        !          2894:     );
        !          2895: #ifdef UNICODE
        !          2896: #define GetPrivateProfileString GetPrivateProfileStringW
        !          2897: #else
        !          2898: #define GetPrivateProfileString GetPrivateProfileStringA
        !          2899: #endif // !UNICODE
        !          2900: 
        !          2901: BOOL
        !          2902: APIENTRY
        !          2903: WritePrivateProfileStringA(
        !          2904:     LPSTR lpAppName,
        !          2905:     LPSTR lpKeyName,
        !          2906:     LPSTR lpString,
        !          2907:     LPSTR lpFileName
        !          2908:     );
        !          2909: BOOL
        !          2910: APIENTRY
        !          2911: WritePrivateProfileStringW(
        !          2912:     LPWSTR lpAppName,
        !          2913:     LPWSTR lpKeyName,
        !          2914:     LPWSTR lpString,
        !          2915:     LPWSTR lpFileName
        !          2916:     );
        !          2917: #ifdef UNICODE
        !          2918: #define WritePrivateProfileString WritePrivateProfileStringW
        !          2919: #else
        !          2920: #define WritePrivateProfileString WritePrivateProfileStringA
        !          2921: #endif // !UNICODE
        !          2922: 
        !          2923: DWORD
        !          2924: APIENTRY
        !          2925: GetPrivateProfileSectionA(
        !          2926:     LPSTR lpAppName,
        !          2927:     LPSTR lpReturnedString,
        !          2928:     DWORD nSize,
        !          2929:     LPSTR lpFileName
        !          2930:     );
        !          2931: DWORD
        !          2932: APIENTRY
        !          2933: GetPrivateProfileSectionW(
        !          2934:     LPWSTR lpAppName,
        !          2935:     LPWSTR lpReturnedString,
        !          2936:     DWORD nSize,
        !          2937:     LPWSTR lpFileName
        !          2938:     );
        !          2939: #ifdef UNICODE
        !          2940: #define GetPrivateProfileSection GetPrivateProfileSectionW
        !          2941: #else
        !          2942: #define GetPrivateProfileSection GetPrivateProfileSectionA
        !          2943: #endif // !UNICODE
        !          2944: 
        !          2945: DWORD
        !          2946: APIENTRY
        !          2947: WritePrivateProfileSectionA(
        !          2948:     LPSTR lpAppName,
        !          2949:     LPSTR lpString,
        !          2950:     LPSTR lpFileName
        !          2951:     );
        !          2952: DWORD
        !          2953: APIENTRY
        !          2954: WritePrivateProfileSectionW(
        !          2955:     LPWSTR lpAppName,
        !          2956:     LPWSTR lpString,
        !          2957:     LPWSTR lpFileName
        !          2958:     );
        !          2959: #ifdef UNICODE
        !          2960: #define WritePrivateProfileSection WritePrivateProfileSectionW
        !          2961: #else
        !          2962: #define WritePrivateProfileSection WritePrivateProfileSectionA
        !          2963: #endif // !UNICODE
        !          2964: 
        !          2965: DWORD
        !          2966: APIENTRY
        !          2967: GetDriveTypeA(
        !          2968:     LPSTR lpRootPathName
        !          2969:     );
        !          2970: DWORD
        !          2971: APIENTRY
        !          2972: GetDriveTypeW(
        !          2973:     LPWSTR lpRootPathName
        !          2974:     );
        !          2975: #ifdef UNICODE
        !          2976: #define GetDriveType GetDriveTypeW
        !          2977: #else
        !          2978: #define GetDriveType GetDriveTypeA
        !          2979: #endif // !UNICODE
        !          2980: 
        !          2981: DWORD
        !          2982: APIENTRY
        !          2983: GetSystemDirectoryA(
        !          2984:     LPSTR lpBuffer,
        !          2985:     DWORD nSize
        !          2986:     );
        !          2987: DWORD
        !          2988: APIENTRY
        !          2989: GetSystemDirectoryW(
        !          2990:     LPWSTR lpBuffer,
        !          2991:     DWORD nSize
        !          2992:     );
        !          2993: #ifdef UNICODE
        !          2994: #define GetSystemDirectory GetSystemDirectoryW
        !          2995: #else
        !          2996: #define GetSystemDirectory GetSystemDirectoryA
        !          2997: #endif // !UNICODE
        !          2998: 
        !          2999: DWORD
        !          3000: APIENTRY
        !          3001: GetTempPathA(
        !          3002:     DWORD nBufferLength,
        !          3003:     LPSTR lpBuffer
        !          3004:     );
        !          3005: DWORD
        !          3006: APIENTRY
        !          3007: GetTempPathW(
        !          3008:     DWORD nBufferLength,
        !          3009:     LPWSTR lpBuffer
        !          3010:     );
        !          3011: #ifdef UNICODE
        !          3012: #define GetTempPath GetTempPathW
        !          3013: #else
        !          3014: #define GetTempPath GetTempPathA
        !          3015: #endif // !UNICODE
        !          3016: 
        !          3017: WORD
        !          3018: APIENTRY
        !          3019: GetTempFileNameA(
        !          3020:     LPSTR lpPathName,
        !          3021:     LPSTR lpPrefixString,
        !          3022:     WORD wUnique,
        !          3023:     LPSTR lpTempFileName
        !          3024:     );
        !          3025: WORD
        !          3026: APIENTRY
        !          3027: GetTempFileNameW(
        !          3028:     LPWSTR lpPathName,
        !          3029:     LPWSTR lpPrefixString,
        !          3030:     WORD wUnique,
        !          3031:     LPWSTR lpTempFileName
        !          3032:     );
        !          3033: #ifdef UNICODE
        !          3034: #define GetTempFileName GetTempFileNameW
        !          3035: #else
        !          3036: #define GetTempFileName GetTempFileNameA
        !          3037: #endif // !UNICODE
        !          3038: 
        !          3039: DWORD
        !          3040: APIENTRY
        !          3041: GetWindowsDirectoryA(
        !          3042:     LPSTR lpBuffer,
        !          3043:     DWORD nSize
        !          3044:     );
        !          3045: DWORD
        !          3046: APIENTRY
        !          3047: GetWindowsDirectoryW(
        !          3048:     LPWSTR lpBuffer,
        !          3049:     DWORD nSize
        !          3050:     );
        !          3051: #ifdef UNICODE
        !          3052: #define GetWindowsDirectory GetWindowsDirectoryW
        !          3053: #else
        !          3054: #define GetWindowsDirectory GetWindowsDirectoryA
        !          3055: #endif // !UNICODE
        !          3056: 
        !          3057: BOOL
        !          3058: APIENTRY
        !          3059: SetCurrentDirectoryA(
        !          3060:     LPSTR lpPathName
        !          3061:     );
        !          3062: BOOL
        !          3063: APIENTRY
        !          3064: SetCurrentDirectoryW(
        !          3065:     LPWSTR lpPathName
        !          3066:     );
        !          3067: #ifdef UNICODE
        !          3068: #define SetCurrentDirectory SetCurrentDirectoryW
        !          3069: #else
        !          3070: #define SetCurrentDirectory SetCurrentDirectoryA
        !          3071: #endif // !UNICODE
        !          3072: 
        !          3073: DWORD
        !          3074: APIENTRY
        !          3075: GetCurrentDirectoryA(
        !          3076:     DWORD nBufferLength,
        !          3077:     LPSTR lpBuffer
        !          3078:     );
        !          3079: DWORD
        !          3080: APIENTRY
        !          3081: GetCurrentDirectoryW(
        !          3082:     DWORD nBufferLength,
        !          3083:     LPWSTR lpBuffer
        !          3084:     );
        !          3085: #ifdef UNICODE
        !          3086: #define GetCurrentDirectory GetCurrentDirectoryW
        !          3087: #else
        !          3088: #define GetCurrentDirectory GetCurrentDirectoryA
        !          3089: #endif // !UNICODE
        !          3090: 
        !          3091: BOOL
        !          3092: APIENTRY
        !          3093: GetDiskFreeSpaceA(
        !          3094:     LPSTR lpRootPathName,
        !          3095:     LPDWORD lpSectorsPerCluster,
        !          3096:     LPDWORD lpBytesPerSector,
        !          3097:     LPDWORD lpNumberOfFreeClusters,
        !          3098:     LPDWORD lpTotalNumberOfClusters
        !          3099:     );
        !          3100: BOOL
        !          3101: APIENTRY
        !          3102: GetDiskFreeSpaceW(
        !          3103:     LPWSTR lpRootPathName,
        !          3104:     LPDWORD lpSectorsPerCluster,
        !          3105:     LPDWORD lpBytesPerSector,
        !          3106:     LPDWORD lpNumberOfFreeClusters,
        !          3107:     LPDWORD lpTotalNumberOfClusters
        !          3108:     );
        !          3109: #ifdef UNICODE
        !          3110: #define GetDiskFreeSpace GetDiskFreeSpaceW
        !          3111: #else
        !          3112: #define GetDiskFreeSpace GetDiskFreeSpaceA
        !          3113: #endif // !UNICODE
        !          3114: 
        !          3115: BOOL
        !          3116: APIENTRY
        !          3117: CreateDirectoryA(
        !          3118:     LPSTR lpPathName,
        !          3119:     LPSECURITY_ATTRIBUTES lpSecurityAttributes
        !          3120:     );
        !          3121: BOOL
        !          3122: APIENTRY
        !          3123: CreateDirectoryW(
        !          3124:     LPWSTR lpPathName,
        !          3125:     LPSECURITY_ATTRIBUTES lpSecurityAttributes
        !          3126:     );
        !          3127: #ifdef UNICODE
        !          3128: #define CreateDirectory CreateDirectoryW
        !          3129: #else
        !          3130: #define CreateDirectory CreateDirectoryA
        !          3131: #endif // !UNICODE
        !          3132: 
        !          3133: BOOL
        !          3134: APIENTRY
        !          3135: RemoveDirectoryA(
        !          3136:     LPSTR lpPathName
        !          3137:     );
        !          3138: BOOL
        !          3139: APIENTRY
        !          3140: RemoveDirectoryW(
        !          3141:     LPWSTR lpPathName
        !          3142:     );
        !          3143: #ifdef UNICODE
        !          3144: #define RemoveDirectory RemoveDirectoryW
        !          3145: #else
        !          3146: #define RemoveDirectory RemoveDirectoryA
        !          3147: #endif // !UNICODE
        !          3148: 
        !          3149: DWORD
        !          3150: APIENTRY
        !          3151: GetFullPathNameA(
        !          3152:     LPSTR lpFileName,
        !          3153:     DWORD nBufferLength,
        !          3154:     LPSTR lpBuffer,
        !          3155:     LPSTR *lpFilePart
        !          3156:     );
        !          3157: DWORD
        !          3158: APIENTRY
        !          3159: GetFullPathNameW(
        !          3160:     LPWSTR lpFileName,
        !          3161:     DWORD nBufferLength,
        !          3162:     LPWSTR lpBuffer,
        !          3163:     LPWSTR *lpFilePart
        !          3164:     );
        !          3165: #ifdef UNICODE
        !          3166: #define GetFullPathName GetFullPathNameW
        !          3167: #else
        !          3168: #define GetFullPathName GetFullPathNameA
        !          3169: #endif // !UNICODE
        !          3170: 
        !          3171: #define EXPAND_LOCAL_DRIVES
        !          3172: 
        !          3173: 
        !          3174: HANDLE
        !          3175: APIENTRY
        !          3176: CreateFileA(
        !          3177:     LPSTR lpFileName,
        !          3178:     DWORD dwDesiredAccess,
        !          3179:     DWORD dwShareMode,
        !          3180:     LPSECURITY_ATTRIBUTES lpSecurityAttributes,
        !          3181:     DWORD dwCreationDisposition,
        !          3182:     DWORD dwFlagsAndAttributes,
        !          3183:     HANDLE hTemplateFile
        !          3184:     );
        !          3185: HANDLE
        !          3186: APIENTRY
        !          3187: CreateFileW(
        !          3188:     LPWSTR lpFileName,
        !          3189:     DWORD dwDesiredAccess,
        !          3190:     DWORD dwShareMode,
        !          3191:     LPSECURITY_ATTRIBUTES lpSecurityAttributes,
        !          3192:     DWORD dwCreationDisposition,
        !          3193:     DWORD dwFlagsAndAttributes,
        !          3194:     HANDLE hTemplateFile
        !          3195:     );
        !          3196: #ifdef UNICODE
        !          3197: #define CreateFile CreateFileW
        !          3198: #else
        !          3199: #define CreateFile CreateFileA
        !          3200: #endif // !UNICODE
        !          3201: 
        !          3202: BOOL
        !          3203: APIENTRY
        !          3204: SetFileAttributesA(
        !          3205:     LPSTR lpFileName,
        !          3206:     DWORD dwFileAttributes
        !          3207:     );
        !          3208: BOOL
        !          3209: APIENTRY
        !          3210: SetFileAttributesW(
        !          3211:     LPWSTR lpFileName,
        !          3212:     DWORD dwFileAttributes
        !          3213:     );
        !          3214: #ifdef UNICODE
        !          3215: #define SetFileAttributes SetFileAttributesW
        !          3216: #else
        !          3217: #define SetFileAttributes SetFileAttributesA
        !          3218: #endif // !UNICODE
        !          3219: 
        !          3220: DWORD
        !          3221: APIENTRY
        !          3222: GetFileAttributesA(
        !          3223:     LPSTR lpFileName
        !          3224:     );
        !          3225: DWORD
        !          3226: APIENTRY
        !          3227: GetFileAttributesW(
        !          3228:     LPWSTR lpFileName
        !          3229:     );
        !          3230: #ifdef UNICODE
        !          3231: #define GetFileAttributes GetFileAttributesW
        !          3232: #else
        !          3233: #define GetFileAttributes GetFileAttributesA
        !          3234: #endif // !UNICODE
        !          3235: 
        !          3236: BOOL
        !          3237: APIENTRY
        !          3238: DeleteFileA(
        !          3239:     LPSTR lpFileName
        !          3240:     );
        !          3241: BOOL
        !          3242: APIENTRY
        !          3243: DeleteFileW(
        !          3244:     LPWSTR lpFileName
        !          3245:     );
        !          3246: #ifdef UNICODE
        !          3247: #define DeleteFile DeleteFileW
        !          3248: #else
        !          3249: #define DeleteFile DeleteFileA
        !          3250: #endif // !UNICODE
        !          3251: 
        !          3252: HANDLE
        !          3253: APIENTRY
        !          3254: FindFirstFileA(
        !          3255:     LPSTR lpFileName,
        !          3256:     LPWIN32_FIND_DATAA lpFindFileData
        !          3257:     );
        !          3258: HANDLE
        !          3259: APIENTRY
        !          3260: FindFirstFileW(
        !          3261:     LPWSTR lpFileName,
        !          3262:     LPWIN32_FIND_DATAW lpFindFileData
        !          3263:     );
        !          3264: #ifdef UNICODE
        !          3265: #define FindFirstFile FindFirstFileW
        !          3266: #else
        !          3267: #define FindFirstFile FindFirstFileA
        !          3268: #endif // !UNICODE
        !          3269: 
        !          3270: BOOL
        !          3271: APIENTRY
        !          3272: FindNextFileA(
        !          3273:     HANDLE hFindFile,
        !          3274:     LPWIN32_FIND_DATAA lpFindFileData
        !          3275:     );
        !          3276: BOOL
        !          3277: APIENTRY
        !          3278: FindNextFileW(
        !          3279:     HANDLE hFindFile,
        !          3280:     LPWIN32_FIND_DATAW lpFindFileData
        !          3281:     );
        !          3282: #ifdef UNICODE
        !          3283: #define FindNextFile FindNextFileW
        !          3284: #else
        !          3285: #define FindNextFile FindNextFileA
        !          3286: #endif // !UNICODE
        !          3287: 
        !          3288: DWORD
        !          3289: APIENTRY
        !          3290: SearchPathA(
        !          3291:     LPSTR lpPath,
        !          3292:     LPSTR lpFileName,
        !          3293:     LPSTR lpExtension,
        !          3294:     DWORD nBufferLength,
        !          3295:     LPSTR lpBuffer,
        !          3296:     LPSTR *lpFilePart
        !          3297:     );
        !          3298: DWORD
        !          3299: APIENTRY
        !          3300: SearchPathW(
        !          3301:     LPWSTR lpPath,
        !          3302:     LPWSTR lpFileName,
        !          3303:     LPWSTR lpExtension,
        !          3304:     DWORD nBufferLength,
        !          3305:     LPWSTR lpBuffer,
        !          3306:     LPWSTR *lpFilePart
        !          3307:     );
        !          3308: #ifdef UNICODE
        !          3309: #define SearchPath SearchPathW
        !          3310: #else
        !          3311: #define SearchPath SearchPathA
        !          3312: #endif // !UNICODE
        !          3313: 
        !          3314: BOOL
        !          3315: APIENTRY
        !          3316: CopyFileA(
        !          3317:     LPSTR lpExistingFileName,
        !          3318:     LPSTR lpNewFileName,
        !          3319:     BOOL bFailIfExists
        !          3320:     );
        !          3321: BOOL
        !          3322: APIENTRY
        !          3323: CopyFileW(
        !          3324:     LPWSTR lpExistingFileName,
        !          3325:     LPWSTR lpNewFileName,
        !          3326:     BOOL bFailIfExists
        !          3327:     );
        !          3328: #ifdef UNICODE
        !          3329: #define CopyFile CopyFileW
        !          3330: #else
        !          3331: #define CopyFile CopyFileA
        !          3332: #endif // !UNICODE
        !          3333: 
        !          3334: BOOL
        !          3335: APIENTRY
        !          3336: MoveFileA(
        !          3337:     LPSTR lpExistingFileName,
        !          3338:     LPSTR lpNewFileName
        !          3339:     );
        !          3340: BOOL
        !          3341: APIENTRY
        !          3342: MoveFileW(
        !          3343:     LPWSTR lpExistingFileName,
        !          3344:     LPWSTR lpNewFileName
        !          3345:     );
        !          3346: #ifdef UNICODE
        !          3347: #define MoveFile MoveFileW
        !          3348: #else
        !          3349: #define MoveFile MoveFileA
        !          3350: #endif // !UNICODE
        !          3351: 
        !          3352: HANDLE
        !          3353: APIENTRY
        !          3354: CreateNamedPipeA(
        !          3355:     LPSTR lpName,
        !          3356:     DWORD dwOpenMode,
        !          3357:     DWORD dwPipeMode,
        !          3358:     DWORD nMaxInstances,
        !          3359:     DWORD nOutBufferSize,
        !          3360:     DWORD nInBufferSize,
        !          3361:     DWORD nDefaultTimeOut,
        !          3362:     LPSECURITY_ATTRIBUTES lpSecurityAttributes
        !          3363:     );
        !          3364: HANDLE
        !          3365: APIENTRY
        !          3366: CreateNamedPipeW(
        !          3367:     LPWSTR lpName,
        !          3368:     DWORD dwOpenMode,
        !          3369:     DWORD dwPipeMode,
        !          3370:     DWORD nMaxInstances,
        !          3371:     DWORD nOutBufferSize,
        !          3372:     DWORD nInBufferSize,
        !          3373:     DWORD nDefaultTimeOut,
        !          3374:     LPSECURITY_ATTRIBUTES lpSecurityAttributes
        !          3375:     );
        !          3376: #ifdef UNICODE
        !          3377: #define CreateNamedPipe CreateNamedPipeW
        !          3378: #else
        !          3379: #define CreateNamedPipe CreateNamedPipeA
        !          3380: #endif // !UNICODE
        !          3381: 
        !          3382: BOOL
        !          3383: APIENTRY
        !          3384: GetNamedPipeHandleStateA(
        !          3385:     HANDLE hNamedPipe,
        !          3386:     LPDWORD lpState,
        !          3387:     LPDWORD lpCurInstances,
        !          3388:     LPDWORD lpMaxCollectionCount,
        !          3389:     LPDWORD lpCollectDataTimeout,
        !          3390:     LPSTR lpUserName,
        !          3391:     DWORD nMaxUserNameSize
        !          3392:     );
        !          3393: BOOL
        !          3394: APIENTRY
        !          3395: GetNamedPipeHandleStateW(
        !          3396:     HANDLE hNamedPipe,
        !          3397:     LPDWORD lpState,
        !          3398:     LPDWORD lpCurInstances,
        !          3399:     LPDWORD lpMaxCollectionCount,
        !          3400:     LPDWORD lpCollectDataTimeout,
        !          3401:     LPWSTR lpUserName,
        !          3402:     DWORD nMaxUserNameSize
        !          3403:     );
        !          3404: #ifdef UNICODE
        !          3405: #define GetNamedPipeHandleState GetNamedPipeHandleStateW
        !          3406: #else
        !          3407: #define GetNamedPipeHandleState GetNamedPipeHandleStateA
        !          3408: #endif // !UNICODE
        !          3409: 
        !          3410: BOOL
        !          3411: APIENTRY
        !          3412: CallNamedPipeA(
        !          3413:     LPSTR lpNamedPipeName,
        !          3414:     LPVOID lpInBuffer,
        !          3415:     DWORD nInBufferSize,
        !          3416:     LPVOID lpOutBuffer,
        !          3417:     DWORD nOutBufferSize,
        !          3418:     LPDWORD lpBytesRead,
        !          3419:     DWORD nTimeOut
        !          3420:     );
        !          3421: BOOL
        !          3422: APIENTRY
        !          3423: CallNamedPipeW(
        !          3424:     LPWSTR lpNamedPipeName,
        !          3425:     LPVOID lpInBuffer,
        !          3426:     DWORD nInBufferSize,
        !          3427:     LPVOID lpOutBuffer,
        !          3428:     DWORD nOutBufferSize,
        !          3429:     LPDWORD lpBytesRead,
        !          3430:     DWORD nTimeOut
        !          3431:     );
        !          3432: #ifdef UNICODE
        !          3433: #define CallNamedPipe CallNamedPipeW
        !          3434: #else
        !          3435: #define CallNamedPipe CallNamedPipeA
        !          3436: #endif // !UNICODE
        !          3437: 
        !          3438: BOOL
        !          3439: APIENTRY
        !          3440: WaitNamedPipeA(
        !          3441:     LPSTR lpNamedPipeName,
        !          3442:     DWORD nTimeOut
        !          3443:     );
        !          3444: BOOL
        !          3445: APIENTRY
        !          3446: WaitNamedPipeW(
        !          3447:     LPWSTR lpNamedPipeName,
        !          3448:     DWORD nTimeOut
        !          3449:     );
        !          3450: #ifdef UNICODE
        !          3451: #define WaitNamedPipe WaitNamedPipeW
        !          3452: #else
        !          3453: #define WaitNamedPipe WaitNamedPipeA
        !          3454: #endif // !UNICODE
        !          3455: 
        !          3456: BOOL
        !          3457: APIENTRY
        !          3458: GetVolumeInformationA(
        !          3459:     LPSTR lpRootPathName,
        !          3460:     LPSTR lpVolumeNameBuffer,
        !          3461:     DWORD nVolumeNameSize,
        !          3462:     LPDWORD lpVolumeSerialNumber,
        !          3463:     LPDWORD lpMaximumComponentLength,
        !          3464:     LPDWORD lpFileSystemFlags,
        !          3465:     LPSTR lpFileSystemNameBuffer,
        !          3466:     DWORD nFileSystemNameSize
        !          3467:     );
        !          3468: BOOL
        !          3469: APIENTRY
        !          3470: GetVolumeInformationW(
        !          3471:     LPWSTR lpRootPathName,
        !          3472:     LPWSTR lpVolumeNameBuffer,
        !          3473:     DWORD nVolumeNameSize,
        !          3474:     LPDWORD lpVolumeSerialNumber,
        !          3475:     LPDWORD lpMaximumComponentLength,
        !          3476:     LPDWORD lpFileSystemFlags,
        !          3477:     LPWSTR lpFileSystemNameBuffer,
        !          3478:     DWORD nFileSystemNameSize
        !          3479:     );
        !          3480: #ifdef UNICODE
        !          3481: #define GetVolumeInformation GetVolumeInformationW
        !          3482: #else
        !          3483: #define GetVolumeInformation GetVolumeInformationA
        !          3484: #endif // !UNICODE
        !          3485: 
        !          3486: //
        !          3487: // Private MVDM apis
        !          3488: //
        !          3489: 
        !          3490: VOID
        !          3491: APIENTRY
        !          3492: VDMOperationStarted(
        !          3493:     IN BOOL IsWowCaller
        !          3494:     );
        !          3495: 
        !          3496: BOOL
        !          3497: APIENTRY
        !          3498: GetNextVDMCommand(
        !          3499:     PVDMINFO pVDMInfo
        !          3500:     );
        !          3501: 
        !          3502: VOID
        !          3503: APIENTRY
        !          3504: ExitVDM(
        !          3505:     IN BOOL IsWowCaller,
        !          3506:     IN ULONG iWowTask
        !          3507:     );
        !          3508: //
        !          3509: // Event logging APIs
        !          3510: //
        !          3511: BOOL
        !          3512: APIENTRY
        !          3513: ClearEventLogA (
        !          3514:     IN HANDLE hEventLog,
        !          3515:     IN LPSTR   lpBackupFileName
        !          3516:     );
        !          3517: //
        !          3518: // Event logging APIs
        !          3519: //
        !          3520: BOOL
        !          3521: APIENTRY
        !          3522: ClearEventLogW (
        !          3523:     IN HANDLE hEventLog,
        !          3524:     IN LPWSTR  lpBackupFileName
        !          3525:     );
        !          3526: #ifdef UNICODE
        !          3527: #define ClearEventLog ClearEventLogW
        !          3528: #else
        !          3529: #define ClearEventLog ClearEventLogA
        !          3530: #endif // !UNICODE
        !          3531: 
        !          3532: BOOL
        !          3533: APIENTRY
        !          3534: CloseEventLog (
        !          3535:     IN HANDLE hEventLog
        !          3536:     );
        !          3537: 
        !          3538: HANDLE
        !          3539: APIENTRY
        !          3540: OpenEventLogA (
        !          3541:     IN LPSTR   lpUNCServerName,
        !          3542:     IN LPSTR   lpModuleName
        !          3543:     );
        !          3544: HANDLE
        !          3545: APIENTRY
        !          3546: OpenEventLogW (
        !          3547:     IN LPWSTR  lpUNCServerName,
        !          3548:     IN LPWSTR  lpModuleName
        !          3549:     );
        !          3550: #ifdef UNICODE
        !          3551: #define OpenEventLog OpenEventLogW
        !          3552: #else
        !          3553: #define OpenEventLog OpenEventLogA
        !          3554: #endif // !UNICODE
        !          3555: 
        !          3556: BOOL
        !          3557: APIENTRY
        !          3558: ReadEventLogA (
        !          3559:     IN         HANDLE  hEventLog,
        !          3560:     IN         DWORD       dwReadFlags,
        !          3561:     IN         DWORD       dwRecordOffset,
        !          3562:     OUT                LPVOID      lpBuffer,
        !          3563:     IN         DWORD       nNumberOfBytesToRead,
        !          3564:     OUT        DWORD       *pnBytesRead,
        !          3565:     OUT        DWORD       *pnMinNumberOfBytesNeeded
        !          3566:     );
        !          3567: BOOL
        !          3568: APIENTRY
        !          3569: ReadEventLogW (
        !          3570:     IN         HANDLE  hEventLog,
        !          3571:     IN         DWORD       dwReadFlags,
        !          3572:     IN         DWORD       dwRecordOffset,
        !          3573:     OUT                LPVOID      lpBuffer,
        !          3574:     IN         DWORD       nNumberOfBytesToRead,
        !          3575:     OUT        DWORD       *pnBytesRead,
        !          3576:     OUT        DWORD       *pnMinNumberOfBytesNeeded
        !          3577:     );
        !          3578: #ifdef UNICODE
        !          3579: #define ReadEventLog ReadEventLogW
        !          3580: #else
        !          3581: #define ReadEventLog ReadEventLogA
        !          3582: #endif // !UNICODE
        !          3583: 
        !          3584: BOOL
        !          3585: APIENTRY
        !          3586: WriteEventLogEntryA (
        !          3587:     IN         HANDLE  hEventLog,
        !          3588:     IN         WORD        wType,
        !          3589:     IN         DWORD       dwEventID,
        !          3590:     IN         PSID        lpUserSid       OPTIONAL,
        !          3591:     IN         WORD        wNumStrings,
        !          3592:     IN         DWORD       dwDataSize,
        !          3593:     IN         LPSTR       *lpStrings      OPTIONAL,
        !          3594:     IN         LPVOID      lpRawData       OPTIONAL
        !          3595:     );
        !          3596: BOOL
        !          3597: APIENTRY
        !          3598: WriteEventLogEntryW (
        !          3599:     IN         HANDLE  hEventLog,
        !          3600:     IN         WORD        wType,
        !          3601:     IN         DWORD       dwEventID,
        !          3602:     IN         PSID        lpUserSid       OPTIONAL,
        !          3603:     IN         WORD        wNumStrings,
        !          3604:     IN         DWORD       dwDataSize,
        !          3605:     IN         LPWSTR      *lpStrings      OPTIONAL,
        !          3606:     IN         LPVOID      lpRawData       OPTIONAL
        !          3607:     );
        !          3608: #ifdef UNICODE
        !          3609: #define WriteEventLogEntry WriteEventLogEntryW
        !          3610: #else
        !          3611: #define WriteEventLogEntry WriteEventLogEntryA
        !          3612: #endif // !UNICODE
        !          3613: //
        !          3614: // DOS and OS/2 Compatible Error Code definitions returned by the Win32 Base
        !          3615: // API functions.
        !          3616: //
        !          3617: 
        !          3618: #include <winerror.h>
        !          3619: 
        !          3620: /* Abnormal termination codes */
        !          3621: 
        !          3622: #define TC_NORMAL       0
        !          3623: #define TC_HARDERR      1
        !          3624: #define TC_GP_TRAP      2
        !          3625: #define TC_SIGNAL       3
        !          3626: 
        !          3627: #endif // _WINBASE_

unix.superglobalmegacorp.com

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