jwasddl.pas 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557
  1. {******************************************************************************}
  2. { }
  3. { Security Descriptor Definition Language API interface Unit for Object Pascal }
  4. { }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
  6. { Corporation. All Rights Reserved. }
  7. { }
  8. { The original file is: sddl.h, released June 2000. The original Pascal }
  9. { code is: Sddl.pas, released December 2000. The initial developer of the }
  10. { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
  11. { }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
  13. { Marcel van Brakel. All Rights Reserved. }
  14. { }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  16. { }
  17. { You may retrieve the latest version of this file at the Project JEDI }
  18. { APILIB home page, located at http://jedi-apilib.sourceforge.net }
  19. { }
  20. { The contents of this file are used with permission, subject to the Mozilla }
  21. { Public License Version 1.1 (the "License"); you may not use this file except }
  22. { in compliance with the License. You may obtain a copy of the License at }
  23. { http://www.mozilla.org/MPL/MPL-1.1.html }
  24. { }
  25. { Software distributed under the License is distributed on an "AS IS" basis, }
  26. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  27. { the specific language governing rights and limitations under the License. }
  28. { }
  29. { Alternatively, the contents of this file may be used under the terms of the }
  30. { GNU Lesser General Public License (the "LGPL License"), in which case the }
  31. { provisions of the LGPL License are applicable instead of those above. }
  32. { If you wish to allow use of your version of this file only under the terms }
  33. { of the LGPL License and not to allow others to use your version of this file }
  34. { under the MPL, indicate your decision by deleting the provisions above and }
  35. { replace them with the notice and other provisions required by the LGPL }
  36. { License. If you do not delete the provisions above, a recipient may use }
  37. { your version of this file under either the MPL or the LGPL License. }
  38. { }
  39. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  40. { }
  41. {******************************************************************************}
  42. // $Id: JwaSddl.pas,v 1.11 2007/09/05 11:58:52 dezipaitor Exp $
  43. {$IFNDEF JWA_OMIT_SECTIONS}
  44. unit JwaSddl;
  45. {$WEAKPACKAGEUNIT}
  46. {$ENDIF JWA_OMIT_SECTIONS}
  47. {$HPPEMIT ''}
  48. {$HPPEMIT '#include "sddl.h"'}
  49. {$HPPEMIT ''}
  50. {$IFNDEF JWA_OMIT_SECTIONS}
  51. {$I jediapilib.inc}
  52. interface
  53. uses
  54. JwaWinNT, JwaWinType;
  55. {$ENDIF JWA_OMIT_SECTIONS}
  56. {$IFNDEF JWA_IMPLEMENTATIONSECTION}
  57. //
  58. // SDDL Version information
  59. //
  60. const
  61. SDDL_REVISION_1 = 1;
  62. {$EXTERNALSYM SDDL_REVISION_1}
  63. SDDL_REVISION = SDDL_REVISION_1;
  64. {$EXTERNALSYM SDDL_REVISION}
  65. //
  66. // SDDL Component tags
  67. //
  68. SDDL_OWNER = 'O'; // Owner tag
  69. {$EXTERNALSYM SDDL_OWNER}
  70. SDDL_GROUP = 'G'; // Group tag
  71. {$EXTERNALSYM SDDL_GROUP}
  72. SDDL_DACL = 'D'; // DACL tag
  73. {$EXTERNALSYM SDDL_DACL}
  74. SDDL_SACL = 'S'; // SACL tag
  75. {$EXTERNALSYM SDDL_SACL}
  76. //
  77. // SDDL Security descriptor controls
  78. //
  79. SDDL_PROTECTED = 'P'; // DACL or SACL Protected
  80. {$EXTERNALSYM SDDL_PROTECTED}
  81. SDDL_AUTO_INHERIT_REQ = 'AR'; // Auto inherit request
  82. {$EXTERNALSYM SDDL_AUTO_INHERIT_REQ}
  83. SDDL_AUTO_INHERITED = 'AI'; // DACL/SACL are auto inherited
  84. {$EXTERNALSYM SDDL_AUTO_INHERITED}
  85. //
  86. // SDDL Ace types
  87. //
  88. SDDL_ACCESS_ALLOWED = 'A'; // Access allowed
  89. {$EXTERNALSYM SDDL_ACCESS_ALLOWED}
  90. SDDL_ACCESS_DENIED = 'D'; // Access denied
  91. {$EXTERNALSYM SDDL_ACCESS_DENIED}
  92. SDDL_OBJECT_ACCESS_ALLOWED = 'OA'; // Object access allowed
  93. {$EXTERNALSYM SDDL_OBJECT_ACCESS_ALLOWED}
  94. SDDL_OBJECT_ACCESS_DENIED = 'OD'; // Object access denied
  95. {$EXTERNALSYM SDDL_OBJECT_ACCESS_DENIED}
  96. SDDL_AUDIT = 'AU'; // Audit
  97. {$EXTERNALSYM SDDL_AUDIT}
  98. SDDL_ALARM = 'AL'; // Alarm
  99. {$EXTERNALSYM SDDL_ALARM}
  100. SDDL_OBJECT_AUDIT = 'OU'; // Object audit
  101. {$EXTERNALSYM SDDL_OBJECT_AUDIT}
  102. SDDL_OBJECT_ALARM = 'OL'; // Object alarm
  103. {$EXTERNALSYM SDDL_OBJECT_ALARM}
  104. //
  105. // SDDL Ace flags
  106. //
  107. SDDL_CONTAINER_INHERIT = 'CI'; // Container inherit
  108. {$EXTERNALSYM SDDL_CONTAINER_INHERIT}
  109. SDDL_OBJECT_INHERIT = 'OI'; // Object inherit
  110. {$EXTERNALSYM SDDL_OBJECT_INHERIT}
  111. SDDL_NO_PROPAGATE = 'NP'; // Inherit no propagate
  112. {$EXTERNALSYM SDDL_NO_PROPAGATE}
  113. SDDL_INHERIT_ONLY = 'IO'; // Inherit only
  114. {$EXTERNALSYM SDDL_INHERIT_ONLY}
  115. SDDL_INHERITED = 'ID'; // Inherited
  116. {$EXTERNALSYM SDDL_INHERITED}
  117. SDDL_AUDIT_SUCCESS = 'SA'; // Audit success
  118. {$EXTERNALSYM SDDL_AUDIT_SUCCESS}
  119. SDDL_AUDIT_FAILURE = 'FA'; // Audit failure
  120. {$EXTERNALSYM SDDL_AUDIT_FAILURE}
  121. //
  122. // SDDL Rights
  123. //
  124. SDDL_READ_PROPERTY = 'RP';
  125. {$EXTERNALSYM SDDL_READ_PROPERTY}
  126. SDDL_WRITE_PROPERTY = 'WP';
  127. {$EXTERNALSYM SDDL_WRITE_PROPERTY}
  128. SDDL_CREATE_CHILD = 'CC';
  129. {$EXTERNALSYM SDDL_CREATE_CHILD}
  130. SDDL_DELETE_CHILD = 'DC';
  131. {$EXTERNALSYM SDDL_DELETE_CHILD}
  132. SDDL_LIST_CHILDREN = 'LC';
  133. {$EXTERNALSYM SDDL_LIST_CHILDREN}
  134. SDDL_SELF_WRITE = 'SW';
  135. {$EXTERNALSYM SDDL_SELF_WRITE}
  136. SDDL_LIST_OBJECT = 'LO';
  137. {$EXTERNALSYM SDDL_LIST_OBJECT}
  138. SDDL_DELETE_TREE = 'DT';
  139. {$EXTERNALSYM SDDL_DELETE_TREE}
  140. SDDL_CONTROL_ACCESS = 'CR';
  141. {$EXTERNALSYM SDDL_CONTROL_ACCESS}
  142. SDDL_READ_CONTROL = 'RC';
  143. {$EXTERNALSYM SDDL_READ_CONTROL}
  144. SDDL_WRITE_DAC = 'WD';
  145. {$EXTERNALSYM SDDL_WRITE_DAC}
  146. SDDL_WRITE_OWNER = 'WO';
  147. {$EXTERNALSYM SDDL_WRITE_OWNER}
  148. SDDL_STANDARD_DELETE = 'SD';
  149. {$EXTERNALSYM SDDL_STANDARD_DELETE}
  150. SDDL_GENERIC_ALL = 'GA';
  151. {$EXTERNALSYM SDDL_GENERIC_ALL}
  152. SDDL_GENERIC_READ = 'GR';
  153. {$EXTERNALSYM SDDL_GENERIC_READ}
  154. SDDL_GENERIC_WRITE = 'GW';
  155. {$EXTERNALSYM SDDL_GENERIC_WRITE}
  156. SDDL_GENERIC_EXECUTE = 'GX';
  157. {$EXTERNALSYM SDDL_GENERIC_EXECUTE}
  158. SDDL_FILE_ALL = 'FA';
  159. {$EXTERNALSYM SDDL_FILE_ALL}
  160. SDDL_FILE_READ = 'FR';
  161. {$EXTERNALSYM SDDL_FILE_READ}
  162. SDDL_FILE_WRITE = 'FW';
  163. {$EXTERNALSYM SDDL_FILE_WRITE}
  164. SDDL_FILE_EXECUTE = 'FX';
  165. {$EXTERNALSYM SDDL_FILE_EXECUTE}
  166. SDDL_KEY_ALL = 'KA';
  167. {$EXTERNALSYM SDDL_KEY_ALL}
  168. SDDL_KEY_READ = 'KR';
  169. {$EXTERNALSYM SDDL_KEY_READ}
  170. SDDL_KEY_WRITE = 'KW';
  171. {$EXTERNALSYM SDDL_KEY_WRITE}
  172. SDDL_KEY_EXECUTE = 'KX';
  173. {$EXTERNALSYM SDDL_KEY_EXECUTE}
  174. //
  175. // SDDL User alias max size
  176. // - currently, upto two supported eg. "DA"
  177. // - modify this if more WCHARs need to be there in future e.g. "DAX"
  178. //
  179. SDDL_ALIAS_SIZE = 2;
  180. {$EXTERNALSYM SDDL_ALIAS_SIZE}
  181. //
  182. // SDDL User aliases
  183. //
  184. SDDL_DOMAIN_ADMINISTRATORS = 'DA'; // Domain admins
  185. {$EXTERNALSYM SDDL_DOMAIN_ADMINISTRATORS}
  186. SDDL_DOMAIN_GUESTS = 'DG'; // Domain guests
  187. {$EXTERNALSYM SDDL_DOMAIN_GUESTS}
  188. SDDL_DOMAIN_USERS = 'DU'; // Domain users
  189. {$EXTERNALSYM SDDL_DOMAIN_USERS}
  190. SDDL_ENTERPRISE_DOMAIN_CONTROLLERS = 'ED'; // Enterprise domain controllers
  191. {$EXTERNALSYM SDDL_ENTERPRISE_DOMAIN_CONTROLLERS}
  192. SDDL_DOMAIN_DOMAIN_CONTROLLERS = 'DD'; // Domain domain controllers
  193. {$EXTERNALSYM SDDL_DOMAIN_DOMAIN_CONTROLLERS}
  194. SDDL_DOMAIN_COMPUTERS = 'DC'; // Domain computers
  195. {$EXTERNALSYM SDDL_DOMAIN_COMPUTERS}
  196. SDDL_BUILTIN_ADMINISTRATORS = 'BA'; // Builtin (local ) administrators
  197. {$EXTERNALSYM SDDL_BUILTIN_ADMINISTRATORS}
  198. SDDL_BUILTIN_GUESTS = 'BG'; // Builtin (local ) guests
  199. {$EXTERNALSYM SDDL_BUILTIN_GUESTS}
  200. SDDL_BUILTIN_USERS = 'BU'; // Builtin (local ) users
  201. {$EXTERNALSYM SDDL_BUILTIN_USERS}
  202. SDDL_LOCAL_ADMIN = 'LA'; // Local administrator account
  203. {$EXTERNALSYM SDDL_LOCAL_ADMIN}
  204. SDDL_LOCAL_GUEST = 'LG'; // Local group account
  205. {$EXTERNALSYM SDDL_LOCAL_GUEST}
  206. SDDL_ACCOUNT_OPERATORS = 'AO'; // Account operators
  207. {$EXTERNALSYM SDDL_ACCOUNT_OPERATORS}
  208. SDDL_BACKUP_OPERATORS = 'BO'; // Backup operators
  209. {$EXTERNALSYM SDDL_BACKUP_OPERATORS}
  210. SDDL_PRINTER_OPERATORS = 'PO'; // Printer operators
  211. {$EXTERNALSYM SDDL_PRINTER_OPERATORS}
  212. SDDL_SERVER_OPERATORS = 'SO'; // Server operators
  213. {$EXTERNALSYM SDDL_SERVER_OPERATORS}
  214. SDDL_AUTHENTICATED_USERS = 'AU'; // Authenticated users
  215. {$EXTERNALSYM SDDL_AUTHENTICATED_USERS}
  216. SDDL_PERSONAL_SELF = 'PS'; // Personal self
  217. {$EXTERNALSYM SDDL_PERSONAL_SELF}
  218. SDDL_CREATOR_OWNER = 'CO'; // Creator owner
  219. {$EXTERNALSYM SDDL_CREATOR_OWNER}
  220. SDDL_CREATOR_GROUP = 'CG'; // Creator group
  221. {$EXTERNALSYM SDDL_CREATOR_GROUP}
  222. SDDL_LOCAL_SYSTEM = 'SY'; // Local system
  223. {$EXTERNALSYM SDDL_LOCAL_SYSTEM}
  224. SDDL_POWER_USERS = 'PU'; // Power users
  225. {$EXTERNALSYM SDDL_POWER_USERS}
  226. SDDL_EVERYONE = 'WD'; // Everyone ( World )
  227. {$EXTERNALSYM SDDL_EVERYONE}
  228. SDDL_REPLICATOR = 'RE'; // Replicator
  229. {$EXTERNALSYM SDDL_REPLICATOR}
  230. SDDL_INTERACTIVE = 'IU'; // Interactive logon user
  231. {$EXTERNALSYM SDDL_INTERACTIVE}
  232. SDDL_NETWORK = 'NU'; // Nework logon user
  233. {$EXTERNALSYM SDDL_NETWORK}
  234. SDDL_SERVICE = 'SU'; // Service logon user
  235. {$EXTERNALSYM SDDL_SERVICE}
  236. SDDL_RESTRICTED_CODE = 'RC'; // Restricted code
  237. {$EXTERNALSYM SDDL_RESTRICTED_CODE}
  238. SDDL_ANONYMOUS = 'AN'; // Anonymous Logon
  239. {$EXTERNALSYM SDDL_ANONYMOUS}
  240. SDDL_SCHEMA_ADMINISTRATORS = 'SA'; // Schema Administrators
  241. {$EXTERNALSYM SDDL_SCHEMA_ADMINISTRATORS}
  242. SDDL_CERT_SERV_ADMINISTRATORS = 'CA'; // Certificate Server Administrators
  243. {$EXTERNALSYM SDDL_CERT_SERV_ADMINISTRATORS}
  244. SDDL_RAS_SERVERS = 'RS'; // RAS servers group
  245. {$EXTERNALSYM SDDL_RAS_SERVERS}
  246. SDDL_ENTERPRISE_ADMINS = 'EA'; // Enterprise administrators
  247. {$EXTERNALSYM SDDL_ENTERPRISE_ADMINS}
  248. SDDL_GROUP_POLICY_ADMINS = 'PA'; // Group Policy administrators
  249. {$EXTERNALSYM SDDL_GROUP_POLICY_ADMINS}
  250. SDDL_ALIAS_PREW2KCOMPACC = 'RU'; // alias to allow previous windows 2000
  251. {$EXTERNALSYM SDDL_ALIAS_PREW2KCOMPACC}
  252. SDDL_LOCAL_SERVICE = 'LS'; // Local service account (for services)
  253. {$EXTERNALSYM SDDL_LOCAL_SERVICE}
  254. SDDL_NETWORK_SERVICE = 'NS'; // Network service account (for services)
  255. {$EXTERNALSYM SDDL_NETWORK_SERVICE}
  256. SDDL_REMOTE_DESKTOP = 'RD'; // Remote desktop users (for terminal server)
  257. {$EXTERNALSYM SDDL_REMOTE_DESKTOP}
  258. SDDL_NETWORK_CONFIGURATION_OPS = 'NO'; // Network configuration operators ( to manage configuration of networking features)
  259. {$EXTERNALSYM SDDL_NETWORK_CONFIGURATION_OPS}
  260. SDDL_PERFMON_USERS = 'MU'; // Performance Monitor Users
  261. {$EXTERNALSYM SDDL_PERFMON_USERS}
  262. SDDL_PERFLOG_USERS = 'LU'; // Performance Log Users
  263. {$EXTERNALSYM SDDL_PERFLOG_USERS}
  264. //
  265. // SDDL Seperators - character version
  266. //
  267. SDDL_SEPERATORC = ';';
  268. {$EXTERNALSYM SDDL_SEPERATORC}
  269. SDDL_DELIMINATORC = ':';
  270. {$EXTERNALSYM SDDL_DELIMINATORC}
  271. SDDL_ACE_BEGINC = '(';
  272. {$EXTERNALSYM SDDL_ACE_BEGINC}
  273. SDDL_ACE_ENDC = ')';
  274. {$EXTERNALSYM SDDL_ACE_ENDC}
  275. //
  276. // SDDL Seperators - string version
  277. //
  278. SDDL_SEPERATOR = ';';
  279. {$EXTERNALSYM SDDL_SEPERATOR}
  280. SDDL_DELIMINATOR = ':';
  281. {$EXTERNALSYM SDDL_DELIMINATOR}
  282. SDDL_ACE_BEGIN = '(';
  283. {$EXTERNALSYM SDDL_ACE_BEGIN}
  284. SDDL_ACE_END = ')';
  285. {$EXTERNALSYM SDDL_ACE_END}
  286. function ConvertSidToStringSidA(Sid: PSID; var StringSid: LPSTR): BOOL; stdcall;
  287. {$EXTERNALSYM ConvertSidToStringSidA}
  288. function ConvertSidToStringSidW(Sid: PSID; var StringSid: LPWSTR): BOOL; stdcall;
  289. {$EXTERNALSYM ConvertSidToStringSidW}
  290. function ConvertSidToStringSid(Sid: PSID; var StringSid: LPTSTR): BOOL; stdcall;
  291. {$EXTERNALSYM ConvertSidToStringSid}
  292. function ConvertStringSidToSidA(StringSid: LPCSTR; var Sid: PSID): BOOL; stdcall;
  293. {$EXTERNALSYM ConvertStringSidToSidA}
  294. function ConvertStringSidToSidW(StringSid: LPCWSTR; var Sid: PSID): BOOL; stdcall;
  295. {$EXTERNALSYM ConvertStringSidToSidW}
  296. function ConvertStringSidToSid(StringSid: LPCTSTR; var Sid: PSID): BOOL; stdcall;
  297. {$EXTERNALSYM ConvertStringSidToSid}
  298. function ConvertStringSecurityDescriptorToSecurityDescriptorA(StringSecurityDescriptor: LPCSTR;
  299. StringSDRevision: DWORD; var SecurityDescriptor: PSECURITY_DESCRIPTOR;
  300. SecurityDescriptorSize: PULONG): BOOL; stdcall;
  301. {$EXTERNALSYM ConvertStringSecurityDescriptorToSecurityDescriptorA}
  302. function ConvertStringSecurityDescriptorToSecurityDescriptorW(StringSecurityDescriptor: LPCWSTR;
  303. StringSDRevision: DWORD; var SecurityDescriptor: PSECURITY_DESCRIPTOR;
  304. SecurityDescriptorSize: PULONG): BOOL; stdcall;
  305. {$EXTERNALSYM ConvertStringSecurityDescriptorToSecurityDescriptorW}
  306. function ConvertStringSecurityDescriptorToSecurityDescriptor(StringSecurityDescriptor: LPCTSTR;
  307. StringSDRevision: DWORD; var SecurityDescriptor: PSECURITY_DESCRIPTOR;
  308. SecurityDescriptorSize: PULONG): BOOL; stdcall;
  309. {$EXTERNALSYM ConvertStringSecurityDescriptorToSecurityDescriptor}
  310. function ConvertSecurityDescriptorToStringSecurityDescriptorA(
  311. SecurityDescriptor: PSECURITY_DESCRIPTOR; RequestedStringSDRevision: DWORD;
  312. SecurityInformation: SECURITY_INFORMATION; var StringSecurityDescriptor: LPSTR;
  313. StringSecurityDescriptorLen: PULONG): BOOL; stdcall;
  314. {$EXTERNALSYM ConvertSecurityDescriptorToStringSecurityDescriptorA}
  315. function ConvertSecurityDescriptorToStringSecurityDescriptorW(
  316. SecurityDescriptor: PSECURITY_DESCRIPTOR; RequestedStringSDRevision: DWORD;
  317. SecurityInformation: SECURITY_INFORMATION; var StringSecurityDescriptor: LPWSTR;
  318. StringSecurityDescriptorLen: PULONG): BOOL; stdcall;
  319. {$EXTERNALSYM ConvertSecurityDescriptorToStringSecurityDescriptorW}
  320. function ConvertSecurityDescriptorToStringSecurityDescriptor(
  321. SecurityDescriptor: PSECURITY_DESCRIPTOR; RequestedStringSDRevision: DWORD;
  322. SecurityInformation: SECURITY_INFORMATION; var StringSecurityDescriptor: LPTSTR;
  323. StringSecurityDescriptorLen: PULONG): BOOL; stdcall;
  324. {$EXTERNALSYM ConvertSecurityDescriptorToStringSecurityDescriptor}
  325. {$ENDIF JWA_IMPLEMENTATIONSECTION}
  326. {$IFNDEF JWA_OMIT_SECTIONS}
  327. implementation
  328. //uses ...
  329. {$ENDIF JWA_OMIT_SECTIONS}
  330. {$IFNDEF JWA_INTERFACESECTION}
  331. {$IFNDEF JWA_INCLUDEMODE}
  332. const
  333. advapi32 = 'advapi32.dll';
  334. {$IFDEF UNICODE}
  335. AWSuffix = 'W';
  336. {$ELSE}
  337. AWSuffix = 'A';
  338. {$ENDIF UNICODE}
  339. {$ENDIF JWA_INCLUDEMODE}
  340. {$IFDEF DYNAMIC_LINK}
  341. var
  342. _ConvertSidToStringSidA: Pointer;
  343. function ConvertSidToStringSidA;
  344. begin
  345. GetProcedureAddress(_ConvertSidToStringSidA, advapi32, 'ConvertSidToStringSidA');
  346. asm
  347. MOV ESP, EBP
  348. POP EBP
  349. JMP [_ConvertSidToStringSidA]
  350. end;
  351. end;
  352. var
  353. _ConvertSidToStringSidW: Pointer;
  354. function ConvertSidToStringSidW;
  355. begin
  356. GetProcedureAddress(_ConvertSidToStringSidW, advapi32, 'ConvertSidToStringSidW');
  357. asm
  358. MOV ESP, EBP
  359. POP EBP
  360. JMP [_ConvertSidToStringSidW]
  361. end;
  362. end;
  363. var
  364. _ConvertSidToStringSid: Pointer;
  365. function ConvertSidToStringSid;
  366. begin
  367. GetProcedureAddress(_ConvertSidToStringSid, advapi32, 'ConvertSidToStringSid' + AWSuffix);
  368. asm
  369. MOV ESP, EBP
  370. POP EBP
  371. JMP [_ConvertSidToStringSid]
  372. end;
  373. end;
  374. var
  375. _ConvertStringSidToSidA: Pointer;
  376. function ConvertStringSidToSidA;
  377. begin
  378. GetProcedureAddress(_ConvertStringSidToSidA, advapi32, 'ConvertStringSidToSidA');
  379. asm
  380. MOV ESP, EBP
  381. POP EBP
  382. JMP [_ConvertStringSidToSidA]
  383. end;
  384. end;
  385. var
  386. _ConvertStringSidToSidW: Pointer;
  387. function ConvertStringSidToSidW;
  388. begin
  389. GetProcedureAddress(_ConvertStringSidToSidW, advapi32, 'ConvertStringSidToSidW');
  390. asm
  391. MOV ESP, EBP
  392. POP EBP
  393. JMP [_ConvertStringSidToSidW]
  394. end;
  395. end;
  396. var
  397. _ConvertStringSidToSid: Pointer;
  398. function ConvertStringSidToSid;
  399. begin
  400. GetProcedureAddress(_ConvertStringSidToSid, advapi32, 'ConvertStringSidToSid' + AWSuffix);
  401. asm
  402. MOV ESP, EBP
  403. POP EBP
  404. JMP [_ConvertStringSidToSid]
  405. end;
  406. end;
  407. var
  408. _ConvStrSecDescrToSecDescrA: Pointer;
  409. function ConvertStringSecurityDescriptorToSecurityDescriptorA;
  410. begin
  411. GetProcedureAddress(_ConvStrSecDescrToSecDescrA, advapi32, 'ConvertStringSecurityDescriptorToSecurityDescriptorA');
  412. asm
  413. MOV ESP, EBP
  414. POP EBP
  415. JMP [_ConvStrSecDescrToSecDescrA]
  416. end;
  417. end;
  418. var
  419. _ConvStrSecDescrToSecDescrW: Pointer;
  420. function ConvertStringSecurityDescriptorToSecurityDescriptorW;
  421. begin
  422. GetProcedureAddress(_ConvStrSecDescrToSecDescrW, advapi32, 'ConvertStringSecurityDescriptorToSecurityDescriptorW');
  423. asm
  424. MOV ESP, EBP
  425. POP EBP
  426. JMP [_ConvStrSecDescrToSecDescrW]
  427. end;
  428. end;
  429. var
  430. _ConvStrSecDescrToSecDescr: Pointer;
  431. function ConvertStringSecurityDescriptorToSecurityDescriptor;
  432. begin
  433. GetProcedureAddress(_ConvStrSecDescrToSecDescr, advapi32, 'ConvertStringSecurityDescriptorToSecurityDescriptor' + AWSuffix);
  434. asm
  435. MOV ESP, EBP
  436. POP EBP
  437. JMP [_ConvStrSecDescrToSecDescr]
  438. end;
  439. end;
  440. var
  441. _ConvSecDescrToStrSecDescrA: Pointer;
  442. function ConvertSecurityDescriptorToStringSecurityDescriptorA;
  443. begin
  444. GetProcedureAddress(_ConvSecDescrToStrSecDescrA, advapi32, 'ConvertSecurityDescriptorToStringSecurityDescriptorA');
  445. asm
  446. MOV ESP, EBP
  447. POP EBP
  448. JMP [_ConvSecDescrToStrSecDescrA]
  449. end;
  450. end;
  451. var
  452. _ConvSecDescrToStrSecDescrW: Pointer;
  453. function ConvertSecurityDescriptorToStringSecurityDescriptorW;
  454. begin
  455. GetProcedureAddress(_ConvSecDescrToStrSecDescrW, advapi32, 'ConvertSecurityDescriptorToStringSecurityDescriptorW');
  456. asm
  457. MOV ESP, EBP
  458. POP EBP
  459. JMP [_ConvSecDescrToStrSecDescrW]
  460. end;
  461. end;
  462. var
  463. _ConvSecDescrToStrSecDescr: Pointer;
  464. function ConvertSecurityDescriptorToStringSecurityDescriptor;
  465. begin
  466. GetProcedureAddress(_ConvSecDescrToStrSecDescr, advapi32, 'ConvertSecurityDescriptorToStringSecurityDescriptor' + AWSuffix);
  467. asm
  468. MOV ESP, EBP
  469. POP EBP
  470. JMP [_ConvSecDescrToStrSecDescr]
  471. end;
  472. end;
  473. {$ELSE}
  474. function ConvertSidToStringSidA; external advapi32 name 'ConvertSidToStringSidA';
  475. function ConvertSidToStringSidW; external advapi32 name 'ConvertSidToStringSidW';
  476. function ConvertSidToStringSid; external advapi32 name 'ConvertSidToStringSid' + AWSuffix;
  477. function ConvertStringSidToSidA; external advapi32 name 'ConvertStringSidToSidA';
  478. function ConvertStringSidToSidW; external advapi32 name 'ConvertStringSidToSidW';
  479. function ConvertStringSidToSid; external advapi32 name 'ConvertStringSidToSid' + AWSuffix;
  480. function ConvertStringSecurityDescriptorToSecurityDescriptorA; external advapi32 name 'ConvertStringSecurityDescriptorToSecurityDescriptorA';
  481. function ConvertStringSecurityDescriptorToSecurityDescriptorW; external advapi32 name 'ConvertStringSecurityDescriptorToSecurityDescriptorW';
  482. function ConvertStringSecurityDescriptorToSecurityDescriptor; external advapi32 name 'ConvertStringSecurityDescriptorToSecurityDescriptor' + AWSuffix;
  483. function ConvertSecurityDescriptorToStringSecurityDescriptorA; external advapi32 name 'ConvertSecurityDescriptorToStringSecurityDescriptorA';
  484. function ConvertSecurityDescriptorToStringSecurityDescriptorW; external advapi32 name 'ConvertSecurityDescriptorToStringSecurityDescriptorW';
  485. function ConvertSecurityDescriptorToStringSecurityDescriptor; external advapi32 name 'ConvertSecurityDescriptorToStringSecurityDescriptor' + AWSuffix;
  486. {$ENDIF DYNAMIC_LINK}
  487. {$ENDIF JWA_INTERFACESECTION}
  488. {$IFNDEF JWA_OMIT_SECTIONS}
  489. end.
  490. {$ENDIF JWA_OMIT_SECTIONS}