WinBase.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:203k
源码类别:

模拟服务器

开发平台:

C/C++

  1. typedef ENUMRESTYPEPROCW ENUMRESTYPEPROC;
  2. #else
  3. typedef ENUMRESTYPEPROCA ENUMRESTYPEPROC;
  4. #endif // UNICODE
  5. typedef FARPROC ENUMRESNAMEPROCA;
  6. typedef FARPROC ENUMRESNAMEPROCW;
  7. #ifdef UNICODE
  8. typedef ENUMRESNAMEPROCW ENUMRESNAMEPROC;
  9. #else
  10. typedef ENUMRESNAMEPROCA ENUMRESNAMEPROC;
  11. #endif // UNICODE
  12. typedef FARPROC ENUMRESLANGPROCA;
  13. typedef FARPROC ENUMRESLANGPROCW;
  14. #ifdef UNICODE
  15. typedef ENUMRESLANGPROCW ENUMRESLANGPROC;
  16. #else
  17. typedef ENUMRESLANGPROCA ENUMRESLANGPROC;
  18. #endif // UNICODE
  19. #endif
  20. WINBASEAPI
  21. BOOL
  22. WINAPI
  23. EnumResourceTypesA(
  24.     IN HMODULE hModule,
  25.     IN ENUMRESTYPEPROCA lpEnumFunc,
  26.     IN LONG_PTR lParam
  27.     );
  28. WINBASEAPI
  29. BOOL
  30. WINAPI
  31. EnumResourceTypesW(
  32.     IN HMODULE hModule,
  33.     IN ENUMRESTYPEPROCW lpEnumFunc,
  34.     IN LONG_PTR lParam
  35.     );
  36. #ifdef UNICODE
  37. #define EnumResourceTypes  EnumResourceTypesW
  38. #else
  39. #define EnumResourceTypes  EnumResourceTypesA
  40. #endif // !UNICODE
  41. WINBASEAPI
  42. BOOL
  43. WINAPI
  44. EnumResourceNamesA(
  45.     IN HMODULE hModule,
  46.     IN LPCSTR lpType,
  47.     IN ENUMRESNAMEPROCA lpEnumFunc,
  48.     IN LONG_PTR lParam
  49.     );
  50. WINBASEAPI
  51. BOOL
  52. WINAPI
  53. EnumResourceNamesW(
  54.     IN HMODULE hModule,
  55.     IN LPCWSTR lpType,
  56.     IN ENUMRESNAMEPROCW lpEnumFunc,
  57.     IN LONG_PTR lParam
  58.     );
  59. #ifdef UNICODE
  60. #define EnumResourceNames  EnumResourceNamesW
  61. #else
  62. #define EnumResourceNames  EnumResourceNamesA
  63. #endif // !UNICODE
  64. WINBASEAPI
  65. BOOL
  66. WINAPI
  67. EnumResourceLanguagesA(
  68.     IN HMODULE hModule,
  69.     IN LPCSTR lpType,
  70.     IN LPCSTR lpName,
  71.     IN ENUMRESLANGPROCA lpEnumFunc,
  72.     IN LONG_PTR lParam
  73.     );
  74. WINBASEAPI
  75. BOOL
  76. WINAPI
  77. EnumResourceLanguagesW(
  78.     IN HMODULE hModule,
  79.     IN LPCWSTR lpType,
  80.     IN LPCWSTR lpName,
  81.     IN ENUMRESLANGPROCW lpEnumFunc,
  82.     IN LONG_PTR lParam
  83.     );
  84. #ifdef UNICODE
  85. #define EnumResourceLanguages  EnumResourceLanguagesW
  86. #else
  87. #define EnumResourceLanguages  EnumResourceLanguagesA
  88. #endif // !UNICODE
  89. WINBASEAPI
  90. HANDLE
  91. WINAPI
  92. BeginUpdateResourceA(
  93.     IN LPCSTR pFileName,
  94.     IN BOOL bDeleteExistingResources
  95.     );
  96. WINBASEAPI
  97. HANDLE
  98. WINAPI
  99. BeginUpdateResourceW(
  100.     IN LPCWSTR pFileName,
  101.     IN BOOL bDeleteExistingResources
  102.     );
  103. #ifdef UNICODE
  104. #define BeginUpdateResource  BeginUpdateResourceW
  105. #else
  106. #define BeginUpdateResource  BeginUpdateResourceA
  107. #endif // !UNICODE
  108. WINBASEAPI
  109. BOOL
  110. WINAPI
  111. UpdateResourceA(
  112.     IN HANDLE      hUpdate,
  113.     IN LPCSTR     lpType,
  114.     IN LPCSTR     lpName,
  115.     IN WORD        wLanguage,
  116.     IN LPVOID      lpData,
  117.     IN DWORD       cbData
  118.     );
  119. WINBASEAPI
  120. BOOL
  121. WINAPI
  122. UpdateResourceW(
  123.     IN HANDLE      hUpdate,
  124.     IN LPCWSTR     lpType,
  125.     IN LPCWSTR     lpName,
  126.     IN WORD        wLanguage,
  127.     IN LPVOID      lpData,
  128.     IN DWORD       cbData
  129.     );
  130. #ifdef UNICODE
  131. #define UpdateResource  UpdateResourceW
  132. #else
  133. #define UpdateResource  UpdateResourceA
  134. #endif // !UNICODE
  135. WINBASEAPI
  136. BOOL
  137. WINAPI
  138. EndUpdateResourceA(
  139.     IN HANDLE      hUpdate,
  140.     IN BOOL        fDiscard
  141.     );
  142. WINBASEAPI
  143. BOOL
  144. WINAPI
  145. EndUpdateResourceW(
  146.     IN HANDLE      hUpdate,
  147.     IN BOOL        fDiscard
  148.     );
  149. #ifdef UNICODE
  150. #define EndUpdateResource  EndUpdateResourceW
  151. #else
  152. #define EndUpdateResource  EndUpdateResourceA
  153. #endif // !UNICODE
  154. WINBASEAPI
  155. ATOM
  156. WINAPI
  157. GlobalAddAtomA(
  158.     IN LPCSTR lpString
  159.     );
  160. WINBASEAPI
  161. ATOM
  162. WINAPI
  163. GlobalAddAtomW(
  164.     IN LPCWSTR lpString
  165.     );
  166. #ifdef UNICODE
  167. #define GlobalAddAtom  GlobalAddAtomW
  168. #else
  169. #define GlobalAddAtom  GlobalAddAtomA
  170. #endif // !UNICODE
  171. WINBASEAPI
  172. ATOM
  173. WINAPI
  174. GlobalFindAtomA(
  175.     IN LPCSTR lpString
  176.     );
  177. WINBASEAPI
  178. ATOM
  179. WINAPI
  180. GlobalFindAtomW(
  181.     IN LPCWSTR lpString
  182.     );
  183. #ifdef UNICODE
  184. #define GlobalFindAtom  GlobalFindAtomW
  185. #else
  186. #define GlobalFindAtom  GlobalFindAtomA
  187. #endif // !UNICODE
  188. WINBASEAPI
  189. UINT
  190. WINAPI
  191. GlobalGetAtomNameA(
  192.     IN ATOM nAtom,
  193.     OUT LPSTR lpBuffer,
  194.     IN int nSize
  195.     );
  196. WINBASEAPI
  197. UINT
  198. WINAPI
  199. GlobalGetAtomNameW(
  200.     IN ATOM nAtom,
  201.     OUT LPWSTR lpBuffer,
  202.     IN int nSize
  203.     );
  204. #ifdef UNICODE
  205. #define GlobalGetAtomName  GlobalGetAtomNameW
  206. #else
  207. #define GlobalGetAtomName  GlobalGetAtomNameA
  208. #endif // !UNICODE
  209. WINBASEAPI
  210. ATOM
  211. WINAPI
  212. AddAtomA(
  213.     IN LPCSTR lpString
  214.     );
  215. WINBASEAPI
  216. ATOM
  217. WINAPI
  218. AddAtomW(
  219.     IN LPCWSTR lpString
  220.     );
  221. #ifdef UNICODE
  222. #define AddAtom  AddAtomW
  223. #else
  224. #define AddAtom  AddAtomA
  225. #endif // !UNICODE
  226. WINBASEAPI
  227. ATOM
  228. WINAPI
  229. FindAtomA(
  230.     IN LPCSTR lpString
  231.     );
  232. WINBASEAPI
  233. ATOM
  234. WINAPI
  235. FindAtomW(
  236.     IN LPCWSTR lpString
  237.     );
  238. #ifdef UNICODE
  239. #define FindAtom  FindAtomW
  240. #else
  241. #define FindAtom  FindAtomA
  242. #endif // !UNICODE
  243. WINBASEAPI
  244. UINT
  245. WINAPI
  246. GetAtomNameA(
  247.     IN ATOM nAtom,
  248.     OUT LPSTR lpBuffer,
  249.     IN int nSize
  250.     );
  251. WINBASEAPI
  252. UINT
  253. WINAPI
  254. GetAtomNameW(
  255.     IN ATOM nAtom,
  256.     OUT LPWSTR lpBuffer,
  257.     IN int nSize
  258.     );
  259. #ifdef UNICODE
  260. #define GetAtomName  GetAtomNameW
  261. #else
  262. #define GetAtomName  GetAtomNameA
  263. #endif // !UNICODE
  264. WINBASEAPI
  265. UINT
  266. WINAPI
  267. GetProfileIntA(
  268.     IN LPCSTR lpAppName,
  269.     IN LPCSTR lpKeyName,
  270.     IN INT nDefault
  271.     );
  272. WINBASEAPI
  273. UINT
  274. WINAPI
  275. GetProfileIntW(
  276.     IN LPCWSTR lpAppName,
  277.     IN LPCWSTR lpKeyName,
  278.     IN INT nDefault
  279.     );
  280. #ifdef UNICODE
  281. #define GetProfileInt  GetProfileIntW
  282. #else
  283. #define GetProfileInt  GetProfileIntA
  284. #endif // !UNICODE
  285. WINBASEAPI
  286. DWORD
  287. WINAPI
  288. GetProfileStringA(
  289.     IN LPCSTR lpAppName,
  290.     IN LPCSTR lpKeyName,
  291.     IN LPCSTR lpDefault,
  292.     OUT LPSTR lpReturnedString,
  293.     IN DWORD nSize
  294.     );
  295. WINBASEAPI
  296. DWORD
  297. WINAPI
  298. GetProfileStringW(
  299.     IN LPCWSTR lpAppName,
  300.     IN LPCWSTR lpKeyName,
  301.     IN LPCWSTR lpDefault,
  302.     OUT LPWSTR lpReturnedString,
  303.     IN DWORD nSize
  304.     );
  305. #ifdef UNICODE
  306. #define GetProfileString  GetProfileStringW
  307. #else
  308. #define GetProfileString  GetProfileStringA
  309. #endif // !UNICODE
  310. WINBASEAPI
  311. BOOL
  312. WINAPI
  313. WriteProfileStringA(
  314.     IN LPCSTR lpAppName,
  315.     IN LPCSTR lpKeyName,
  316.     IN LPCSTR lpString
  317.     );
  318. WINBASEAPI
  319. BOOL
  320. WINAPI
  321. WriteProfileStringW(
  322.     IN LPCWSTR lpAppName,
  323.     IN LPCWSTR lpKeyName,
  324.     IN LPCWSTR lpString
  325.     );
  326. #ifdef UNICODE
  327. #define WriteProfileString  WriteProfileStringW
  328. #else
  329. #define WriteProfileString  WriteProfileStringA
  330. #endif // !UNICODE
  331. WINBASEAPI
  332. DWORD
  333. WINAPI
  334. GetProfileSectionA(
  335.     IN LPCSTR lpAppName,
  336.     OUT LPSTR lpReturnedString,
  337.     IN DWORD nSize
  338.     );
  339. WINBASEAPI
  340. DWORD
  341. WINAPI
  342. GetProfileSectionW(
  343.     IN LPCWSTR lpAppName,
  344.     OUT LPWSTR lpReturnedString,
  345.     IN DWORD nSize
  346.     );
  347. #ifdef UNICODE
  348. #define GetProfileSection  GetProfileSectionW
  349. #else
  350. #define GetProfileSection  GetProfileSectionA
  351. #endif // !UNICODE
  352. WINBASEAPI
  353. BOOL
  354. WINAPI
  355. WriteProfileSectionA(
  356.     IN LPCSTR lpAppName,
  357.     IN LPCSTR lpString
  358.     );
  359. WINBASEAPI
  360. BOOL
  361. WINAPI
  362. WriteProfileSectionW(
  363.     IN LPCWSTR lpAppName,
  364.     IN LPCWSTR lpString
  365.     );
  366. #ifdef UNICODE
  367. #define WriteProfileSection  WriteProfileSectionW
  368. #else
  369. #define WriteProfileSection  WriteProfileSectionA
  370. #endif // !UNICODE
  371. WINBASEAPI
  372. UINT
  373. WINAPI
  374. GetPrivateProfileIntA(
  375.     IN LPCSTR lpAppName,
  376.     IN LPCSTR lpKeyName,
  377.     IN INT nDefault,
  378.     IN LPCSTR lpFileName
  379.     );
  380. WINBASEAPI
  381. UINT
  382. WINAPI
  383. GetPrivateProfileIntW(
  384.     IN LPCWSTR lpAppName,
  385.     IN LPCWSTR lpKeyName,
  386.     IN INT nDefault,
  387.     IN LPCWSTR lpFileName
  388.     );
  389. #ifdef UNICODE
  390. #define GetPrivateProfileInt  GetPrivateProfileIntW
  391. #else
  392. #define GetPrivateProfileInt  GetPrivateProfileIntA
  393. #endif // !UNICODE
  394. WINBASEAPI
  395. DWORD
  396. WINAPI
  397. GetPrivateProfileStringA(
  398.     IN LPCSTR lpAppName,
  399.     IN LPCSTR lpKeyName,
  400.     IN LPCSTR lpDefault,
  401.     OUT LPSTR lpReturnedString,
  402.     IN DWORD nSize,
  403.     IN LPCSTR lpFileName
  404.     );
  405. WINBASEAPI
  406. DWORD
  407. WINAPI
  408. GetPrivateProfileStringW(
  409.     IN LPCWSTR lpAppName,
  410.     IN LPCWSTR lpKeyName,
  411.     IN LPCWSTR lpDefault,
  412.     OUT LPWSTR lpReturnedString,
  413.     IN DWORD nSize,
  414.     IN LPCWSTR lpFileName
  415.     );
  416. #ifdef UNICODE
  417. #define GetPrivateProfileString  GetPrivateProfileStringW
  418. #else
  419. #define GetPrivateProfileString  GetPrivateProfileStringA
  420. #endif // !UNICODE
  421. WINBASEAPI
  422. BOOL
  423. WINAPI
  424. WritePrivateProfileStringA(
  425.     IN LPCSTR lpAppName,
  426.     IN LPCSTR lpKeyName,
  427.     IN LPCSTR lpString,
  428.     IN LPCSTR lpFileName
  429.     );
  430. WINBASEAPI
  431. BOOL
  432. WINAPI
  433. WritePrivateProfileStringW(
  434.     IN LPCWSTR lpAppName,
  435.     IN LPCWSTR lpKeyName,
  436.     IN LPCWSTR lpString,
  437.     IN LPCWSTR lpFileName
  438.     );
  439. #ifdef UNICODE
  440. #define WritePrivateProfileString  WritePrivateProfileStringW
  441. #else
  442. #define WritePrivateProfileString  WritePrivateProfileStringA
  443. #endif // !UNICODE
  444. WINBASEAPI
  445. DWORD
  446. WINAPI
  447. GetPrivateProfileSectionA(
  448.     IN LPCSTR lpAppName,
  449.     OUT LPSTR lpReturnedString,
  450.     IN DWORD nSize,
  451.     IN LPCSTR lpFileName
  452.     );
  453. WINBASEAPI
  454. DWORD
  455. WINAPI
  456. GetPrivateProfileSectionW(
  457.     IN LPCWSTR lpAppName,
  458.     OUT LPWSTR lpReturnedString,
  459.     IN DWORD nSize,
  460.     IN LPCWSTR lpFileName
  461.     );
  462. #ifdef UNICODE
  463. #define GetPrivateProfileSection  GetPrivateProfileSectionW
  464. #else
  465. #define GetPrivateProfileSection  GetPrivateProfileSectionA
  466. #endif // !UNICODE
  467. WINBASEAPI
  468. BOOL
  469. WINAPI
  470. WritePrivateProfileSectionA(
  471.     IN LPCSTR lpAppName,
  472.     IN LPCSTR lpString,
  473.     IN LPCSTR lpFileName
  474.     );
  475. WINBASEAPI
  476. BOOL
  477. WINAPI
  478. WritePrivateProfileSectionW(
  479.     IN LPCWSTR lpAppName,
  480.     IN LPCWSTR lpString,
  481.     IN LPCWSTR lpFileName
  482.     );
  483. #ifdef UNICODE
  484. #define WritePrivateProfileSection  WritePrivateProfileSectionW
  485. #else
  486. #define WritePrivateProfileSection  WritePrivateProfileSectionA
  487. #endif // !UNICODE
  488. WINBASEAPI
  489. DWORD
  490. WINAPI
  491. GetPrivateProfileSectionNamesA(
  492.     OUT LPSTR lpszReturnBuffer,
  493.     IN DWORD nSize,
  494.     IN LPCSTR lpFileName
  495.     );
  496. WINBASEAPI
  497. DWORD
  498. WINAPI
  499. GetPrivateProfileSectionNamesW(
  500.     OUT LPWSTR lpszReturnBuffer,
  501.     IN DWORD nSize,
  502.     IN LPCWSTR lpFileName
  503.     );
  504. #ifdef UNICODE
  505. #define GetPrivateProfileSectionNames  GetPrivateProfileSectionNamesW
  506. #else
  507. #define GetPrivateProfileSectionNames  GetPrivateProfileSectionNamesA
  508. #endif // !UNICODE
  509. WINBASEAPI
  510. BOOL
  511. WINAPI
  512. GetPrivateProfileStructA(
  513.     IN LPCSTR lpszSection,
  514.     IN LPCSTR lpszKey,
  515.     OUT LPVOID   lpStruct,
  516.     IN UINT     uSizeStruct,
  517.     IN LPCSTR szFile
  518.     );
  519. WINBASEAPI
  520. BOOL
  521. WINAPI
  522. GetPrivateProfileStructW(
  523.     IN LPCWSTR lpszSection,
  524.     IN LPCWSTR lpszKey,
  525.     OUT LPVOID   lpStruct,
  526.     IN UINT     uSizeStruct,
  527.     IN LPCWSTR szFile
  528.     );
  529. #ifdef UNICODE
  530. #define GetPrivateProfileStruct  GetPrivateProfileStructW
  531. #else
  532. #define GetPrivateProfileStruct  GetPrivateProfileStructA
  533. #endif // !UNICODE
  534. WINBASEAPI
  535. BOOL
  536. WINAPI
  537. WritePrivateProfileStructA(
  538.     IN LPCSTR lpszSection,
  539.     IN LPCSTR lpszKey,
  540.     IN LPVOID   lpStruct,
  541.     IN UINT     uSizeStruct,
  542.     IN LPCSTR szFile
  543.     );
  544. WINBASEAPI
  545. BOOL
  546. WINAPI
  547. WritePrivateProfileStructW(
  548.     IN LPCWSTR lpszSection,
  549.     IN LPCWSTR lpszKey,
  550.     IN LPVOID   lpStruct,
  551.     IN UINT     uSizeStruct,
  552.     IN LPCWSTR szFile
  553.     );
  554. #ifdef UNICODE
  555. #define WritePrivateProfileStruct  WritePrivateProfileStructW
  556. #else
  557. #define WritePrivateProfileStruct  WritePrivateProfileStructA
  558. #endif // !UNICODE
  559. WINBASEAPI
  560. UINT
  561. WINAPI
  562. GetDriveTypeA(
  563.     IN LPCSTR lpRootPathName
  564.     );
  565. WINBASEAPI
  566. UINT
  567. WINAPI
  568. GetDriveTypeW(
  569.     IN LPCWSTR lpRootPathName
  570.     );
  571. #ifdef UNICODE
  572. #define GetDriveType  GetDriveTypeW
  573. #else
  574. #define GetDriveType  GetDriveTypeA
  575. #endif // !UNICODE
  576. WINBASEAPI
  577. UINT
  578. WINAPI
  579. GetSystemDirectoryA(
  580.     OUT LPSTR lpBuffer,
  581.     IN UINT uSize
  582.     );
  583. WINBASEAPI
  584. UINT
  585. WINAPI
  586. GetSystemDirectoryW(
  587.     OUT LPWSTR lpBuffer,
  588.     IN UINT uSize
  589.     );
  590. #ifdef UNICODE
  591. #define GetSystemDirectory  GetSystemDirectoryW
  592. #else
  593. #define GetSystemDirectory  GetSystemDirectoryA
  594. #endif // !UNICODE
  595. WINBASEAPI
  596. DWORD
  597. WINAPI
  598. GetTempPathA(
  599.     IN DWORD nBufferLength,
  600.     OUT LPSTR lpBuffer
  601.     );
  602. WINBASEAPI
  603. DWORD
  604. WINAPI
  605. GetTempPathW(
  606.     IN DWORD nBufferLength,
  607.     OUT LPWSTR lpBuffer
  608.     );
  609. #ifdef UNICODE
  610. #define GetTempPath  GetTempPathW
  611. #else
  612. #define GetTempPath  GetTempPathA
  613. #endif // !UNICODE
  614. WINBASEAPI
  615. UINT
  616. WINAPI
  617. GetTempFileNameA(
  618.     IN LPCSTR lpPathName,
  619.     IN LPCSTR lpPrefixString,
  620.     IN UINT uUnique,
  621.     OUT LPSTR lpTempFileName
  622.     );
  623. WINBASEAPI
  624. UINT
  625. WINAPI
  626. GetTempFileNameW(
  627.     IN LPCWSTR lpPathName,
  628.     IN LPCWSTR lpPrefixString,
  629.     IN UINT uUnique,
  630.     OUT LPWSTR lpTempFileName
  631.     );
  632. #ifdef UNICODE
  633. #define GetTempFileName  GetTempFileNameW
  634. #else
  635. #define GetTempFileName  GetTempFileNameA
  636. #endif // !UNICODE
  637. WINBASEAPI
  638. UINT
  639. WINAPI
  640. GetWindowsDirectoryA(
  641.     OUT LPSTR lpBuffer,
  642.     IN UINT uSize
  643.     );
  644. WINBASEAPI
  645. UINT
  646. WINAPI
  647. GetWindowsDirectoryW(
  648.     OUT LPWSTR lpBuffer,
  649.     IN UINT uSize
  650.     );
  651. #ifdef UNICODE
  652. #define GetWindowsDirectory  GetWindowsDirectoryW
  653. #else
  654. #define GetWindowsDirectory  GetWindowsDirectoryA
  655. #endif // !UNICODE
  656. WINBASEAPI
  657. UINT
  658. WINAPI
  659. GetSystemWindowsDirectoryA(
  660.     OUT LPSTR lpBuffer,
  661.     IN UINT uSize
  662.     );
  663. WINBASEAPI
  664. UINT
  665. WINAPI
  666. GetSystemWindowsDirectoryW(
  667.     OUT LPWSTR lpBuffer,
  668.     IN UINT uSize
  669.     );
  670. #ifdef UNICODE
  671. #define GetSystemWindowsDirectory  GetSystemWindowsDirectoryW
  672. #else
  673. #define GetSystemWindowsDirectory  GetSystemWindowsDirectoryA
  674. #endif // !UNICODE
  675. #if !defined(RC_INVOKED) // RC warns because "WINBASE_DECLARE_GET_SYSTEM_WOW64_DIRECTORY" is a bit long.
  676. #if _WIN32_WINNT >= 0x0501 || defined(WINBASE_DECLARE_GET_SYSTEM_WOW64_DIRECTORY)
  677. WINBASEAPI
  678. UINT
  679. WINAPI
  680. GetSystemWow64DirectoryA(
  681.     OUT LPSTR lpBuffer,
  682.     IN UINT uSize
  683.     );
  684. WINBASEAPI
  685. UINT
  686. WINAPI
  687. GetSystemWow64DirectoryW(
  688.     OUT LPWSTR lpBuffer,
  689.     IN UINT uSize
  690.     );
  691. #ifdef UNICODE
  692. #define GetSystemWow64Directory  GetSystemWow64DirectoryW
  693. #else
  694. #define GetSystemWow64Directory  GetSystemWow64DirectoryA
  695. #endif // !UNICODE
  696. //
  697. // for GetProcAddress
  698. //
  699. typedef UINT (WINAPI* PGET_SYSTEM_WOW64_DIRECTORY_A)(OUT  LPSTR lpBuffer, UINT uSize);
  700. typedef UINT (WINAPI* PGET_SYSTEM_WOW64_DIRECTORY_W)(OUT LPWSTR lpBuffer, UINT uSize);
  701. //
  702. // GetProcAddress only accepts GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A,
  703. // GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A, GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A.
  704. // The others are if you want to use the strings in some other way.
  705. //
  706. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A      "GetSystemWow64DirectoryA"
  707. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W     L"GetSystemWow64DirectoryA"
  708. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T TEXT("GetSystemWow64DirectoryA")
  709. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A      "GetSystemWow64DirectoryW"
  710. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W     L"GetSystemWow64DirectoryW"
  711. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T TEXT("GetSystemWow64DirectoryW")
  712. #ifdef UNICODE
  713. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A
  714. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W
  715. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T
  716. #else
  717. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A
  718. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W
  719. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T
  720. #endif
  721. #endif // _WIN32_WINNT >= 0x0501
  722. #endif
  723. WINBASEAPI
  724. BOOL
  725. WINAPI
  726. SetCurrentDirectoryA(
  727.     IN LPCSTR lpPathName
  728.     );
  729. WINBASEAPI
  730. BOOL
  731. WINAPI
  732. SetCurrentDirectoryW(
  733.     IN LPCWSTR lpPathName
  734.     );
  735. #ifdef UNICODE
  736. #define SetCurrentDirectory  SetCurrentDirectoryW
  737. #else
  738. #define SetCurrentDirectory  SetCurrentDirectoryA
  739. #endif // !UNICODE
  740. WINBASEAPI
  741. DWORD
  742. WINAPI
  743. GetCurrentDirectoryA(
  744.     IN DWORD nBufferLength,
  745.     OUT LPSTR lpBuffer
  746.     );
  747. WINBASEAPI
  748. DWORD
  749. WINAPI
  750. GetCurrentDirectoryW(
  751.     IN DWORD nBufferLength,
  752.     OUT LPWSTR lpBuffer
  753.     );
  754. #ifdef UNICODE
  755. #define GetCurrentDirectory  GetCurrentDirectoryW
  756. #else
  757. #define GetCurrentDirectory  GetCurrentDirectoryA
  758. #endif // !UNICODE
  759. WINBASEAPI
  760. BOOL
  761. WINAPI
  762. GetDiskFreeSpaceA(
  763.     IN LPCSTR lpRootPathName,
  764.     OUT LPDWORD lpSectorsPerCluster,
  765.     OUT LPDWORD lpBytesPerSector,
  766.     OUT LPDWORD lpNumberOfFreeClusters,
  767.     OUT LPDWORD lpTotalNumberOfClusters
  768.     );
  769. WINBASEAPI
  770. BOOL
  771. WINAPI
  772. GetDiskFreeSpaceW(
  773.     IN LPCWSTR lpRootPathName,
  774.     OUT LPDWORD lpSectorsPerCluster,
  775.     OUT LPDWORD lpBytesPerSector,
  776.     OUT LPDWORD lpNumberOfFreeClusters,
  777.     OUT LPDWORD lpTotalNumberOfClusters
  778.     );
  779. #ifdef UNICODE
  780. #define GetDiskFreeSpace  GetDiskFreeSpaceW
  781. #else
  782. #define GetDiskFreeSpace  GetDiskFreeSpaceA
  783. #endif // !UNICODE
  784. WINBASEAPI
  785. BOOL
  786. WINAPI
  787. GetDiskFreeSpaceExA(
  788.     IN LPCSTR lpDirectoryName,
  789.     OUT PULARGE_INTEGER lpFreeBytesAvailableToCaller,
  790.     OUT PULARGE_INTEGER lpTotalNumberOfBytes,
  791.     OUT PULARGE_INTEGER lpTotalNumberOfFreeBytes
  792.     );
  793. WINBASEAPI
  794. BOOL
  795. WINAPI
  796. GetDiskFreeSpaceExW(
  797.     IN LPCWSTR lpDirectoryName,
  798.     OUT PULARGE_INTEGER lpFreeBytesAvailableToCaller,
  799.     OUT PULARGE_INTEGER lpTotalNumberOfBytes,
  800.     OUT PULARGE_INTEGER lpTotalNumberOfFreeBytes
  801.     );
  802. #ifdef UNICODE
  803. #define GetDiskFreeSpaceEx  GetDiskFreeSpaceExW
  804. #else
  805. #define GetDiskFreeSpaceEx  GetDiskFreeSpaceExA
  806. #endif // !UNICODE
  807. WINBASEAPI
  808. BOOL
  809. WINAPI
  810. CreateDirectoryA(
  811.     IN LPCSTR lpPathName,
  812.     IN LPSECURITY_ATTRIBUTES lpSecurityAttributes
  813.     );
  814. WINBASEAPI
  815. BOOL
  816. WINAPI
  817. CreateDirectoryW(
  818.     IN LPCWSTR lpPathName,
  819.     IN LPSECURITY_ATTRIBUTES lpSecurityAttributes
  820.     );
  821. #ifdef UNICODE
  822. #define CreateDirectory  CreateDirectoryW
  823. #else
  824. #define CreateDirectory  CreateDirectoryA
  825. #endif // !UNICODE
  826. WINBASEAPI
  827. BOOL
  828. WINAPI
  829. CreateDirectoryExA(
  830.     IN LPCSTR lpTemplateDirectory,
  831.     IN LPCSTR lpNewDirectory,
  832.     IN LPSECURITY_ATTRIBUTES lpSecurityAttributes
  833.     );
  834. WINBASEAPI
  835. BOOL
  836. WINAPI
  837. CreateDirectoryExW(
  838.     IN LPCWSTR lpTemplateDirectory,
  839.     IN LPCWSTR lpNewDirectory,
  840.     IN LPSECURITY_ATTRIBUTES lpSecurityAttributes
  841.     );
  842. #ifdef UNICODE
  843. #define CreateDirectoryEx  CreateDirectoryExW
  844. #else
  845. #define CreateDirectoryEx  CreateDirectoryExA
  846. #endif // !UNICODE
  847. WINBASEAPI
  848. BOOL
  849. WINAPI
  850. RemoveDirectoryA(
  851.     IN LPCSTR lpPathName
  852.     );
  853. WINBASEAPI
  854. BOOL
  855. WINAPI
  856. RemoveDirectoryW(
  857.     IN LPCWSTR lpPathName
  858.     );
  859. #ifdef UNICODE
  860. #define RemoveDirectory  RemoveDirectoryW
  861. #else
  862. #define RemoveDirectory  RemoveDirectoryA
  863. #endif // !UNICODE
  864. WINBASEAPI
  865. DWORD
  866. WINAPI
  867. GetFullPathNameA(
  868.     IN LPCSTR lpFileName,
  869.     IN DWORD nBufferLength,
  870.     OUT LPSTR lpBuffer,
  871.     OUT LPSTR *lpFilePart
  872.     );
  873. WINBASEAPI
  874. DWORD
  875. WINAPI
  876. GetFullPathNameW(
  877.     IN LPCWSTR lpFileName,
  878.     IN DWORD nBufferLength,
  879.     OUT LPWSTR lpBuffer,
  880.     OUT LPWSTR *lpFilePart
  881.     );
  882. #ifdef UNICODE
  883. #define GetFullPathName  GetFullPathNameW
  884. #else
  885. #define GetFullPathName  GetFullPathNameA
  886. #endif // !UNICODE
  887. #define DDD_RAW_TARGET_PATH         0x00000001
  888. #define DDD_REMOVE_DEFINITION       0x00000002
  889. #define DDD_EXACT_MATCH_ON_REMOVE   0x00000004
  890. #define DDD_NO_BROADCAST_SYSTEM     0x00000008
  891. #define DDD_LUID_BROADCAST_DRIVE    0x00000010
  892. WINBASEAPI
  893. BOOL
  894. WINAPI
  895. DefineDosDeviceA(
  896.     IN DWORD dwFlags,
  897.     IN LPCSTR lpDeviceName,
  898.     IN LPCSTR lpTargetPath
  899.     );
  900. WINBASEAPI
  901. BOOL
  902. WINAPI
  903. DefineDosDeviceW(
  904.     IN DWORD dwFlags,
  905.     IN LPCWSTR lpDeviceName,
  906.     IN LPCWSTR lpTargetPath
  907.     );
  908. #ifdef UNICODE
  909. #define DefineDosDevice  DefineDosDeviceW
  910. #else
  911. #define DefineDosDevice  DefineDosDeviceA
  912. #endif // !UNICODE
  913. WINBASEAPI
  914. DWORD
  915. WINAPI
  916. QueryDosDeviceA(
  917.     IN LPCSTR lpDeviceName,
  918.     OUT LPSTR lpTargetPath,
  919.     IN DWORD ucchMax
  920.     );
  921. WINBASEAPI
  922. DWORD
  923. WINAPI
  924. QueryDosDeviceW(
  925.     IN LPCWSTR lpDeviceName,
  926.     OUT LPWSTR lpTargetPath,
  927.     IN DWORD ucchMax
  928.     );
  929. #ifdef UNICODE
  930. #define QueryDosDevice  QueryDosDeviceW
  931. #else
  932. #define QueryDosDevice  QueryDosDeviceA
  933. #endif // !UNICODE
  934. #define EXPAND_LOCAL_DRIVES
  935. WINBASEAPI
  936. HANDLE
  937. WINAPI
  938. CreateFileA(
  939.     IN LPCSTR lpFileName,
  940.     IN DWORD dwDesiredAccess,
  941.     IN DWORD dwShareMode,
  942.     IN LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  943.     IN DWORD dwCreationDisposition,
  944.     IN DWORD dwFlagsAndAttributes,
  945.     IN HANDLE hTemplateFile
  946.     );
  947. WINBASEAPI
  948. HANDLE
  949. WINAPI
  950. CreateFileW(
  951.     IN LPCWSTR lpFileName,
  952.     IN DWORD dwDesiredAccess,
  953.     IN DWORD dwShareMode,
  954.     IN LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  955.     IN DWORD dwCreationDisposition,
  956.     IN DWORD dwFlagsAndAttributes,
  957.     IN HANDLE hTemplateFile
  958.     );
  959. #ifdef UNICODE
  960. #define CreateFile  CreateFileW
  961. #else
  962. #define CreateFile  CreateFileA
  963. #endif // !UNICODE
  964. WINBASEAPI
  965. BOOL
  966. WINAPI
  967. SetFileAttributesA(
  968.     IN LPCSTR lpFileName,
  969.     IN DWORD dwFileAttributes
  970.     );
  971. WINBASEAPI
  972. BOOL
  973. WINAPI
  974. SetFileAttributesW(
  975.     IN LPCWSTR lpFileName,
  976.     IN DWORD dwFileAttributes
  977.     );
  978. #ifdef UNICODE
  979. #define SetFileAttributes  SetFileAttributesW
  980. #else
  981. #define SetFileAttributes  SetFileAttributesA
  982. #endif // !UNICODE
  983. WINBASEAPI
  984. DWORD
  985. WINAPI
  986. GetFileAttributesA(
  987.     IN LPCSTR lpFileName
  988.     );
  989. WINBASEAPI
  990. DWORD
  991. WINAPI
  992. GetFileAttributesW(
  993.     IN LPCWSTR lpFileName
  994.     );
  995. #ifdef UNICODE
  996. #define GetFileAttributes  GetFileAttributesW
  997. #else
  998. #define GetFileAttributes  GetFileAttributesA
  999. #endif // !UNICODE
  1000. typedef enum _GET_FILEEX_INFO_LEVELS {
  1001.     GetFileExInfoStandard,
  1002.     GetFileExMaxInfoLevel
  1003. } GET_FILEEX_INFO_LEVELS;
  1004. WINBASEAPI
  1005. BOOL
  1006. WINAPI
  1007. GetFileAttributesExA(
  1008.     IN LPCSTR lpFileName,
  1009.     IN GET_FILEEX_INFO_LEVELS fInfoLevelId,
  1010.     OUT LPVOID lpFileInformation
  1011.     );
  1012. WINBASEAPI
  1013. BOOL
  1014. WINAPI
  1015. GetFileAttributesExW(
  1016.     IN LPCWSTR lpFileName,
  1017.     IN GET_FILEEX_INFO_LEVELS fInfoLevelId,
  1018.     OUT LPVOID lpFileInformation
  1019.     );
  1020. #ifdef UNICODE
  1021. #define GetFileAttributesEx  GetFileAttributesExW
  1022. #else
  1023. #define GetFileAttributesEx  GetFileAttributesExA
  1024. #endif // !UNICODE
  1025. WINBASEAPI
  1026. DWORD
  1027. WINAPI
  1028. GetCompressedFileSizeA(
  1029.     IN LPCSTR lpFileName,
  1030.     OUT LPDWORD lpFileSizeHigh
  1031.     );
  1032. WINBASEAPI
  1033. DWORD
  1034. WINAPI
  1035. GetCompressedFileSizeW(
  1036.     IN LPCWSTR lpFileName,
  1037.     OUT LPDWORD lpFileSizeHigh
  1038.     );
  1039. #ifdef UNICODE
  1040. #define GetCompressedFileSize  GetCompressedFileSizeW
  1041. #else
  1042. #define GetCompressedFileSize  GetCompressedFileSizeA
  1043. #endif // !UNICODE
  1044. WINBASEAPI
  1045. BOOL
  1046. WINAPI
  1047. DeleteFileA(
  1048.     IN LPCSTR lpFileName
  1049.     );
  1050. WINBASEAPI
  1051. BOOL
  1052. WINAPI
  1053. DeleteFileW(
  1054.     IN LPCWSTR lpFileName
  1055.     );
  1056. #ifdef UNICODE
  1057. #define DeleteFile  DeleteFileW
  1058. #else
  1059. #define DeleteFile  DeleteFileA
  1060. #endif // !UNICODE
  1061. #if(_WIN32_WINNT >= 0x0400)
  1062. typedef enum _FINDEX_INFO_LEVELS {
  1063.     FindExInfoStandard,
  1064.     FindExInfoMaxInfoLevel
  1065. } FINDEX_INFO_LEVELS;
  1066. typedef enum _FINDEX_SEARCH_OPS {
  1067.     FindExSearchNameMatch,
  1068.     FindExSearchLimitToDirectories,
  1069.     FindExSearchLimitToDevices,
  1070.     FindExSearchMaxSearchOp
  1071. } FINDEX_SEARCH_OPS;
  1072. #define FIND_FIRST_EX_CASE_SENSITIVE   0x00000001
  1073. WINBASEAPI
  1074. HANDLE
  1075. WINAPI
  1076. FindFirstFileExA(
  1077.     IN LPCSTR lpFileName,
  1078.     IN FINDEX_INFO_LEVELS fInfoLevelId,
  1079.     OUT LPVOID lpFindFileData,
  1080.     IN FINDEX_SEARCH_OPS fSearchOp,
  1081.     IN LPVOID lpSearchFilter,
  1082.     IN DWORD dwAdditionalFlags
  1083.     );
  1084. WINBASEAPI
  1085. HANDLE
  1086. WINAPI
  1087. FindFirstFileExW(
  1088.     IN LPCWSTR lpFileName,
  1089.     IN FINDEX_INFO_LEVELS fInfoLevelId,
  1090.     OUT LPVOID lpFindFileData,
  1091.     IN FINDEX_SEARCH_OPS fSearchOp,
  1092.     IN LPVOID lpSearchFilter,
  1093.     IN DWORD dwAdditionalFlags
  1094.     );
  1095. #ifdef UNICODE
  1096. #define FindFirstFileEx  FindFirstFileExW
  1097. #else
  1098. #define FindFirstFileEx  FindFirstFileExA
  1099. #endif // !UNICODE
  1100. #endif /* _WIN32_WINNT >= 0x0400 */
  1101. WINBASEAPI
  1102. HANDLE
  1103. WINAPI
  1104. FindFirstFileA(
  1105.     IN LPCSTR lpFileName,
  1106.     OUT LPWIN32_FIND_DATAA lpFindFileData
  1107.     );
  1108. WINBASEAPI
  1109. HANDLE
  1110. WINAPI
  1111. FindFirstFileW(
  1112.     IN LPCWSTR lpFileName,
  1113.     OUT LPWIN32_FIND_DATAW lpFindFileData
  1114.     );
  1115. #ifdef UNICODE
  1116. #define FindFirstFile  FindFirstFileW
  1117. #else
  1118. #define FindFirstFile  FindFirstFileA
  1119. #endif // !UNICODE
  1120. WINBASEAPI
  1121. BOOL
  1122. WINAPI
  1123. FindNextFileA(
  1124.     IN HANDLE hFindFile,
  1125.     OUT LPWIN32_FIND_DATAA lpFindFileData
  1126.     );
  1127. WINBASEAPI
  1128. BOOL
  1129. WINAPI
  1130. FindNextFileW(
  1131.     IN HANDLE hFindFile,
  1132.     OUT LPWIN32_FIND_DATAW lpFindFileData
  1133.     );
  1134. #ifdef UNICODE
  1135. #define FindNextFile  FindNextFileW
  1136. #else
  1137. #define FindNextFile  FindNextFileA
  1138. #endif // !UNICODE
  1139. WINBASEAPI
  1140. DWORD
  1141. WINAPI
  1142. SearchPathA(
  1143.     IN LPCSTR lpPath,
  1144.     IN LPCSTR lpFileName,
  1145.     IN LPCSTR lpExtension,
  1146.     IN DWORD nBufferLength,
  1147.     OUT LPSTR lpBuffer,
  1148.     OUT LPSTR *lpFilePart
  1149.     );
  1150. WINBASEAPI
  1151. DWORD
  1152. WINAPI
  1153. SearchPathW(
  1154.     IN LPCWSTR lpPath,
  1155.     IN LPCWSTR lpFileName,
  1156.     IN LPCWSTR lpExtension,
  1157.     IN DWORD nBufferLength,
  1158.     OUT LPWSTR lpBuffer,
  1159.     OUT LPWSTR *lpFilePart
  1160.     );
  1161. #ifdef UNICODE
  1162. #define SearchPath  SearchPathW
  1163. #else
  1164. #define SearchPath  SearchPathA
  1165. #endif // !UNICODE
  1166. WINBASEAPI
  1167. BOOL
  1168. WINAPI
  1169. CopyFileA(
  1170.     IN LPCSTR lpExistingFileName,
  1171.     IN LPCSTR lpNewFileName,
  1172.     IN BOOL bFailIfExists
  1173.     );
  1174. WINBASEAPI
  1175. BOOL
  1176. WINAPI
  1177. CopyFileW(
  1178.     IN LPCWSTR lpExistingFileName,
  1179.     IN LPCWSTR lpNewFileName,
  1180.     IN BOOL bFailIfExists
  1181.     );
  1182. #ifdef UNICODE
  1183. #define CopyFile  CopyFileW
  1184. #else
  1185. #define CopyFile  CopyFileA
  1186. #endif // !UNICODE
  1187. #if(_WIN32_WINNT >= 0x0400)
  1188. typedef
  1189. DWORD
  1190. (WINAPI *LPPROGRESS_ROUTINE)(
  1191.     LARGE_INTEGER TotalFileSize,
  1192.     LARGE_INTEGER TotalBytesTransferred,
  1193.     LARGE_INTEGER StreamSize,
  1194.     LARGE_INTEGER StreamBytesTransferred,
  1195.     DWORD dwStreamNumber,
  1196.     DWORD dwCallbackReason,
  1197.     HANDLE hSourceFile,
  1198.     HANDLE hDestinationFile,
  1199.     LPVOID lpData OPTIONAL
  1200.     );
  1201. WINBASEAPI
  1202. BOOL
  1203. WINAPI
  1204. CopyFileExA(
  1205.     IN LPCSTR lpExistingFileName,
  1206.     IN LPCSTR lpNewFileName,
  1207.     IN LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL,
  1208.     IN LPVOID lpData OPTIONAL,
  1209.     IN LPBOOL pbCancel OPTIONAL,
  1210.     IN DWORD dwCopyFlags
  1211.     );
  1212. WINBASEAPI
  1213. BOOL
  1214. WINAPI
  1215. CopyFileExW(
  1216.     IN LPCWSTR lpExistingFileName,
  1217.     IN LPCWSTR lpNewFileName,
  1218.     IN LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL,
  1219.     IN LPVOID lpData OPTIONAL,
  1220.     IN LPBOOL pbCancel OPTIONAL,
  1221.     IN DWORD dwCopyFlags
  1222.     );
  1223. #ifdef UNICODE
  1224. #define CopyFileEx  CopyFileExW
  1225. #else
  1226. #define CopyFileEx  CopyFileExA
  1227. #endif // !UNICODE
  1228. #endif /* _WIN32_WINNT >= 0x0400 */
  1229. WINBASEAPI
  1230. BOOL
  1231. WINAPI
  1232. MoveFileA(
  1233.     IN LPCSTR lpExistingFileName,
  1234.     IN LPCSTR lpNewFileName
  1235.     );
  1236. WINBASEAPI
  1237. BOOL
  1238. WINAPI
  1239. MoveFileW(
  1240.     IN LPCWSTR lpExistingFileName,
  1241.     IN LPCWSTR lpNewFileName
  1242.     );
  1243. #ifdef UNICODE
  1244. #define MoveFile  MoveFileW
  1245. #else
  1246. #define MoveFile  MoveFileA
  1247. #endif // !UNICODE
  1248. WINBASEAPI
  1249. BOOL
  1250. WINAPI
  1251. MoveFileExA(
  1252.     IN LPCSTR lpExistingFileName,
  1253.     IN LPCSTR lpNewFileName,
  1254.     IN DWORD dwFlags
  1255.     );
  1256. WINBASEAPI
  1257. BOOL
  1258. WINAPI
  1259. MoveFileExW(
  1260.     IN LPCWSTR lpExistingFileName,
  1261.     IN LPCWSTR lpNewFileName,
  1262.     IN DWORD dwFlags
  1263.     );
  1264. #ifdef UNICODE
  1265. #define MoveFileEx  MoveFileExW
  1266. #else
  1267. #define MoveFileEx  MoveFileExA
  1268. #endif // !UNICODE
  1269. #if (_WIN32_WINNT >= 0x0500)
  1270. WINBASEAPI
  1271. BOOL
  1272. WINAPI
  1273. MoveFileWithProgressA(
  1274.     IN LPCSTR lpExistingFileName,
  1275.     IN LPCSTR lpNewFileName,
  1276.     IN LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL,
  1277.     IN LPVOID lpData OPTIONAL,
  1278.     IN DWORD dwFlags
  1279.     );
  1280. WINBASEAPI
  1281. BOOL
  1282. WINAPI
  1283. MoveFileWithProgressW(
  1284.     IN LPCWSTR lpExistingFileName,
  1285.     IN LPCWSTR lpNewFileName,
  1286.     IN LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL,
  1287.     IN LPVOID lpData OPTIONAL,
  1288.     IN DWORD dwFlags
  1289.     );
  1290. #ifdef UNICODE
  1291. #define MoveFileWithProgress  MoveFileWithProgressW
  1292. #else
  1293. #define MoveFileWithProgress  MoveFileWithProgressA
  1294. #endif // !UNICODE
  1295. #endif // (_WIN32_WINNT >= 0x0500)
  1296. #define MOVEFILE_REPLACE_EXISTING       0x00000001
  1297. #define MOVEFILE_COPY_ALLOWED           0x00000002
  1298. #define MOVEFILE_DELAY_UNTIL_REBOOT     0x00000004
  1299. #define MOVEFILE_WRITE_THROUGH          0x00000008
  1300. #if (_WIN32_WINNT >= 0x0500)
  1301. #define MOVEFILE_CREATE_HARDLINK        0x00000010
  1302. #define MOVEFILE_FAIL_IF_NOT_TRACKABLE  0x00000020
  1303. #endif // (_WIN32_WINNT >= 0x0500)
  1304. #if (_WIN32_WINNT >= 0x0500)
  1305. WINBASEAPI
  1306. BOOL
  1307. WINAPI
  1308. ReplaceFileA(
  1309.     LPCSTR  lpReplacedFileName,
  1310.     LPCSTR  lpReplacementFileName,
  1311.     LPCSTR  lpBackupFileName,
  1312.     DWORD   dwReplaceFlags,
  1313.     LPVOID  lpExclude,
  1314.     LPVOID  lpReserved
  1315.     );
  1316. WINBASEAPI
  1317. BOOL
  1318. WINAPI
  1319. ReplaceFileW(
  1320.     LPCWSTR lpReplacedFileName,
  1321.     LPCWSTR lpReplacementFileName,
  1322.     LPCWSTR lpBackupFileName,
  1323.     DWORD   dwReplaceFlags,
  1324.     LPVOID  lpExclude,
  1325.     LPVOID  lpReserved
  1326.     );
  1327. #ifdef UNICODE
  1328. #define ReplaceFile  ReplaceFileW
  1329. #else
  1330. #define ReplaceFile  ReplaceFileA
  1331. #endif // !UNICODE
  1332. #endif // (_WIN32_WINNT >= 0x0500)
  1333. #if (_WIN32_WINNT >= 0x0500)
  1334. //
  1335. // API call to create hard links.
  1336. //
  1337. WINBASEAPI
  1338. BOOL
  1339. WINAPI
  1340. CreateHardLinkA(
  1341.     IN LPCSTR lpFileName,
  1342.     IN LPCSTR lpExistingFileName,
  1343.     IN LPSECURITY_ATTRIBUTES lpSecurityAttributes
  1344.     );
  1345. WINBASEAPI
  1346. BOOL
  1347. WINAPI
  1348. CreateHardLinkW(
  1349.     IN LPCWSTR lpFileName,
  1350.     IN LPCWSTR lpExistingFileName,
  1351.     IN LPSECURITY_ATTRIBUTES lpSecurityAttributes
  1352.     );
  1353. #ifdef UNICODE
  1354. #define CreateHardLink  CreateHardLinkW
  1355. #else
  1356. #define CreateHardLink  CreateHardLinkA
  1357. #endif // !UNICODE
  1358. #endif // (_WIN32_WINNT >= 0x0500)
  1359. WINBASEAPI
  1360. HANDLE
  1361. WINAPI
  1362. CreateNamedPipeA(
  1363.     IN LPCSTR lpName,
  1364.     IN DWORD dwOpenMode,
  1365.     IN DWORD dwPipeMode,
  1366.     IN DWORD nMaxInstances,
  1367.     IN DWORD nOutBufferSize,
  1368.     IN DWORD nInBufferSize,
  1369.     IN DWORD nDefaultTimeOut,
  1370.     IN LPSECURITY_ATTRIBUTES lpSecurityAttributes
  1371.     );
  1372. WINBASEAPI
  1373. HANDLE
  1374. WINAPI
  1375. CreateNamedPipeW(
  1376.     IN LPCWSTR lpName,
  1377.     IN DWORD dwOpenMode,
  1378.     IN DWORD dwPipeMode,
  1379.     IN DWORD nMaxInstances,
  1380.     IN DWORD nOutBufferSize,
  1381.     IN DWORD nInBufferSize,
  1382.     IN DWORD nDefaultTimeOut,
  1383.     IN LPSECURITY_ATTRIBUTES lpSecurityAttributes
  1384.     );
  1385. #ifdef UNICODE
  1386. #define CreateNamedPipe  CreateNamedPipeW
  1387. #else
  1388. #define CreateNamedPipe  CreateNamedPipeA
  1389. #endif // !UNICODE
  1390. WINBASEAPI
  1391. BOOL
  1392. WINAPI
  1393. GetNamedPipeHandleStateA(
  1394.     IN HANDLE hNamedPipe,
  1395.     OUT LPDWORD lpState,
  1396.     OUT LPDWORD lpCurInstances,
  1397.     OUT LPDWORD lpMaxCollectionCount,
  1398.     OUT LPDWORD lpCollectDataTimeout,
  1399.     OUT LPSTR lpUserName,
  1400.     IN DWORD nMaxUserNameSize
  1401.     );
  1402. WINBASEAPI
  1403. BOOL
  1404. WINAPI
  1405. GetNamedPipeHandleStateW(
  1406.     IN HANDLE hNamedPipe,
  1407.     OUT LPDWORD lpState,
  1408.     OUT LPDWORD lpCurInstances,
  1409.     OUT LPDWORD lpMaxCollectionCount,
  1410.     OUT LPDWORD lpCollectDataTimeout,
  1411.     OUT LPWSTR lpUserName,
  1412.     IN DWORD nMaxUserNameSize
  1413.     );
  1414. #ifdef UNICODE
  1415. #define GetNamedPipeHandleState  GetNamedPipeHandleStateW
  1416. #else
  1417. #define GetNamedPipeHandleState  GetNamedPipeHandleStateA
  1418. #endif // !UNICODE
  1419. WINBASEAPI
  1420. BOOL
  1421. WINAPI
  1422. CallNamedPipeA(
  1423.     IN LPCSTR lpNamedPipeName,
  1424.     IN LPVOID lpInBuffer,
  1425.     IN DWORD nInBufferSize,
  1426.     OUT LPVOID lpOutBuffer,
  1427.     IN DWORD nOutBufferSize,
  1428.     OUT LPDWORD lpBytesRead,
  1429.     IN DWORD nTimeOut
  1430.     );
  1431. WINBASEAPI
  1432. BOOL
  1433. WINAPI
  1434. CallNamedPipeW(
  1435.     IN LPCWSTR lpNamedPipeName,
  1436.     IN LPVOID lpInBuffer,
  1437.     IN DWORD nInBufferSize,
  1438.     OUT LPVOID lpOutBuffer,
  1439.     IN DWORD nOutBufferSize,
  1440.     OUT LPDWORD lpBytesRead,
  1441.     IN DWORD nTimeOut
  1442.     );
  1443. #ifdef UNICODE
  1444. #define CallNamedPipe  CallNamedPipeW
  1445. #else
  1446. #define CallNamedPipe  CallNamedPipeA
  1447. #endif // !UNICODE
  1448. WINBASEAPI
  1449. BOOL
  1450. WINAPI
  1451. WaitNamedPipeA(
  1452.     IN LPCSTR lpNamedPipeName,
  1453.     IN DWORD nTimeOut
  1454.     );
  1455. WINBASEAPI
  1456. BOOL
  1457. WINAPI
  1458. WaitNamedPipeW(
  1459.     IN LPCWSTR lpNamedPipeName,
  1460.     IN DWORD nTimeOut
  1461.     );
  1462. #ifdef UNICODE
  1463. #define WaitNamedPipe  WaitNamedPipeW
  1464. #else
  1465. #define WaitNamedPipe  WaitNamedPipeA
  1466. #endif // !UNICODE
  1467. WINBASEAPI
  1468. BOOL
  1469. WINAPI
  1470. SetVolumeLabelA(
  1471.     IN LPCSTR lpRootPathName,
  1472.     IN LPCSTR lpVolumeName
  1473.     );
  1474. WINBASEAPI
  1475. BOOL
  1476. WINAPI
  1477. SetVolumeLabelW(
  1478.     IN LPCWSTR lpRootPathName,
  1479.     IN LPCWSTR lpVolumeName
  1480.     );
  1481. #ifdef UNICODE
  1482. #define SetVolumeLabel  SetVolumeLabelW
  1483. #else
  1484. #define SetVolumeLabel  SetVolumeLabelA
  1485. #endif // !UNICODE
  1486. WINBASEAPI
  1487. VOID
  1488. WINAPI
  1489. SetFileApisToOEM( VOID );
  1490. WINBASEAPI
  1491. VOID
  1492. WINAPI
  1493. SetFileApisToANSI( VOID );
  1494. WINBASEAPI
  1495. BOOL
  1496. WINAPI
  1497. AreFileApisANSI( VOID );
  1498. WINBASEAPI
  1499. BOOL
  1500. WINAPI
  1501. GetVolumeInformationA(
  1502.     IN LPCSTR lpRootPathName,
  1503.     OUT LPSTR lpVolumeNameBuffer,
  1504.     IN DWORD nVolumeNameSize,
  1505.     OUT LPDWORD lpVolumeSerialNumber,
  1506.     OUT LPDWORD lpMaximumComponentLength,
  1507.     OUT LPDWORD lpFileSystemFlags,
  1508.     OUT LPSTR lpFileSystemNameBuffer,
  1509.     IN DWORD nFileSystemNameSize
  1510.     );
  1511. WINBASEAPI
  1512. BOOL
  1513. WINAPI
  1514. GetVolumeInformationW(
  1515.     IN LPCWSTR lpRootPathName,
  1516.     OUT LPWSTR lpVolumeNameBuffer,
  1517.     IN DWORD nVolumeNameSize,
  1518.     OUT LPDWORD lpVolumeSerialNumber,
  1519.     OUT LPDWORD lpMaximumComponentLength,
  1520.     OUT LPDWORD lpFileSystemFlags,
  1521.     OUT LPWSTR lpFileSystemNameBuffer,
  1522.     IN DWORD nFileSystemNameSize
  1523.     );
  1524. #ifdef UNICODE
  1525. #define GetVolumeInformation  GetVolumeInformationW
  1526. #else
  1527. #define GetVolumeInformation  GetVolumeInformationA
  1528. #endif // !UNICODE
  1529. WINBASEAPI
  1530. BOOL
  1531. WINAPI
  1532. CancelIo(
  1533.     IN HANDLE hFile
  1534.     );
  1535. //
  1536. // Event logging APIs
  1537. //
  1538. WINADVAPI
  1539. BOOL
  1540. WINAPI
  1541. ClearEventLogA (
  1542.     IN HANDLE hEventLog,
  1543.     IN LPCSTR lpBackupFileName
  1544.     );
  1545. WINADVAPI
  1546. BOOL
  1547. WINAPI
  1548. ClearEventLogW (
  1549.     IN HANDLE hEventLog,
  1550.     IN LPCWSTR lpBackupFileName
  1551.     );
  1552. #ifdef UNICODE
  1553. #define ClearEventLog  ClearEventLogW
  1554. #else
  1555. #define ClearEventLog  ClearEventLogA
  1556. #endif // !UNICODE
  1557. WINADVAPI
  1558. BOOL
  1559. WINAPI
  1560. BackupEventLogA (
  1561.     IN HANDLE hEventLog,
  1562.     IN LPCSTR lpBackupFileName
  1563.     );
  1564. WINADVAPI
  1565. BOOL
  1566. WINAPI
  1567. BackupEventLogW (
  1568.     IN HANDLE hEventLog,
  1569.     IN LPCWSTR lpBackupFileName
  1570.     );
  1571. #ifdef UNICODE
  1572. #define BackupEventLog  BackupEventLogW
  1573. #else
  1574. #define BackupEventLog  BackupEventLogA
  1575. #endif // !UNICODE
  1576. WINADVAPI
  1577. BOOL
  1578. WINAPI
  1579. CloseEventLog (
  1580.     IN OUT HANDLE hEventLog
  1581.     );
  1582. WINADVAPI
  1583. BOOL
  1584. WINAPI
  1585. DeregisterEventSource (
  1586.     IN OUT HANDLE hEventLog
  1587.     );
  1588. WINADVAPI
  1589. BOOL
  1590. WINAPI
  1591. NotifyChangeEventLog(
  1592.     IN HANDLE  hEventLog,
  1593.     IN HANDLE  hEvent
  1594.     );
  1595. WINADVAPI
  1596. BOOL
  1597. WINAPI
  1598. GetNumberOfEventLogRecords (
  1599.     IN HANDLE hEventLog,
  1600.     OUT PDWORD NumberOfRecords
  1601.     );
  1602. WINADVAPI
  1603. BOOL
  1604. WINAPI
  1605. GetOldestEventLogRecord (
  1606.     IN HANDLE hEventLog,
  1607.     OUT PDWORD OldestRecord
  1608.     );
  1609. WINADVAPI
  1610. HANDLE
  1611. WINAPI
  1612. OpenEventLogA (
  1613.     IN LPCSTR lpUNCServerName,
  1614.     IN LPCSTR lpSourceName
  1615.     );
  1616. WINADVAPI
  1617. HANDLE
  1618. WINAPI
  1619. OpenEventLogW (
  1620.     IN LPCWSTR lpUNCServerName,
  1621.     IN LPCWSTR lpSourceName
  1622.     );
  1623. #ifdef UNICODE
  1624. #define OpenEventLog  OpenEventLogW
  1625. #else
  1626. #define OpenEventLog  OpenEventLogA
  1627. #endif // !UNICODE
  1628. WINADVAPI
  1629. HANDLE
  1630. WINAPI
  1631. RegisterEventSourceA (
  1632.     IN LPCSTR lpUNCServerName,
  1633.     IN LPCSTR lpSourceName
  1634.     );
  1635. WINADVAPI
  1636. HANDLE
  1637. WINAPI
  1638. RegisterEventSourceW (
  1639.     IN LPCWSTR lpUNCServerName,
  1640.     IN LPCWSTR lpSourceName
  1641.     );
  1642. #ifdef UNICODE
  1643. #define RegisterEventSource  RegisterEventSourceW
  1644. #else
  1645. #define RegisterEventSource  RegisterEventSourceA
  1646. #endif // !UNICODE
  1647. WINADVAPI
  1648. HANDLE
  1649. WINAPI
  1650. OpenBackupEventLogA (
  1651.     IN LPCSTR lpUNCServerName,
  1652.     IN LPCSTR lpFileName
  1653.     );
  1654. WINADVAPI
  1655. HANDLE
  1656. WINAPI
  1657. OpenBackupEventLogW (
  1658.     IN LPCWSTR lpUNCServerName,
  1659.     IN LPCWSTR lpFileName
  1660.     );
  1661. #ifdef UNICODE
  1662. #define OpenBackupEventLog  OpenBackupEventLogW
  1663. #else
  1664. #define OpenBackupEventLog  OpenBackupEventLogA
  1665. #endif // !UNICODE
  1666. WINADVAPI
  1667. BOOL
  1668. WINAPI
  1669. ReadEventLogA (
  1670.      IN HANDLE     hEventLog,
  1671.      IN DWORD      dwReadFlags,
  1672.      IN DWORD      dwRecordOffset,
  1673.      OUT LPVOID     lpBuffer,
  1674.      IN DWORD      nNumberOfBytesToRead,
  1675.      OUT DWORD      *pnBytesRead,
  1676.      OUT DWORD      *pnMinNumberOfBytesNeeded
  1677.     );
  1678. WINADVAPI
  1679. BOOL
  1680. WINAPI
  1681. ReadEventLogW (
  1682.      IN HANDLE     hEventLog,
  1683.      IN DWORD      dwReadFlags,
  1684.      IN DWORD      dwRecordOffset,
  1685.      OUT LPVOID     lpBuffer,
  1686.      IN DWORD      nNumberOfBytesToRead,
  1687.      OUT DWORD      *pnBytesRead,
  1688.      OUT DWORD      *pnMinNumberOfBytesNeeded
  1689.     );
  1690. #ifdef UNICODE
  1691. #define ReadEventLog  ReadEventLogW
  1692. #else
  1693. #define ReadEventLog  ReadEventLogA
  1694. #endif // !UNICODE
  1695. WINADVAPI
  1696. BOOL
  1697. WINAPI
  1698. ReportEventA (
  1699.      IN HANDLE     hEventLog,
  1700.      IN WORD       wType,
  1701.      IN WORD       wCategory,
  1702.      IN DWORD      dwEventID,
  1703.      IN PSID       lpUserSid,
  1704.      IN WORD       wNumStrings,
  1705.      IN DWORD      dwDataSize,
  1706.      IN LPCSTR   *lpStrings,
  1707.      IN LPVOID     lpRawData
  1708.     );
  1709. WINADVAPI
  1710. BOOL
  1711. WINAPI
  1712. ReportEventW (
  1713.      IN HANDLE     hEventLog,
  1714.      IN WORD       wType,
  1715.      IN WORD       wCategory,
  1716.      IN DWORD      dwEventID,
  1717.      IN PSID       lpUserSid,
  1718.      IN WORD       wNumStrings,
  1719.      IN DWORD      dwDataSize,
  1720.      IN LPCWSTR   *lpStrings,
  1721.      IN LPVOID     lpRawData
  1722.     );
  1723. #ifdef UNICODE
  1724. #define ReportEvent  ReportEventW
  1725. #else
  1726. #define ReportEvent  ReportEventA
  1727. #endif // !UNICODE
  1728. #define EVENTLOG_FULL_INFO      0
  1729. typedef struct _EVENTLOG_FULL_INFORMATION
  1730. {
  1731.     DWORD    dwFull;
  1732. }
  1733. EVENTLOG_FULL_INFORMATION, *LPEVENTLOG_FULL_INFORMATION;
  1734. WINADVAPI
  1735. BOOL
  1736. WINAPI
  1737. GetEventLogInformation (
  1738.      IN  HANDLE     hEventLog,
  1739.      IN  DWORD      dwInfoLevel,
  1740.      OUT LPVOID     lpBuffer,
  1741.      IN  DWORD      cbBufSize,
  1742.      OUT LPDWORD    pcbBytesNeeded
  1743.     );
  1744. //
  1745. //
  1746. // Security APIs
  1747. //
  1748. WINADVAPI
  1749. BOOL
  1750. WINAPI
  1751. DuplicateToken(
  1752.     IN HANDLE ExistingTokenHandle,
  1753.     IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
  1754.     OUT PHANDLE DuplicateTokenHandle
  1755.     );
  1756. WINADVAPI
  1757. BOOL
  1758. WINAPI
  1759. GetKernelObjectSecurity (
  1760.     IN HANDLE Handle,
  1761.     IN SECURITY_INFORMATION RequestedInformation,
  1762.     OUT PSECURITY_DESCRIPTOR pSecurityDescriptor,
  1763.     IN DWORD nLength,
  1764.     OUT LPDWORD lpnLengthNeeded
  1765.     );
  1766. WINADVAPI
  1767. BOOL
  1768. WINAPI
  1769. ImpersonateNamedPipeClient(
  1770.     IN HANDLE hNamedPipe
  1771.     );
  1772. WINADVAPI
  1773. BOOL
  1774. WINAPI
  1775. ImpersonateSelf(
  1776.     IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
  1777.     );
  1778. WINADVAPI
  1779. BOOL
  1780. WINAPI
  1781. RevertToSelf (
  1782.     VOID
  1783.     );
  1784. WINADVAPI
  1785. BOOL
  1786. APIENTRY
  1787. SetThreadToken (
  1788.     IN PHANDLE Thread,
  1789.     IN HANDLE Token
  1790.     );
  1791. WINADVAPI
  1792. BOOL
  1793. WINAPI
  1794. AccessCheck (
  1795.     IN PSECURITY_DESCRIPTOR pSecurityDescriptor,
  1796.     IN HANDLE ClientToken,
  1797.     IN DWORD DesiredAccess,
  1798.     IN PGENERIC_MAPPING GenericMapping,
  1799.     OUT PPRIVILEGE_SET PrivilegeSet,
  1800.     IN LPDWORD PrivilegeSetLength,
  1801.     OUT LPDWORD GrantedAccess,
  1802.     OUT LPBOOL AccessStatus
  1803.     );
  1804. #if(_WIN32_WINNT >= 0x0500)
  1805. WINADVAPI
  1806. BOOL
  1807. WINAPI
  1808. AccessCheckByType (
  1809.     IN PSECURITY_DESCRIPTOR pSecurityDescriptor,
  1810.     IN PSID PrincipalSelfSid,
  1811.     IN HANDLE ClientToken,
  1812.     IN DWORD DesiredAccess,
  1813.     OUT POBJECT_TYPE_LIST ObjectTypeList,
  1814.     IN DWORD ObjectTypeListLength,
  1815.     OUT PGENERIC_MAPPING GenericMapping,
  1816.     OUT PPRIVILEGE_SET PrivilegeSet,
  1817.     OUT LPDWORD PrivilegeSetLength,
  1818.     OUT LPDWORD GrantedAccess,
  1819.     OUT LPBOOL AccessStatus
  1820.     );
  1821. WINADVAPI
  1822. BOOL
  1823. WINAPI
  1824. AccessCheckByTypeResultList (
  1825.     IN PSECURITY_DESCRIPTOR pSecurityDescriptor,
  1826.     IN PSID PrincipalSelfSid,
  1827.     IN HANDLE ClientToken,
  1828.     IN DWORD DesiredAccess,
  1829.     OUT POBJECT_TYPE_LIST ObjectTypeList,
  1830.     IN DWORD ObjectTypeListLength,
  1831.     OUT PGENERIC_MAPPING GenericMapping,
  1832.     OUT PPRIVILEGE_SET PrivilegeSet,
  1833.     OUT LPDWORD PrivilegeSetLength,
  1834.     OUT LPDWORD GrantedAccessList,
  1835.     OUT LPDWORD AccessStatusList
  1836.     );
  1837. #endif /* _WIN32_WINNT >=  0x0500 */
  1838. WINADVAPI
  1839. BOOL
  1840. WINAPI
  1841. OpenProcessToken (
  1842.     IN HANDLE ProcessHandle,
  1843.     IN DWORD DesiredAccess,
  1844.     OUT PHANDLE TokenHandle
  1845.     );
  1846. WINADVAPI
  1847. BOOL
  1848. WINAPI
  1849. OpenThreadToken (
  1850.     IN HANDLE ThreadHandle,
  1851.     IN DWORD DesiredAccess,
  1852.     IN BOOL OpenAsSelf,
  1853.     OUT PHANDLE TokenHandle
  1854.     );
  1855. WINADVAPI
  1856. BOOL
  1857. WINAPI
  1858. GetTokenInformation (
  1859.     IN HANDLE TokenHandle,
  1860.     IN TOKEN_INFORMATION_CLASS TokenInformationClass,
  1861.     OUT LPVOID TokenInformation,
  1862.     IN DWORD TokenInformationLength,
  1863.     OUT PDWORD ReturnLength
  1864.     );
  1865. WINADVAPI
  1866. BOOL
  1867. WINAPI
  1868. SetTokenInformation (
  1869.     IN HANDLE TokenHandle,
  1870.     IN TOKEN_INFORMATION_CLASS TokenInformationClass,
  1871.     IN LPVOID TokenInformation,
  1872.     IN DWORD TokenInformationLength
  1873.     );
  1874. WINADVAPI
  1875. BOOL
  1876. WINAPI
  1877. AdjustTokenPrivileges (
  1878.     IN HANDLE TokenHandle,
  1879.     IN BOOL DisableAllPrivileges,
  1880.     IN PTOKEN_PRIVILEGES NewState,
  1881.     IN DWORD BufferLength,
  1882.     OUT PTOKEN_PRIVILEGES PreviousState,
  1883.     OUT PDWORD ReturnLength
  1884.     );
  1885. WINADVAPI
  1886. BOOL
  1887. WINAPI
  1888. AdjustTokenGroups (
  1889.     IN HANDLE TokenHandle,
  1890.     IN BOOL ResetToDefault,
  1891.     IN PTOKEN_GROUPS NewState,
  1892.     IN DWORD BufferLength,
  1893.     OUT PTOKEN_GROUPS PreviousState,
  1894.     OUT PDWORD ReturnLength
  1895.     );
  1896. WINADVAPI
  1897. BOOL
  1898. WINAPI
  1899. PrivilegeCheck (
  1900.     IN HANDLE ClientToken,
  1901.     IN PPRIVILEGE_SET RequiredPrivileges,
  1902.     OUT LPBOOL pfResult
  1903.     );
  1904. WINADVAPI
  1905. BOOL
  1906. WINAPI
  1907. AccessCheckAndAuditAlarmA (
  1908.     IN LPCSTR SubsystemName,
  1909.     IN LPVOID HandleId,
  1910.     IN LPSTR ObjectTypeName,
  1911.     IN LPSTR ObjectName,
  1912.     IN PSECURITY_DESCRIPTOR SecurityDescriptor,
  1913.     IN DWORD DesiredAccess,
  1914.     IN PGENERIC_MAPPING GenericMapping,
  1915.     IN BOOL ObjectCreation,
  1916.     OUT LPDWORD GrantedAccess,
  1917.     OUT LPBOOL AccessStatus,
  1918.     OUT LPBOOL pfGenerateOnClose
  1919.     );
  1920. WINADVAPI
  1921. BOOL
  1922. WINAPI
  1923. AccessCheckAndAuditAlarmW (
  1924.     IN LPCWSTR SubsystemName,
  1925.     IN LPVOID HandleId,
  1926.     IN LPWSTR ObjectTypeName,
  1927.     IN LPWSTR ObjectName,
  1928.     IN PSECURITY_DESCRIPTOR SecurityDescriptor,
  1929.     IN DWORD DesiredAccess,
  1930.     IN PGENERIC_MAPPING GenericMapping,
  1931.     IN BOOL ObjectCreation,
  1932.     OUT LPDWORD GrantedAccess,
  1933.     OUT LPBOOL AccessStatus,
  1934.     OUT LPBOOL pfGenerateOnClose
  1935.     );
  1936. #ifdef UNICODE
  1937. #define AccessCheckAndAuditAlarm  AccessCheckAndAuditAlarmW
  1938. #else
  1939. #define AccessCheckAndAuditAlarm  AccessCheckAndAuditAlarmA
  1940. #endif // !UNICODE
  1941. #if(_WIN32_WINNT >= 0x0500)
  1942. WINADVAPI
  1943. BOOL
  1944. WINAPI
  1945. AccessCheckByTypeAndAuditAlarmA (
  1946.     IN LPCSTR SubsystemName,
  1947.     IN LPVOID HandleId,
  1948.     IN LPCSTR ObjectTypeName,
  1949.     IN LPCSTR ObjectName,
  1950.     IN PSECURITY_DESCRIPTOR SecurityDescriptor,
  1951.     IN PSID PrincipalSelfSid,
  1952.     IN DWORD DesiredAccess,
  1953.     IN AUDIT_EVENT_TYPE AuditType,
  1954.     IN DWORD Flags,
  1955.     IN POBJECT_TYPE_LIST ObjectTypeList,
  1956.     IN DWORD ObjectTypeListLength,
  1957.     IN PGENERIC_MAPPING GenericMapping,
  1958.     IN BOOL ObjectCreation,
  1959.     OUT LPDWORD GrantedAccess,
  1960.     OUT LPBOOL AccessStatus,
  1961.     OUT LPBOOL pfGenerateOnClose
  1962.     );
  1963. WINADVAPI
  1964. BOOL
  1965. WINAPI
  1966. AccessCheckByTypeAndAuditAlarmW (
  1967.     IN LPCWSTR SubsystemName,
  1968.     IN LPVOID HandleId,
  1969.     IN LPCWSTR ObjectTypeName,
  1970.     IN LPCWSTR ObjectName,
  1971.     IN PSECURITY_DESCRIPTOR SecurityDescriptor,
  1972.     IN PSID PrincipalSelfSid,
  1973.     IN DWORD DesiredAccess,
  1974.     IN AUDIT_EVENT_TYPE AuditType,
  1975.     IN DWORD Flags,
  1976.     IN POBJECT_TYPE_LIST ObjectTypeList,
  1977.     IN DWORD ObjectTypeListLength,
  1978.     IN PGENERIC_MAPPING GenericMapping,
  1979.     IN BOOL ObjectCreation,
  1980.     OUT LPDWORD GrantedAccess,
  1981.     OUT LPBOOL AccessStatus,
  1982.     OUT LPBOOL pfGenerateOnClose
  1983.     );
  1984. #ifdef UNICODE
  1985. #define AccessCheckByTypeAndAuditAlarm  AccessCheckByTypeAndAuditAlarmW
  1986. #else
  1987. #define AccessCheckByTypeAndAuditAlarm  AccessCheckByTypeAndAuditAlarmA
  1988. #endif // !UNICODE
  1989. WINADVAPI
  1990. BOOL
  1991. WINAPI
  1992. AccessCheckByTypeResultListAndAuditAlarmA (
  1993.     IN LPCSTR SubsystemName,
  1994.     IN LPVOID HandleId,
  1995.     IN LPCSTR ObjectTypeName,
  1996.     IN LPCSTR ObjectName,
  1997.     IN PSECURITY_DESCRIPTOR SecurityDescriptor,
  1998.     IN PSID PrincipalSelfSid,
  1999.     IN DWORD DesiredAccess,
  2000.     IN AUDIT_EVENT_TYPE AuditType,
  2001.     IN DWORD Flags,
  2002.     IN POBJECT_TYPE_LIST ObjectTypeList,
  2003.     IN DWORD ObjectTypeListLength,
  2004.     IN PGENERIC_MAPPING GenericMapping,
  2005.     IN BOOL ObjectCreation,
  2006.     OUT LPDWORD GrantedAccess,
  2007.     OUT LPDWORD AccessStatusList,
  2008.     OUT LPBOOL pfGenerateOnClose
  2009.     );
  2010. WINADVAPI
  2011. BOOL
  2012. WINAPI
  2013. AccessCheckByTypeResultListAndAuditAlarmW (
  2014.     IN LPCWSTR SubsystemName,
  2015.     IN LPVOID HandleId,
  2016.     IN LPCWSTR ObjectTypeName,
  2017.     IN LPCWSTR ObjectName,
  2018.     IN PSECURITY_DESCRIPTOR SecurityDescriptor,
  2019.     IN PSID PrincipalSelfSid,
  2020.     IN DWORD DesiredAccess,
  2021.     IN AUDIT_EVENT_TYPE AuditType,
  2022.     IN DWORD Flags,
  2023.     IN POBJECT_TYPE_LIST ObjectTypeList,
  2024.     IN DWORD ObjectTypeListLength,
  2025.     IN PGENERIC_MAPPING GenericMapping,
  2026.     IN BOOL ObjectCreation,
  2027.     OUT LPDWORD GrantedAccess,
  2028.     OUT LPDWORD AccessStatusList,
  2029.     OUT LPBOOL pfGenerateOnClose
  2030.     );
  2031. #ifdef UNICODE
  2032. #define AccessCheckByTypeResultListAndAuditAlarm  AccessCheckByTypeResultListAndAuditAlarmW
  2033. #else
  2034. #define AccessCheckByTypeResultListAndAuditAlarm  AccessCheckByTypeResultListAndAuditAlarmA
  2035. #endif // !UNICODE
  2036. WINADVAPI
  2037. BOOL
  2038. WINAPI
  2039. AccessCheckByTypeResultListAndAuditAlarmByHandleA (
  2040.     IN LPCSTR SubsystemName,
  2041.     IN LPVOID HandleId,
  2042.     IN HANDLE ClientToken,
  2043.     IN LPCSTR ObjectTypeName,
  2044.     IN LPCSTR ObjectName,
  2045.     IN PSECURITY_DESCRIPTOR SecurityDescriptor,
  2046.     IN PSID PrincipalSelfSid,
  2047.     IN DWORD DesiredAccess,
  2048.     IN AUDIT_EVENT_TYPE AuditType,
  2049.     IN DWORD Flags,
  2050.     IN POBJECT_TYPE_LIST ObjectTypeList,
  2051.     IN DWORD ObjectTypeListLength,
  2052.     IN PGENERIC_MAPPING GenericMapping,
  2053.     IN BOOL ObjectCreation,
  2054.     OUT LPDWORD GrantedAccess,
  2055.     OUT LPDWORD AccessStatusList,
  2056.     OUT LPBOOL pfGenerateOnClose
  2057.     );
  2058. WINADVAPI
  2059. BOOL
  2060. WINAPI
  2061. AccessCheckByTypeResultListAndAuditAlarmByHandleW (
  2062.     IN LPCWSTR SubsystemName,
  2063.     IN LPVOID HandleId,
  2064.     IN HANDLE ClientToken,
  2065.     IN LPCWSTR ObjectTypeName,
  2066.     IN LPCWSTR ObjectName,
  2067.     IN PSECURITY_DESCRIPTOR SecurityDescriptor,
  2068.     IN PSID PrincipalSelfSid,
  2069.     IN DWORD DesiredAccess,
  2070.     IN AUDIT_EVENT_TYPE AuditType,
  2071.     IN DWORD Flags,
  2072.     IN POBJECT_TYPE_LIST ObjectTypeList,
  2073.     IN DWORD ObjectTypeListLength,
  2074.     IN PGENERIC_MAPPING GenericMapping,
  2075.     IN BOOL ObjectCreation,
  2076.     OUT LPDWORD GrantedAccess,
  2077.     OUT LPDWORD AccessStatusList,
  2078.     OUT LPBOOL pfGenerateOnClose
  2079.     );
  2080. #ifdef UNICODE
  2081. #define AccessCheckByTypeResultListAndAuditAlarmByHandle  AccessCheckByTypeResultListAndAuditAlarmByHandleW
  2082. #else
  2083. #define AccessCheckByTypeResultListAndAuditAlarmByHandle  AccessCheckByTypeResultListAndAuditAlarmByHandleA
  2084. #endif // !UNICODE
  2085. #endif //(_WIN32_WINNT >= 0x0500)
  2086. WINADVAPI
  2087. BOOL
  2088. WINAPI
  2089. ObjectOpenAuditAlarmA (
  2090.     IN LPCSTR SubsystemName,
  2091.     IN LPVOID HandleId,
  2092.     IN LPSTR ObjectTypeName,
  2093.     IN LPSTR ObjectName,
  2094.     IN PSECURITY_DESCRIPTOR pSecurityDescriptor,
  2095.     IN HANDLE ClientToken,
  2096.     IN DWORD DesiredAccess,
  2097.     IN DWORD GrantedAccess,
  2098.     IN PPRIVILEGE_SET Privileges,
  2099.     IN BOOL ObjectCreation,
  2100.     IN BOOL AccessGranted,
  2101.     OUT LPBOOL GenerateOnClose
  2102.     );
  2103. WINADVAPI
  2104. BOOL
  2105. WINAPI
  2106. ObjectOpenAuditAlarmW (
  2107.     IN LPCWSTR SubsystemName,
  2108.     IN LPVOID HandleId,
  2109.     IN LPWSTR ObjectTypeName,
  2110.     IN LPWSTR ObjectName,
  2111.     IN PSECURITY_DESCRIPTOR pSecurityDescriptor,
  2112.     IN HANDLE ClientToken,
  2113.     IN DWORD DesiredAccess,
  2114.     IN DWORD GrantedAccess,
  2115.     IN PPRIVILEGE_SET Privileges,
  2116.     IN BOOL ObjectCreation,
  2117.     IN BOOL AccessGranted,
  2118.     OUT LPBOOL GenerateOnClose
  2119.     );
  2120. #ifdef UNICODE
  2121. #define ObjectOpenAuditAlarm  ObjectOpenAuditAlarmW
  2122. #else
  2123. #define ObjectOpenAuditAlarm  ObjectOpenAuditAlarmA
  2124. #endif // !UNICODE
  2125. WINADVAPI
  2126. BOOL
  2127. WINAPI
  2128. ObjectPrivilegeAuditAlarmA (
  2129.     IN LPCSTR SubsystemName,
  2130.     IN LPVOID HandleId,
  2131.     IN HANDLE ClientToken,
  2132.     IN DWORD DesiredAccess,
  2133.     IN PPRIVILEGE_SET Privileges,
  2134.     IN BOOL AccessGranted
  2135.     );
  2136. WINADVAPI
  2137. BOOL
  2138. WINAPI
  2139. ObjectPrivilegeAuditAlarmW (
  2140.     IN LPCWSTR SubsystemName,
  2141.     IN LPVOID HandleId,
  2142.     IN HANDLE ClientToken,
  2143.     IN DWORD DesiredAccess,
  2144.     IN PPRIVILEGE_SET Privileges,
  2145.     IN BOOL AccessGranted
  2146.     );
  2147. #ifdef UNICODE
  2148. #define ObjectPrivilegeAuditAlarm  ObjectPrivilegeAuditAlarmW
  2149. #else
  2150. #define ObjectPrivilegeAuditAlarm  ObjectPrivilegeAuditAlarmA
  2151. #endif // !UNICODE
  2152. WINADVAPI
  2153. BOOL
  2154. WINAPI
  2155. ObjectCloseAuditAlarmA (
  2156.     IN LPCSTR SubsystemName,
  2157.     IN LPVOID HandleId,
  2158.     IN BOOL GenerateOnClose
  2159.     );
  2160. WINADVAPI
  2161. BOOL
  2162. WINAPI
  2163. ObjectCloseAuditAlarmW (
  2164.     IN LPCWSTR SubsystemName,
  2165.     IN LPVOID HandleId,
  2166.     IN BOOL GenerateOnClose
  2167.     );
  2168. #ifdef UNICODE
  2169. #define ObjectCloseAuditAlarm  ObjectCloseAuditAlarmW
  2170. #else
  2171. #define ObjectCloseAuditAlarm  ObjectCloseAuditAlarmA
  2172. #endif // !UNICODE
  2173. WINADVAPI
  2174. BOOL
  2175. WINAPI
  2176. ObjectDeleteAuditAlarmA (
  2177.     IN LPCSTR SubsystemName,
  2178.     IN LPVOID HandleId,
  2179.     IN BOOL GenerateOnClose
  2180.     );
  2181. WINADVAPI
  2182. BOOL
  2183. WINAPI
  2184. ObjectDeleteAuditAlarmW (
  2185.     IN LPCWSTR SubsystemName,
  2186.     IN LPVOID HandleId,
  2187.     IN BOOL GenerateOnClose
  2188.     );
  2189. #ifdef UNICODE
  2190. #define ObjectDeleteAuditAlarm  ObjectDeleteAuditAlarmW
  2191. #else
  2192. #define ObjectDeleteAuditAlarm  ObjectDeleteAuditAlarmA
  2193. #endif // !UNICODE
  2194. WINADVAPI
  2195. BOOL
  2196. WINAPI
  2197. PrivilegedServiceAuditAlarmA (
  2198.     IN LPCSTR SubsystemName,
  2199.     IN LPCSTR ServiceName,
  2200.     IN HANDLE ClientToken,
  2201.     IN PPRIVILEGE_SET Privileges,
  2202.     IN BOOL AccessGranted
  2203.     );
  2204. WINADVAPI
  2205. BOOL
  2206. WINAPI
  2207. PrivilegedServiceAuditAlarmW (
  2208.     IN LPCWSTR SubsystemName,
  2209.     IN LPCWSTR ServiceName,
  2210.     IN HANDLE ClientToken,
  2211.     IN PPRIVILEGE_SET Privileges,
  2212.     IN BOOL AccessGranted
  2213.     );
  2214. #ifdef UNICODE
  2215. #define PrivilegedServiceAuditAlarm  PrivilegedServiceAuditAlarmW
  2216. #else
  2217. #define PrivilegedServiceAuditAlarm  PrivilegedServiceAuditAlarmA
  2218. #endif // !UNICODE
  2219. #if(_WIN32_WINNT >= 0x0501)
  2220. typedef enum {
  2221.     WinNullSid                                  = 0,
  2222.     WinWorldSid                                 = 1,
  2223.     WinLocalSid                                 = 2,
  2224.     WinCreatorOwnerSid                          = 3,
  2225.     WinCreatorGroupSid                          = 4,
  2226.     WinCreatorOwnerServerSid                    = 5,
  2227.     WinCreatorGroupServerSid                    = 6,
  2228.     WinNtAuthoritySid                           = 7,
  2229.     WinDialupSid                                = 8,
  2230.     WinNetworkSid                               = 9,
  2231.     WinBatchSid                                 = 10,
  2232.     WinInteractiveSid                           = 11,
  2233.     WinServiceSid                               = 12,
  2234.     WinAnonymousSid                             = 13,
  2235.     WinProxySid                                 = 14,
  2236.     WinEnterpriseControllersSid                 = 15,
  2237.     WinSelfSid                                  = 16,
  2238.     WinAuthenticatedUserSid                     = 17,
  2239.     WinRestrictedCodeSid                        = 18,
  2240.     WinTerminalServerSid                        = 19,
  2241.     WinRemoteLogonIdSid                         = 20,
  2242.     WinLogonIdsSid                              = 21,
  2243.     WinLocalSystemSid                           = 22,
  2244.     WinLocalServiceSid                          = 23,
  2245.     WinNetworkServiceSid                        = 24,
  2246.     WinBuiltinDomainSid                         = 25,
  2247.     WinBuiltinAdministratorsSid                 = 26,
  2248.     WinBuiltinUsersSid                          = 27,
  2249.     WinBuiltinGuestsSid                         = 28,
  2250.     WinBuiltinPowerUsersSid                     = 29,
  2251.     WinBuiltinAccountOperatorsSid               = 30,
  2252.     WinBuiltinSystemOperatorsSid                = 31,
  2253.     WinBuiltinPrintOperatorsSid                 = 32,
  2254.     WinBuiltinBackupOperatorsSid                = 33,
  2255.     WinBuiltinReplicatorSid                     = 34,
  2256.     WinBuiltinPreWindows2000CompatibleAccessSid = 35,
  2257.     WinBuiltinRemoteDesktopUsersSid             = 36,
  2258.     WinBuiltinNetworkConfigurationOperatorsSid  = 37,
  2259.     WinAccountAdministratorSid                  = 38,
  2260.     WinAccountGuestSid                          = 39,
  2261.     WinAccountKrbtgtSid                         = 40,
  2262.     WinAccountDomainAdminsSid                   = 41,
  2263.     WinAccountDomainUsersSid                    = 42,
  2264.     WinAccountDomainGuestsSid                   = 43,
  2265.     WinAccountComputersSid                      = 44,
  2266.     WinAccountControllersSid                    = 45,
  2267.     WinAccountCertAdminsSid                     = 46,
  2268.     WinAccountSchemaAdminsSid                   = 47,
  2269.     WinAccountEnterpriseAdminsSid               = 48,
  2270.     WinAccountPolicyAdminsSid                   = 49,
  2271.     WinAccountRasAndIasServersSid               = 50,
  2272. } WELL_KNOWN_SID_TYPE;
  2273. WINADVAPI
  2274. BOOL
  2275. WINAPI
  2276. IsWellKnownSid (
  2277.     IN  PSID pSid,
  2278.     IN  WELL_KNOWN_SID_TYPE WellKnownSidType
  2279.     );
  2280. WINADVAPI
  2281. BOOL
  2282. WINAPI
  2283. CreateWellKnownSid(
  2284.     IN WELL_KNOWN_SID_TYPE WellKnownSidType,
  2285.     IN PSID DomainSid  OPTIONAL,
  2286.     OUT PSID pSid,
  2287.     IN OUT DWORD *cbSid
  2288.     );
  2289. WINADVAPI
  2290. BOOL
  2291. WINAPI
  2292. EqualDomainSid(
  2293.     IN PSID pSid1,
  2294.     IN PSID pSid2,
  2295.     OUT BOOL *pfEqual
  2296.     );
  2297. WINADVAPI
  2298. BOOL
  2299. WINAPI
  2300. GetWindowsAccountDomainSid(
  2301.     IN PSID pSid,
  2302.     OUT PSID ppDomainSid OPTIONAL,
  2303.     IN OUT DWORD *cbSid
  2304.     );
  2305. #endif //(_WIN32_WINNT >= 0x0501)
  2306. WINADVAPI
  2307. BOOL
  2308. WINAPI
  2309. IsValidSid (
  2310.     IN PSID pSid
  2311.     );
  2312. WINADVAPI
  2313. BOOL
  2314. WINAPI
  2315. EqualSid (
  2316.     IN PSID pSid1,
  2317.     IN PSID pSid2
  2318.     );
  2319. WINADVAPI
  2320. BOOL
  2321. WINAPI
  2322. EqualPrefixSid (
  2323.     PSID pSid1,
  2324.     PSID pSid2
  2325.     );
  2326. WINADVAPI
  2327. DWORD
  2328. WINAPI
  2329. GetSidLengthRequired (
  2330.     IN UCHAR nSubAuthorityCount
  2331.     );
  2332. WINADVAPI
  2333. BOOL
  2334. WINAPI
  2335. AllocateAndInitializeSid (
  2336.     IN PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
  2337.     IN BYTE nSubAuthorityCount,
  2338.     IN DWORD nSubAuthority0,
  2339.     IN DWORD nSubAuthority1,
  2340.     IN DWORD nSubAuthority2,
  2341.     IN DWORD nSubAuthority3,
  2342.     IN DWORD nSubAuthority4,
  2343.     IN DWORD nSubAuthority5,
  2344.     IN DWORD nSubAuthority6,
  2345.     IN DWORD nSubAuthority7,
  2346.     OUT PSID *pSid
  2347.     );
  2348. WINADVAPI
  2349. PVOID
  2350. WINAPI
  2351. FreeSid(
  2352.     IN PSID pSid
  2353.     );
  2354. WINADVAPI
  2355. BOOL
  2356. WINAPI
  2357. InitializeSid (
  2358.     OUT PSID Sid,
  2359.     IN PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
  2360.     IN BYTE nSubAuthorityCount
  2361.     );
  2362. WINADVAPI
  2363. PSID_IDENTIFIER_AUTHORITY
  2364. WINAPI
  2365. GetSidIdentifierAuthority (
  2366.     IN PSID pSid
  2367.     );
  2368. WINADVAPI
  2369. PDWORD
  2370. WINAPI
  2371. GetSidSubAuthority (
  2372.     IN PSID pSid,
  2373.     IN DWORD nSubAuthority
  2374.     );
  2375. WINADVAPI
  2376. PUCHAR
  2377. WINAPI
  2378. GetSidSubAuthorityCount (
  2379.     IN PSID pSid
  2380.     );
  2381. WINADVAPI
  2382. DWORD
  2383. WINAPI
  2384. GetLengthSid (
  2385.     IN PSID pSid
  2386.     );
  2387. WINADVAPI
  2388. BOOL
  2389. WINAPI
  2390. CopySid (
  2391.     IN DWORD nDestinationSidLength,
  2392.     OUT PSID pDestinationSid,
  2393.     IN PSID pSourceSid
  2394.     );
  2395. WINADVAPI
  2396. BOOL
  2397. WINAPI
  2398. AreAllAccessesGranted (
  2399.     IN DWORD GrantedAccess,
  2400.     IN DWORD DesiredAccess
  2401.     );
  2402. WINADVAPI
  2403. BOOL
  2404. WINAPI
  2405. AreAnyAccessesGranted (
  2406.     IN DWORD GrantedAccess,
  2407.     IN DWORD DesiredAccess
  2408.     );
  2409. WINADVAPI
  2410. VOID
  2411. WINAPI
  2412. MapGenericMask (
  2413.     OUT PDWORD AccessMask,
  2414.     IN PGENERIC_MAPPING GenericMapping
  2415.     );
  2416. WINADVAPI
  2417. BOOL
  2418. WINAPI
  2419. IsValidAcl (
  2420.     IN PACL pAcl
  2421.     );
  2422. WINADVAPI
  2423. BOOL
  2424. WINAPI
  2425. InitializeAcl (
  2426.     OUT PACL pAcl,
  2427.     IN DWORD nAclLength,
  2428.     IN DWORD dwAclRevision
  2429.     );
  2430. WINADVAPI
  2431. BOOL
  2432. WINAPI
  2433. GetAclInformation (
  2434.     IN PACL pAcl,
  2435.     OUT LPVOID pAclInformation,
  2436.     IN DWORD nAclInformationLength,
  2437.     IN ACL_INFORMATION_CLASS dwAclInformationClass
  2438.     );
  2439. WINADVAPI
  2440. BOOL
  2441. WINAPI
  2442. SetAclInformation (
  2443.     IN PACL pAcl,
  2444.     IN LPVOID pAclInformation,
  2445.     IN DWORD nAclInformationLength,
  2446.     IN ACL_INFORMATION_CLASS dwAclInformationClass
  2447.     );
  2448. WINADVAPI
  2449. BOOL
  2450. WINAPI
  2451. AddAce (
  2452.     IN OUT PACL pAcl,
  2453.     IN DWORD dwAceRevision,
  2454.     IN DWORD dwStartingAceIndex,
  2455.     IN LPVOID pAceList,
  2456.     IN DWORD nAceListLength
  2457.     );
  2458. WINADVAPI
  2459. BOOL
  2460. WINAPI
  2461. DeleteAce (
  2462.     IN OUT PACL pAcl,
  2463.     IN DWORD dwAceIndex
  2464.     );
  2465. WINADVAPI
  2466. BOOL
  2467. WINAPI
  2468. GetAce (
  2469.     IN PACL pAcl,
  2470.     IN DWORD dwAceIndex,
  2471.     OUT LPVOID *pAce
  2472.     );
  2473. WINADVAPI
  2474. BOOL
  2475. WINAPI
  2476. AddAccessAllowedAce (
  2477.     IN OUT PACL pAcl,
  2478.     IN DWORD dwAceRevision,
  2479.     IN DWORD AccessMask,
  2480.     IN PSID pSid
  2481.     );
  2482. #if(_WIN32_WINNT >= 0x0500)
  2483. WINADVAPI
  2484. BOOL
  2485. WINAPI
  2486. AddAccessAllowedAceEx (
  2487.     IN OUT PACL pAcl,
  2488.     IN DWORD dwAceRevision,
  2489.     IN DWORD AceFlags,
  2490.     IN DWORD AccessMask,
  2491.     IN PSID pSid
  2492.     );
  2493. #endif /* _WIN32_WINNT >=  0x0500 */
  2494. WINADVAPI
  2495. BOOL
  2496. WINAPI
  2497. AddAccessDeniedAce (
  2498.     IN OUT PACL pAcl,
  2499.     IN DWORD dwAceRevision,
  2500.     IN DWORD AccessMask,
  2501.     IN PSID pSid
  2502.     );
  2503. #if(_WIN32_WINNT >= 0x0500)
  2504. WINADVAPI
  2505. BOOL
  2506. WINAPI
  2507. AddAccessDeniedAceEx (
  2508.     IN OUT PACL pAcl,
  2509.     IN DWORD dwAceRevision,
  2510.     IN DWORD AceFlags,
  2511.     IN DWORD AccessMask,
  2512.     IN PSID pSid
  2513.     );
  2514. #endif /* _WIN32_WINNT >=  0x0500 */
  2515. WINADVAPI
  2516. BOOL
  2517. WINAPI
  2518. AddAuditAccessAce(
  2519.     IN OUT PACL pAcl,
  2520.     IN DWORD dwAceRevision,
  2521.     IN DWORD dwAccessMask,
  2522.     IN PSID pSid,
  2523.     IN BOOL bAuditSuccess,
  2524.     IN BOOL bAuditFailure
  2525.     );
  2526. #if(_WIN32_WINNT >= 0x0500)
  2527. WINADVAPI
  2528. BOOL
  2529. WINAPI
  2530. AddAuditAccessAceEx(
  2531.     IN OUT PACL pAcl,
  2532.     IN DWORD dwAceRevision,
  2533.     IN DWORD AceFlags,
  2534.     IN DWORD dwAccessMask,
  2535.     IN PSID pSid,
  2536.     IN BOOL bAuditSuccess,
  2537.     IN BOOL bAuditFailure
  2538.     );
  2539. WINADVAPI
  2540. BOOL
  2541. WINAPI
  2542. AddAccessAllowedObjectAce (
  2543.     IN OUT PACL pAcl,
  2544.     IN DWORD dwAceRevision,
  2545.     IN DWORD AceFlags,
  2546.     IN DWORD AccessMask,
  2547.     IN GUID *ObjectTypeGuid,
  2548.     IN GUID *InheritedObjectTypeGuid,
  2549.     IN PSID pSid
  2550.     );
  2551. WINADVAPI
  2552. BOOL
  2553. WINAPI
  2554. AddAccessDeniedObjectAce (
  2555.     IN OUT PACL pAcl,
  2556.     IN DWORD dwAceRevision,
  2557.     IN DWORD AceFlags,
  2558.     IN DWORD AccessMask,
  2559.     IN GUID *ObjectTypeGuid,
  2560.     IN GUID *InheritedObjectTypeGuid,
  2561.     IN PSID pSid
  2562.     );
  2563. WINADVAPI
  2564. BOOL
  2565. WINAPI
  2566. AddAuditAccessObjectAce (
  2567.     IN OUT PACL pAcl,
  2568.     IN DWORD dwAceRevision,
  2569.     IN DWORD AceFlags,
  2570.     IN DWORD AccessMask,
  2571.     IN GUID *ObjectTypeGuid,
  2572.     IN GUID *InheritedObjectTypeGuid,
  2573.     IN PSID pSid,
  2574.     IN BOOL bAuditSuccess,
  2575.     IN BOOL bAuditFailure
  2576.     );
  2577. #endif /* _WIN32_WINNT >=  0x0500 */
  2578. WINADVAPI
  2579. BOOL
  2580. WINAPI
  2581. FindFirstFreeAce (
  2582.     IN PACL pAcl,
  2583.     OUT LPVOID *pAce
  2584.     );
  2585. WINADVAPI
  2586. BOOL
  2587. WINAPI
  2588. InitializeSecurityDescriptor (
  2589.     OUT PSECURITY_DESCRIPTOR pSecurityDescriptor,
  2590.     IN DWORD dwRevision
  2591.     );
  2592. WINADVAPI
  2593. BOOL
  2594. WINAPI
  2595. IsValidSecurityDescriptor (
  2596.     IN PSECURITY_DESCRIPTOR pSecurityDescriptor
  2597.     );
  2598. WINADVAPI
  2599. DWORD
  2600. WINAPI
  2601. GetSecurityDescriptorLength (
  2602.     IN PSECURITY_DESCRIPTOR pSecurityDescriptor
  2603.     );
  2604. WINADVAPI
  2605. BOOL
  2606. WINAPI
  2607. GetSecurityDescriptorControl (
  2608.     IN PSECURITY_DESCRIPTOR pSecurityDescriptor,
  2609.     OUT PSECURITY_DESCRIPTOR_CONTROL pControl,
  2610.     OUT LPDWORD lpdwRevision
  2611.     );
  2612. #if(_WIN32_WINNT >= 0x0500)
  2613. WINADVAPI
  2614. BOOL
  2615. WINAPI
  2616. SetSecurityDescriptorControl (
  2617.     IN PSECURITY_DESCRIPTOR pSecurityDescriptor,
  2618.     IN SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest,
  2619.     IN SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet
  2620.     );
  2621. #endif /* _WIN32_WINNT >=  0x0500 */
  2622. WINADVAPI
  2623. BOOL
  2624. WINAPI
  2625. SetSecurityDescriptorDacl (
  2626.     IN OUT PSECURITY_DESCRIPTOR pSecurityDescriptor,
  2627.     IN BOOL bDaclPresent,
  2628.     IN PACL pDacl,
  2629.     IN BOOL bDaclDefaulted
  2630.     );
  2631. WINADVAPI
  2632. BOOL
  2633. WINAPI
  2634. GetSecurityDescriptorDacl (
  2635.     IN PSECURITY_DESCRIPTOR pSecurityDescriptor,
  2636.     OUT LPBOOL lpbDaclPresent,
  2637.     OUT PACL *pDacl,
  2638.     OUT LPBOOL lpbDaclDefaulted
  2639.     );
  2640. WINADVAPI
  2641. BOOL
  2642. WINAPI
  2643. SetSecurityDescriptorSacl (
  2644.     IN OUT PSECURITY_DESCRIPTOR pSecurityDescriptor,
  2645.     IN BOOL bSaclPresent,
  2646.     IN PACL pSacl,
  2647.     IN BOOL bSaclDefaulted
  2648.     );
  2649. WINADVAPI
  2650. BOOL
  2651. WINAPI
  2652. GetSecurityDescriptorSacl (
  2653.     IN PSECURITY_DESCRIPTOR pSecurityDescriptor,
  2654.     OUT LPBOOL lpbSaclPresent,
  2655.     OUT PACL *pSacl,
  2656.     OUT LPBOOL lpbSaclDefaulted
  2657.     );
  2658. WINADVAPI
  2659. BOOL
  2660. WINAPI
  2661. SetSecurityDescriptorOwner (
  2662.     IN OUT PSECURITY_DESCRIPTOR pSecurityDescriptor,
  2663.     IN PSID pOwner,
  2664.     IN BOOL bOwnerDefaulted
  2665.     );
  2666. WINADVAPI
  2667. BOOL
  2668. WINAPI
  2669. GetSecurityDescriptorOwner (
  2670.     IN PSECURITY_DESCRIPTOR pSecurityDescriptor,
  2671.     OUT PSID *pOwner,
  2672.     OUT LPBOOL lpbOwnerDefaulted
  2673.     );
  2674. WINADVAPI
  2675. BOOL
  2676. WINAPI
  2677. SetSecurityDescriptorGroup (
  2678.     IN OUT PSECURITY_DESCRIPTOR pSecurityDescriptor,
  2679.     IN PSID pGroup,
  2680.     IN BOOL bGroupDefaulted
  2681.     );
  2682. WINADVAPI
  2683. BOOL
  2684. WINAPI
  2685. GetSecurityDescriptorGroup (
  2686.     IN PSECURITY_DESCRIPTOR pSecurityDescriptor,
  2687.     OUT PSID *pGroup,
  2688.     OUT LPBOOL lpbGroupDefaulted
  2689.     );
  2690. WINADVAPI
  2691. DWORD
  2692. WINAPI
  2693. SetSecurityDescriptorRMControl(
  2694.     IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
  2695.     IN PUCHAR RMControl OPTIONAL
  2696.     );
  2697. WINADVAPI
  2698. DWORD
  2699. WINAPI
  2700. GetSecurityDescriptorRMControl(
  2701.     IN PSECURITY_DESCRIPTOR SecurityDescriptor,
  2702.     OUT PUCHAR RMControl
  2703.     );
  2704. WINADVAPI
  2705. BOOL
  2706. WINAPI
  2707. CreatePrivateObjectSecurity (
  2708.     IN PSECURITY_DESCRIPTOR ParentDescriptor,
  2709.     IN PSECURITY_DESCRIPTOR CreatorDescriptor,
  2710.     OUT PSECURITY_DESCRIPTOR * NewDescriptor,
  2711.     IN BOOL IsDirectoryObject,
  2712.     IN HANDLE Token,
  2713.     IN PGENERIC_MAPPING GenericMapping
  2714.     );
  2715. #if(_WIN32_WINNT >= 0x0500)
  2716. WINADVAPI
  2717. BOOL
  2718. WINAPI
  2719. ConvertToAutoInheritPrivateObjectSecurity(
  2720.     IN PSECURITY_DESCRIPTOR ParentDescriptor,
  2721.     IN PSECURITY_DESCRIPTOR CurrentSecurityDescriptor,
  2722.     OUT PSECURITY_DESCRIPTOR *NewSecurityDescriptor,
  2723.     IN GUID *ObjectType,
  2724.     IN BOOLEAN IsDirectoryObject,
  2725.     IN PGENERIC_MAPPING GenericMapping
  2726.     );
  2727. WINADVAPI
  2728. BOOL
  2729. WINAPI
  2730. CreatePrivateObjectSecurityEx (
  2731.     IN PSECURITY_DESCRIPTOR ParentDescriptor,
  2732.     IN PSECURITY_DESCRIPTOR CreatorDescriptor,
  2733.     OUT PSECURITY_DESCRIPTOR * NewDescriptor,
  2734.     IN GUID *ObjectType OPTIONAL,
  2735.     IN BOOL IsContainerObject,
  2736.     IN ULONG AutoInheritFlags,
  2737.     IN HANDLE Token,
  2738.     IN PGENERIC_MAPPING GenericMapping
  2739.     );
  2740. WINADVAPI
  2741. BOOL
  2742. WINAPI
  2743. CreatePrivateObjectSecurityWithMultipleInheritance (
  2744.     IN PSECURITY_DESCRIPTOR ParentDescriptor,
  2745.     IN PSECURITY_DESCRIPTOR CreatorDescriptor,
  2746.     OUT PSECURITY_DESCRIPTOR * NewDescriptor,
  2747.     IN GUID **ObjectTypes OPTIONAL,
  2748.     IN ULONG GuidCount,
  2749.     IN BOOL IsContainerObject,
  2750.     IN ULONG AutoInheritFlags,
  2751.     IN HANDLE Token,
  2752.     IN PGENERIC_MAPPING GenericMapping
  2753.     );
  2754. #endif /* _WIN32_WINNT >=  0x0500 */
  2755. WINADVAPI
  2756. BOOL
  2757. WINAPI
  2758. SetPrivateObjectSecurity (
  2759.     IN SECURITY_INFORMATION SecurityInformation,
  2760.     IN PSECURITY_DESCRIPTOR ModificationDescriptor,
  2761.     OUT PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
  2762.     IN PGENERIC_MAPPING GenericMapping,
  2763.     IN HANDLE Token
  2764.     );
  2765. #if(_WIN32_WINNT >= 0x0500)
  2766. WINADVAPI
  2767. BOOL
  2768. WINAPI
  2769. SetPrivateObjectSecurityEx (
  2770.     IN SECURITY_INFORMATION SecurityInformation,
  2771.     IN PSECURITY_DESCRIPTOR ModificationDescriptor,
  2772.     OUT PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
  2773.     IN ULONG AutoInheritFlags,
  2774.     IN PGENERIC_MAPPING GenericMapping,
  2775.     IN HANDLE Token OPTIONAL
  2776.     );
  2777. #endif /* _WIN32_WINNT >=  0x0500 */
  2778. WINADVAPI
  2779. BOOL
  2780. WINAPI
  2781. GetPrivateObjectSecurity (
  2782.     IN PSECURITY_DESCRIPTOR ObjectDescriptor,
  2783.     IN SECURITY_INFORMATION SecurityInformation,
  2784.     OUT PSECURITY_DESCRIPTOR ResultantDescriptor,
  2785.     IN DWORD DescriptorLength,
  2786.     OUT PDWORD ReturnLength
  2787.     );
  2788. WINADVAPI
  2789. BOOL
  2790. WINAPI
  2791. DestroyPrivateObjectSecurity (
  2792.     IN OUT PSECURITY_DESCRIPTOR * ObjectDescriptor
  2793.     );
  2794. WINADVAPI
  2795. BOOL
  2796. WINAPI
  2797. MakeSelfRelativeSD (
  2798.     IN PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,
  2799.     OUT PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
  2800.     OUT LPDWORD lpdwBufferLength
  2801.     );
  2802. WINADVAPI
  2803. BOOL
  2804. WINAPI
  2805. MakeAbsoluteSD (
  2806.     IN PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
  2807.     OUT PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,
  2808.     OUT LPDWORD lpdwAbsoluteSecurityDescriptorSize,
  2809.     OUT PACL pDacl,
  2810.     OUT LPDWORD lpdwDaclSize,
  2811.     OUT PACL pSacl,
  2812.     OUT LPDWORD lpdwSaclSize,
  2813.     OUT PSID pOwner,
  2814.     OUT LPDWORD lpdwOwnerSize,
  2815.     OUT PSID pPrimaryGroup,
  2816.     OUT LPDWORD lpdwPrimaryGroupSize
  2817.     );
  2818. WINADVAPI
  2819. BOOL
  2820. WINAPI
  2821. MakeAbsoluteSD2 (
  2822.     IN PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
  2823.     OUT LPDWORD lpdwBufferSize
  2824.     );
  2825. WINADVAPI
  2826. BOOL
  2827. WINAPI
  2828. SetFileSecurityA (
  2829.     IN LPCSTR lpFileName,
  2830.     IN SECURITY_INFORMATION SecurityInformation,
  2831.     IN PSECURITY_DESCRIPTOR pSecurityDescriptor
  2832.     );
  2833. WINADVAPI
  2834. BOOL
  2835. WINAPI
  2836. SetFileSecurityW (
  2837.     IN LPCWSTR lpFileName,
  2838.     IN SECURITY_INFORMATION SecurityInformation,
  2839.     IN PSECURITY_DESCRIPTOR pSecurityDescriptor
  2840.     );
  2841. #ifdef UNICODE
  2842. #define SetFileSecurity  SetFileSecurityW
  2843. #else
  2844. #define SetFileSecurity  SetFileSecurityA
  2845. #endif // !UNICODE
  2846. WINADVAPI
  2847. BOOL
  2848. WINAPI
  2849. GetFileSecurityA (
  2850.     IN LPCSTR lpFileName,
  2851.     IN SECURITY_INFORMATION RequestedInformation,
  2852.     OUT PSECURITY_DESCRIPTOR pSecurityDescriptor,
  2853.     IN DWORD nLength,
  2854.     OUT LPDWORD lpnLengthNeeded
  2855.     );
  2856. WINADVAPI
  2857. BOOL
  2858. WINAPI
  2859. GetFileSecurityW (
  2860.     IN LPCWSTR lpFileName,
  2861.     IN SECURITY_INFORMATION RequestedInformation,
  2862.     OUT PSECURITY_DESCRIPTOR pSecurityDescriptor,
  2863.     IN DWORD nLength,
  2864.     OUT LPDWORD lpnLengthNeeded
  2865.     );
  2866. #ifdef UNICODE
  2867. #define GetFileSecurity  GetFileSecurityW
  2868. #else
  2869. #define GetFileSecurity  GetFileSecurityA
  2870. #endif // !UNICODE
  2871. WINADVAPI
  2872. BOOL
  2873. WINAPI
  2874. SetKernelObjectSecurity (
  2875.     IN HANDLE Handle,
  2876.     IN SECURITY_INFORMATION SecurityInformation,
  2877.     IN PSECURITY_DESCRIPTOR SecurityDescriptor
  2878.     );
  2879. WINBASEAPI
  2880. HANDLE
  2881. WINAPI
  2882. FindFirstChangeNotificationA(
  2883.     IN LPCSTR lpPathName,
  2884.     IN BOOL bWatchSubtree,
  2885.     IN DWORD dwNotifyFilter
  2886.     );
  2887. WINBASEAPI
  2888. HANDLE
  2889. WINAPI
  2890. FindFirstChangeNotificationW(
  2891.     IN LPCWSTR lpPathName,
  2892.     IN BOOL bWatchSubtree,
  2893.     IN DWORD dwNotifyFilter
  2894.     );
  2895. #ifdef UNICODE
  2896. #define FindFirstChangeNotification  FindFirstChangeNotificationW
  2897. #else
  2898. #define FindFirstChangeNotification  FindFirstChangeNotificationA
  2899. #endif // !UNICODE
  2900. WINBASEAPI
  2901. BOOL
  2902. WINAPI
  2903. FindNextChangeNotification(
  2904.     IN HANDLE hChangeHandle
  2905.     );
  2906. WINBASEAPI
  2907. BOOL
  2908. WINAPI
  2909. FindCloseChangeNotification(
  2910.     IN HANDLE hChangeHandle
  2911.     );
  2912. #if(_WIN32_WINNT >= 0x0400)
  2913. WINBASEAPI
  2914. BOOL
  2915. WINAPI
  2916. ReadDirectoryChangesW(
  2917.     IN HANDLE hDirectory,
  2918.     IN OUT LPVOID lpBuffer,
  2919.     IN DWORD nBufferLength,
  2920.     IN BOOL bWatchSubtree,
  2921.     IN DWORD dwNotifyFilter,
  2922.     OUT LPDWORD lpBytesReturned,
  2923.     IN LPOVERLAPPED lpOverlapped,
  2924.     IN LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
  2925.     );
  2926. #endif /* _WIN32_WINNT >= 0x0400 */
  2927. WINBASEAPI
  2928. BOOL
  2929. WINAPI
  2930. VirtualLock(
  2931.     IN LPVOID lpAddress,
  2932.     IN SIZE_T dwSize
  2933.     );
  2934. WINBASEAPI
  2935. BOOL
  2936. WINAPI
  2937. VirtualUnlock(
  2938.     IN LPVOID lpAddress,
  2939.     IN SIZE_T dwSize
  2940.     );
  2941. WINBASEAPI
  2942. LPVOID
  2943. WINAPI
  2944. MapViewOfFileEx(
  2945.     IN HANDLE hFileMappingObject,
  2946.     IN DWORD dwDesiredAccess,
  2947.     IN DWORD dwFileOffsetHigh,
  2948.     IN DWORD dwFileOffsetLow,
  2949.     IN SIZE_T dwNumberOfBytesToMap,
  2950.     IN LPVOID lpBaseAddress
  2951.     );
  2952. WINBASEAPI
  2953. BOOL
  2954. WINAPI
  2955. SetPriorityClass(
  2956.     IN HANDLE hProcess,
  2957.     IN DWORD dwPriorityClass
  2958.     );
  2959. WINBASEAPI
  2960. DWORD
  2961. WINAPI
  2962. GetPriorityClass(
  2963.     IN HANDLE hProcess
  2964.     );
  2965. WINBASEAPI
  2966. BOOL
  2967. WINAPI
  2968. IsBadReadPtr(
  2969.     IN CONST VOID *lp,
  2970.     IN UINT_PTR ucb
  2971.     );
  2972. WINBASEAPI
  2973. BOOL
  2974. WINAPI
  2975. IsBadWritePtr(
  2976.     IN LPVOID lp,
  2977.     IN UINT_PTR ucb
  2978.     );
  2979. WINBASEAPI
  2980. BOOL
  2981. WINAPI
  2982. IsBadHugeReadPtr(
  2983.     IN CONST VOID *lp,
  2984.     IN UINT_PTR ucb
  2985.     );
  2986. WINBASEAPI
  2987. BOOL
  2988. WINAPI
  2989. IsBadHugeWritePtr(
  2990.     IN LPVOID lp,
  2991.     IN UINT_PTR ucb
  2992.     );
  2993. WINBASEAPI
  2994. BOOL
  2995. WINAPI
  2996. IsBadCodePtr(
  2997.     IN FARPROC lpfn
  2998.     );
  2999. WINBASEAPI
  3000. BOOL
  3001. WINAPI
  3002. IsBadStringPtrA(
  3003.     IN LPCSTR lpsz,
  3004.     IN UINT_PTR ucchMax
  3005.     );
  3006. WINBASEAPI
  3007. BOOL
  3008. WINAPI
  3009. IsBadStringPtrW(
  3010.     IN LPCWSTR lpsz,
  3011.     IN UINT_PTR ucchMax
  3012.     );
  3013. #ifdef UNICODE
  3014. #define IsBadStringPtr  IsBadStringPtrW
  3015. #else
  3016. #define IsBadStringPtr  IsBadStringPtrA
  3017. #endif // !UNICODE
  3018. WINADVAPI
  3019. BOOL
  3020. WINAPI
  3021. LookupAccountSidA(
  3022.     IN LPCSTR lpSystemName,
  3023.     IN PSID Sid,
  3024.     OUT LPSTR Name,
  3025.     IN OUT LPDWORD cbName,
  3026.     OUT LPSTR ReferencedDomainName,
  3027.     IN OUT LPDWORD cbReferencedDomainName,
  3028.     OUT PSID_NAME_USE peUse
  3029.     );
  3030. WINADVAPI
  3031. BOOL
  3032. WINAPI
  3033. LookupAccountSidW(
  3034.     IN LPCWSTR lpSystemName,
  3035.     IN PSID Sid,
  3036.     OUT LPWSTR Name,
  3037.     IN OUT LPDWORD cbName,
  3038.     OUT LPWSTR ReferencedDomainName,
  3039.     IN OUT LPDWORD cbReferencedDomainName,
  3040.     OUT PSID_NAME_USE peUse
  3041.     );
  3042. #ifdef UNICODE
  3043. #define LookupAccountSid  LookupAccountSidW
  3044. #else
  3045. #define LookupAccountSid  LookupAccountSidA
  3046. #endif // !UNICODE
  3047. WINADVAPI
  3048. BOOL
  3049. WINAPI
  3050. LookupAccountNameA(
  3051.     IN LPCSTR lpSystemName,
  3052.     IN LPCSTR lpAccountName,
  3053.     OUT PSID Sid,
  3054.     IN OUT LPDWORD cbSid,
  3055.     OUT LPSTR ReferencedDomainName,
  3056.     IN OUT LPDWORD cbReferencedDomainName,
  3057.     OUT PSID_NAME_USE peUse
  3058.     );
  3059. WINADVAPI
  3060. BOOL
  3061. WINAPI
  3062. LookupAccountNameW(
  3063.     IN LPCWSTR lpSystemName,
  3064.     IN LPCWSTR lpAccountName,
  3065.     OUT PSID Sid,
  3066.     IN OUT LPDWORD cbSid,
  3067.     OUT LPWSTR ReferencedDomainName,
  3068.     IN OUT LPDWORD cbReferencedDomainName,
  3069.     OUT PSID_NAME_USE peUse
  3070.     );
  3071. #ifdef UNICODE
  3072. #define LookupAccountName  LookupAccountNameW
  3073. #else
  3074. #define LookupAccountName  LookupAccountNameA
  3075. #endif // !UNICODE
  3076. WINADVAPI
  3077. BOOL
  3078. WINAPI
  3079. LookupPrivilegeValueA(
  3080.     IN LPCSTR lpSystemName,
  3081.     IN LPCSTR lpName,
  3082.     OUT PLUID   lpLuid
  3083.     );
  3084. WINADVAPI
  3085. BOOL
  3086. WINAPI
  3087. LookupPrivilegeValueW(
  3088.     IN LPCWSTR lpSystemName,
  3089.     IN LPCWSTR lpName,
  3090.     OUT PLUID   lpLuid
  3091.     );
  3092. #ifdef UNICODE
  3093. #define LookupPrivilegeValue  LookupPrivilegeValueW
  3094. #else
  3095. #define LookupPrivilegeValue  LookupPrivilegeValueA
  3096. #endif // !UNICODE
  3097. WINADVAPI
  3098. BOOL
  3099. WINAPI
  3100. LookupPrivilegeNameA(
  3101.     IN LPCSTR lpSystemName,
  3102.     IN PLUID   lpLuid,
  3103.     OUT LPSTR lpName,
  3104.     IN OUT LPDWORD cbName
  3105.     );
  3106. WINADVAPI
  3107. BOOL
  3108. WINAPI
  3109. LookupPrivilegeNameW(
  3110.     IN LPCWSTR lpSystemName,
  3111.     IN PLUID   lpLuid,
  3112.     OUT LPWSTR lpName,
  3113.     IN OUT LPDWORD cbName
  3114.     );
  3115. #ifdef UNICODE
  3116. #define LookupPrivilegeName  LookupPrivilegeNameW
  3117. #else
  3118. #define LookupPrivilegeName  LookupPrivilegeNameA
  3119. #endif // !UNICODE
  3120. WINADVAPI
  3121. BOOL
  3122. WINAPI
  3123. LookupPrivilegeDisplayNameA(
  3124.     IN LPCSTR lpSystemName,
  3125.     IN LPCSTR lpName,
  3126.     OUT LPSTR lpDisplayName,
  3127.     IN OUT LPDWORD cbDisplayName,
  3128.     OUT LPDWORD lpLanguageId
  3129.     );
  3130. WINADVAPI
  3131. BOOL
  3132. WINAPI
  3133. LookupPrivilegeDisplayNameW(
  3134.     IN LPCWSTR lpSystemName,
  3135.     IN LPCWSTR lpName,
  3136.     OUT LPWSTR lpDisplayName,
  3137.     IN OUT LPDWORD cbDisplayName,
  3138.     OUT LPDWORD lpLanguageId
  3139.     );
  3140. #ifdef UNICODE
  3141. #define LookupPrivilegeDisplayName  LookupPrivilegeDisplayNameW
  3142. #else
  3143. #define LookupPrivilegeDisplayName  LookupPrivilegeDisplayNameA
  3144. #endif // !UNICODE
  3145. WINADVAPI
  3146. BOOL
  3147. WINAPI
  3148. AllocateLocallyUniqueId(
  3149.     OUT PLUID Luid
  3150.     );
  3151. WINBASEAPI
  3152. BOOL
  3153. WINAPI
  3154. BuildCommDCBA(
  3155.     IN LPCSTR lpDef,
  3156.     OUT LPDCB lpDCB
  3157.     );
  3158. WINBASEAPI
  3159. BOOL
  3160. WINAPI
  3161. BuildCommDCBW(
  3162.     IN LPCWSTR lpDef,
  3163.     OUT LPDCB lpDCB
  3164.     );
  3165. #ifdef UNICODE
  3166. #define BuildCommDCB  BuildCommDCBW
  3167. #else
  3168. #define BuildCommDCB  BuildCommDCBA
  3169. #endif // !UNICODE
  3170. WINBASEAPI
  3171. BOOL
  3172. WINAPI
  3173. BuildCommDCBAndTimeoutsA(
  3174.     IN LPCSTR lpDef,
  3175.     OUT LPDCB lpDCB,
  3176.     IN LPCOMMTIMEOUTS lpCommTimeouts
  3177.     );
  3178. WINBASEAPI
  3179. BOOL
  3180. WINAPI
  3181. BuildCommDCBAndTimeoutsW(
  3182.     IN LPCWSTR lpDef,
  3183.     OUT LPDCB lpDCB,
  3184.     IN LPCOMMTIMEOUTS lpCommTimeouts
  3185.     );
  3186. #ifdef UNICODE
  3187. #define BuildCommDCBAndTimeouts  BuildCommDCBAndTimeoutsW
  3188. #else
  3189. #define BuildCommDCBAndTimeouts  BuildCommDCBAndTimeoutsA
  3190. #endif // !UNICODE
  3191. WINBASEAPI
  3192. BOOL
  3193. WINAPI
  3194. CommConfigDialogA(
  3195.     IN LPCSTR lpszName,
  3196.     IN HWND hWnd,
  3197.     IN OUT LPCOMMCONFIG lpCC
  3198.     );
  3199. WINBASEAPI
  3200. BOOL
  3201. WINAPI
  3202. CommConfigDialogW(
  3203.     IN LPCWSTR lpszName,
  3204.     IN HWND hWnd,
  3205.     IN OUT LPCOMMCONFIG lpCC
  3206.     );
  3207. #ifdef UNICODE
  3208. #define CommConfigDialog  CommConfigDialogW
  3209. #else
  3210. #define CommConfigDialog  CommConfigDialogA
  3211. #endif // !UNICODE
  3212. WINBASEAPI
  3213. BOOL
  3214. WINAPI
  3215. GetDefaultCommConfigA(
  3216.     IN LPCSTR lpszName,
  3217.     OUT LPCOMMCONFIG lpCC,
  3218.     IN OUT LPDWORD lpdwSize
  3219.     );
  3220. WINBASEAPI
  3221. BOOL
  3222. WINAPI
  3223. GetDefaultCommConfigW(
  3224.     IN LPCWSTR lpszName,
  3225.     OUT LPCOMMCONFIG lpCC,
  3226.     IN OUT LPDWORD lpdwSize
  3227.     );
  3228. #ifdef UNICODE
  3229. #define GetDefaultCommConfig  GetDefaultCommConfigW
  3230. #else
  3231. #define GetDefaultCommConfig  GetDefaultCommConfigA
  3232. #endif // !UNICODE
  3233. WINBASEAPI
  3234. BOOL
  3235. WINAPI
  3236. SetDefaultCommConfigA(
  3237.     IN LPCSTR lpszName,
  3238.     IN LPCOMMCONFIG lpCC,
  3239.     IN DWORD dwSize
  3240.     );
  3241. WINBASEAPI
  3242. BOOL
  3243. WINAPI
  3244. SetDefaultCommConfigW(
  3245.     IN LPCWSTR lpszName,
  3246.     IN LPCOMMCONFIG lpCC,
  3247.     IN DWORD dwSize
  3248.     );
  3249. #ifdef UNICODE
  3250. #define SetDefaultCommConfig  SetDefaultCommConfigW
  3251. #else
  3252. #define SetDefaultCommConfig  SetDefaultCommConfigA
  3253. #endif // !UNICODE
  3254. #ifndef _MAC
  3255. #define MAX_COMPUTERNAME_LENGTH 15
  3256. #else
  3257. #define MAX_COMPUTERNAME_LENGTH 31
  3258. #endif
  3259. WINBASEAPI
  3260. BOOL
  3261. WINAPI
  3262. GetComputerNameA (
  3263.     OUT LPSTR lpBuffer,
  3264.     IN OUT LPDWORD nSize
  3265.     );
  3266. WINBASEAPI
  3267. BOOL
  3268. WINAPI
  3269. GetComputerNameW (
  3270.     OUT LPWSTR lpBuffer,
  3271.     IN OUT LPDWORD nSize
  3272.     );
  3273. #ifdef UNICODE
  3274. #define GetComputerName  GetComputerNameW
  3275. #else
  3276. #define GetComputerName  GetComputerNameA
  3277. #endif // !UNICODE
  3278. WINBASEAPI
  3279. BOOL
  3280. WINAPI
  3281. SetComputerNameA (
  3282.     IN LPCSTR lpComputerName
  3283.     );
  3284. WINBASEAPI
  3285. BOOL
  3286. WINAPI
  3287. SetComputerNameW (
  3288.     IN LPCWSTR lpComputerName
  3289.     );
  3290. #ifdef UNICODE
  3291. #define SetComputerName  SetComputerNameW
  3292. #else
  3293. #define SetComputerName  SetComputerNameA
  3294. #endif // !UNICODE
  3295. #if (_WIN32_WINNT >= 0x0500)
  3296. typedef enum _COMPUTER_NAME_FORMAT {
  3297.     ComputerNameNetBIOS,
  3298.     ComputerNameDnsHostname,
  3299.     ComputerNameDnsDomain,
  3300.     ComputerNameDnsFullyQualified,
  3301.     ComputerNamePhysicalNetBIOS,
  3302.     ComputerNamePhysicalDnsHostname,
  3303.     ComputerNamePhysicalDnsDomain,
  3304.     ComputerNamePhysicalDnsFullyQualified,
  3305.     ComputerNameMax
  3306. } COMPUTER_NAME_FORMAT ;
  3307. WINBASEAPI
  3308. BOOL
  3309. WINAPI
  3310. GetComputerNameExA (
  3311.     IN COMPUTER_NAME_FORMAT NameType,
  3312.     OUT LPSTR lpBuffer,
  3313.     IN OUT LPDWORD nSize
  3314.     );
  3315. WINBASEAPI
  3316. BOOL
  3317. WINAPI
  3318. GetComputerNameExW (
  3319.     IN COMPUTER_NAME_FORMAT NameType,
  3320.     OUT LPWSTR lpBuffer,
  3321.     IN OUT LPDWORD nSize
  3322.     );
  3323. #ifdef UNICODE
  3324. #define GetComputerNameEx  GetComputerNameExW
  3325. #else
  3326. #define GetComputerNameEx  GetComputerNameExA
  3327. #endif // !UNICODE
  3328. WINBASEAPI
  3329. BOOL
  3330. WINAPI
  3331. SetComputerNameExA (
  3332.     IN COMPUTER_NAME_FORMAT NameType,
  3333.     IN LPCSTR lpBuffer
  3334.     );
  3335. WINBASEAPI
  3336. BOOL
  3337. WINAPI
  3338. SetComputerNameExW (
  3339.     IN COMPUTER_NAME_FORMAT NameType,
  3340.     IN LPCWSTR lpBuffer
  3341.     );
  3342. #ifdef UNICODE
  3343. #define SetComputerNameEx  SetComputerNameExW
  3344. #else
  3345. #define SetComputerNameEx  SetComputerNameExA
  3346. #endif // !UNICODE
  3347.     
  3348. WINBASEAPI
  3349. DWORD
  3350. WINAPI
  3351. AddLocalAlternateComputerNameA (
  3352.     IN LPCSTR lpDnsFQHostname,
  3353.     IN ULONG    ulFlags
  3354.     );
  3355. WINBASEAPI
  3356. DWORD
  3357. WINAPI
  3358. AddLocalAlternateComputerNameW (
  3359.     IN LPCWSTR lpDnsFQHostname,
  3360.     IN ULONG    ulFlags
  3361.     );
  3362. #ifdef UNICODE
  3363. #define AddLocalAlternateComputerName  AddLocalAlternateComputerNameW
  3364. #else
  3365. #define AddLocalAlternateComputerName  AddLocalAlternateComputerNameA
  3366. #endif // !UNICODE
  3367. WINBASEAPI
  3368. DWORD
  3369. WINAPI
  3370. RemoveLocalAlternateComputerNameA (
  3371.     IN LPCSTR lpAltDnsFQHostname,
  3372.     IN ULONG    ulFlags
  3373.     );
  3374. WINBASEAPI
  3375. DWORD
  3376. WINAPI
  3377. RemoveLocalAlternateComputerNameW (
  3378.     IN LPCWSTR lpAltDnsFQHostname,
  3379.     IN ULONG    ulFlags
  3380.     );
  3381. #ifdef UNICODE
  3382. #define RemoveLocalAlternateComputerName  RemoveLocalAlternateComputerNameW
  3383. #else
  3384. #define RemoveLocalAlternateComputerName  RemoveLocalAlternateComputerNameA
  3385. #endif // !UNICODE
  3386. WINBASEAPI
  3387. DWORD
  3388. WINAPI
  3389. SetLocalPrimaryComputerNameA (
  3390.     IN LPCSTR  lpAltDnsFQHostname,
  3391.     IN ULONG     ulFlags
  3392.     );
  3393. WINBASEAPI
  3394. DWORD
  3395. WINAPI
  3396. SetLocalPrimaryComputerNameW (
  3397.     IN LPCWSTR  lpAltDnsFQHostname,
  3398.     IN ULONG     ulFlags
  3399.     );
  3400. #ifdef UNICODE
  3401. #define SetLocalPrimaryComputerName  SetLocalPrimaryComputerNameW
  3402. #else
  3403. #define SetLocalPrimaryComputerName  SetLocalPrimaryComputerNameA
  3404. #endif // !UNICODE
  3405. typedef enum _COMPUTER_NAME_TYPE {
  3406.     PrimaryComputerName,
  3407.     AlternateComputerNames,
  3408.     AllComputerNames,
  3409.     ComputerNameTypeMax
  3410. } COMPUTER_NAME_TYPE ;
  3411. WINBASEAPI
  3412. DWORD
  3413. WINAPI
  3414. EnumerateLocalComputerNamesA (
  3415.     IN COMPUTER_NAME_TYPE        NameType,
  3416.     IN ULONG                     ulFlags,
  3417.     IN OUT LPSTR               lpDnsFQHostname,
  3418.     IN OUT LPDWORD               nSize
  3419.     );
  3420. WINBASEAPI
  3421. DWORD
  3422. WINAPI
  3423. EnumerateLocalComputerNamesW (
  3424.     IN COMPUTER_NAME_TYPE        NameType,
  3425.     IN ULONG                     ulFlags,
  3426.     IN OUT LPWSTR               lpDnsFQHostname,
  3427.     IN OUT LPDWORD               nSize
  3428.     );
  3429. #ifdef UNICODE
  3430. #define EnumerateLocalComputerNames  EnumerateLocalComputerNamesW
  3431. #else
  3432. #define EnumerateLocalComputerNames  EnumerateLocalComputerNamesA
  3433. #endif // !UNICODE
  3434. WINBASEAPI
  3435. BOOL
  3436. WINAPI
  3437. DnsHostnameToComputerNameA (
  3438.     IN LPCSTR Hostname,
  3439.     OUT LPSTR ComputerName,
  3440.     IN OUT LPDWORD nSize
  3441.     );
  3442. WINBASEAPI
  3443. BOOL
  3444. WINAPI
  3445. DnsHostnameToComputerNameW (
  3446.     IN LPCWSTR Hostname,
  3447.     OUT LPWSTR ComputerName,
  3448.     IN OUT LPDWORD nSize
  3449.     );
  3450. #ifdef UNICODE
  3451. #define DnsHostnameToComputerName  DnsHostnameToComputerNameW
  3452. #else
  3453. #define DnsHostnameToComputerName  DnsHostnameToComputerNameA
  3454. #endif // !UNICODE
  3455. #endif // _WIN32_WINNT
  3456. WINADVAPI
  3457. BOOL
  3458. WINAPI
  3459. GetUserNameA (
  3460.     OUT LPSTR lpBuffer,
  3461.     IN OUT LPDWORD nSize
  3462.     );
  3463. WINADVAPI
  3464. BOOL
  3465. WINAPI
  3466. GetUserNameW (
  3467.     OUT LPWSTR lpBuffer,
  3468.     IN OUT LPDWORD nSize
  3469.     );
  3470. #ifdef UNICODE
  3471. #define GetUserName  GetUserNameW
  3472. #else
  3473. #define GetUserName  GetUserNameA
  3474. #endif // !UNICODE
  3475. //
  3476. // Logon Support APIs
  3477. //
  3478. #define LOGON32_LOGON_INTERACTIVE       2
  3479. #define LOGON32_LOGON_NETWORK           3
  3480. #define LOGON32_LOGON_BATCH             4
  3481. #define LOGON32_LOGON_SERVICE           5
  3482. #define LOGON32_LOGON_UNLOCK            7
  3483. #if(_WIN32_WINNT >= 0x0500)
  3484. #define LOGON32_LOGON_NETWORK_CLEARTEXT 8
  3485. #define LOGON32_LOGON_NEW_CREDENTIALS   9
  3486. #endif // (_WIN32_WINNT >= 0x0500)
  3487. #define LOGON32_PROVIDER_DEFAULT    0
  3488. #define LOGON32_PROVIDER_WINNT35    1
  3489. #if(_WIN32_WINNT >= 0x0400)
  3490. #define LOGON32_PROVIDER_WINNT40    2
  3491. #endif /* _WIN32_WINNT >= 0x0400 */
  3492. #if(_WIN32_WINNT >= 0x0500)
  3493. #define LOGON32_PROVIDER_WINNT50    3
  3494. #endif // (_WIN32_WINNT >= 0x0500)
  3495. WINADVAPI
  3496. BOOL
  3497. WINAPI
  3498. LogonUserA (
  3499.     IN LPSTR lpszUsername,
  3500.     IN LPSTR lpszDomain,
  3501.     IN LPSTR lpszPassword,
  3502.     IN DWORD dwLogonType,
  3503.     IN DWORD dwLogonProvider,
  3504.     OUT PHANDLE phToken
  3505.     );
  3506. WINADVAPI
  3507. BOOL
  3508. WINAPI
  3509. LogonUserW (
  3510.     IN LPWSTR lpszUsername,
  3511.     IN LPWSTR lpszDomain,
  3512.     IN LPWSTR lpszPassword,
  3513.     IN DWORD dwLogonType,
  3514.     IN DWORD dwLogonProvider,
  3515.     OUT PHANDLE phToken
  3516.     );
  3517. #ifdef UNICODE
  3518. #define LogonUser  LogonUserW
  3519. #else
  3520. #define LogonUser  LogonUserA
  3521. #endif // !UNICODE
  3522. WINADVAPI
  3523. BOOL
  3524. WINAPI
  3525. LogonUserExA (
  3526.     IN LPSTR lpszUsername,
  3527.     IN LPSTR lpszDomain,
  3528.     IN LPSTR lpszPassword,
  3529.     IN DWORD dwLogonType,
  3530.     IN DWORD dwLogonProvider,
  3531.     OUT PHANDLE phToken           OPTIONAL,
  3532.     OUT PSID  *ppLogonSid       OPTIONAL,
  3533.     OUT PVOID *ppProfileBuffer  OPTIONAL,
  3534.     OUT LPDWORD pdwProfileLength  OPTIONAL,
  3535.     OUT PQUOTA_LIMITS pQuotaLimits OPTIONAL
  3536.     );
  3537. WINADVAPI
  3538. BOOL
  3539. WINAPI
  3540. LogonUserExW (
  3541.     IN LPWSTR lpszUsername,
  3542.     IN LPWSTR lpszDomain,
  3543.     IN LPWSTR lpszPassword,
  3544.     IN DWORD dwLogonType,
  3545.     IN DWORD dwLogonProvider,
  3546.     OUT PHANDLE phToken           OPTIONAL,
  3547.     OUT PSID  *ppLogonSid       OPTIONAL,
  3548.     OUT PVOID *ppProfileBuffer  OPTIONAL,
  3549.     OUT LPDWORD pdwProfileLength  OPTIONAL,
  3550.     OUT PQUOTA_LIMITS pQuotaLimits OPTIONAL
  3551.     );
  3552. #ifdef UNICODE
  3553. #define LogonUserEx  LogonUserExW
  3554. #else
  3555. #define LogonUserEx  LogonUserExA
  3556. #endif // !UNICODE
  3557. WINADVAPI
  3558. BOOL
  3559. WINAPI
  3560. ImpersonateLoggedOnUser(
  3561.     IN HANDLE  hToken
  3562.     );
  3563. WINADVAPI
  3564. BOOL
  3565. WINAPI
  3566. CreateProcessAsUserA (
  3567.     IN HANDLE hToken,
  3568.     IN LPCSTR lpApplicationName,
  3569.     IN LPSTR lpCommandLine,
  3570.     IN LPSECURITY_ATTRIBUTES lpProcessAttributes,
  3571.     IN LPSECURITY_ATTRIBUTES lpThreadAttributes,
  3572.     IN BOOL bInheritHandles,
  3573.     IN DWORD dwCreationFlags,
  3574.     IN LPVOID lpEnvironment,
  3575.     IN LPCSTR lpCurrentDirectory,
  3576.     IN LPSTARTUPINFOA lpStartupInfo,
  3577.     OUT LPPROCESS_INFORMATION lpProcessInformation
  3578.     );
  3579. WINADVAPI
  3580. BOOL
  3581. WINAPI
  3582. CreateProcessAsUserW (
  3583.     IN HANDLE hToken,
  3584.     IN LPCWSTR lpApplicationName,
  3585.     IN LPWSTR lpCommandLine,
  3586.     IN LPSECURITY_ATTRIBUTES lpProcessAttributes,
  3587.     IN LPSECURITY_ATTRIBUTES lpThreadAttributes,
  3588.     IN BOOL bInheritHandles,
  3589.     IN DWORD dwCreationFlags,
  3590.     IN LPVOID lpEnvironment,
  3591.     IN LPCWSTR lpCurrentDirectory,
  3592.     IN LPSTARTUPINFOW lpStartupInfo,
  3593.     OUT LPPROCESS_INFORMATION lpProcessInformation
  3594.     );
  3595. #ifdef UNICODE
  3596. #define CreateProcessAsUser  CreateProcessAsUserW
  3597. #else
  3598. #define CreateProcessAsUser  CreateProcessAsUserA
  3599. #endif // !UNICODE
  3600. #if(_WIN32_WINNT >= 0x0500)
  3601. //
  3602. // LogonFlags
  3603. //
  3604. #define LOGON_WITH_PROFILE              0x00000001
  3605. #define LOGON_NETCREDENTIALS_ONLY       0x00000002
  3606. WINADVAPI
  3607. BOOL
  3608. WINAPI
  3609. CreateProcessWithLogonW(
  3610.       LPCWSTR lpUsername,
  3611.       LPCWSTR lpDomain,
  3612.       LPCWSTR lpPassword,
  3613.       DWORD   dwLogonFlags,
  3614.       LPCWSTR lpApplicationName,
  3615.       LPWSTR lpCommandLine,
  3616.       DWORD dwCreationFlags,
  3617.       LPVOID lpEnvironment,
  3618.       LPCWSTR lpCurrentDirectory,
  3619.       LPSTARTUPINFOW lpStartupInfo,
  3620.       LPPROCESS_INFORMATION lpProcessInformation
  3621.       );
  3622. #endif // (_WIN32_WINNT >= 0x0500)
  3623. WINADVAPI
  3624. BOOL
  3625. APIENTRY
  3626. ImpersonateAnonymousToken(
  3627.     IN HANDLE ThreadHandle
  3628.     );
  3629. WINADVAPI
  3630. BOOL
  3631. WINAPI
  3632. DuplicateTokenEx(
  3633.     IN HANDLE hExistingToken,
  3634.     IN DWORD dwDesiredAccess,
  3635.     IN LPSECURITY_ATTRIBUTES lpTokenAttributes,
  3636.     IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
  3637.     IN TOKEN_TYPE TokenType,
  3638.     OUT PHANDLE phNewToken);
  3639. WINADVAPI
  3640. BOOL
  3641. APIENTRY
  3642. CreateRestrictedToken(
  3643.     IN HANDLE ExistingTokenHandle,
  3644.     IN DWORD Flags,
  3645.     IN DWORD DisableSidCount,
  3646.     IN PSID_AND_ATTRIBUTES SidsToDisable OPTIONAL,
  3647.     IN DWORD DeletePrivilegeCount,
  3648.     IN PLUID_AND_ATTRIBUTES PrivilegesToDelete OPTIONAL,
  3649.     IN DWORD RestrictedSidCount,
  3650.     IN PSID_AND_ATTRIBUTES SidsToRestrict OPTIONAL,
  3651.     OUT PHANDLE NewTokenHandle
  3652.     );
  3653. WINADVAPI
  3654. BOOL
  3655. WINAPI
  3656. IsTokenRestricted(
  3657.     IN HANDLE TokenHandle
  3658.     );
  3659. WINADVAPI
  3660. BOOL
  3661. WINAPI
  3662. IsTokenUntrusted(
  3663.     IN HANDLE TokenHandle
  3664.     );
  3665. BOOL
  3666. APIENTRY
  3667. CheckTokenMembership(
  3668.     IN HANDLE TokenHandle OPTIONAL,
  3669.     IN PSID SidToCheck,
  3670.     OUT PBOOL IsMember
  3671.     );
  3672. //
  3673. // Thread pool API's
  3674. //
  3675. #if (_WIN32_WINNT >= 0x0500)
  3676. typedef WAITORTIMERCALLBACKFUNC WAITORTIMERCALLBACK ;
  3677. WINBASEAPI
  3678. BOOL
  3679. WINAPI
  3680. RegisterWaitForSingleObject(
  3681.     PHANDLE phNewWaitObject,
  3682.     HANDLE hObject,
  3683.     WAITORTIMERCALLBACK Callback,
  3684.     PVOID Context,
  3685.     ULONG dwMilliseconds,
  3686.     ULONG dwFlags
  3687.     );
  3688. WINBASEAPI
  3689. HANDLE
  3690. WINAPI
  3691. RegisterWaitForSingleObjectEx(
  3692.     HANDLE hObject,
  3693.     WAITORTIMERCALLBACK Callback,
  3694.     PVOID Context,
  3695.     ULONG dwMilliseconds,
  3696.     ULONG dwFlags
  3697.     );
  3698. WINBASEAPI
  3699. BOOL
  3700. WINAPI
  3701. UnregisterWait(
  3702.     HANDLE WaitHandle
  3703.     );
  3704. WINBASEAPI
  3705. BOOL
  3706. WINAPI
  3707. UnregisterWaitEx(
  3708.     HANDLE WaitHandle,
  3709.     HANDLE CompletionEvent
  3710.     );
  3711. WINBASEAPI
  3712. BOOL
  3713. WINAPI
  3714. QueueUserWorkItem(
  3715.     LPTHREAD_START_ROUTINE Function,
  3716.     PVOID Context,
  3717.     ULONG Flags
  3718.     );
  3719. WINBASEAPI
  3720. BOOL
  3721. WINAPI
  3722. BindIoCompletionCallback (
  3723.     HANDLE FileHandle,
  3724.     LPOVERLAPPED_COMPLETION_ROUTINE Function,
  3725.     ULONG Flags
  3726.     );
  3727. WINBASEAPI
  3728. HANDLE
  3729. WINAPI
  3730. CreateTimerQueue(
  3731.     VOID
  3732.     );
  3733. WINBASEAPI
  3734. BOOL
  3735. WINAPI
  3736. CreateTimerQueueTimer(
  3737.     PHANDLE phNewTimer,
  3738.     HANDLE TimerQueue,
  3739.     WAITORTIMERCALLBACK Callback,
  3740.     PVOID Parameter,
  3741.     DWORD DueTime,
  3742.     DWORD Period,
  3743.     ULONG Flags
  3744.     ) ;
  3745. WINBASEAPI
  3746. BOOL
  3747. WINAPI
  3748. ChangeTimerQueueTimer(
  3749.     HANDLE TimerQueue,
  3750.     HANDLE Timer,
  3751.     ULONG DueTime,
  3752.     ULONG Period
  3753.     );
  3754. WINBASEAPI
  3755. BOOL
  3756. WINAPI
  3757. DeleteTimerQueueTimer(
  3758.     HANDLE TimerQueue,
  3759.     HANDLE Timer,
  3760.     HANDLE CompletionEvent
  3761.     );
  3762. WINBASEAPI
  3763. BOOL
  3764. WINAPI
  3765. DeleteTimerQueueEx(
  3766.     HANDLE TimerQueue,
  3767.     HANDLE CompletionEvent
  3768.     );
  3769. WINBASEAPI
  3770. HANDLE
  3771. WINAPI
  3772. SetTimerQueueTimer(
  3773.     HANDLE TimerQueue,
  3774.     WAITORTIMERCALLBACK Callback,
  3775.     PVOID Parameter,
  3776.     DWORD DueTime,
  3777.     DWORD Period,
  3778.     BOOL PreferIo
  3779.     );
  3780. WINBASEAPI
  3781. BOOL
  3782. WINAPI
  3783. CancelTimerQueueTimer(
  3784.     HANDLE TimerQueue,
  3785.     HANDLE Timer
  3786.     );
  3787. WINBASEAPI
  3788. BOOL
  3789. WINAPI
  3790. DeleteTimerQueue(
  3791.     HANDLE TimerQueue
  3792.     );
  3793. #endif // _WIN32_WINNT
  3794. #if(_WIN32_WINNT >= 0x0400)
  3795. //
  3796. // Plug-and-Play API's
  3797. //
  3798. #define HW_PROFILE_GUIDLEN         39      // 36-characters plus NULL terminator
  3799. #define MAX_PROFILE_LEN            80
  3800. #define DOCKINFO_UNDOCKED          (0x1)
  3801. #define DOCKINFO_DOCKED            (0x2)
  3802. #define DOCKINFO_USER_SUPPLIED     (0x4)
  3803. #define DOCKINFO_USER_UNDOCKED     (DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED)
  3804. #define DOCKINFO_USER_DOCKED       (DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED)
  3805. typedef struct tagHW_PROFILE_INFOA {
  3806.     DWORD  dwDockInfo;
  3807.     CHAR   szHwProfileGuid[HW_PROFILE_GUIDLEN];
  3808.     CHAR   szHwProfileName[MAX_PROFILE_LEN];
  3809. } HW_PROFILE_INFOA, *LPHW_PROFILE_INFOA;
  3810. typedef struct tagHW_PROFILE_INFOW {
  3811.     DWORD  dwDockInfo;
  3812.     WCHAR  szHwProfileGuid[HW_PROFILE_GUIDLEN];
  3813.     WCHAR  szHwProfileName[MAX_PROFILE_LEN];
  3814. } HW_PROFILE_INFOW, *LPHW_PROFILE_INFOW;
  3815. #ifdef UNICODE
  3816. typedef HW_PROFILE_INFOW HW_PROFILE_INFO;
  3817. typedef LPHW_PROFILE_INFOW LPHW_PROFILE_INFO;
  3818. #else
  3819. typedef HW_PROFILE_INFOA HW_PROFILE_INFO;
  3820. typedef LPHW_PROFILE_INFOA LPHW_PROFILE_INFO;
  3821. #endif // UNICODE
  3822. WINADVAPI
  3823. BOOL
  3824. WINAPI
  3825. GetCurrentHwProfileA (
  3826.     OUT LPHW_PROFILE_INFOA  lpHwProfileInfo
  3827.     );
  3828. WINADVAPI
  3829. BOOL
  3830. WINAPI
  3831. GetCurrentHwProfileW (
  3832.     OUT LPHW_PROFILE_INFOW  lpHwProfileInfo
  3833.     );
  3834. #ifdef UNICODE
  3835. #define GetCurrentHwProfile  GetCurrentHwProfileW
  3836. #else
  3837. #define GetCurrentHwProfile  GetCurrentHwProfileA
  3838. #endif // !UNICODE
  3839. #endif /* _WIN32_WINNT >= 0x0400 */
  3840. //
  3841. // Performance counter API's
  3842. //
  3843. WINBASEAPI
  3844. BOOL
  3845. WINAPI
  3846. QueryPerformanceCounter(
  3847.     OUT LARGE_INTEGER *lpPerformanceCount
  3848.     );
  3849. WINBASEAPI
  3850. BOOL
  3851. WINAPI
  3852. QueryPerformanceFrequency(
  3853.     OUT LARGE_INTEGER *lpFrequency
  3854.     );
  3855. WINBASEAPI
  3856. BOOL
  3857. WINAPI
  3858. GetVersionExA(
  3859.     IN OUT LPOSVERSIONINFOA lpVersionInformation
  3860.     );
  3861. WINBASEAPI
  3862. BOOL
  3863. WINAPI
  3864. GetVersionExW(
  3865.     IN OUT LPOSVERSIONINFOW lpVersionInformation
  3866.     );
  3867. #ifdef UNICODE
  3868. #define GetVersionEx  GetVersionExW
  3869. #else
  3870. #define GetVersionEx  GetVersionExA
  3871. #endif // !UNICODE
  3872. WINBASEAPI
  3873. BOOL
  3874. WINAPI
  3875. VerifyVersionInfoA(
  3876.     IN LPOSVERSIONINFOEXA lpVersionInformation,
  3877.     IN DWORD dwTypeMask,
  3878.     IN DWORDLONG dwlConditionMask
  3879.     );
  3880. WINBASEAPI
  3881. BOOL
  3882. WINAPI
  3883. VerifyVersionInfoW(
  3884.     IN LPOSVERSIONINFOEXW lpVersionInformation,
  3885.     IN DWORD dwTypeMask,
  3886.     IN DWORDLONG dwlConditionMask
  3887.     );
  3888. #ifdef UNICODE
  3889. #define VerifyVersionInfo  VerifyVersionInfoW
  3890. #else
  3891. #define VerifyVersionInfo  VerifyVersionInfoA
  3892. #endif // !UNICODE
  3893. // DOS and OS/2 Compatible Error Code definitions returned by the Win32 Base
  3894. // API functions.
  3895. //
  3896. #include <winerror.h>
  3897. /* Abnormal termination codes */
  3898. #define TC_NORMAL       0
  3899. #define TC_HARDERR      1
  3900. #define TC_GP_TRAP      2
  3901. #define TC_SIGNAL       3
  3902. #if(WINVER >= 0x0400)
  3903. //
  3904. // Power Management APIs
  3905. //
  3906. #define AC_LINE_OFFLINE                 0x00
  3907. #define AC_LINE_ONLINE                  0x01
  3908. #define AC_LINE_BACKUP_POWER            0x02
  3909. #define AC_LINE_UNKNOWN                 0xFF
  3910. #define BATTERY_FLAG_HIGH               0x01
  3911. #define BATTERY_FLAG_LOW                0x02
  3912. #define BATTERY_FLAG_CRITICAL           0x04
  3913. #define BATTERY_FLAG_CHARGING           0x08
  3914. #define BATTERY_FLAG_NO_BATTERY         0x80
  3915. #define BATTERY_FLAG_UNKNOWN            0xFF
  3916. #define BATTERY_PERCENTAGE_UNKNOWN      0xFF
  3917. #define BATTERY_LIFE_UNKNOWN        0xFFFFFFFF
  3918. typedef struct _SYSTEM_POWER_STATUS {
  3919.     BYTE ACLineStatus;
  3920.     BYTE BatteryFlag;
  3921.     BYTE BatteryLifePercent;
  3922.     BYTE Reserved1;
  3923.     DWORD BatteryLifeTime;
  3924.     DWORD BatteryFullLifeTime;
  3925. }   SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;
  3926. BOOL
  3927. WINAPI
  3928. GetSystemPowerStatus(
  3929.     OUT LPSYSTEM_POWER_STATUS lpSystemPowerStatus
  3930.     );
  3931. BOOL
  3932. WINAPI
  3933. SetSystemPowerState(
  3934.     IN BOOL fSuspend,
  3935.     IN BOOL fForce
  3936.     );
  3937. #endif /* WINVER >= 0x0400 */
  3938. #if (_WIN32_WINNT >= 0x0500)
  3939. //
  3940. // Very Large Memory API Subset
  3941. //
  3942. WINBASEAPI
  3943. BOOL
  3944. WINAPI
  3945. AllocateUserPhysicalPages(
  3946.     IN HANDLE hProcess,
  3947.     IN OUT PULONG_PTR NumberOfPages,
  3948.     OUT PULONG_PTR PageArray
  3949.     );
  3950. WINBASEAPI
  3951. BOOL
  3952. WINAPI
  3953. FreeUserPhysicalPages(
  3954.     IN HANDLE hProcess,
  3955.     IN OUT PULONG_PTR NumberOfPages,
  3956.     IN PULONG_PTR PageArray
  3957.     );
  3958. WINBASEAPI
  3959. BOOL
  3960. WINAPI
  3961. MapUserPhysicalPages(
  3962.     IN PVOID VirtualAddress,
  3963.     IN ULONG_PTR NumberOfPages,
  3964.     IN PULONG_PTR PageArray OPTIONAL
  3965.     );
  3966. WINBASEAPI
  3967. BOOL
  3968. WINAPI
  3969. MapUserPhysicalPagesScatter(
  3970.     IN PVOID *VirtualAddresses,
  3971.     IN ULONG_PTR NumberOfPages,
  3972.     IN PULONG_PTR PageArray OPTIONAL
  3973.     );
  3974. WINBASEAPI
  3975. HANDLE
  3976. WINAPI
  3977. CreateJobObjectA(
  3978.     IN LPSECURITY_ATTRIBUTES lpJobAttributes,
  3979.     IN LPCSTR lpName
  3980.     );
  3981. WINBASEAPI
  3982. HANDLE
  3983. WINAPI
  3984. CreateJobObjectW(
  3985.     IN LPSECURITY_ATTRIBUTES lpJobAttributes,
  3986.     IN LPCWSTR lpName
  3987.     );
  3988. #ifdef UNICODE
  3989. #define CreateJobObject  CreateJobObjectW
  3990. #else
  3991. #define CreateJobObject  CreateJobObjectA
  3992. #endif // !UNICODE
  3993. WINBASEAPI
  3994. HANDLE
  3995. WINAPI
  3996. OpenJobObjectA(
  3997.     IN DWORD dwDesiredAccess,
  3998.     IN BOOL bInheritHandle,
  3999.     IN LPCSTR lpName
  4000.     );
  4001. WINBASEAPI
  4002. HANDLE
  4003. WINAPI
  4004. OpenJobObjectW(
  4005.     IN DWORD dwDesiredAccess,
  4006.     IN BOOL bInheritHandle,
  4007.     IN LPCWSTR lpName
  4008.     );
  4009. #ifdef UNICODE
  4010. #define OpenJobObject  OpenJobObjectW
  4011. #else
  4012. #define OpenJobObject  OpenJobObjectA
  4013. #endif // !UNICODE
  4014. WINBASEAPI
  4015. BOOL
  4016. WINAPI
  4017. AssignProcessToJobObject(
  4018.     IN HANDLE hJob,
  4019.     IN HANDLE hProcess
  4020.     );
  4021. WINBASEAPI
  4022. BOOL
  4023. WINAPI
  4024. TerminateJobObject(
  4025.     IN HANDLE hJob,
  4026.     IN UINT uExitCode
  4027.     );
  4028. WINBASEAPI
  4029. BOOL
  4030. WINAPI
  4031. QueryInformationJobObject(
  4032.     IN HANDLE hJob,
  4033.     IN JOBOBJECTINFOCLASS JobObjectInformationClass,
  4034.     OUT LPVOID lpJobObjectInformation,
  4035.     IN DWORD cbJobObjectInformationLength,
  4036.     OUT LPDWORD lpReturnLength
  4037.     );
  4038. WINBASEAPI
  4039. BOOL
  4040. WINAPI
  4041. SetInformationJobObject(
  4042.     IN HANDLE hJob,
  4043.     IN JOBOBJECTINFOCLASS JobObjectInformationClass,
  4044.     IN LPVOID lpJobObjectInformation,
  4045.     IN DWORD cbJobObjectInformationLength
  4046.     );
  4047. WINBASEAPI
  4048. BOOL
  4049. WINAPI
  4050. IsProcessInJob (
  4051.     IN HANDLE ProcessHandle,
  4052.     IN HANDLE JobHandle,
  4053.     OUT PBOOL Result
  4054.     );
  4055. WINBASEAPI
  4056. BOOL
  4057. WINAPI
  4058. CreateJobSet (
  4059.     IN ULONG NumJob,
  4060.     IN PJOB_SET_ARRAY UserJobSet,
  4061.     IN ULONG Flags);
  4062. WINBASEAPI
  4063. PVOID
  4064. WINAPI
  4065. AddVectoredExceptionHandler(
  4066.     IN ULONG FirstHandler,
  4067.     IN PVECTORED_EXCEPTION_HANDLER VectoredHandler
  4068.     );
  4069. WINBASEAPI
  4070. ULONG
  4071. WINAPI
  4072. RemoveVectoredExceptionHandler(
  4073.     IN PVOID VectoredHandlerHandle
  4074.     );
  4075. //
  4076. // New Volume Mount Point API.
  4077. //
  4078. WINBASEAPI
  4079. HANDLE
  4080. WINAPI
  4081. FindFirstVolumeA(
  4082.     LPSTR lpszVolumeName,
  4083.     DWORD cchBufferLength
  4084.     );
  4085. WINBASEAPI
  4086. HANDLE
  4087. WINAPI
  4088. FindFirstVolumeW(
  4089.     LPWSTR lpszVolumeName,
  4090.     DWORD cchBufferLength
  4091.     );
  4092. #ifdef UNICODE
  4093. #define FindFirstVolume FindFirstVolumeW
  4094. #else
  4095. #define FindFirstVolume FindFirstVolumeA
  4096. #endif // !UNICODE
  4097. WINBASEAPI
  4098. BOOL
  4099. WINAPI
  4100. FindNextVolumeA(
  4101.     HANDLE hFindVolume,
  4102.     LPSTR lpszVolumeName,
  4103.     DWORD cchBufferLength
  4104.     );
  4105. WINBASEAPI
  4106. BOOL
  4107. WINAPI
  4108. FindNextVolumeW(
  4109.     HANDLE hFindVolume,
  4110.     LPWSTR lpszVolumeName,
  4111.     DWORD cchBufferLength
  4112.     );
  4113. #ifdef UNICODE
  4114. #define FindNextVolume FindNextVolumeW
  4115. #else
  4116. #define FindNextVolume FindNextVolumeA
  4117. #endif // !UNICODE
  4118. WINBASEAPI
  4119. BOOL
  4120. WINAPI
  4121. FindVolumeClose(
  4122.     HANDLE hFindVolume
  4123.     );
  4124. WINBASEAPI
  4125. HANDLE
  4126. WINAPI
  4127. FindFirstVolumeMountPointA(
  4128.     LPCSTR lpszRootPathName,
  4129.     LPSTR lpszVolumeMountPoint,
  4130.     DWORD cchBufferLength
  4131.     );
  4132. WINBASEAPI
  4133. HANDLE
  4134. WINAPI
  4135. FindFirstVolumeMountPointW(
  4136.     LPCWSTR lpszRootPathName,
  4137.     LPWSTR lpszVolumeMountPoint,
  4138.     DWORD cchBufferLength
  4139.     );
  4140. #ifdef UNICODE
  4141. #define FindFirstVolumeMountPoint FindFirstVolumeMountPointW
  4142. #else
  4143. #define FindFirstVolumeMountPoint FindFirstVolumeMountPointA
  4144. #endif // !UNICODE
  4145. WINBASEAPI
  4146. BOOL
  4147. WINAPI
  4148. FindNextVolumeMountPointA(
  4149.     HANDLE hFindVolumeMountPoint,
  4150.     LPSTR lpszVolumeMountPoint,
  4151.     DWORD cchBufferLength
  4152.     );
  4153. WINBASEAPI
  4154. BOOL
  4155. WINAPI
  4156. FindNextVolumeMountPointW(
  4157.     HANDLE hFindVolumeMountPoint,
  4158.     LPWSTR lpszVolumeMountPoint,
  4159.     DWORD cchBufferLength
  4160.     );
  4161. #ifdef UNICODE
  4162. #define FindNextVolumeMountPoint FindNextVolumeMountPointW
  4163. #else
  4164. #define FindNextVolumeMountPoint FindNextVolumeMountPointA
  4165. #endif // !UNICODE
  4166. WINBASEAPI
  4167. BOOL
  4168. WINAPI
  4169. FindVolumeMountPointClose(
  4170.     HANDLE hFindVolumeMountPoint
  4171.     );
  4172. WINBASEAPI
  4173. BOOL
  4174. WINAPI
  4175. SetVolumeMountPointA(
  4176.     LPCSTR lpszVolumeMountPoint,
  4177.     LPCSTR lpszVolumeName
  4178.     );
  4179. WINBASEAPI
  4180. BOOL
  4181. WINAPI
  4182. SetVolumeMountPointW(
  4183.     LPCWSTR lpszVolumeMountPoint,
  4184.     LPCWSTR lpszVolumeName
  4185.     );
  4186. #ifdef UNICODE
  4187. #define SetVolumeMountPoint  SetVolumeMountPointW
  4188. #else
  4189. #define SetVolumeMountPoint  SetVolumeMountPointA
  4190. #endif // !UNICODE
  4191. WINBASEAPI
  4192. BOOL
  4193. WINAPI
  4194. DeleteVolumeMountPointA(
  4195.     LPCSTR lpszVolumeMountPoint
  4196.     );
  4197. WINBASEAPI
  4198. BOOL
  4199. WINAPI
  4200. DeleteVolumeMountPointW(
  4201.     LPCWSTR lpszVolumeMountPoint
  4202.     );
  4203. #ifdef UNICODE
  4204. #define DeleteVolumeMountPoint  DeleteVolumeMountPointW
  4205. #else
  4206. #define DeleteVolumeMountPoint  DeleteVolumeMountPointA
  4207. #endif // !UNICODE
  4208. WINBASEAPI
  4209. BOOL
  4210. WINAPI
  4211. GetVolumeNameForVolumeMountPointA(
  4212.     LPCSTR lpszVolumeMountPoint,
  4213.     LPSTR lpszVolumeName,
  4214.     DWORD cchBufferLength
  4215.     );
  4216. WINBASEAPI
  4217. BOOL
  4218. WINAPI
  4219. GetVolumeNameForVolumeMountPointW(
  4220.     LPCWSTR lpszVolumeMountPoint,
  4221.     LPWSTR lpszVolumeName,
  4222.     DWORD cchBufferLength
  4223.     );
  4224. #ifdef UNICODE
  4225. #define GetVolumeNameForVolumeMountPoint  GetVolumeNameForVolumeMountPointW
  4226. #else
  4227. #define GetVolumeNameForVolumeMountPoint  GetVolumeNameForVolumeMountPointA
  4228. #endif // !UNICODE
  4229. WINBASEAPI
  4230. BOOL
  4231. WINAPI
  4232. GetVolumePathNameA(
  4233.     LPCSTR lpszFileName,
  4234.     LPSTR lpszVolumePathName,
  4235.     DWORD cchBufferLength
  4236.     );
  4237. WINBASEAPI
  4238. BOOL
  4239. WINAPI
  4240. GetVolumePathNameW(
  4241.     LPCWSTR lpszFileName,
  4242.     LPWSTR lpszVolumePathName,
  4243.     DWORD cchBufferLength
  4244.     );
  4245. #ifdef UNICODE
  4246. #define GetVolumePathName  GetVolumePathNameW
  4247. #else
  4248. #define GetVolumePathName  GetVolumePathNameA
  4249. #endif // !UNICODE
  4250. WINBASEAPI
  4251. BOOL
  4252. WINAPI
  4253. GetVolumePathNamesForVolumeNameA(
  4254.     LPCSTR lpszVolumeName,
  4255.     LPSTR lpszVolumePathNames,
  4256.     DWORD cchBufferLength,
  4257.     PDWORD lpcchReturnLength
  4258.     );
  4259. WINBASEAPI
  4260. BOOL
  4261. WINAPI
  4262. GetVolumePathNamesForVolumeNameW(
  4263.     LPCWSTR lpszVolumeName,
  4264.     LPWSTR lpszVolumePathNames,
  4265.     DWORD cchBufferLength,
  4266.     PDWORD lpcchReturnLength
  4267.     );
  4268. #ifdef UNICODE
  4269. #define GetVolumePathNamesForVolumeName  GetVolumePathNamesForVolumeNameW
  4270. #else
  4271. #define GetVolumePathNamesForVolumeName  GetVolumePathNamesForVolumeNameA
  4272. #endif // !UNICODE
  4273. #endif
  4274. #if (_WIN32_WINNT >= 0x0500) || (_WIN32_FUSION >= 0x0100) || ISOLATION_AWARE_ENABLED
  4275. #define ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID    (0x00000001)
  4276. #define ACTCTX_FLAG_LANGID_VALID                    (0x00000002)
  4277. #define ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID        (0x00000004)
  4278. #define ACTCTX_FLAG_RESOURCE_NAME_VALID             (0x00000008)
  4279. #define ACTCTX_FLAG_SET_PROCESS_DEFAULT             (0x00000010)
  4280. #define ACTCTX_FLAG_APPLICATION_NAME_VALID          (0x00000020)
  4281. #define ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF           (0x00000040)
  4282. #define ACTCTX_FLAG_HMODULE_VALID                   (0x00000080)
  4283. typedef struct tagACTCTXA {
  4284.     ULONG       cbSize;
  4285.     DWORD       dwFlags;
  4286.     LPCSTR      lpSource;
  4287.     USHORT      wProcessorArchitecture;
  4288.     LANGID      wLangId;
  4289.     LPCSTR      lpAssemblyDirectory;
  4290.     LPCSTR      lpResourceName;
  4291.     LPCSTR      lpApplicationName;
  4292.     HMODULE     hModule;
  4293. } ACTCTXA, *PACTCTXA;
  4294. typedef struct tagACTCTXW {
  4295.     ULONG       cbSize;
  4296.     DWORD       dwFlags;
  4297.     LPCWSTR     lpSource;
  4298.     USHORT      wProcessorArchitecture;
  4299.     LANGID      wLangId;
  4300.     LPCWSTR     lpAssemblyDirectory;
  4301.     LPCWSTR     lpResourceName;
  4302.     LPCWSTR     lpApplicationName;
  4303.     HMODULE     hModule;
  4304. } ACTCTXW, *PACTCTXW;
  4305. #ifdef UNICODE
  4306. typedef ACTCTXW ACTCTX;
  4307. typedef PACTCTXW PACTCTX;
  4308. #else
  4309. typedef ACTCTXA ACTCTX;
  4310. typedef PACTCTXA PACTCTX;
  4311. #endif // UNICODE
  4312. typedef const ACTCTXA *PCACTCTXA;
  4313. typedef const ACTCTXW *PCACTCTXW;
  4314. #ifdef UNICODE
  4315. typedef ACTCTXW ACTCTX;
  4316. typedef PCACTCTXW PCACTCTX;
  4317. #else
  4318. typedef ACTCTXA ACTCTX;
  4319. typedef PCACTCTXA PCACTCTX;
  4320. #endif // UNICODE
  4321. #endif
  4322. #if (_WIN32_WINNT >= 0x0500) || (_WIN32_FUSION >= 0x0100)
  4323. WINBASEAPI
  4324. HANDLE
  4325. WINAPI
  4326. CreateActCtxA(
  4327.     PCACTCTXA pActCtx
  4328.     );
  4329. WINBASEAPI
  4330. HANDLE
  4331. WINAPI
  4332. CreateActCtxW(
  4333.     PCACTCTXW pActCtx
  4334.     );
  4335. #ifdef UNICODE
  4336. #define CreateActCtx  CreateActCtxW
  4337. #else
  4338. #define CreateActCtx  CreateActCtxA
  4339. #endif // !UNICODE
  4340. WINBASEAPI
  4341. VOID
  4342. WINAPI
  4343. AddRefActCtx(
  4344.     HANDLE hActCtx
  4345.     );
  4346. WINBASEAPI
  4347. VOID
  4348. WINAPI
  4349. ReleaseActCtx(
  4350.     HANDLE hActCtx
  4351.     );
  4352. WINBASEAPI
  4353. BOOL
  4354. WINAPI
  4355. ZombifyActCtx(
  4356.     HANDLE hActCtx
  4357.     );
  4358. WINBASEAPI
  4359. BOOL
  4360. WINAPI
  4361. ActivateActCtx(
  4362.     HANDLE hActCtx,
  4363.     ULONG_PTR *lpCookie
  4364.     );
  4365. #define DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION (0x00000001)
  4366. WINBASEAPI
  4367. BOOL
  4368. WINAPI
  4369. DeactivateActCtx(
  4370.     DWORD dwFlags,
  4371.     ULONG_PTR ulCookie
  4372.     );
  4373. WINBASEAPI
  4374. BOOL
  4375. WINAPI
  4376. GetCurrentActCtx(
  4377.     HANDLE *lphActCtx);
  4378. #endif
  4379. #if (_WIN32_WINNT >= 0x0500) || (_WIN32_FUSION >= 0x0100) || ISOLATION_AWARE_ENABLED
  4380. typedef struct tagACTCTX_SECTION_KEYED_DATA {
  4381.     ULONG cbSize;
  4382.     ULONG ulDataFormatVersion;
  4383.     PVOID lpData;
  4384.     ULONG ulLength;
  4385.     PVOID lpSectionGlobalData;
  4386.     ULONG ulSectionGlobalDataLength;
  4387.     PVOID lpSectionBase;
  4388.     ULONG ulSectionTotalLength;
  4389.     HANDLE hActCtx;
  4390.     ULONG ulAssemblyRosterIndex;
  4391. } ACTCTX_SECTION_KEYED_DATA, *PACTCTX_SECTION_KEYED_DATA;
  4392. #define FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX (0x00000001)
  4393. #endif
  4394. #if (_WIN32_WINNT >= 0x0500) || (_WIN32_FUSION >= 0x0100)
  4395. WINBASEAPI
  4396. BOOL
  4397. WINAPI
  4398. FindActCtxSectionStringA(
  4399.     DWORD dwFlags,
  4400.     const GUID *lpExtensionGuid,
  4401.     ULONG ulSectionId,
  4402.     LPCSTR lpStringToFind,
  4403.     PACTCTX_SECTION_KEYED_DATA ReturnedData
  4404.     );
  4405. WINBASEAPI
  4406. BOOL
  4407. WINAPI
  4408. FindActCtxSectionStringW(
  4409.     DWORD dwFlags,
  4410.     const GUID *lpExtensionGuid,
  4411.     ULONG ulSectionId,
  4412.     LPCWSTR lpStringToFind,
  4413.     PACTCTX_SECTION_KEYED_DATA ReturnedData
  4414.     );
  4415. #ifdef UNICODE
  4416. #define FindActCtxSectionString  FindActCtxSectionStringW
  4417. #else
  4418. #define FindActCtxSectionString  FindActCtxSectionStringA
  4419. #endif // !UNICODE
  4420. WINBASEAPI
  4421. BOOL
  4422. WINAPI
  4423. FindActCtxSectionGuid(
  4424.     DWORD dwFlags,
  4425.     const GUID *lpExtensionGuid,
  4426.     ULONG ulSectionId,
  4427.     const GUID *lpGuidToFind,
  4428.     PACTCTX_SECTION_KEYED_DATA ReturnedData
  4429.     );
  4430. #endif
  4431. #if (_WIN32_WINNT >= 0x0500) || (_WIN32_FUSION >= 0x0100) || ISOLATION_AWARE_ENABLED
  4432. #if !defined(RC_INVOKED) /* RC complains about long symbols in #ifs */
  4433. #if !defined(ACTIVATION_CONTEXT_BASIC_INFORMATION_DEFINED)
  4434. typedef struct _ACTIVATION_CONTEXT_BASIC_INFORMATION {
  4435.     HANDLE  hActCtx;
  4436.     DWORD   dwFlags;
  4437. } ACTIVATION_CONTEXT_BASIC_INFORMATION, *PACTIVATION_CONTEXT_BASIC_INFORMATION;
  4438. typedef const struct _ACTIVATION_CONTEXT_BASIC_INFORMATION *PCACTIVATION_CONTEXT_BASIC_INFORMATION;
  4439. #define ACTIVATION_CONTEXT_BASIC_INFORMATION_DEFINED 1
  4440. #endif // !defined(ACTIVATION_CONTEXT_BASIC_INFORMATION_DEFINED)
  4441. #endif
  4442. #define QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX (0x00000004)
  4443. #define QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE (0x00000008)
  4444. #define QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS (0x00000010)
  4445. #define QUERY_ACTCTX_FLAG_NO_ADDREF         (0x80000000)
  4446. #endif
  4447. #if (_WIN32_WINNT >= 0x0500) || (_WIN32_FUSION >= 0x0100)
  4448. //
  4449. // switch (ulInfoClass)
  4450. //
  4451. //  case ActivationContextBasicInformation:
  4452. //    pvSubInstance == NULL
  4453. //    pvBuffer is of type PACTIVATION_CONTEXT_BASIC_INFORMATION
  4454. //
  4455. //  case ActivationContextDetailedInformation:
  4456. //    pvSubInstance == NULL
  4457. //    pvBuffer is of type PACTIVATION_CONTEXT_DETAILED_INFORMATION
  4458. //
  4459. //  case AssemblyDetailedInformationInActivationContext:
  4460. //    pvSubInstance is of type PULONG
  4461. //      *pvSubInstance < ACTIVATION_CONTEXT_DETAILED_INFORMATION::ulAssemblyCount
  4462. //    pvBuffer is of type PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
  4463. //
  4464. //  case FileInformationInAssemblyOfAssemblyInActivationContext:
  4465. //    pvSubInstance is of type PACTIVATION_CONTEXT_QUERY_INDEX
  4466. //      pvSubInstance->ulAssemblyIndex < ACTIVATION_CONTEXT_DETAILED_INFORMATION::ulAssemblyCount
  4467. //      pvSubInstance->ulFileIndexInAssembly < ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION::ulFileCount
  4468. //    pvBuffer is of type PASSEMBLY_FILE_DETAILED_INFORMATION
  4469. //
  4470. // String are placed after the structs.
  4471. //
  4472. WINBASEAPI
  4473. BOOL
  4474. WINAPI
  4475. QueryActCtxW(
  4476.     IN DWORD dwFlags,
  4477.     IN HANDLE hActCtx,
  4478.     IN PVOID pvSubInstance,
  4479.     IN ULONG ulInfoClass,
  4480.     OUT PVOID pvBuffer,
  4481.     IN SIZE_T cbBuffer OPTIONAL,
  4482.     OUT SIZE_T *pcbWrittenOrRequired OPTIONAL
  4483.     );
  4484. typedef BOOL (WINAPI * PQUERYACTCTXW_FUNC)(
  4485.     IN DWORD dwFlags,
  4486.     IN HANDLE hActCtx,
  4487.     IN PVOID pvSubInstance,
  4488.     IN ULONG ulInfoClass,
  4489.     OUT PVOID pvBuffer,
  4490.     IN SIZE_T cbBuffer OPTIONAL,
  4491.     OUT SIZE_T *pcbWrittenOrRequired OPTIONAL
  4492.     );
  4493. #endif // (_WIN32_WINNT > 0x0500) || (_WIN32_FUSION >= 0x0100)
  4494. WINBASEAPI
  4495. BOOL
  4496. WINAPI
  4497. ProcessIdToSessionId(
  4498.     IN  DWORD dwProcessId,
  4499.     OUT DWORD *pSessionId
  4500.     );
  4501. #if _WIN32_WINNT >= 0x0501
  4502. WINBASEAPI
  4503. DWORD
  4504. WINAPI
  4505. WTSGetActiveConsoleSessionId();
  4506. WINBASEAPI
  4507. BOOL
  4508. WINAPI
  4509. IsWow64Process(
  4510.     HANDLE hProcess,
  4511.     PBOOL Wow64Process
  4512.     );
  4513. #endif // (_WIN32_WINNT >= 0x0501)
  4514. //
  4515. // NUMA Information routines.
  4516. //
  4517. WINBASEAPI
  4518. BOOL
  4519. WINAPI
  4520. GetNumaHighestNodeNumber(
  4521.     PULONG HighestNodeNumber
  4522.     );
  4523. WINBASEAPI
  4524. BOOL
  4525. WINAPI
  4526. GetNumaProcessorNode(
  4527.     UCHAR Processor,
  4528.     PUCHAR NodeNumber
  4529.     );
  4530. WINBASEAPI
  4531. BOOL
  4532. WINAPI
  4533. GetNumaNodeProcessorMask(
  4534.     UCHAR Node,
  4535.     PULONGLONG ProcessorMask
  4536.     );
  4537. WINBASEAPI
  4538. BOOL
  4539. WINAPI
  4540. GetNumaProcessorMap(
  4541.     PSYSTEM_NUMA_INFORMATION Map,
  4542.     ULONG Length,
  4543.     PULONG ReturnedLength
  4544.     );
  4545. WINBASEAPI
  4546. BOOL
  4547. WINAPI
  4548. GetNumaAvailableMemory(
  4549.     PSYSTEM_NUMA_INFORMATION Memory,
  4550.     ULONG Length,
  4551.     PULONG ReturnedLength
  4552.     );
  4553. WINBASEAPI
  4554. BOOL
  4555. WINAPI
  4556. GetNumaAvailableMemoryNode(
  4557.     UCHAR Node,
  4558.     PULONGLONG AvailableBytes
  4559.     );
  4560. WINBASEAPI
  4561. ULONGLONG
  4562. WINAPI
  4563. NumaVirtualQueryNode(
  4564.     IN  ULONG       NumberOfRanges,
  4565.     IN  PULONG_PTR  RangeList,
  4566.     OUT PULONG_PTR  VirtualPageAndNode,
  4567.     IN  SIZE_T      MaximumOutputLength
  4568.     );
  4569. #if !defined(RC_INVOKED) /* RC complains about long symbols in #ifs */
  4570. #if ISOLATION_AWARE_ENABLED
  4571. #include "winbase.inl"
  4572. #endif /* ISOLATION_AWARE_ENABLED */
  4573. #endif /* RC */
  4574. #ifdef __cplusplus
  4575. }
  4576. #endif
  4577. #endif // _WINBASE_