home *** CD-ROM | disk | FTP | other *** search
/ Team Palmtops 7 / Palmtops_numero07.iso / WinCE / SDKWindowsCE / AutoPC / apcsdk10.exe / data1.cab / Emulation_Include_Files / winbase.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-05-13  |  53.5 KB  |  2,610 lines

  1.  
  2. /*++
  3.  
  4. Copyright (c) 1995 - 1997 Microsoft Corporation
  5.  
  6. Module Name: winbase.h
  7.  
  8. Purpose:This header file declares the Base APIs.
  9.  
  10. --*/
  11.  
  12. #ifndef __WINBASE_H__
  13. #define __WINBASE_H__
  14.  
  15. //
  16. // Define API decoration for direct importing of DLL references.
  17. //
  18.  
  19. #if !defined(_ADVAPI32_)
  20. #define WINADVAPI  DECLSPEC_IMPORT
  21. #else
  22. #define WINADVAPI
  23. #endif
  24.  
  25. #if !defined(_KERNEL32_)
  26. #define WINBASEAPI DECLSPEC_IMPORT
  27. #else
  28. #define WINBASEAPI
  29. #endif
  30.  
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34.  
  35. #include <windef.h>
  36.  
  37. #define INVALID_HANDLE_VALUE (HANDLE)-1
  38. #define INVALID_FILE_SIZE (DWORD)0xFFFFFFFF
  39.  
  40. #define FILE_BEGIN           0
  41. #define FILE_CURRENT         1
  42. #define FILE_END             2
  43. //
  44. //  File System time stamps are represented with the following structure:
  45. //
  46.  
  47. typedef struct _FILETIME {
  48.     DWORD dwLowDateTime;
  49.     DWORD dwHighDateTime;
  50. } FILETIME, *PFILETIME, *LPFILETIME;
  51.  
  52. typedef struct _SYSTEMTIME {
  53.     WORD wYear;
  54.     WORD wMonth;
  55.     WORD wDayOfWeek;
  56.     WORD wDay;
  57.     WORD wHour;
  58.     WORD wMinute;
  59.     WORD wSecond;
  60.     WORD wMilliseconds;
  61. } SYSTEMTIME, *LPSYSTEMTIME;
  62.  
  63. #ifdef MIPS_R4000 /* or above */
  64.  
  65. #define InterlockedIncrement _InterlockedIncrement
  66. #define InterlockedDecrement _InterlockedDecrement
  67. #define InterlockedExchange _InterlockedExchange
  68.  
  69. LONG
  70. WINAPI
  71. InterlockedIncrement(
  72.     LPLONG lpAddend
  73.     );
  74.  
  75. LONG
  76. WINAPI
  77. InterlockedDecrement(
  78.     LPLONG lpAddend
  79.     );
  80.  
  81. LONG
  82. WINAPI
  83. InterlockedExchange(
  84.     LPLONG Target,
  85.     LONG Value
  86.     );
  87.  
  88. #pragma intrinsic(_InterlockedIncrement)
  89. #pragma intrinsic(_InterlockedDecrement)
  90. #pragma intrinsic(_InterlockedExchange)
  91.  
  92. #elif (defined(PPC) && _MSC_VER >= 1000) && !defined(RC_INVOKED)
  93.  
  94. #define InterlockedIncrement _InterlockedIncrement
  95. #define InterlockedDecrement _InterlockedDecrement
  96. #define InterlockedExchange _InterlockedExchange
  97. #define InterlockedExchangeAdd _InterlockedExchangeAdd
  98. #define InterlockedCompareExchange _InterlockedCompareExchange
  99.  
  100. LONG
  101. WINAPI
  102. InterlockedIncrement(
  103.     LPLONG lpAddend
  104.     );
  105.  
  106. LONG
  107. WINAPI
  108. InterlockedDecrement(
  109.     LPLONG lpAddend
  110.     );
  111.  
  112. LONG
  113. WINAPI
  114. InterlockedExchange(
  115.     LPLONG Target,
  116.     LONG Value
  117.     );
  118.  
  119. PVOID
  120. WINAPI
  121. InterlockedCompareExchange (
  122.     PVOID *Destination,
  123.     PVOID Exchange,
  124.     PVOID Comperand
  125.     );
  126.  
  127. LONG
  128. WINAPI
  129. InterlockedExchangeAdd(
  130.     LPLONG Addend,
  131.     LONG Value
  132.     );
  133.  
  134. #define InterlockedTestExchange(Target, oldValue, newValue) \
  135.     ((long)InterlockedCompareExchange((PVOID*)(Target), (PVOID)(newValue), (PVOID)(oldValue)))
  136.  
  137. #pragma intrinsic(_InterlockedIncrement)
  138. #pragma intrinsic(_InterlockedDecrement)
  139. #pragma intrinsic(_InterlockedExchange)
  140. #pragma intrinsic(_InterlockedCompareExchange)
  141. #pragma intrinsic(_InterlockedExchangeAdd)
  142.  
  143. #elif defined(x86) || defined(_X86_)
  144.  
  145. #pragma warning(disable:4035)               // re-enable below
  146.  
  147.   __inline
  148.   LONG
  149.   WINAPI
  150.   InterlockedIncrement(
  151.       IN PLONG Addend
  152.       )
  153.   {
  154.       __asm {
  155.           mov     eax, 1
  156.           mov     ecx, Addend
  157.           xadd    [ecx], eax
  158.           inc     eax
  159.       }
  160.   }
  161.  
  162.   __inline
  163.   LONG
  164.   WINAPI
  165.   InterlockedDecrement(
  166.       IN PLONG Addend
  167.       )
  168.   {
  169.       __asm {
  170.           mov     eax, -1
  171.           mov     ecx, Addend
  172.           xadd    [ecx], eax
  173.           dec     eax
  174.       }
  175.   }
  176.  
  177.   __inline
  178.   LONG
  179.   WINAPI
  180.   InterlockedExchange(
  181.       IN OUT PLONG Target,
  182.       IN LONG Value
  183.       )
  184.   {
  185.       __asm {
  186.           mov     eax, Value
  187.           mov     ecx, Target
  188.           xchg     [ecx], eax
  189.       }
  190.   }
  191.  
  192.   
  193.   __inline
  194.   LONG
  195.   WINAPI
  196.   InterlockedTestExchange(
  197.       LPLONG Target,
  198.       LONG oldValue,
  199.       LONG newValue
  200.       )
  201.   {
  202.       __asm {
  203.           mov     eax, oldValue
  204.           mov     ecx, Target
  205.           mov     edx, newValue
  206.           cmpxchg [ecx], edx
  207.       }
  208.   }
  209.  
  210. #pragma warning(default:4035)
  211.  
  212. #else
  213.  
  214. LONG
  215. WINAPI
  216. InterlockedIncrement(
  217.     LPLONG lpAddend
  218.     );
  219.  
  220.  
  221. LONG
  222. WINAPI
  223. InterlockedDecrement(
  224.     LPLONG lpAddend
  225.     );
  226.  
  227.  
  228. LONG
  229. WINAPI
  230. InterlockedExchange(
  231.     LPLONG Target,
  232.     LONG Value
  233.     );
  234.  
  235. LONG
  236. WINAPI
  237. InterlockedTestExchange(
  238.     LPLONG Target,
  239.     LONG oldValue,
  240.     LONG newValue
  241.     );
  242.  
  243. #endif
  244.  
  245. DWORD
  246. WINAPI
  247. Random();
  248.  
  249.  
  250. int
  251. WINAPI
  252. WinMain(
  253.     HINSTANCE hInstance,
  254.     HINSTANCE hPrevInstance,
  255. #ifdef UNDER_CE
  256.     LPWSTR lpCmdLine,
  257. #else
  258.     LPSTR lpCmdLine,
  259. #endif
  260.     int nShowCmd
  261.     );
  262.  
  263. LONG WINAPI CompareFileTime(const FILETIME *lpft1, const FILETIME *lpft2);
  264. BOOL WINAPI FileTimeToSystemTime(const FILETIME *lpft, LPSYSTEMTIME lpst);
  265. BOOL WINAPI SystemTimeToFileTime(const SYSTEMTIME *lpst, LPFILETIME lpft);
  266. BOOL WINAPI FileTimeToLocalFileTime(const FILETIME *lpft, LPFILETIME lpftLocal);
  267. BOOL WINAPI LocalFileTimeToFileTime(const FILETIME *lpftLocal, LPFILETIME lpft);
  268.  
  269. /* Taken from NT's process.h */
  270. BOOL
  271. WINAPI
  272. DllMain (
  273.     HANDLE hinstDLL,
  274.     DWORD dwReason,
  275.     LPVOID lpvReserved
  276.     );
  277.  
  278. #ifdef UNDER_CE
  279. #define GetProcAddress GetProcAddressW
  280.  
  281. WINBASEAPI
  282. FARPROC
  283. WINAPI
  284. GetProcAddressW(
  285.     HMODULE hModule,
  286.     LPCWSTR lpProcName
  287.     );
  288.  
  289. #else
  290.  
  291. WINBASEAPI
  292. FARPROC
  293. WINAPI
  294. GetProcAddress(
  295.     HMODULE hModule,
  296.     LPCSTR lpProcName
  297.     );
  298.  
  299. #endif
  300.  
  301. VOID
  302. WINAPI
  303. GetLocalTime (
  304.     LPSYSTEMTIME lpSystemTime
  305.     );
  306.  
  307. VOID
  308. WINAPI
  309. GetSystemTime (
  310.     LPSYSTEMTIME lpSystemTime
  311.     );
  312.  
  313. typedef struct _TIME_ZONE_INFORMATION {
  314.     LONG Bias;
  315.     WCHAR StandardName[ 32 ];
  316.     SYSTEMTIME StandardDate;
  317.     LONG StandardBias;
  318.     WCHAR DaylightName[ 32 ];
  319.     SYSTEMTIME DaylightDate;
  320.     LONG DaylightBias;
  321. } TIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION;
  322.  
  323. DWORD
  324. WINAPI
  325. GetTimeZoneInformation (
  326.     LPTIME_ZONE_INFORMATION lpTimeZoneInformation
  327.     );
  328.  
  329. BOOL
  330. WINAPI
  331. SetLocalTime (
  332.     CONST SYSTEMTIME *lpSystemTime
  333.     );
  334.  
  335. BOOL
  336. WINAPI
  337. SetSystemTime (
  338.     CONST SYSTEMTIME *lpSystemTime
  339.     );
  340.  
  341. void
  342. WINAPI
  343. SetDaylightTime (
  344.     DWORD dst
  345.     );
  346.  
  347. BOOL
  348. WINAPI
  349. SetTimeZoneInformation (
  350.     CONST TIME_ZONE_INFORMATION *lpTimeZoneInformation
  351.     );
  352.  
  353. WINBASEAPI
  354. LPSTR
  355. WINAPI
  356. lstrcatA(
  357.     LPSTR lpString1,
  358.     LPCSTR lpString2
  359.     );
  360.  
  361. #define lstrcatW wcscat
  362. #ifdef UNICODE
  363. #define lstrcat lstrcatW
  364. #else
  365. #define lstrcat lstrcatA
  366. #endif
  367.  
  368. WINBASEAPI
  369. int
  370. WINAPI
  371. lstrcmpA(
  372.     LPCSTR lpString1,
  373.     LPCSTR lpString2
  374.     );
  375. WINBASEAPI
  376. int
  377. WINAPI
  378. lstrcmpW(
  379.     LPCWSTR lpString1,
  380.     LPCWSTR lpString2
  381.     );
  382. #ifdef UNICODE
  383. #define lstrcmp  lstrcmpW
  384. #else
  385. #define lstrcmp  lstrcmpA
  386. #endif // !UNICODE
  387.  
  388. WINBASEAPI
  389. int
  390. WINAPI
  391. lstrcmpiA(
  392.     LPCSTR lpString1,
  393.     LPCSTR lpString2
  394.     );
  395. WINBASEAPI
  396. int
  397. WINAPI
  398. lstrcmpiW(
  399.     LPCWSTR lpString1,
  400.     LPCWSTR lpString2
  401.     );
  402. #ifdef UNICODE
  403. #define lstrcmpi  lstrcmpiW
  404. #else
  405. #define lstrcmpi  lstrcmpiA
  406. #endif // !UNICODE
  407.  
  408. WINBASEAPI
  409. LPSTR
  410. WINAPI
  411. lstrcpyA(
  412.     LPSTR lpString1,
  413.     LPCSTR lpString2
  414.     );
  415. #define lstrcpyW wcscpy
  416. #ifdef UNICODE
  417. #define lstrcpy lstrcpyW
  418. #else
  419. #define lstrcpy lstrcpyA
  420. #endif
  421.  
  422. WINBASEAPI
  423. int
  424. WINAPI
  425. lstrlenA(
  426.     LPCSTR lpString
  427.     );
  428. #define lstrlenW wcslen
  429. #ifdef UNICODE
  430. #define lstrlen lstrlenW
  431. #else
  432. #define lstrlen lstrlenA
  433. #endif
  434.  
  435. DWORD
  436. WINAPI
  437. CharLowerBuffA (
  438.     LPSTR lpsz,
  439.     DWORD cchLength
  440.     );
  441. DWORD
  442. WINAPI
  443. CharLowerBuffW (
  444.     LPWSTR lpsz,
  445.     DWORD cchLength
  446.     );
  447. #ifdef UNICODE
  448. #define CharLowerBuff CharLowerBuffW
  449. #else
  450. #define CharLowerBuff CharLowerBuffA
  451. #endif
  452.  
  453. DWORD
  454. WINAPI
  455. CharUpperBuffA (
  456.     LPSTR lpsz,
  457.     DWORD cchLength
  458.     );
  459. DWORD
  460. WINAPI
  461. CharUpperBuffW (
  462.     LPWSTR lpsz,
  463.     DWORD cchLength
  464.     );
  465. #ifdef UNICODE
  466. #define CharUpperBuff CharUpperBuffW
  467. #else
  468. #define CharUpperBuff CharUpperBuffA
  469. #endif
  470.  
  471. LPSTR WINAPI CharLowerA(LPSTR lpsz);
  472. LPWSTR WINAPI CharLowerW(LPWSTR lpsz);
  473.  
  474. #ifdef UNICODE
  475. #define CharLower CharLowerW
  476. #else
  477. #define CharLower CharLowerA
  478. #endif
  479.  
  480. LPSTR WINAPI CharUpperA(LPSTR lpsz);
  481. LPWSTR WINAPI CharUpperW(LPWSTR lpsz);
  482.  
  483. #ifdef UNICODE
  484. #define CharUpper CharUpperW
  485. #else
  486. #define CharUpper CharUpperA
  487. #endif
  488.  
  489. LPSTR
  490. WINAPI
  491. CharPrevA(
  492.     LPCSTR lpszStart,
  493.     LPCSTR lpszCurrent);
  494.  
  495. LPWSTR
  496. WINAPI
  497. CharPrevW(
  498.     LPCWSTR lpszStart,
  499.     LPCWSTR lpszCurrent);
  500.  
  501. #ifdef UNICODE
  502. #define CharPrev  CharPrevW
  503. #else
  504. #define CharPrev  CharPrevA
  505. #endif // !UNICODE
  506.  
  507. LPSTR
  508. WINAPI
  509. CharNextA(
  510.     LPCSTR lpsz);
  511.  
  512. LPWSTR
  513. WINAPI
  514. CharNextW(
  515.     LPCWSTR lpsz);
  516.  
  517. #ifdef UNICODE
  518. #define CharNext  CharNextW
  519. #else
  520. #define CharNext  CharNextA
  521. #endif // !UNICODE
  522.  
  523.  
  524.  
  525. #define IsCharAlphaA isalpha
  526. #define IsCharAlphaW iswalpha
  527. #ifdef UNICODE
  528. #define IsCharAlpha IsCharAlphaW
  529. #else
  530. #define IsCharAlpha IsCharAlphaA
  531. #endif
  532.  
  533.  
  534. #define IsCharAlphaNumericA isalnum
  535. #define IsCharAlphaNumericW iswalnum
  536. #ifdef UNICODE
  537. #define IsCharAlphaNumeric IsCharAlphaNumericW
  538. #else
  539. #define IsCharAlphaNumeric IsCharAlphaNumericA
  540. #endif
  541.  
  542. #define IsCharLowerA islower
  543. #define IsCharLowerW iswlower
  544. #ifdef UNICODE
  545. #define IsCharLower IsCharLowerW
  546. #else
  547. #define IsCharLower IsCharLowerA
  548. #endif
  549.  
  550. #define IsCharUpperA isupper
  551. #define IsCharUpperW iswupper
  552. #ifdef UNICODE
  553. #define IsCharUpper IsCharUpperW
  554. #else
  555. #define IsCharUpper IsCharUpperA
  556. #endif
  557.  
  558. #include <stdarg.h>
  559.  
  560. int
  561. WINAPIV
  562. wsprintfA (
  563.     LPSTR lpBuffer,
  564.     LPCSTR lpFormat,
  565.     ...
  566.     );
  567. int
  568. WINAPIV
  569. wsprintfW (
  570.     LPWSTR lpBuffer,
  571.     LPCWSTR lpFormat,
  572.     ...
  573.     );
  574. #ifdef UNICODE
  575. #define wsprintf wsprintfW
  576. #else
  577. #define wsprintf wsprintfA
  578. #endif
  579.  
  580. int
  581. WINAPI
  582. wvsprintfA (
  583.     LPSTR,
  584.     LPCSTR,
  585.     va_list ArgList
  586.     );
  587.  
  588. int
  589. WINAPI
  590. wvsprintfW (
  591.     LPWSTR,
  592.     LPCWSTR,
  593.     va_list ArgList
  594.     );
  595. #ifdef UNICODE
  596. #define wvsprintf wvsprintfW
  597. #else
  598. #define wvsprintf wvsprintfA
  599. #endif
  600.  
  601. // @CESYSGEN IF COREDLL_LMEM
  602.  
  603. /* Why does Win32 not use the LSB flag ? */
  604. #define LMEM_FIXED          0x0000
  605. #define LMEM_MOVEABLE       0x0002
  606. #define LMEM_NOCOMPACT      0x0010       /**** Used for Moveable Memory  ***/
  607. #define LMEM_NODISCARD      0x0020       /**** Ignored *****/
  608. #define LMEM_ZEROINIT       0x0040
  609. #define LMEM_MODIFY         0x0080       /*** Used only in LocalReAlloc() **/
  610. #define LMEM_DISCARDABLE    0x0F00       /**** Ignored ****/
  611. #define LMEM_VALID_FLAGS    0x0F72
  612. #define LMEM_INVALID_HANDLE 0x8000
  613.  
  614. #define LHND                (LMEM_MOVEABLE | LMEM_ZEROINIT)
  615. #define LPTR                (LMEM_FIXED | LMEM_ZEROINIT)
  616.  
  617. #define NONZEROLHND         (LMEM_MOVEABLE)
  618. #define NONZEROLPTR         (LMEM_FIXED)
  619.  
  620. /* Flags returned by LocalFlags (in addition to LMEM_DISCARDABLE) */
  621. #define LMEM_DISCARDED      0x4000
  622. #define LMEM_LOCKCOUNT      0x00FF
  623.  
  624. // @CESYSGEN ENDIF
  625.  
  626. typedef struct _MEMORYSTATUS {
  627.     DWORD dwLength;
  628.     DWORD dwMemoryLoad;
  629.     DWORD dwTotalPhys;
  630.     DWORD dwAvailPhys;
  631.     DWORD dwTotalPageFile;
  632.     DWORD dwAvailPageFile;
  633.     DWORD dwTotalVirtual;
  634.     DWORD dwAvailVirtual;
  635. } MEMORYSTATUS, *LPMEMORYSTATUS;
  636.  
  637. VOID
  638. WINAPI
  639. GlobalMemoryStatus(
  640.     LPMEMORYSTATUS lpBuffer
  641.     );
  642.  
  643. // @CESYSGEN IF COREDLL_LMEM
  644.  
  645. #define LocalLock(X) ((LPVOID)X)
  646. #define LocalUnlock(X) (0)
  647. #define LocalHandle(X) ((HLOCAL)X)
  648. #define LocalFlags(X) (0)
  649.  
  650. HLOCAL
  651. WINAPI
  652. LocalAlloc (
  653.     UINT fuFlags,
  654.     UINT cbBytes
  655.     );
  656.  
  657. HLOCAL
  658. WINAPI
  659. LocalFree (
  660.     HLOCAL hMem
  661.     );
  662.  
  663. HLOCAL
  664. WINAPI
  665. LocalReAlloc (
  666.     HLOCAL hMem,
  667.     UINT cbBytes,
  668.     UINT fuFlags
  669.     );
  670.  
  671. UINT
  672. WINAPI
  673. LocalSize (
  674.     HLOCAL hMem
  675.     );
  676.  
  677. // @CESYSGEN ENDIF
  678.  
  679. LPVOID
  680. WINAPI
  681. VirtualAlloc(
  682.     LPVOID lpAddress,
  683.     DWORD dwSize,
  684.     DWORD flAllocationType,
  685.     DWORD flProtect
  686.     );
  687.  
  688. BOOL
  689. WINAPI
  690. VirtualFree(
  691.     LPVOID lpAddress,
  692.     DWORD dwSize,
  693.     DWORD dwFreeType
  694.     );
  695.  
  696. BOOL
  697. WINAPI
  698. VirtualProtect(
  699.     LPVOID lpAddress,
  700.     DWORD dwSize,
  701.     DWORD flNewProtect,
  702.     PDWORD lpflOldProtect
  703.     );
  704.  
  705. DWORD
  706. WINAPI
  707. VirtualQuery(
  708.     LPCVOID lpAddress,
  709.     PMEMORY_BASIC_INFORMATION lpBuffer,
  710.     DWORD dwLength
  711.     );
  712.  
  713. // @CESYSGEN IF COREDLL_LMEM
  714.  
  715. HANDLE WINAPI GetProcessHeap(VOID);
  716.  
  717. HANDLE
  718. WINAPI
  719. HeapCreate(
  720.     DWORD flOptions,
  721.     DWORD dwInitialSize,
  722.     DWORD dwMaximumSize
  723.     );
  724.  
  725. BOOL
  726. WINAPI
  727. HeapDestroy(
  728.     HANDLE hHeap
  729.     );
  730.  
  731. LPVOID
  732. WINAPI
  733. HeapAlloc(
  734.     HANDLE hHeap,
  735.     DWORD dwFlags,
  736.     DWORD dwBytes
  737.     );
  738.  
  739. LPVOID
  740. WINAPI
  741. HeapReAlloc(
  742.     HANDLE hHeap,
  743.     DWORD dwFlags,
  744.     LPVOID lpMem,
  745.     DWORD dwBytes
  746.     );
  747.  
  748. BOOL
  749. WINAPI
  750. HeapFree(
  751.     HANDLE hHeap,
  752.     DWORD dwFlags,
  753.     LPVOID lpMem
  754.     );
  755.  
  756. DWORD
  757. WINAPI
  758. HeapSize(
  759.     HANDLE hHeap,
  760.     DWORD dwFlags,
  761.     LPCVOID lpMem
  762.     );
  763.  
  764. BOOL
  765. WINAPI
  766. HeapValidate(
  767.     HANDLE hHeap,
  768.     DWORD dwFlags,
  769.     LPCVOID lpMem
  770.     );
  771.  
  772. // @CESYSGEN ENDIF
  773.  
  774. VOID
  775. WINAPI
  776. OutputDebugStringA(
  777.     LPCSTR lpOutputString
  778.     );
  779.  
  780. VOID
  781. WINAPI
  782. OutputDebugStringW(
  783.     LPCWSTR lpOutputString
  784.     );
  785. #ifdef UNICODE
  786. #define OutputDebugString  OutputDebugStringW
  787. #else
  788. #define OutputDebugString  OutputDebugStringA
  789. #endif // !UNICODE
  790.  
  791. VOID SignalStarted(DWORD dw);
  792.  
  793. BOOL
  794. WINAPI
  795. QueryPerformanceCounter(
  796.     LARGE_INTEGER *lpPerformanceCount
  797.     );
  798.  
  799. BOOL
  800. WINAPI
  801. QueryPerformanceFrequency(
  802.     LARGE_INTEGER *lpFrequency
  803.     );
  804.  
  805. #define VER_PLATFORM_WIN32s             0
  806. #define VER_PLATFORM_WIN32_WINDOWS      1
  807. #define VER_PLATFORM_WIN32_NT           2
  808. #define VER_PLATFORM_WIN32_HH           3
  809. #define VER_PLATFORM_WIN32_CE           3
  810.  
  811. typedef struct _OSVERSIONINFO{
  812.     DWORD dwOSVersionInfoSize;
  813.     DWORD dwMajorVersion;
  814.     DWORD dwMinorVersion;
  815.     DWORD dwBuildNumber;
  816.     DWORD dwPlatformId;
  817.     WCHAR szCSDVersion[ 128 ];
  818. } OSVERSIONINFO, *LPOSVERSIONINFO;
  819.  
  820. BOOL
  821. WINAPI 
  822. GetVersionEx(
  823.     LPOSVERSIONINFO lpver
  824.     );
  825.  
  826. typedef struct _SYSTEM_INFO {
  827.     union {
  828.         DWORD dwOemId;          // Obsolete field...do not use
  829.         struct {
  830.             WORD wProcessorArchitecture;
  831.             WORD wReserved;
  832.         };
  833.     };
  834.     DWORD dwPageSize;
  835.     LPVOID lpMinimumApplicationAddress;
  836.     LPVOID lpMaximumApplicationAddress;
  837.     DWORD dwActiveProcessorMask;
  838.     DWORD dwNumberOfProcessors;
  839.     DWORD dwProcessorType;
  840.     DWORD dwAllocationGranularity;
  841.     WORD wProcessorLevel;
  842.     WORD wProcessorRevision;
  843. } SYSTEM_INFO, *LPSYSTEM_INFO;
  844.  
  845. HINSTANCE
  846. WINAPI
  847. LoadLibraryA(
  848.     LPCSTR lpLibFileName
  849.     );
  850.  
  851. HINSTANCE
  852. WINAPI
  853. LoadLibraryW(
  854.     LPCWSTR lpLibFileName
  855.     );
  856. #ifdef UNICODE
  857. #define LoadLibrary  LoadLibraryW
  858. #else
  859. #define LoadLibrary  LoadLibraryA
  860. #endif // !UNICODE
  861.  
  862. WINBASEAPI
  863. DWORD
  864. WINAPI
  865. GetModuleFileNameA(
  866.     HMODULE hModule,
  867.     LPSTR lpFilename,
  868.     DWORD nSize
  869.     );
  870. WINBASEAPI
  871. DWORD
  872. WINAPI
  873. GetModuleFileNameW(
  874.     HMODULE hModule,
  875.     LPWSTR lpFilename,
  876.     DWORD nSize
  877.     );
  878. #ifdef UNICODE
  879. #define GetModuleFileName  GetModuleFileNameW
  880. #else
  881. #define GetModuleFileName  GetModuleFileNameA
  882. #endif // !UNICODE
  883.  
  884. #define PAGE_NOACCESS          0x01
  885. #define PAGE_READONLY          0x02
  886. #define PAGE_READWRITE         0x04
  887. #define PAGE_WRITECOPY         0x08
  888. #define PAGE_EXECUTE           0x10
  889. #define PAGE_EXECUTE_READ      0x20
  890. #define PAGE_EXECUTE_READWRITE 0x40
  891. #define PAGE_EXECUTE_WRITECOPY 0x80
  892. #define PAGE_GUARD            0x100
  893. #define PAGE_NOCACHE          0x200
  894. #define MEM_COMMIT           0x1000
  895. #define MEM_RESERVE          0x2000
  896. #define MEM_DECOMMIT         0x4000
  897. #define MEM_RELEASE          0x8000
  898. #define MEM_FREE            0x10000
  899. #define MEM_PRIVATE         0x20000
  900. #define MEM_MAPPED          0x40000
  901. #define MEM_TOP_DOWN       0x100000
  902. #define MEM_AUTO_COMMIT    0x200000
  903.  
  904. //
  905. //  File structures
  906. //
  907.  
  908. typedef struct _OVERLAPPED {
  909.     DWORD   Internal;
  910.     DWORD   InternalHigh;
  911.     DWORD   Offset;
  912.     DWORD   OffsetHigh;
  913.     HANDLE  hEvent;
  914. } OVERLAPPED, *LPOVERLAPPED;
  915.  
  916. typedef struct _SECURITY_ATTRIBUTES {
  917.     DWORD nLength;
  918.     LPVOID lpSecurityDescriptor;
  919.     BOOL bInheritHandle;
  920. } SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
  921.  
  922. typedef DWORD (WINAPI *LPTHREAD_START_ROUTINE)(LPVOID pvarg);
  923.  
  924. typedef LPTHREAD_START_ROUTINE PTHREAD_START_ROUTINE;
  925.  
  926. #define DEBUG_PROCESS               0x00000001
  927. #define DEBUG_ONLY_THIS_PROCESS     0x00000002
  928.  
  929. #define THREAD_PRIORITY_TIME_CRITICAL   0
  930. #define THREAD_PRIORITY_HIGHEST         1
  931. #define THREAD_PRIORITY_ABOVE_NORMAL    2
  932. #define THREAD_PRIORITY_NORMAL          3
  933. #define THREAD_PRIORITY_BELOW_NORMAL    4
  934. #define THREAD_PRIORITY_LOWEST          5
  935. #define THREAD_PRIORITY_ABOVE_IDLE      6
  936. #define THREAD_PRIORITY_IDLE            7
  937.  
  938. #define THREAD_PRIORITY_ERROR_RETURN    (MAXLONG)
  939.  
  940. #define EXCEPTION_DEBUG_EVENT       1
  941. #define CREATE_THREAD_DEBUG_EVENT   2
  942. #define CREATE_PROCESS_DEBUG_EVENT  3
  943. #define EXIT_THREAD_DEBUG_EVENT     4
  944. #define EXIT_PROCESS_DEBUG_EVENT    5
  945. #define LOAD_DLL_DEBUG_EVENT        6
  946. #define UNLOAD_DLL_DEBUG_EVENT      7
  947. #define OUTPUT_DEBUG_STRING_EVENT   8
  948. #define RIP_EVENT                   9
  949.  
  950. typedef struct _EXCEPTION_DEBUG_INFO {
  951.     EXCEPTION_RECORD ExceptionRecord;
  952.     DWORD dwFirstChance;
  953. } EXCEPTION_DEBUG_INFO, *LPEXCEPTION_DEBUG_INFO;
  954.  
  955. typedef struct _CREATE_THREAD_DEBUG_INFO {
  956.     HANDLE hThread;
  957.     LPVOID lpThreadLocalBase;
  958.     LPTHREAD_START_ROUTINE lpStartAddress;
  959. } CREATE_THREAD_DEBUG_INFO, *LPCREATE_THREAD_DEBUG_INFO;
  960.  
  961. typedef struct _CREATE_PROCESS_DEBUG_INFO {
  962.     HANDLE hFile;
  963.     HANDLE hProcess;
  964.     HANDLE hThread;
  965.     LPVOID lpBaseOfImage;
  966.     DWORD dwDebugInfoFileOffset;
  967.     DWORD nDebugInfoSize;
  968.     LPVOID lpThreadLocalBase;
  969.     LPTHREAD_START_ROUTINE lpStartAddress;
  970.     LPVOID lpImageName;
  971.     WORD fUnicode;
  972. } CREATE_PROCESS_DEBUG_INFO, *LPCREATE_PROCESS_DEBUG_INFO;
  973.  
  974. typedef struct _EXIT_THREAD_DEBUG_INFO {
  975.     DWORD dwExitCode;
  976. } EXIT_THREAD_DEBUG_INFO, *LPEXIT_THREAD_DEBUG_INFO;
  977.  
  978. typedef struct _EXIT_PROCESS_DEBUG_INFO {
  979.     DWORD dwExitCode;
  980. } EXIT_PROCESS_DEBUG_INFO, *LPEXIT_PROCESS_DEBUG_INFO;
  981.  
  982. typedef struct _LOAD_DLL_DEBUG_INFO {
  983.     HANDLE hFile;
  984.     LPVOID lpBaseOfDll;
  985.     DWORD dwDebugInfoFileOffset;
  986.     DWORD nDebugInfoSize;
  987.     LPVOID lpImageName;
  988.     WORD fUnicode;
  989. } LOAD_DLL_DEBUG_INFO, *LPLOAD_DLL_DEBUG_INFO;
  990.  
  991. typedef struct _UNLOAD_DLL_DEBUG_INFO {
  992.     LPVOID lpBaseOfDll;
  993. } UNLOAD_DLL_DEBUG_INFO, *LPUNLOAD_DLL_DEBUG_INFO;
  994.  
  995. typedef struct _OUTPUT_DEBUG_STRING_INFO {
  996.     LPSTR lpDebugStringData;
  997.     WORD fUnicode;
  998.     WORD nDebugStringLength;
  999. } OUTPUT_DEBUG_STRING_INFO, *LPOUTPUT_DEBUG_STRING_INFO;
  1000.  
  1001. typedef struct _RIP_INFO {
  1002.     DWORD dwError;
  1003.     DWORD dwType;
  1004. } RIP_INFO, *LPRIP_INFO;
  1005.  
  1006. typedef struct _DEBUG_EVENT {
  1007.     DWORD dwDebugEventCode;
  1008.     DWORD dwProcessId;
  1009.     DWORD dwThreadId;
  1010.     union {
  1011.         EXCEPTION_DEBUG_INFO Exception;
  1012.         CREATE_THREAD_DEBUG_INFO CreateThread;
  1013.         CREATE_PROCESS_DEBUG_INFO CreateProcessInfo;
  1014.         EXIT_THREAD_DEBUG_INFO ExitThread;
  1015.         EXIT_PROCESS_DEBUG_INFO ExitProcess;
  1016.         LOAD_DLL_DEBUG_INFO LoadDll;
  1017.         UNLOAD_DLL_DEBUG_INFO UnloadDll;
  1018.         OUTPUT_DEBUG_STRING_INFO DebugString;
  1019.         RIP_INFO RipInfo;
  1020.     } u;
  1021. } DEBUG_EVENT, *LPDEBUG_EVENT;
  1022. #define WAIT_OBJECT_0       0x00000000L
  1023. #define WAIT_ABANDONED      0x00000080L
  1024. #define WAIT_ABANDONED_0    0x00000080L
  1025. #define WAIT_TIMEOUT        0x00000102L
  1026. #define WAIT_FAILED         0xffffffffL
  1027. #define INFINITE            0xffffffffL
  1028.  
  1029. typedef PCONTEXT LPCONTEXT;
  1030.  
  1031. #ifdef UNDER_NT
  1032. typedef struct _RTL_CRITICAL_SECTION_DEBUG {
  1033.     WORD   Type;
  1034.     WORD   CreatorBackTraceIndex;
  1035.     struct _RTL_CRITICAL_SECTION *CriticalSection;
  1036.     LIST_ENTRY ProcessLocksList;
  1037.     DWORD EntryCount;
  1038.     DWORD ContentionCount;
  1039.     DWORD Spare[ 2 ];
  1040. } RTL_CRITICAL_SECTION_DEBUG, *PRTL_CRITICAL_SECTION_DEBUG;
  1041.  
  1042. typedef struct _RTL_CRITICAL_SECTION {
  1043.     PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
  1044.  
  1045.     //
  1046.     //  The following three fields control entering and exiting the critical
  1047.     //  section for the resource
  1048.     //
  1049.  
  1050.     LONG LockCount;
  1051.     LONG RecursionCount;
  1052.     HANDLE OwningThread;        // from the thread's ClientId->UniqueThread
  1053.     HANDLE LockSemaphore;
  1054.     DWORD Reserved;
  1055. } RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION;
  1056.  
  1057. typedef RTL_CRITICAL_SECTION CRITICAL_SECTION;
  1058. typedef PRTL_CRITICAL_SECTION PCRITICAL_SECTION;
  1059. typedef PRTL_CRITICAL_SECTION LPCRITICAL_SECTION;
  1060.  
  1061. #else
  1062.  
  1063. typedef struct CRITICAL_SECTION {
  1064.     unsigned int LockCount;         /* Nesting count on critical section */
  1065.     HANDLE OwnerThread;             /* Handle of owner thread */
  1066.     HANDLE hCrit;                    /* Handle to this critical section */
  1067.     DWORD needtrap;                    /* Trap in when freeing critical section */
  1068.     DWORD dwReserved;                /* currently unused */
  1069. } CRITICAL_SECTION, *LPCRITICAL_SECTION;
  1070. #endif
  1071.  
  1072. VOID
  1073. WINAPI
  1074. EnterCriticalSection (
  1075.     LPCRITICAL_SECTION pcsCriticalSection
  1076.     );
  1077.  
  1078. VOID
  1079. WINAPI
  1080. LeaveCriticalSection (
  1081.     LPCRITICAL_SECTION pcsCriticalSection
  1082.     );
  1083.  
  1084. VOID
  1085. WINAPI
  1086. InitializeCriticalSection (
  1087.     LPCRITICAL_SECTION pcsCriticalSection
  1088.     );
  1089.  
  1090. VOID
  1091. WINAPI
  1092. DeleteCriticalSection (
  1093.     LPCRITICAL_SECTION pcsCriticalSection
  1094.     );
  1095.  
  1096. BOOL
  1097. WINAPI
  1098. WaitForDebugEvent(
  1099.     LPDEBUG_EVENT lpDebugEvent,
  1100.     DWORD dwMilliseconds
  1101.     );
  1102.  
  1103. BOOL
  1104. WINAPI
  1105. ContinueDebugEvent(
  1106.     DWORD dwProcessId,
  1107.     DWORD dwThreadId,
  1108.     DWORD dwContinueStatus
  1109.     );
  1110.  
  1111. BOOL
  1112. WINAPI
  1113. DebugActiveProcess(
  1114.     DWORD dwProcessId
  1115.     );
  1116.  
  1117. LPVOID
  1118. WINAPI
  1119. MapViewOfFile(
  1120.     HANDLE hFileMappingObject,
  1121.     DWORD dwDesiredAccess,
  1122.     DWORD dwFileOffsetHigh,
  1123.     DWORD dwFileOffsetLow,
  1124.     DWORD dwNumberOfBytesToMap
  1125.     );
  1126.  
  1127. BOOL
  1128. WINAPI
  1129. UnmapViewOfFile(
  1130.     LPCVOID lpBaseAddress
  1131.     );
  1132.  
  1133. WINBASEAPI
  1134. BOOL
  1135. WINAPI
  1136. FlushViewOfFile(
  1137.     LPCVOID lpBaseAddress,
  1138.     DWORD dwNumberOfBytesToFlush
  1139.     );
  1140.  
  1141. WINBASEAPI
  1142. HANDLE
  1143. WINAPI
  1144. CreateFileMappingA(
  1145.     HANDLE hFile,
  1146.     LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
  1147.     DWORD flProtect,
  1148.     DWORD dwMaximumSizeHigh,
  1149.     DWORD dwMaximumSizeLow,
  1150.     LPCSTR lpName
  1151.     );
  1152.  
  1153. WINBASEAPI
  1154. HANDLE
  1155. WINAPI
  1156. CreateFileMappingW(
  1157.     HANDLE hFile,
  1158.     LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
  1159.     DWORD flProtect,
  1160.     DWORD dwMaximumSizeHigh,
  1161.     DWORD dwMaximumSizeLow,
  1162.     LPCWSTR lpName
  1163.     );
  1164.  
  1165. #ifdef UNICODE
  1166. #define CreateFileMapping  CreateFileMappingW
  1167. #else
  1168. #define CreateFileMapping  CreateFileMappingA
  1169. #endif // !UNICODE
  1170.  
  1171. WINBASEAPI
  1172. HANDLE
  1173. WINAPI
  1174. CreateFileForMapping(LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode,
  1175.     LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes,
  1176.     HANDLE hTemplateFile);
  1177.  
  1178. LPVOID MapUncompressedFileW(LPCWSTR pFileName, LPDWORD pLen);
  1179.  
  1180. #ifdef UNICODE
  1181. #define MapUncompressedFile  MapUncompressedFileW
  1182. #else
  1183. #define MapUncompressedFile  MapUncompressedFileA
  1184. #endif // !UNICODE
  1185.  
  1186. WINBASEAPI
  1187. DWORD
  1188. WINAPI
  1189. GetTempPathA(
  1190.     DWORD nBufferLength,
  1191.     LPSTR lpBuffer
  1192.     );
  1193.  
  1194. WINBASEAPI
  1195. DWORD
  1196. WINAPI
  1197. GetTempPathW(
  1198.     DWORD nBufferLength,
  1199.     LPWSTR lpBuffer
  1200.     );
  1201.  
  1202. #ifdef UNICODE
  1203. #define GetTempPath  GetTempPathW
  1204. #else
  1205. #define GetTempPath  GetTempPathA
  1206. #endif // !UNICODE
  1207.  
  1208. #define TLS_MINIMUM_AVAILABLE   64
  1209.  
  1210. #define CREATE_SUSPENDED 4
  1211.  
  1212. HANDLE
  1213. WINAPI
  1214. CreateThread (
  1215.     LPSECURITY_ATTRIBUTES lpsa,
  1216.     DWORD   cbStack,
  1217.     LPTHREAD_START_ROUTINE lpStartAddr,
  1218.     LPVOID lpvThreadParam,
  1219.     DWORD fdwCreate,
  1220.     LPDWORD lpIDThread
  1221.     );
  1222.  
  1223. VOID
  1224. WINAPI
  1225. ExitThread (
  1226.     DWORD   dwExitCode
  1227.     );
  1228.  
  1229. BOOL
  1230. WINAPI
  1231. TerminateThread(
  1232.     HANDLE hThread,
  1233.     DWORD dwExitCode
  1234.     );
  1235.     
  1236. #define STILL_ACTIVE 0x00000103
  1237.  
  1238. LPVOID
  1239. WINAPI
  1240. TlsGetValue (
  1241.     DWORD dwTlsIndex
  1242.     );
  1243.  
  1244. BOOL
  1245. WINAPI
  1246. TlsSetValue (
  1247.     DWORD dwTlsIndex,
  1248.     LPVOID lpvTlsValue
  1249.     );
  1250.  
  1251.  
  1252. typedef struct _PROCESS_INFORMATION {
  1253.     HANDLE  hProcess;
  1254.     HANDLE  hThread;
  1255.     DWORD   dwProcessId;
  1256.     DWORD   dwThreadId;
  1257. } PROCESS_INFORMATION, *LPPROCESS_INFORMATION;
  1258.  
  1259. typedef struct _STARTUPINFOA {
  1260.     DWORD   cb;
  1261.     LPSTR   lpReserved;
  1262.     LPSTR   lpDesktop;
  1263.     LPSTR   lpTitle;
  1264.     DWORD   dwX;
  1265.     DWORD   dwY;
  1266.     DWORD   dwXSize;
  1267.     DWORD   dwYSize;
  1268.     DWORD   dwXCountChars;
  1269.     DWORD   dwYCountChars;
  1270.     DWORD   dwFillAttribute;
  1271.     DWORD   dwFlags;
  1272.     WORD    wShowWindow;
  1273.     WORD    cbReserved2;
  1274.     LPBYTE  lpReserved2;
  1275.     HANDLE  hStdInput;
  1276.     HANDLE  hStdOutput;
  1277.     HANDLE  hStdError;
  1278. } STARTUPINFOA, *LPSTARTUPINFOA;
  1279.  
  1280. typedef struct _STARTUPINFOW {
  1281.     DWORD   cb;
  1282.     LPWSTR  lpReserved;
  1283.     LPWSTR  lpDesktop;
  1284.     LPWSTR  lpTitle;
  1285.     DWORD   dwX;
  1286.     DWORD   dwY;
  1287.     DWORD   dwXSize;
  1288.     DWORD   dwYSize;
  1289.     DWORD   dwXCountChars;
  1290.     DWORD   dwYCountChars;
  1291.     DWORD   dwFillAttribute;
  1292.     DWORD   dwFlags;
  1293.     WORD    wShowWindow;
  1294.     WORD    cbReserved2;
  1295.     LPBYTE  lpReserved2;
  1296.     HANDLE  hStdInput;
  1297.     HANDLE  hStdOutput;
  1298.     HANDLE  hStdError;
  1299. } STARTUPINFOW, *LPSTARTUPINFOW;
  1300.  
  1301. #ifdef UNICODE
  1302. typedef STARTUPINFOW STARTUPINFO;
  1303. typedef LPSTARTUPINFOW LPSTARTUPINFO;
  1304. #else
  1305. typedef STARTUPINFOA STARTUPINFO;
  1306. typedef LPSTARTUPINFOA LPSTARTUPINFO;
  1307. #endif // UNICODE
  1308.  
  1309. BOOL
  1310. WINAPI
  1311. CreateProcessA (
  1312.     LPCSTR pszImageName,
  1313.     LPCSTR pszCmdLine,
  1314.     LPSECURITY_ATTRIBUTES psaProcess,
  1315.     LPSECURITY_ATTRIBUTES psaThread,
  1316.     BOOL fInheritHandles,
  1317.     DWORD fdwCreate,
  1318.     LPVOID pvEnvironment,
  1319.     LPSTR pszCurDir,
  1320.     LPSTARTUPINFO psiStartInfo,
  1321.     LPPROCESS_INFORMATION pProcInfo
  1322.     );
  1323. BOOL
  1324. WINAPI
  1325. CreateProcessW (
  1326.     LPCWSTR pszImageName,
  1327.     LPCWSTR pszCmdLine,
  1328.     LPSECURITY_ATTRIBUTES psaProcess,
  1329.     LPSECURITY_ATTRIBUTES psaThread,
  1330.     BOOL fInheritHandles,
  1331.     DWORD fdwCreate,
  1332.     LPVOID pvEnvironment,
  1333.     LPWSTR pszCurDir,
  1334.     LPSTARTUPINFO psiStartInfo,
  1335.     LPPROCESS_INFORMATION pProcInfo
  1336.     );
  1337. #ifdef UNICODE
  1338. #define CreateProcess CreateProcessW
  1339. #else
  1340. #define CreateProcess CreateProcessA
  1341. #endif
  1342.  
  1343. WINBASEAPI
  1344. DWORD
  1345. WINAPI
  1346. GetProcessVersion(
  1347.     DWORD ProcessId
  1348.     );
  1349.  
  1350. #include <winerror.h>
  1351.  
  1352. //
  1353. //  These are the generic rights.
  1354. //
  1355.  
  1356. #define GENERIC_READ                     (0x80000000L)
  1357. #define GENERIC_WRITE                    (0x40000000L)
  1358. #define GENERIC_EXECUTE                  (0x20000000L)
  1359. #define GENERIC_ALL                      (0x10000000L)
  1360.  
  1361. #define FILE_SHARE_READ                 0x00000001
  1362. #define FILE_SHARE_WRITE                0x00000002
  1363.  
  1364. //
  1365. // File creation flags must start at the high end since they
  1366. // are combined with the attributes
  1367. //
  1368.  
  1369. #define FILE_FLAG_WRITE_THROUGH         0x80000000
  1370. #define FILE_FLAG_OVERLAPPED            0x40000000
  1371. #define FILE_FLAG_NO_BUFFERING          0x20000000
  1372. #define FILE_FLAG_RANDOM_ACCESS         0x10000000
  1373. #define FILE_FLAG_SEQUENTIAL_SCAN       0x08000000
  1374. #define FILE_FLAG_DELETE_ON_CLOSE       0x04000000
  1375. #define FILE_FLAG_BACKUP_SEMANTICS      0x02000000
  1376. #define FILE_FLAG_POSIX_SEMANTICS       0x01000000
  1377.  
  1378. #define CREATE_NEW          1
  1379. #define CREATE_ALWAYS       2
  1380. #define OPEN_EXISTING       3
  1381. #define OPEN_ALWAYS         4
  1382. #define TRUNCATE_EXISTING   5
  1383. #define OPEN_FOR_LOADER        6
  1384.  
  1385. // Windows CE File API definitions copied from NT's winbase.h
  1386.  
  1387. typedef struct _WIN32_FIND_DATAA {
  1388.     DWORD dwFileAttributes;
  1389.     FILETIME ftCreationTime;
  1390.     FILETIME ftLastAccessTime;
  1391.     FILETIME ftLastWriteTime;
  1392.     DWORD nFileSizeHigh;
  1393.     DWORD nFileSizeLow;
  1394.     DWORD dwReserved0;
  1395.     DWORD dwReserved1;
  1396.     CHAR  cFileName[ MAX_PATH ];
  1397.     CHAR  cAlternateFileName[ 14 ];
  1398. } WIN32_FIND_DATAA, *PWIN32_FIND_DATAA, *LPWIN32_FIND_DATAA;
  1399.  
  1400. typedef struct _WIN32_FIND_DATAW {
  1401.     DWORD dwFileAttributes;
  1402.     FILETIME ftCreationTime;
  1403.     FILETIME ftLastAccessTime;
  1404.     FILETIME ftLastWriteTime;
  1405.     DWORD nFileSizeHigh;
  1406.     DWORD nFileSizeLow;
  1407.     DWORD dwOID;
  1408.     WCHAR cFileName[ MAX_PATH ];
  1409. } WIN32_FIND_DATAW, *PWIN32_FIND_DATAW, *LPWIN32_FIND_DATAW;
  1410. #ifdef UNICODE
  1411. typedef WIN32_FIND_DATAW WIN32_FIND_DATA;
  1412. typedef PWIN32_FIND_DATAW PWIN32_FIND_DATA;
  1413. typedef LPWIN32_FIND_DATAW LPWIN32_FIND_DATA;
  1414. #else
  1415. typedef WIN32_FIND_DATAA WIN32_FIND_DATA;
  1416. typedef PWIN32_FIND_DATAA PWIN32_FIND_DATA;
  1417. typedef LPWIN32_FIND_DATAA LPWIN32_FIND_DATA;
  1418. #endif // UNICODE
  1419.  
  1420. WINBASEAPI
  1421. DWORD
  1422. WINAPI
  1423. GetLastError(
  1424.     VOID
  1425.     );
  1426.  
  1427. WINBASEAPI
  1428. DWORD
  1429. WINAPI
  1430. GetTickCount(
  1431.     VOID
  1432.     );
  1433.  
  1434. // @CESYSGEN IF COREDLL_FMTMSG
  1435.  
  1436. WINBASEAPI
  1437. DWORD
  1438. WINAPI
  1439. FormatMessageA(
  1440.     DWORD dwFlags,
  1441.     LPCVOID lpSource,
  1442.     DWORD dwMessageId,
  1443.     DWORD dwLanguageId,
  1444.     LPSTR lpBuffer,
  1445.     DWORD nSize,
  1446.     va_list *Arguments
  1447.     );
  1448.  
  1449. #ifndef COREDLL
  1450. WINBASEAPI
  1451. #endif
  1452. DWORD
  1453. WINAPI
  1454. FormatMessageW(
  1455.     DWORD dwFlags,
  1456.     LPCVOID lpSource,
  1457.     DWORD dwMessageId,
  1458.     DWORD dwLanguageId,
  1459.     LPWSTR lpBuffer,
  1460.     DWORD nSize,
  1461.     va_list *Arguments
  1462.     );
  1463.  
  1464. #ifdef UNICODE
  1465. #define FormatMessage  FormatMessageW
  1466. #else
  1467. #define FormatMessage  FormatMessageA
  1468. #endif // !UNICODE
  1469.  
  1470. // @CESYSGEN ENDIF
  1471.  
  1472. #define FORMAT_MESSAGE_ALLOCATE_BUFFER 0x00000100
  1473. #define FORMAT_MESSAGE_IGNORE_INSERTS  0x00000200
  1474. #define FORMAT_MESSAGE_FROM_STRING     0x00000400
  1475. #define FORMAT_MESSAGE_FROM_HMODULE    0x00000800
  1476. #define FORMAT_MESSAGE_FROM_SYSTEM     0x00001000
  1477. #define FORMAT_MESSAGE_ARGUMENT_ARRAY  0x00002000
  1478. #define FORMAT_MESSAGE_MAX_WIDTH_MASK  0x000000FF
  1479.  
  1480. WINBASEAPI
  1481. BOOL
  1482. WINAPI
  1483. CloseHandle(
  1484.     HANDLE hObject
  1485.     );
  1486.  
  1487. WINBASEAPI
  1488. HGLOBAL
  1489. WINAPI
  1490. LoadResource(
  1491.     HMODULE hModule,
  1492.     HRSRC hResInfo
  1493.     );
  1494.  
  1495. WINBASEAPI
  1496. DWORD
  1497. WINAPI
  1498. SizeofResource(
  1499.     HMODULE hModule,
  1500.     HRSRC hResInfo
  1501.     );
  1502.  
  1503. WINBASEAPI
  1504. HRSRC
  1505. WINAPI
  1506. FindResourceA(
  1507.     HMODULE hModule,
  1508.     LPCSTR lpName,
  1509.     LPCSTR lpType
  1510.     );
  1511.  
  1512. WINBASEAPI
  1513. HRSRC
  1514. WINAPI
  1515. FindResourceW(
  1516.     HMODULE hModule,
  1517.     LPCWSTR lpName,
  1518.     LPCWSTR lpType
  1519.     );
  1520.  
  1521. #ifdef UNICODE
  1522. #define FindResource  FindResourceW
  1523. #else
  1524. #define FindResource  FindResourceA
  1525. #endif  // !UNICODE
  1526.  
  1527. WINBASEAPI
  1528. BOOL
  1529. WINAPI
  1530. TerminateProcess(
  1531.     HANDLE hProcess,
  1532.     DWORD uExitCode
  1533.     );
  1534.  
  1535. BOOL
  1536. WINAPI
  1537. FlushInstructionCache(
  1538.     HANDLE hProcess,
  1539.     LPCVOID lpBaseAddress,
  1540.     DWORD dwSize
  1541.     );
  1542.  
  1543. BOOL
  1544. WINAPI
  1545. ReadProcessMemory(
  1546.     HANDLE hProcess,
  1547.     LPCVOID lpBaseAddress,
  1548.     LPVOID lpBuffer,
  1549.     DWORD nSize,
  1550.     LPDWORD lpNumberOfBytesRead
  1551.     );
  1552.  
  1553. BOOL
  1554. WINAPI
  1555. WriteProcessMemory(
  1556.     HANDLE hProcess,
  1557.     LPVOID lpBaseAddress,
  1558.     LPVOID lpBuffer,
  1559.     DWORD nSize,
  1560.     LPDWORD lpNumberOfBytesWritten
  1561.     );
  1562.  
  1563. HANDLE
  1564. WINAPI
  1565. OpenProcess(
  1566.     DWORD fdwAccess,
  1567.     BOOL fInherit,
  1568.     DWORD IDProcess
  1569.     );
  1570.  
  1571. WINBASEAPI
  1572. BOOL
  1573. WINAPI
  1574. GetThreadContext(
  1575.     HANDLE hThread,
  1576.     LPCONTEXT lpContext
  1577.     );
  1578.  
  1579. WINBASEAPI
  1580. BOOL
  1581. WINAPI
  1582. SetThreadContext(
  1583.     HANDLE hThread,
  1584.     CONST CONTEXT *lpContext
  1585.     );
  1586.  
  1587. WINBASEAPI
  1588. DWORD
  1589. WINAPI
  1590. SuspendThread(
  1591.     HANDLE hThread
  1592.     );
  1593. WINBASEAPI
  1594. DWORD
  1595. WINAPI
  1596. ResumeThread(
  1597.     HANDLE hThread
  1598.     );
  1599.  
  1600. WINBASEAPI
  1601. int
  1602. WINAPI
  1603. GetThreadPriority(
  1604.     HANDLE hThread
  1605.     );
  1606.  
  1607.  
  1608. WINBASEAPI
  1609. BOOL
  1610. WINAPI
  1611. SetThreadPriority(
  1612.     HANDLE hThread,
  1613.     int nPriority
  1614.     );
  1615.  
  1616. WINBASEAPI
  1617. VOID
  1618. WINAPI
  1619. SetLastError(
  1620.     DWORD dwErrCode
  1621.     );
  1622.  
  1623. // @CESYSGEN IF FILESYS_FSMAIN
  1624.  
  1625. BOOL GetDiskFreeSpaceExA(LPCSTR lpDirectoryName, PULARGE_INTEGER lpFreeBytesAvailableToCaller,
  1626.     PULARGE_INTEGER lpTotalNumberOfBytes, PULARGE_INTEGER lpTotalNumberOfFreeBytes);
  1627.  
  1628. BOOL GetDiskFreeSpaceExW(LPCWSTR lpDirectoryName, PULARGE_INTEGER lpFreeBytesAvailableToCaller,
  1629.     PULARGE_INTEGER lpTotalNumberOfBytes, PULARGE_INTEGER lpTotalNumberOfFreeBytes);
  1630.  
  1631. #ifdef UNICODE
  1632. #define GetDiskFreeSpaceEx  GetDiskFreeSpaceExW
  1633. #else
  1634. #define GetDiskFreeSpaceEx  GetDiskFreeSpaceExA
  1635. #endif // !UNICODE
  1636.  
  1637. WINBASEAPI
  1638. HANDLE
  1639. WINAPI
  1640. CreateFileA(
  1641.     LPCSTR lpFileName,
  1642.     DWORD dwDesiredAccess,
  1643.     DWORD dwShareMode,
  1644.     LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  1645.     DWORD dwCreationDisposition,
  1646.     DWORD dwFlagsAndAttributes,
  1647.     HANDLE hTemplateFile
  1648.     );
  1649.     
  1650. WINBASEAPI
  1651. HANDLE
  1652. WINAPI
  1653. CreateFileW(
  1654.     LPCWSTR lpFileName,
  1655.     DWORD dwDesiredAccess,
  1656.     DWORD dwShareMode,
  1657.     LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  1658.     DWORD dwCreationDisposition,
  1659.     DWORD dwFlagsAndAttributes,
  1660.     HANDLE hTemplateFile
  1661.     );
  1662. #ifdef UNICODE
  1663. #define CreateFile  CreateFileW
  1664. #else
  1665. #define CreateFile  CreateFileA
  1666. #endif // !UNICODE
  1667.  
  1668. WINBASEAPI
  1669. BOOL
  1670. WINAPI
  1671. DeleteFileA(
  1672.     LPCSTR lpFileName
  1673.     );
  1674. WINBASEAPI
  1675. BOOL
  1676. WINAPI
  1677. DeleteFileW(
  1678.     LPCWSTR lpFileName
  1679.     );
  1680. #ifdef UNICODE
  1681. #define DeleteFile  DeleteFileW
  1682. #else
  1683. #define DeleteFile  DeleteFileA
  1684. #endif // !UNICODE
  1685.  
  1686. WINBASEAPI
  1687. BOOL
  1688. WINAPI
  1689. DeleteAndRenameFile(
  1690.     LPCWSTR lpOldFileName,
  1691.     LPCWSTR lpNewFileName
  1692.     );
  1693.  
  1694. WINBASEAPI
  1695. HANDLE
  1696. WINAPI
  1697. FindFirstFileA(
  1698.     LPCSTR lpFileName,
  1699.     LPWIN32_FIND_DATAA lpFindFileData
  1700.     );
  1701.  
  1702. WINBASEAPI
  1703. HANDLE
  1704. WINAPI
  1705. FindFirstFileW(
  1706.     LPCWSTR lpFileName,
  1707.     LPWIN32_FIND_DATAW lpFindFileData
  1708.     );
  1709. #ifdef UNICODE
  1710. #define FindFirstFile  FindFirstFileW
  1711. #else
  1712. #define FindFirstFile  FindFirstFileA
  1713. #endif // !UNICODE
  1714.  
  1715. WINBASEAPI
  1716. BOOL
  1717. WINAPI
  1718. FindNextFileA(
  1719.     HANDLE hFindFile,
  1720.     LPWIN32_FIND_DATAA lpFindFileData
  1721.     );
  1722.  
  1723. WINBASEAPI
  1724. BOOL
  1725. WINAPI
  1726. FindNextFileW(
  1727.     HANDLE hFindFile,
  1728.     LPWIN32_FIND_DATAW lpFindFileData
  1729.     );
  1730. #ifdef UNICODE
  1731. #define FindNextFile  FindNextFileW
  1732. #else
  1733. #define FindNextFile  FindNextFileA
  1734. #endif // !UNICODE
  1735.  
  1736. WINBASEAPI
  1737. BOOL
  1738. WINAPI
  1739. CopyFileA(
  1740.     LPCSTR lpExistingFileName,
  1741.     LPCSTR lpNewFileName,
  1742.     BOOL bFailIfExists
  1743.     );
  1744. WINBASEAPI
  1745. BOOL
  1746. WINAPI
  1747. CopyFileW(
  1748.     LPCWSTR lpExistingFileName,
  1749.     LPCWSTR lpNewFileName,
  1750.     BOOL bFailIfExists
  1751.     );
  1752. #ifdef UNICODE
  1753. #define CopyFile  CopyFileW
  1754. #else
  1755. #define CopyFile  CopyFileA
  1756. #endif // !UNICODE
  1757.  
  1758. WINBASEAPI
  1759. BOOL
  1760. WINAPI
  1761. MoveFileA(
  1762.     LPCSTR lpExistingFileName,
  1763.     LPCSTR lpNewFileName
  1764.     );
  1765. WINBASEAPI
  1766. BOOL
  1767. WINAPI
  1768. MoveFileW(
  1769.     LPCWSTR lpExistingFileName,
  1770.     LPCWSTR lpNewFileName
  1771.     );
  1772. #ifdef UNICODE
  1773. #define MoveFile  MoveFileW
  1774. #else
  1775. #define MoveFile  MoveFileA
  1776. #endif // !UNICODE
  1777.  
  1778.  
  1779. WINBASEAPI
  1780. BOOL
  1781. WINAPI
  1782. CreateDirectoryA(
  1783.     LPCSTR lpPathName,
  1784.     LPSECURITY_ATTRIBUTES lpSecurityAttributes
  1785.     );
  1786. WINBASEAPI
  1787. BOOL
  1788. WINAPI
  1789. CreateDirectoryW(
  1790.     LPCWSTR lpPathName,
  1791.     LPSECURITY_ATTRIBUTES lpSecurityAttributes
  1792.     );
  1793. #ifdef UNICODE
  1794. #define CreateDirectory  CreateDirectoryW
  1795. #else
  1796. #define CreateDirectory  CreateDirectoryA
  1797. #endif // !UNICODE
  1798.  
  1799. WINBASEAPI
  1800. BOOL
  1801. WINAPI
  1802. RemoveDirectoryA(
  1803.     LPCSTR lpPathName
  1804.     );
  1805. WINBASEAPI
  1806. BOOL
  1807. WINAPI
  1808. RemoveDirectoryW(
  1809.     LPCWSTR lpPathName
  1810.     );
  1811. #ifdef UNICODE
  1812. #define RemoveDirectory  RemoveDirectoryW
  1813. #else
  1814. #define RemoveDirectory  RemoveDirectoryA
  1815. #endif // !UNICODE
  1816.  
  1817. WINBASEAPI
  1818. BOOL
  1819. WINAPI
  1820. WriteFile(
  1821.     HANDLE hFile,
  1822.     LPCVOID lpBuffer,
  1823.     DWORD nNumberOfBytesToWrite,
  1824.     LPDWORD lpNumberOfBytesWritten,
  1825.     LPOVERLAPPED lpOverlapped
  1826.     );
  1827.  
  1828. WINBASEAPI
  1829. BOOL
  1830. WINAPI
  1831. ReadFile(
  1832.     HANDLE hFile,
  1833.     LPVOID lpBuffer,
  1834.     DWORD nNumberOfBytesToRead,
  1835.     LPDWORD lpNumberOfBytesRead,
  1836.     LPOVERLAPPED lpOverlapped
  1837.     );
  1838.  
  1839. WINBASEAPI BOOL WINAPI FlushFileBuffers (HANDLE hFile);
  1840. WINBASEAPI BOOL WINAPI GetFileTime (HANDLE hFile, LPFILETIME lpCreation, LPFILETIME lpLastAccess, LPFILETIME lpLastWrite);
  1841. WINBASEAPI BOOL WINAPI SetFileTime (HANDLE hFile, CONST FILETIME *lpCreation, CONST FILETIME *lpLastAccess, CONST FILETIME *lpLastWrite);
  1842. WINBASEAPI BOOL WINAPI SetEndOfFile (HANDLE hFile);
  1843. WINBASEAPI BOOL WINAPI DeviceIoControl (HANDLE hDevice, DWORD dwIoControlCode, LPVOID lpInBuf, DWORD nInBufSize, LPVOID lpOutBuf, DWORD nOutBufSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped);
  1844. #define SetFileAttributes SetFileAttributesW
  1845. WINBASEAPI BOOL WINAPI SetFileAttributesW (LPCWSTR lpszName, DWORD dwAttributes);
  1846.  
  1847. WINBASEAPI
  1848. DWORD
  1849. WINAPI
  1850. SetFilePointer(
  1851.     HANDLE hFile,
  1852.     LONG lDistanceToMove,
  1853.     PLONG lpDistanceToMoveHigh,
  1854.     DWORD dwMoveMethod
  1855.     );
  1856.  
  1857. WINBASEAPI
  1858. BOOL
  1859. WINAPI
  1860. FindClose(
  1861.     HANDLE hFindFile
  1862.     );
  1863.  
  1864.  
  1865. WINBASEAPI
  1866. DWORD
  1867. WINAPI
  1868. GetFileSize(
  1869.     HANDLE hFile,
  1870.     LPDWORD lpFileSizeHigh
  1871.     );
  1872.  
  1873. WINBASEAPI
  1874. DWORD
  1875. WINAPI
  1876. GetFileAttributesA(
  1877.     LPCSTR lpFileName
  1878.     );
  1879. WINBASEAPI
  1880. DWORD
  1881. WINAPI
  1882. GetFileAttributesW(
  1883.     LPCWSTR lpFileName
  1884.     );
  1885. #ifdef UNICODE
  1886. #define GetFileAttributes  GetFileAttributesW
  1887. #else
  1888. #define GetFileAttributes  GetFileAttributesA
  1889. #endif // !UNICODE
  1890.  
  1891. typedef struct _BY_HANDLE_FILE_INFORMATION {
  1892.     DWORD dwFileAttributes;
  1893.     FILETIME ftCreationTime;
  1894.     FILETIME ftLastAccessTime;
  1895.     FILETIME ftLastWriteTime;
  1896.     DWORD dwVolumeSerialNumber;
  1897.     DWORD nFileSizeHigh;
  1898.     DWORD nFileSizeLow;
  1899.     DWORD nNumberOfLinks;
  1900.     DWORD nFileIndexHigh;
  1901.     DWORD nFileIndexLow;
  1902.     DWORD dwOID;
  1903. } BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION, *LPBY_HANDLE_FILE_INFORMATION;
  1904.  
  1905. WINBASEAPI
  1906. BOOL
  1907. WINAPI
  1908. GetFileInformationByHandle(
  1909.     HANDLE hFile,
  1910.     LPBY_HANDLE_FILE_INFORMATION lpFileInformation
  1911.     );
  1912.  
  1913. // @CESYSGEN ENDIF
  1914.  
  1915. WINBASEAPI
  1916. VOID
  1917. WINAPI
  1918. Sleep(
  1919.     DWORD dwMilliseconds
  1920.     );
  1921.  
  1922. WINBASEAPI
  1923. HANDLE
  1924. WINAPI
  1925. CreateMutexA(
  1926.     LPSECURITY_ATTRIBUTES lpsa,
  1927.     BOOL bInitialOwner,
  1928.     LPCSTR lpName);
  1929.  
  1930. WINBASEAPI
  1931. HANDLE
  1932. WINAPI
  1933. CreateMutexW(
  1934.     LPSECURITY_ATTRIBUTES lpsa,
  1935.     BOOL bInitialOwner,
  1936.     LPCWSTR lpName);
  1937.  
  1938. #ifdef UNICODE
  1939. #define CreateMutex  CreateMutexW
  1940. #else
  1941. #define CreateMutex  CreateMutexA
  1942. #endif // !UNICODE
  1943.  
  1944. WINBASEAPI
  1945. HANDLE
  1946. WINAPI
  1947. CreateEventA(
  1948.     LPSECURITY_ATTRIBUTES lpEventAttributes,
  1949.     BOOL bManualReset,
  1950.     BOOL bInitialState,
  1951.     LPCSTR lpName
  1952.     );
  1953.  
  1954. WINBASEAPI
  1955. HANDLE
  1956. WINAPI
  1957. CreateEventW(
  1958.     LPSECURITY_ATTRIBUTES lpEventAttributes,
  1959.     BOOL bManualReset,
  1960.     BOOL bInitialState,
  1961.     LPCWSTR lpName
  1962.     );
  1963. #ifdef UNICODE
  1964. #define CreateEvent  CreateEventW
  1965. #else
  1966. #define CreateEvent  CreateEventA
  1967. #endif // !UNICODE
  1968.  
  1969. WINBASEAPI
  1970. BOOL
  1971. WINAPI
  1972. ReleaseMutex(
  1973.     HANDLE hMutex
  1974.     );
  1975.  
  1976. WINBASEAPI
  1977. DWORD
  1978. WINAPI
  1979. WaitForSingleObject(
  1980.     HANDLE hHandle,
  1981.     DWORD dwMilliseconds
  1982.     );
  1983.  
  1984. WINBASEAPI
  1985. DWORD
  1986. WINAPI
  1987. WaitForMultipleObjects(
  1988.     DWORD cObjects,
  1989.     CONST HANDLE *lphObjects,
  1990.     BOOL fWaitAll,
  1991.     DWORD dwTimeout
  1992.     );
  1993.  
  1994. WINBASEAPI
  1995. BOOL
  1996. WINAPI
  1997. GetExitCodeThread(
  1998.     HANDLE hThread,
  1999.     LPDWORD lpExitCode
  2000.     );
  2001.  
  2002. WINBASEAPI
  2003. BOOL
  2004. WINAPI
  2005. GetExitCodeProcess(
  2006.     HANDLE hProcess,
  2007.     LPDWORD lpExitCode
  2008.     );
  2009.  
  2010. DWORD
  2011. WINAPI
  2012. TlsAlloc(
  2013.     VOID
  2014.     );
  2015.  
  2016. WINBASEAPI
  2017. BOOL
  2018. WINAPI
  2019. IsBadCodePtr(
  2020.     FARPROC lpfn
  2021.     );
  2022.  
  2023. WINBASEAPI
  2024. BOOL
  2025. WINAPI
  2026. IsBadReadPtr(
  2027.     CONST VOID *lp,
  2028.     UINT ucb
  2029.     );
  2030.  
  2031. BOOL
  2032. WINAPI
  2033. TlsFree(
  2034.     DWORD dwTlsIndex
  2035.     );
  2036.  
  2037. WINBASEAPI
  2038. BOOL
  2039. WINAPI
  2040. IsBadWritePtr(
  2041.     LPVOID lp,
  2042.     UINT ucb
  2043.     );
  2044.  
  2045. WINBASEAPI
  2046. VOID
  2047. WINAPI
  2048. GetSystemInfo(
  2049.     LPSYSTEM_INFO lpSystemInfo
  2050.     );
  2051.  
  2052. WINBASEAPI
  2053. VOID
  2054. WINAPI
  2055. RaiseException(
  2056.     DWORD dwExceptionCode,
  2057.     DWORD dwExceptionFlags,
  2058.     DWORD nNumberOfArguments,
  2059.     CONST DWORD *lpArguments
  2060.     );
  2061.  
  2062. WINBASEAPI
  2063. BOOL
  2064. WINAPI
  2065. FreeLibrary(
  2066.     HMODULE hLibModule
  2067.     );
  2068.  
  2069. #include <windbase.h>
  2070.  
  2071. #include <dbgapi.h>
  2072.  
  2073. #ifdef UNDER_CE
  2074. #include <kfuncs.h>
  2075. #ifdef WINCEOEM
  2076. #include <pwinbase.h>
  2077. #endif
  2078. #endif
  2079.  
  2080. #define FILE_MAP_WRITE      SECTION_MAP_WRITE
  2081. #define FILE_MAP_READ       SECTION_MAP_READ
  2082. #define FILE_MAP_ALL_ACCESS SECTION_ALL_ACCESS
  2083.  
  2084. // @CESYSGEN IF COREDLL_SERDEV
  2085.  
  2086. //
  2087. // Serial provider type.
  2088. //
  2089.  
  2090. #define SP_SERIALCOMM    ((DWORD)0x00000001)
  2091.  
  2092. //
  2093. // Provider SubTypes
  2094. //
  2095.  
  2096. #define PST_UNSPECIFIED      ((DWORD)0x00000000)
  2097. #define PST_RS232            ((DWORD)0x00000001)
  2098. #define PST_PARALLELPORT     ((DWORD)0x00000002)
  2099. #define PST_RS422            ((DWORD)0x00000003)
  2100. #define PST_RS423            ((DWORD)0x00000004)
  2101. #define PST_RS449            ((DWORD)0x00000005)
  2102. #define PST_MODEM            ((DWORD)0x00000006)
  2103. #define PST_FAX              ((DWORD)0x00000021)
  2104. #define PST_SCANNER          ((DWORD)0x00000022)
  2105. #define PST_NETWORK_BRIDGE   ((DWORD)0x00000100)
  2106. #define PST_LAT              ((DWORD)0x00000101)
  2107. #define PST_TCPIP_TELNET     ((DWORD)0x00000102)
  2108. #define PST_X25              ((DWORD)0x00000103)
  2109.  
  2110.  
  2111. //
  2112. // Provider capabilities flags.
  2113. //
  2114.  
  2115. #define PCF_DTRDSR        ((DWORD)0x0001)
  2116. #define PCF_RTSCTS        ((DWORD)0x0002)
  2117. #define PCF_RLSD          ((DWORD)0x0004)
  2118. #define PCF_PARITY_CHECK  ((DWORD)0x0008)
  2119. #define PCF_XONXOFF       ((DWORD)0x0010)
  2120. #define PCF_SETXCHAR      ((DWORD)0x0020)
  2121. #define PCF_TOTALTIMEOUTS ((DWORD)0x0040)
  2122. #define PCF_INTTIMEOUTS   ((DWORD)0x0080)
  2123. #define PCF_SPECIALCHARS  ((DWORD)0x0100)
  2124. #define PCF_16BITMODE     ((DWORD)0x0200)
  2125.  
  2126. //
  2127. // Comm provider settable parameters.
  2128. //
  2129.  
  2130. #define SP_PARITY         ((DWORD)0x0001)
  2131. #define SP_BAUD           ((DWORD)0x0002)
  2132. #define SP_DATABITS       ((DWORD)0x0004)
  2133. #define SP_STOPBITS       ((DWORD)0x0008)
  2134. #define SP_HANDSHAKING    ((DWORD)0x0010)
  2135. #define SP_PARITY_CHECK   ((DWORD)0x0020)
  2136. #define SP_RLSD           ((DWORD)0x0040)
  2137.  
  2138. //
  2139. // Settable baud rates in the provider.
  2140. //
  2141.  
  2142. #define BAUD_075          ((DWORD)0x00000001)
  2143. #define BAUD_110          ((DWORD)0x00000002)
  2144. #define BAUD_134_5        ((DWORD)0x00000004)
  2145. #define BAUD_150          ((DWORD)0x00000008)
  2146. #define BAUD_300          ((DWORD)0x00000010)
  2147. #define BAUD_600          ((DWORD)0x00000020)
  2148. #define BAUD_1200         ((DWORD)0x00000040)
  2149. #define BAUD_1800         ((DWORD)0x00000080)
  2150. #define BAUD_2400         ((DWORD)0x00000100)
  2151. #define BAUD_4800         ((DWORD)0x00000200)
  2152. #define BAUD_7200         ((DWORD)0x00000400)
  2153. #define BAUD_9600         ((DWORD)0x00000800)
  2154. #define BAUD_14400        ((DWORD)0x00001000)
  2155. #define BAUD_19200        ((DWORD)0x00002000)
  2156. #define BAUD_38400        ((DWORD)0x00004000)
  2157. #define BAUD_56K          ((DWORD)0x00008000)
  2158. #define BAUD_128K         ((DWORD)0x00010000)
  2159. #define BAUD_115200       ((DWORD)0x00020000)
  2160. #define BAUD_57600        ((DWORD)0x00040000)
  2161. #define BAUD_USER         ((DWORD)0x10000000)
  2162.  
  2163. //
  2164. // Settable Data Bits
  2165. //
  2166.  
  2167. #define DATABITS_5        ((WORD)0x0001)
  2168. #define DATABITS_6        ((WORD)0x0002)
  2169. #define DATABITS_7        ((WORD)0x0004)
  2170. #define DATABITS_8        ((WORD)0x0008)
  2171. #define DATABITS_16       ((WORD)0x0010)
  2172. #define DATABITS_16X      ((WORD)0x0020)
  2173.  
  2174. //
  2175. // Settable Stop and Parity bits.
  2176. //
  2177.  
  2178. #define STOPBITS_10       ((WORD)0x0001)
  2179. #define STOPBITS_15       ((WORD)0x0002)
  2180. #define STOPBITS_20       ((WORD)0x0004)
  2181. #define PARITY_NONE       ((WORD)0x0100)
  2182. #define PARITY_ODD        ((WORD)0x0200)
  2183. #define PARITY_EVEN       ((WORD)0x0400)
  2184. #define PARITY_MARK       ((WORD)0x0800)
  2185. #define PARITY_SPACE      ((WORD)0x1000)
  2186.  
  2187. typedef struct _COMMPROP {
  2188.     WORD wPacketLength;
  2189.     WORD wPacketVersion;
  2190.     DWORD dwServiceMask;
  2191.     DWORD dwReserved1;
  2192.     DWORD dwMaxTxQueue;
  2193.     DWORD dwMaxRxQueue;
  2194.     DWORD dwMaxBaud;
  2195.     DWORD dwProvSubType;
  2196.     DWORD dwProvCapabilities;
  2197.     DWORD dwSettableParams;
  2198.     DWORD dwSettableBaud;
  2199.     WORD wSettableData;
  2200.     WORD wSettableStopParity;
  2201.     DWORD dwCurrentTxQueue;
  2202.     DWORD dwCurrentRxQueue;
  2203.     DWORD dwProvSpec1;
  2204.     DWORD dwProvSpec2;
  2205.     WCHAR wcProvChar[1];
  2206. } COMMPROP,*LPCOMMPROP;
  2207.  
  2208. //
  2209. // Set dwProvSpec1 to COMMPROP_INITIALIZED to indicate that wPacketLength
  2210. // is valid before a call to GetCommProperties().
  2211. //
  2212. #define COMMPROP_INITIALIZED ((DWORD)0xE73CF52E)
  2213.  
  2214. typedef struct _COMSTAT {
  2215.     DWORD fCtsHold : 1;
  2216.     DWORD fDsrHold : 1;
  2217.     DWORD fRlsdHold : 1;
  2218.     DWORD fXoffHold : 1;
  2219.     DWORD fXoffSent : 1;
  2220.     DWORD fEof : 1;
  2221.     DWORD fTxim : 1;
  2222.     DWORD fReserved : 25;
  2223.     DWORD cbInQue;
  2224.     DWORD cbOutQue;
  2225. } COMSTAT, *LPCOMSTAT;
  2226.  
  2227. //
  2228. // DTR Control Flow Values.
  2229. //
  2230. #define DTR_CONTROL_DISABLE    0x00
  2231. #define DTR_CONTROL_ENABLE     0x01
  2232. #define DTR_CONTROL_HANDSHAKE  0x02
  2233.  
  2234. //
  2235. // RTS Control Flow Values
  2236. //
  2237. #define RTS_CONTROL_DISABLE    0x00
  2238. #define RTS_CONTROL_ENABLE     0x01
  2239. #define RTS_CONTROL_HANDSHAKE  0x02
  2240. #define RTS_CONTROL_TOGGLE     0x03
  2241.  
  2242. typedef struct _DCB {
  2243.     DWORD DCBlength;      /* sizeof(DCB)                     */
  2244.     DWORD BaudRate;       /* Baudrate at which running       */
  2245.     DWORD fBinary: 1;     /* Binary Mode (skip EOF check)    */
  2246.     DWORD fParity: 1;     /* Enable parity checking          */
  2247.     DWORD fOutxCtsFlow:1; /* CTS handshaking on output       */
  2248.     DWORD fOutxDsrFlow:1; /* DSR handshaking on output       */
  2249.     DWORD fDtrControl:2;  /* DTR Flow control                */
  2250.     DWORD fDsrSensitivity:1; /* DSR Sensitivity              */
  2251.     DWORD fTXContinueOnXoff: 1; /* Continue TX when Xoff sent */
  2252.     DWORD fOutX: 1;       /* Enable output X-ON/X-OFF        */
  2253.     DWORD fInX: 1;        /* Enable input X-ON/X-OFF         */
  2254.     DWORD fErrorChar: 1;  /* Enable Err Replacement          */
  2255.     DWORD fNull: 1;       /* Enable Null stripping           */
  2256.     DWORD fRtsControl:2;  /* Rts Flow control                */
  2257.     DWORD fAbortOnError:1; /* Abort all reads and writes on Error */
  2258.     DWORD fDummy2:17;     /* Reserved                        */
  2259.     WORD wReserved;       /* Not currently used              */
  2260.     WORD XonLim;          /* Transmit X-ON threshold         */
  2261.     WORD XoffLim;         /* Transmit X-OFF threshold        */
  2262.     BYTE ByteSize;        /* Number of bits/byte, 4-8        */
  2263.     BYTE Parity;          /* 0-4=None,Odd,Even,Mark,Space    */
  2264.     BYTE StopBits;        /* 0,1,2 = 1, 1.5, 2               */
  2265.     char XonChar;         /* Tx and Rx X-ON character        */
  2266.     char XoffChar;        /* Tx and Rx X-OFF character       */
  2267.     char ErrorChar;       /* Error replacement char          */
  2268.     char EofChar;         /* End of Input character          */
  2269.     char EvtChar;         /* Received Event character        */
  2270.     WORD wReserved1;      /* Fill for now.                   */
  2271. } DCB, *LPDCB;
  2272.  
  2273. typedef struct _COMMTIMEOUTS {
  2274.     DWORD ReadIntervalTimeout;          /* Maximum time between read chars. */
  2275.     DWORD ReadTotalTimeoutMultiplier;   /* Multiplier of characters.        */
  2276.     DWORD ReadTotalTimeoutConstant;     /* Constant in milliseconds.        */
  2277.     DWORD WriteTotalTimeoutMultiplier;  /* Multiplier of characters.        */
  2278.     DWORD WriteTotalTimeoutConstant;    /* Constant in milliseconds.        */
  2279. } COMMTIMEOUTS,*LPCOMMTIMEOUTS;
  2280.  
  2281. typedef struct _COMMCONFIG {
  2282.     DWORD dwSize;               /* Size of the entire struct */
  2283.     WORD wVersion;              /* version of the structure */
  2284.     WORD wReserved;             /* alignment */
  2285.     DCB dcb;                    /* device control block */
  2286.     DWORD dwProviderSubType;    /* ordinal value for identifying
  2287.                                    provider-defined data structure format*/
  2288.     DWORD dwProviderOffset;     /* Specifies the offset of provider specific
  2289.                                    data field in bytes from the start */
  2290.     DWORD dwProviderSize;       /* size of the provider-specific data field */
  2291.     WCHAR wcProviderData[1];    /* provider-specific data */
  2292. } COMMCONFIG,*LPCOMMCONFIG;
  2293.  
  2294. #define NOPARITY            0
  2295. #define ODDPARITY           1
  2296. #define EVENPARITY          2
  2297. #define MARKPARITY          3
  2298. #define SPACEPARITY         4
  2299.  
  2300. #define ONESTOPBIT          0
  2301. #define ONE5STOPBITS        1
  2302. #define TWOSTOPBITS         2
  2303.  
  2304. #define IGNORE              0       // Ignore signal
  2305.  
  2306. //
  2307. // Basud rates at which the communication device operates
  2308. //
  2309.  
  2310. #define CBR_110             110
  2311. #define CBR_300             300
  2312. #define CBR_600             600
  2313. #define CBR_1200            1200
  2314. #define CBR_2400            2400
  2315. #define CBR_4800            4800
  2316. #define CBR_9600            9600
  2317. #define CBR_14400           14400
  2318. #define CBR_19200           19200
  2319. #define CBR_38400           38400
  2320. #define CBR_56000           56000
  2321. #define CBR_57600           57600
  2322. #define CBR_115200          115200
  2323. #define CBR_128000          128000
  2324. #define CBR_256000          256000
  2325.  
  2326. //
  2327. // Error Flags
  2328. //
  2329.  
  2330. #define CE_RXOVER           0x0001  // Receive Queue overflow
  2331. #define CE_OVERRUN          0x0002  // Receive Overrun Error
  2332. #define CE_RXPARITY         0x0004  // Receive Parity Error
  2333. #define CE_FRAME            0x0008  // Receive Framing error
  2334. #define CE_BREAK            0x0010  // Break Detected
  2335. #define CE_TXFULL           0x0100  // TX Queue is full
  2336. #define CE_PTO              0x0200  // LPTx Timeout
  2337. #define CE_IOE              0x0400  // LPTx I/O Error
  2338. #define CE_DNS              0x0800  // LPTx Device not selected
  2339. #define CE_OOP              0x1000  // LPTx Out-Of-Paper
  2340. #define CE_MODE             0x8000  // Requested mode unsupported
  2341.  
  2342. #define IE_BADID            (-1)    // Invalid or unsupported id
  2343. #define IE_OPEN             (-2)    // Device Already Open
  2344. #define IE_NOPEN            (-3)    // Device Not Open
  2345. #define IE_MEMORY           (-4)    // Unable to allocate queues
  2346. #define IE_DEFAULT          (-5)    // Error in default parameters
  2347. #define IE_HARDWARE         (-10)   // Hardware Not Present
  2348. #define IE_BYTESIZE         (-11)   // Illegal Byte Size
  2349. #define IE_BAUDRATE         (-12)   // Unsupported BaudRate
  2350.  
  2351. //
  2352. // Events
  2353. //
  2354.  
  2355. #define EV_RXCHAR           0x0001  // Any Character received
  2356. #define EV_RXFLAG           0x0002  // Received certain character
  2357. #define EV_TXEMPTY          0x0004  // Transmitt Queue Empty
  2358. #define EV_CTS              0x0008  // CTS changed state
  2359. #define EV_DSR              0x0010  // DSR changed state
  2360. #define EV_RLSD             0x0020  // RLSD changed state
  2361. #define EV_BREAK            0x0040  // BREAK received
  2362. #define EV_ERR              0x0080  // Line status error occurred
  2363. #define EV_RING             0x0100  // Ring signal detected
  2364. #define EV_PERR             0x0200  // Printer error occured
  2365. #define EV_RX80FULL         0x0400  // Receive buffer is 80 percent full
  2366. #define EV_EVENT1           0x0800  // Provider specific event 1
  2367. #define EV_EVENT2           0x1000  // Provider specific event 2
  2368. #define EV_POWER            0x2000  // WINCE Power event.
  2369.  
  2370. //
  2371. // Escape Functions
  2372. //
  2373.  
  2374. #define SETXOFF             1       // Simulate XOFF received
  2375. #define SETXON              2       // Simulate XON received
  2376. #define SETRTS              3       // Set RTS high
  2377. #define CLRRTS              4       // Set RTS low
  2378. #define SETDTR              5       // Set DTR high
  2379. #define CLRDTR              6       // Set DTR low
  2380. // Gap for NT code RESETDEV, not supported on CE
  2381. #define SETBREAK            8       // Set the device break line.
  2382. #define CLRBREAK            9       // Clear the device break line.
  2383. #define SETIR               10      // Clear the device break line.
  2384. #define CLRIR               11      // Clear the device break line.
  2385.  
  2386. //
  2387. // PURGE function flags.
  2388. //
  2389. #define PURGE_TXABORT       0x0001  // Kill the pending/current writes to the comm port.
  2390. #define PURGE_RXABORT       0x0002  // Kill the pending/current reads to the comm port.
  2391. #define PURGE_TXCLEAR       0x0004  // Kill the transmit queue if there.
  2392. #define PURGE_RXCLEAR       0x0008  // Kill the typeahead buffer if there.
  2393.  
  2394. #define LPTx                0x80    // Set if ID is for LPT device
  2395.  
  2396. //
  2397. // Modem Status Flags
  2398. //
  2399. #define MS_CTS_ON           ((DWORD)0x0010)
  2400. #define MS_DSR_ON           ((DWORD)0x0020)
  2401. #define MS_RING_ON          ((DWORD)0x0040)
  2402. #define MS_RLSD_ON          ((DWORD)0x0080)
  2403.  
  2404. BOOL
  2405. WINAPI
  2406. ClearCommBreak(
  2407.     HANDLE hFile
  2408.     );
  2409.  
  2410.  
  2411. BOOL
  2412. WINAPI
  2413. ClearCommError(
  2414.     HANDLE hFile,
  2415.     LPDWORD lpErrors,
  2416.     LPCOMSTAT lpStat
  2417.     );
  2418.  
  2419.  
  2420. BOOL
  2421. WINAPI
  2422. SetupComm(
  2423.     HANDLE hFile,
  2424.     DWORD dwInQueue,
  2425.     DWORD dwOutQueue
  2426.     );
  2427.  
  2428.  
  2429. BOOL
  2430. WINAPI
  2431. EscapeCommFunction(
  2432.     HANDLE hFile,
  2433.     DWORD dwFunc
  2434.     );
  2435.  
  2436.  
  2437. BOOL
  2438. WINAPI
  2439. GetCommMask(
  2440.     HANDLE hFile,
  2441.     LPDWORD lpEvtMask
  2442.     );
  2443.  
  2444.  
  2445. BOOL
  2446. WINAPI
  2447. GetCommProperties(
  2448.     HANDLE hFile,
  2449.     LPCOMMPROP lpCommProp
  2450.     );
  2451.  
  2452.  
  2453. BOOL
  2454. WINAPI
  2455. GetCommModemStatus(
  2456.     HANDLE hFile,
  2457.     LPDWORD lpModemStat
  2458.     );
  2459.  
  2460.  
  2461. BOOL
  2462. WINAPI
  2463. GetCommState(
  2464.     HANDLE hFile,
  2465.     LPDCB lpDCB
  2466.     );
  2467.  
  2468.  
  2469. BOOL
  2470. WINAPI
  2471. GetCommTimeouts(
  2472.     HANDLE hFile,
  2473.     LPCOMMTIMEOUTS lpCommTimeouts
  2474.     );
  2475.  
  2476.  
  2477. BOOL
  2478. WINAPI
  2479. PurgeComm(
  2480.     HANDLE hFile,
  2481.     DWORD dwFlags
  2482.     );
  2483.  
  2484.  
  2485. BOOL
  2486. WINAPI
  2487. SetCommBreak(
  2488.     HANDLE hFile
  2489.     );
  2490.  
  2491.  
  2492. BOOL
  2493. WINAPI
  2494. SetCommMask(
  2495.     HANDLE hFile,
  2496.     DWORD dwEvtMask
  2497.     );
  2498.  
  2499.  
  2500. BOOL
  2501. WINAPI
  2502. SetCommState(
  2503.     HANDLE hFile,
  2504.     LPDCB lpDCB
  2505.     );
  2506.  
  2507.  
  2508. BOOL
  2509. WINAPI
  2510. SetCommTimeouts(
  2511.     HANDLE hFile,
  2512.     LPCOMMTIMEOUTS lpCommTimeouts
  2513.     );
  2514.  
  2515.  
  2516. BOOL
  2517. WINAPI
  2518. TransmitCommChar(
  2519.     HANDLE hFile,
  2520.     char cChar
  2521.     );
  2522.  
  2523.  
  2524. BOOL
  2525. WINAPI
  2526. WaitCommEvent(
  2527.     HANDLE hFile,
  2528.     LPDWORD lpEvtMask,
  2529.     LPOVERLAPPED lpOverlapped
  2530.     );
  2531.  
  2532. // End if IF COREDLL_SERDEV
  2533. // @CESYSGEN ENDIF
  2534.  
  2535. // @CESYSGEN IF GWES_GETPOWER
  2536. //
  2537. // Power Management APIs
  2538. //
  2539.  
  2540. #define AC_LINE_OFFLINE                 0x00
  2541. #define AC_LINE_ONLINE                  0x01
  2542. #define AC_LINE_BACKUP_POWER            0x02
  2543. #define AC_LINE_UNKNOWN                 0xFF
  2544.  
  2545. #define BATTERY_FLAG_HIGH               0x01
  2546. #define BATTERY_FLAG_LOW                0x02
  2547. #define BATTERY_FLAG_CRITICAL           0x04
  2548. #define BATTERY_FLAG_CHARGING           0x08
  2549. #define BATTERY_FLAG_NO_BATTERY         0x80
  2550. #define BATTERY_FLAG_UNKNOWN            0xFF
  2551.  
  2552. #define BATTERY_PERCENTAGE_UNKNOWN      0xFF
  2553.  
  2554. #define BATTERY_LIFE_UNKNOWN        0xFFFFFFFF
  2555.  
  2556. typedef struct _SYSTEM_POWER_STATUS_EX {
  2557.     BYTE ACLineStatus;
  2558.     BYTE BatteryFlag;
  2559.     BYTE BatteryLifePercent;
  2560.     BYTE Reserved1;
  2561.     DWORD BatteryLifeTime;
  2562.     DWORD BatteryFullLifeTime;
  2563.     BYTE Reserved2;
  2564.     BYTE BackupBatteryFlag;
  2565.     BYTE BackupBatteryLifePercent;
  2566.     BYTE Reserved3;
  2567.     DWORD BackupBatteryLifeTime;
  2568.     DWORD BackupBatteryFullLifeTime;
  2569. }   SYSTEM_POWER_STATUS_EX, *PSYSTEM_POWER_STATUS_EX, *LPSYSTEM_POWER_STATUS_EX;
  2570.  
  2571. BOOL
  2572. WINAPI
  2573. GetSystemPowerStatusEx(
  2574.     PSYSTEM_POWER_STATUS_EX pSystemPowerStatusEx,
  2575.     BOOL fUpdate
  2576.     );
  2577.  
  2578.  
  2579. void
  2580. WINAPI
  2581. BatteryNotifyOfTimeChange(
  2582.     BOOL fForward,
  2583.     FILETIME *pftDelta
  2584.     );
  2585. // @CESYSGEN ENDIF
  2586.  
  2587. // @CESYSGEN IF FILESYS_FSPASS
  2588. BOOL CheckPassword (LPWSTR lpszPassword);
  2589. // @CESYSGEN ENDIF
  2590.  
  2591. HANDLE RegisterDevice (LPCWSTR lpszName, DWORD index, LPCWSTR lpszLib, DWORD dwInfo);
  2592. BOOL DeregisterDevice (HANDLE hDevice);
  2593. BOOL LoadFSD (HANDLE hDevice, LPCWSTR lpFSDName);
  2594.  
  2595. #include <winnls.h>
  2596.  
  2597. #ifdef __cplusplus
  2598. }
  2599. #endif
  2600.  
  2601. #ifdef WINCEOEM
  2602. #include <pwinbase.h>    // internal defines
  2603. #ifdef WINCEMACRO
  2604. #include <mwinbase.h>
  2605. #endif
  2606. #endif
  2607.  
  2608.  
  2609. #endif /* __WINBASE_H__ */
  2610.