jwalmaudit.pas 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721
  1. {******************************************************************************}
  2. { }
  3. { Lan Manager Audit 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: lmaudit.h, released November 2001. The original Pascal }
  9. { code is: LmAudit.pas, released Februari 2002. 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. unit JwaLmAudit;
  43. {$WEAKPACKAGEUNIT}
  44. {$HPPEMIT ''}
  45. {$HPPEMIT '#include "lmaudit.h"'}
  46. {$HPPEMIT ''}
  47. {$I jediapilib.inc}
  48. interface
  49. uses
  50. JwaLmCons, JwaWinType;
  51. type
  52. _HLOG = record
  53. time: DWORD;
  54. last_flags: DWORD;
  55. offset: DWORD;
  56. rec_offset: DWORD;
  57. end;
  58. {$EXTERNALSYM _HLOG}
  59. HLOG = _HLOG;
  60. {$EXTERNALSYM HLOG}
  61. LPHLOG = ^HLOG;
  62. {$EXTERNALSYM LPHLOG}
  63. PHLOG = ^HLOG;
  64. {$EXTERNALSYM PHLOG}
  65. const
  66. LOGFLAGS_FORWARD = 0;
  67. {$EXTERNALSYM LOGFLAGS_FORWARD}
  68. LOGFLAGS_BACKWARD = $1;
  69. {$EXTERNALSYM LOGFLAGS_BACKWARD}
  70. LOGFLAGS_SEEK = $2;
  71. {$EXTERNALSYM LOGFLAGS_SEEK}
  72. //
  73. // Function Prototypes - Audit
  74. //
  75. function NetAuditClear(server, backupfile, service: LPCWSTR): NET_API_STATUS; stdcall;
  76. {$EXTERNALSYM NetAuditClear}
  77. function NetAuditRead(server, service: LPCWSTR; auditloghandle: LPHLOG; offset: DWORD; reserved1: LPDWORD; reserved2, offsetflag: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; bytesread, totalavailable: LPDWORD): NET_API_STATUS; stdcall;
  78. {$EXTERNALSYM NetAuditRead}
  79. function NetAuditWrite(type_: DWORD; buf: LPBYTE; numbytes: DWORD; service: LPCWSTR; reserved: LPBYTE): NET_API_STATUS; stdcall;
  80. {$EXTERNALSYM NetAuditWrite}
  81. //
  82. // Data Structures - Audit
  83. //
  84. type
  85. _AUDIT_ENTRY = record
  86. ae_len: DWORD;
  87. ae_reserved: DWORD;
  88. ae_time: DWORD;
  89. ae_type: DWORD;
  90. ae_data_offset: DWORD; // Offset from beginning address of audit_entry
  91. ae_data_size: DWORD; // byte count of ae_data area (not incl pad).
  92. end;
  93. {$EXTERNALSYM _AUDIT_ENTRY}
  94. AUDIT_ENTRY = _AUDIT_ENTRY;
  95. {$EXTERNALSYM AUDIT_ENTRY}
  96. LPAUDIT_ENTRY = ^AUDIT_ENTRY;
  97. {$EXTERNALSYM LPAUDIT_ENTRY}
  98. PAUDIT_ENTRY = ^AUDIT_ENTRY;
  99. {$EXTERNALSYM PAUDIT_ENTRY}
  100. TAuditEntry = AUDIT_ENTRY;
  101. PAuditEntry = PAUDIT_ENTRY;
  102. {$DEFINE REVISED_AUDIT_ENTRY_STRUCT}
  103. _AE_SRVSTATUS = record
  104. ae_sv_status: DWORD;
  105. end;
  106. {$EXTERNALSYM _AE_SRVSTATUS}
  107. //AE_SRVSTATUS = _AE_SRVSTATUS;
  108. //{$EXTERNALSYM AE_SRVSTATUS}
  109. LPAE_SRVSTATUS = ^_AE_SRVSTATUS;
  110. {$EXTERNALSYM LPAE_SRVSTATUS}
  111. PAE_SRVSTATUS = ^_AE_SRVSTATUS;
  112. {$EXTERNALSYM PAE_SRVSTATUS}
  113. TAeSrvStatus = _AE_SRVSTATUS;
  114. PAeSrvStatus = PAE_SRVSTATUS;
  115. _AE_SESSLOGON = record
  116. ae_so_compname: DWORD;
  117. ae_so_username: DWORD;
  118. ae_so_privilege: DWORD;
  119. end;
  120. {$EXTERNALSYM _AE_SESSLOGON}
  121. //AE_SESSLOGON = _AE_SESSLOGON;
  122. //{$EXTERNALSYM AE_SESSLOGON}
  123. LPAE_SESSLOGON = ^_AE_SESSLOGON;
  124. {$EXTERNALSYM LPAE_SESSLOGON}
  125. PAE_SESSLOGON = ^_AE_SESSLOGON;
  126. {$EXTERNALSYM PAE_SESSLOGON}
  127. TAeSessLogon = _AE_SESSLOGON;
  128. PAeSessLogon = PAE_SESSLOGON;
  129. _AE_SESSLOGOFF = record
  130. ae_sf_compname: DWORD;
  131. ae_sf_username: DWORD;
  132. ae_sf_reason: DWORD;
  133. end;
  134. {$EXTERNALSYM _AE_SESSLOGOFF}
  135. //AE_SESSLOGOFF = _AE_SESSLOGOFF;
  136. //{$EXTERNALSYM AE_SESSLOGOFF}
  137. LPAE_SESSLOGOFF = ^_AE_SESSLOGOFF;
  138. {$EXTERNALSYM LPAE_SESSLOGOFF}
  139. PAE_SESSLOGOFF = ^_AE_SESSLOGOFF;
  140. {$EXTERNALSYM PAE_SESSLOGOFF}
  141. TAeSessLogoff = _AE_SESSLOGOFF;
  142. PAeSessLogoff = PAE_SESSLOGOFF;
  143. _AE_SESSPWERR = record
  144. ae_sp_compname: DWORD;
  145. ae_sp_username: DWORD;
  146. end;
  147. {$EXTERNALSYM _AE_SESSPWERR}
  148. //AE_SESSPWERR = _AE_SESSPWERR;
  149. //{$EXTERNALSYM AE_SESSPWERR}
  150. LPAE_SESSPWERR = ^_AE_SESSPWERR;
  151. {$EXTERNALSYM LPAE_SESSPWERR}
  152. PAE_SESSPWERR = ^_AE_SESSPWERR;
  153. {$EXTERNALSYM PAE_SESSPWERR}
  154. TAeSessPwerr = _AE_SESSPWERR;
  155. PAeSessPwerr = PAE_SESSPWERR;
  156. _AE_CONNSTART = record
  157. ae_ct_compname: DWORD;
  158. ae_ct_username: DWORD;
  159. ae_ct_netname: DWORD;
  160. ae_ct_connid: DWORD;
  161. end;
  162. {$EXTERNALSYM _AE_CONNSTART}
  163. //AE_CONNSTART = _AE_CONNSTART;
  164. //{$EXTERNALSYM AE_CONNSTART}
  165. LPAE_CONNSTART = ^_AE_CONNSTART;
  166. {$EXTERNALSYM LPAE_CONNSTART}
  167. PAE_CONNSTART = ^_AE_CONNSTART;
  168. {$EXTERNALSYM PAE_CONNSTART}
  169. TAeConnStart = _AE_CONNSTART;
  170. PAeConnStart = PAE_CONNSTART;
  171. _AE_CONNSTOP = record
  172. ae_cp_compname: DWORD;
  173. ae_cp_username: DWORD;
  174. ae_cp_netname: DWORD;
  175. ae_cp_connid: DWORD;
  176. ae_cp_reason: DWORD;
  177. end;
  178. {$EXTERNALSYM _AE_CONNSTOP}
  179. //AE_CONNSTOP = _AE_CONNSTOP;
  180. //{$EXTERNALSYM AE_CONNSTOP}
  181. LPAE_CONNSTOP = ^_AE_CONNSTOP;
  182. {$EXTERNALSYM LPAE_CONNSTOP}
  183. PAE_CONNSTOP = ^_AE_CONNSTOP;
  184. {$EXTERNALSYM PAE_CONNSTOP}
  185. TAeConnStop = _AE_CONNSTOP;
  186. PAeConnStop = PAE_CONNSTOP;
  187. _AE_CONNREJ = record
  188. ae_cr_compname: DWORD;
  189. ae_cr_username: DWORD;
  190. ae_cr_netname: DWORD;
  191. ae_cr_reason: DWORD;
  192. end;
  193. {$EXTERNALSYM _AE_CONNREJ}
  194. //AE_CONNREJ = _AE_CONNREJ;
  195. //{$EXTERNALSYM AE_CONNREJ}
  196. LPAE_CONNREJ = ^_AE_CONNREJ;
  197. {$EXTERNALSYM LPAE_CONNREJ}
  198. PAE_CONNREJ = ^_AE_CONNREJ;
  199. {$EXTERNALSYM PAE_CONNREJ}
  200. TAeConnRej = _AE_CONNREJ;
  201. PAeConnRej = PAE_CONNREJ;
  202. _AE_RESACCESS = record
  203. ae_ra_compname: DWORD;
  204. ae_ra_username: DWORD;
  205. ae_ra_resname: DWORD;
  206. ae_ra_operation: DWORD;
  207. ae_ra_returncode: DWORD;
  208. ae_ra_restype: DWORD;
  209. ae_ra_fileid: DWORD;
  210. end;
  211. {$EXTERNALSYM _AE_RESACCESS}
  212. //AE_RESACCESS = _AE_RESACCESS;
  213. //{$EXTERNALSYM AE_RESACCESS}
  214. LPAE_RESACCESS = ^_AE_RESACCESS;
  215. {$EXTERNALSYM LPAE_RESACCESS}
  216. PAE_RESACCESS = ^_AE_RESACCESS;
  217. {$EXTERNALSYM PAE_RESACCESS}
  218. TAeResAccess = _AE_RESACCESS;
  219. PAeResAccess = PAE_RESACCESS;
  220. _AE_RESACCESSREJ = record
  221. ae_rr_compname: DWORD;
  222. ae_rr_username: DWORD;
  223. ae_rr_resname: DWORD;
  224. ae_rr_operation: DWORD;
  225. end;
  226. {$EXTERNALSYM _AE_RESACCESSREJ}
  227. //AE_RESACCESSREJ = _AE_RESACCESSREJ;
  228. //{$EXTERNALSYM AE_RESACCESSREJ}
  229. LPAE_RESACCESSREJ = ^_AE_RESACCESSREJ;
  230. {$EXTERNALSYM LPAE_RESACCESSREJ}
  231. PAE_RESACCESSREJ = ^_AE_RESACCESSREJ;
  232. {$EXTERNALSYM PAE_RESACCESSREJ}
  233. TAeResAccessRej = _AE_RESACCESSREJ;
  234. PAeResAccessRej = PAE_RESACCESSREJ;
  235. _AE_CLOSEFILE = record
  236. ae_cf_compname: DWORD;
  237. ae_cf_username: DWORD;
  238. ae_cf_resname: DWORD;
  239. ae_cf_fileid: DWORD;
  240. ae_cf_duration: DWORD;
  241. ae_cf_reason: DWORD;
  242. end;
  243. {$EXTERNALSYM _AE_CLOSEFILE}
  244. //AE_CLOSEFILE = _AE_CLOSEFILE;
  245. //{$EXTERNALSYM AE_CLOSEFILE}
  246. LPAE_CLOSEFILE = ^_AE_CLOSEFILE;
  247. {$EXTERNALSYM LPAE_CLOSEFILE}
  248. PAE_CLOSEFILE = ^_AE_CLOSEFILE;
  249. {$EXTERNALSYM PAE_CLOSEFILE}
  250. TAeCloseFile = _AE_CLOSEFILE;
  251. PAeCloseFile = PAE_CLOSEFILE;
  252. _AE_SERVICESTAT = record
  253. ae_ss_compname: DWORD;
  254. ae_ss_username: DWORD;
  255. ae_ss_svcname: DWORD;
  256. ae_ss_status: DWORD;
  257. ae_ss_code: DWORD;
  258. ae_ss_text: DWORD;
  259. ae_ss_returnval: DWORD;
  260. end;
  261. {$EXTERNALSYM _AE_SERVICESTAT}
  262. //AE_SERVICESTAT = _AE_SERVICESTAT;
  263. //{$EXTERNALSYM AE_SERVICESTAT}
  264. LPAE_SERVICESTAT = ^_AE_SERVICESTAT;
  265. {$EXTERNALSYM LPAE_SERVICESTAT}
  266. PAE_SERVICESTAT = ^_AE_SERVICESTAT;
  267. {$EXTERNALSYM PAE_SERVICESTAT}
  268. TAeServiceStat = _AE_SERVICESTAT;
  269. PAeServiceStat = PAE_SERVICESTAT;
  270. _AE_ACLMOD = record
  271. ae_am_compname: DWORD;
  272. ae_am_username: DWORD;
  273. ae_am_resname: DWORD;
  274. ae_am_action: DWORD;
  275. ae_am_datalen: DWORD;
  276. end;
  277. {$EXTERNALSYM _AE_ACLMOD}
  278. //AE_ACLMOD = _AE_ACLMOD;
  279. //{$EXTERNALSYM AE_ACLMOD}
  280. LPAE_ACLMOD = ^_AE_ACLMOD;
  281. {$EXTERNALSYM LPAE_ACLMOD}
  282. PAE_ACLMOD = ^_AE_ACLMOD;
  283. {$EXTERNALSYM PAE_ACLMOD}
  284. TAeAclMod = _AE_ACLMOD;
  285. PAeAclMod = PAE_ACLMOD;
  286. _AE_UASMOD = record
  287. ae_um_compname: DWORD;
  288. ae_um_username: DWORD;
  289. ae_um_resname: DWORD;
  290. ae_um_rectype: DWORD;
  291. ae_um_action: DWORD;
  292. ae_um_datalen: DWORD;
  293. end;
  294. {$EXTERNALSYM _AE_UASMOD}
  295. //AE_UASMOD = _AE_UASMOD;
  296. //{$EXTERNALSYM AE_UASMOD}
  297. LPAE_UASMOD = ^_AE_UASMOD;
  298. {$EXTERNALSYM LPAE_UASMOD}
  299. PAE_UASMOD = ^_AE_UASMOD;
  300. {$EXTERNALSYM PAE_UASMOD}
  301. TAeUasMod = _AE_UASMOD;
  302. PAeUasMod = PAE_UASMOD;
  303. _AE_NETLOGON = record
  304. ae_no_compname: DWORD;
  305. ae_no_username: DWORD;
  306. ae_no_privilege: DWORD;
  307. ae_no_authflags: DWORD;
  308. end;
  309. {$EXTERNALSYM _AE_NETLOGON}
  310. //AE_NETLOGON = _AE_NETLOGON;
  311. //{$EXTERNALSYM AE_NETLOGON}
  312. LPAE_NETLOGON = ^_AE_NETLOGON;
  313. {$EXTERNALSYM LPAE_NETLOGON}
  314. PAE_NETLOGON = ^_AE_NETLOGON;
  315. {$EXTERNALSYM PAE_NETLOGON}
  316. TAeNetLogon = _AE_NETLOGON;
  317. PAeNetLogon = PAE_NETLOGON;
  318. _AE_NETLOGOFF = record
  319. ae_nf_compname: DWORD;
  320. ae_nf_username: DWORD;
  321. ae_nf_reserved1: DWORD;
  322. ae_nf_reserved2: DWORD;
  323. end;
  324. {$EXTERNALSYM _AE_NETLOGOFF}
  325. //AE_NETLOGOFF = _AE_NETLOGOFF;
  326. //{$EXTERNALSYM AE_NETLOGOFF}
  327. LPAE_NETLOGOFF = ^_AE_NETLOGOFF;
  328. {$EXTERNALSYM LPAE_NETLOGOFF}
  329. PAE_NETLOGOFF = ^_AE_NETLOGOFF;
  330. {$EXTERNALSYM PAE_NETLOGOFF}
  331. TAeNetLogoff = _AE_NETLOGOFF;
  332. PAeNetLogoff = PAE_NETLOGOFF;
  333. _AE_ACCLIM = record
  334. ae_al_compname: DWORD;
  335. ae_al_username: DWORD;
  336. ae_al_resname: DWORD;
  337. ae_al_limit: DWORD;
  338. end;
  339. {$EXTERNALSYM _AE_ACCLIM}
  340. //AE_ACCLIM = _AE_ACCLIM;
  341. //{$EXTERNALSYM AE_ACCLIM}
  342. LPAE_ACCLIM = ^_AE_ACCLIM;
  343. {$EXTERNALSYM LPAE_ACCLIM}
  344. PAE_ACCLIM = ^_AE_ACCLIM;
  345. {$EXTERNALSYM PAE_ACCLIM}
  346. TAeAccLim = _AE_ACCLIM;
  347. PAeAccLim = PAE_ACCLIM;
  348. const
  349. ACTION_LOCKOUT = 0;
  350. {$EXTERNALSYM ACTION_LOCKOUT}
  351. ACTION_ADMINUNLOCK = 1;
  352. {$EXTERNALSYM ACTION_ADMINUNLOCK}
  353. type
  354. _AE_LOCKOUT = record
  355. ae_lk_compname: DWORD; // Ptr to computername of client.
  356. ae_lk_username: DWORD; // Ptr to username of client (NULL
  357. // if same as computername).
  358. ae_lk_action: DWORD; // Action taken on account:
  359. // 0 means locked out, 1 means not.
  360. ae_lk_bad_pw_count: DWORD; // Bad password count at the time
  361. // of lockout.
  362. end;
  363. {$EXTERNALSYM _AE_LOCKOUT}
  364. //AE_LOCKOUT = _AE_LOCKOUT;
  365. //{$EXTERNALSYM AE_LOCKOUT}
  366. LPAE_LOCKOUT = ^_AE_LOCKOUT;
  367. {$EXTERNALSYM LPAE_LOCKOUT}
  368. PAE_LOCKOUT = ^_AE_LOCKOUT;
  369. {$EXTERNALSYM PAE_LOCKOUT}
  370. TAeLockout = _AE_LOCKOUT;
  371. PAeLockout = PAE_LOCKOUT;
  372. _AE_GENERIC = record
  373. ae_ge_msgfile: DWORD;
  374. ae_ge_msgnum: DWORD;
  375. ae_ge_params: DWORD;
  376. ae_ge_param1: DWORD;
  377. ae_ge_param2: DWORD;
  378. ae_ge_param3: DWORD;
  379. ae_ge_param4: DWORD;
  380. ae_ge_param5: DWORD;
  381. ae_ge_param6: DWORD;
  382. ae_ge_param7: DWORD;
  383. ae_ge_param8: DWORD;
  384. ae_ge_param9: DWORD;
  385. end;
  386. {$EXTERNALSYM _AE_GENERIC}
  387. //AE_GENERIC = _AE_GENERIC;
  388. //{$EXTERNALSYM AE_GENERIC}
  389. LPAE_GENERIC = ^_AE_GENERIC;
  390. {$EXTERNALSYM LPAE_GENERIC}
  391. PAE_GENERIC = ^_AE_GENERIC;
  392. {$EXTERNALSYM PAE_GENERIC}
  393. TAeGeneric = _AE_GENERIC;
  394. PAeGeneric = PAE_GENERIC;
  395. //
  396. // Special Values and Constants - Audit
  397. //
  398. //
  399. // Audit entry types (field ae_type in audit_entry).
  400. //
  401. const
  402. AE_SRVSTATUS = 0;
  403. {$EXTERNALSYM AE_SRVSTATUS}
  404. AE_SESSLOGON = 1;
  405. {$EXTERNALSYM AE_SESSLOGON}
  406. AE_SESSLOGOFF = 2;
  407. {$EXTERNALSYM AE_SESSLOGOFF}
  408. AE_SESSPWERR = 3;
  409. {$EXTERNALSYM AE_SESSPWERR}
  410. AE_CONNSTART = 4;
  411. {$EXTERNALSYM AE_CONNSTART}
  412. AE_CONNSTOP = 5;
  413. {$EXTERNALSYM AE_CONNSTOP}
  414. AE_CONNREJ = 6;
  415. {$EXTERNALSYM AE_CONNREJ}
  416. AE_RESACCESS = 7;
  417. {$EXTERNALSYM AE_RESACCESS}
  418. AE_RESACCESSREJ = 8;
  419. {$EXTERNALSYM AE_RESACCESSREJ}
  420. AE_CLOSEFILE = 9;
  421. {$EXTERNALSYM AE_CLOSEFILE}
  422. AE_SERVICESTAT = 11;
  423. {$EXTERNALSYM AE_SERVICESTAT}
  424. AE_ACLMOD = 12;
  425. {$EXTERNALSYM AE_ACLMOD}
  426. AE_UASMOD = 13;
  427. {$EXTERNALSYM AE_UASMOD}
  428. AE_NETLOGON = 14;
  429. {$EXTERNALSYM AE_NETLOGON}
  430. AE_NETLOGOFF = 15;
  431. {$EXTERNALSYM AE_NETLOGOFF}
  432. AE_NETLOGDENIED = 16;
  433. {$EXTERNALSYM AE_NETLOGDENIED}
  434. AE_ACCLIMITEXCD = 17;
  435. {$EXTERNALSYM AE_ACCLIMITEXCD}
  436. AE_RESACCESS2 = 18;
  437. {$EXTERNALSYM AE_RESACCESS2}
  438. AE_ACLMODFAIL = 19;
  439. {$EXTERNALSYM AE_ACLMODFAIL}
  440. AE_LOCKOUT = 20;
  441. {$EXTERNALSYM AE_LOCKOUT}
  442. AE_GENERIC_TYPE = 21;
  443. {$EXTERNALSYM AE_GENERIC_TYPE}
  444. //
  445. // Values for ae_ss_status field of ae_srvstatus.
  446. //
  447. AE_SRVSTART = 0;
  448. {$EXTERNALSYM AE_SRVSTART}
  449. AE_SRVPAUSED = 1;
  450. {$EXTERNALSYM AE_SRVPAUSED}
  451. AE_SRVCONT = 2;
  452. {$EXTERNALSYM AE_SRVCONT}
  453. AE_SRVSTOP = 3;
  454. {$EXTERNALSYM AE_SRVSTOP}
  455. //
  456. // Values for ae_so_privilege field of ae_sesslogon.
  457. //
  458. AE_GUEST = 0;
  459. {$EXTERNALSYM AE_GUEST}
  460. AE_USER = 1;
  461. {$EXTERNALSYM AE_USER}
  462. AE_ADMIN = 2;
  463. {$EXTERNALSYM AE_ADMIN}
  464. //
  465. // Values for various ae_XX_reason fields.
  466. //
  467. AE_NORMAL = 0;
  468. {$EXTERNALSYM AE_NORMAL}
  469. AE_USERLIMIT = 0;
  470. {$EXTERNALSYM AE_USERLIMIT}
  471. AE_GENERAL = 0;
  472. {$EXTERNALSYM AE_GENERAL}
  473. AE_ERROR = 1;
  474. {$EXTERNALSYM AE_ERROR}
  475. AE_SESSDIS = 1;
  476. {$EXTERNALSYM AE_SESSDIS}
  477. AE_BADPW = 1;
  478. {$EXTERNALSYM AE_BADPW}
  479. AE_AUTODIS = 2;
  480. {$EXTERNALSYM AE_AUTODIS}
  481. AE_UNSHARE = 2;
  482. {$EXTERNALSYM AE_UNSHARE}
  483. AE_ADMINPRIVREQD = 2;
  484. {$EXTERNALSYM AE_ADMINPRIVREQD}
  485. AE_ADMINDIS = 3;
  486. {$EXTERNALSYM AE_ADMINDIS}
  487. AE_NOACCESSPERM = 3;
  488. {$EXTERNALSYM AE_NOACCESSPERM}
  489. AE_ACCRESTRICT = 4;
  490. {$EXTERNALSYM AE_ACCRESTRICT}
  491. AE_NORMAL_CLOSE = 0;
  492. {$EXTERNALSYM AE_NORMAL_CLOSE}
  493. AE_SES_CLOSE = 1;
  494. {$EXTERNALSYM AE_SES_CLOSE}
  495. AE_ADMIN_CLOSE = 2;
  496. {$EXTERNALSYM AE_ADMIN_CLOSE}
  497. //
  498. // Values for xx_subreason fields.
  499. //
  500. AE_LIM_UNKNOWN = 0;
  501. {$EXTERNALSYM AE_LIM_UNKNOWN}
  502. AE_LIM_LOGONHOURS = 1;
  503. {$EXTERNALSYM AE_LIM_LOGONHOURS}
  504. AE_LIM_EXPIRED = 2;
  505. {$EXTERNALSYM AE_LIM_EXPIRED}
  506. AE_LIM_INVAL_WKSTA = 3;
  507. {$EXTERNALSYM AE_LIM_INVAL_WKSTA}
  508. AE_LIM_DISABLED = 4;
  509. {$EXTERNALSYM AE_LIM_DISABLED}
  510. AE_LIM_DELETED = 5;
  511. {$EXTERNALSYM AE_LIM_DELETED}
  512. //
  513. // Values for xx_action fields
  514. //
  515. AE_MOD = 0;
  516. {$EXTERNALSYM AE_MOD}
  517. AE_DELETE = 1;
  518. {$EXTERNALSYM AE_DELETE}
  519. AE_ADD = 2;
  520. {$EXTERNALSYM AE_ADD}
  521. //
  522. // Types of UAS record for um_rectype field
  523. //
  524. AE_UAS_USER = 0;
  525. {$EXTERNALSYM AE_UAS_USER}
  526. AE_UAS_GROUP = 1;
  527. {$EXTERNALSYM AE_UAS_GROUP}
  528. AE_UAS_MODALS = 2;
  529. {$EXTERNALSYM AE_UAS_MODALS}
  530. //
  531. // Bitmasks for auditing events
  532. //
  533. // The parentheses around the hex constants broke h_to_inc
  534. // and have been purged from the face of the earth.
  535. //
  536. SVAUD_SERVICE = $1;
  537. {$EXTERNALSYM SVAUD_SERVICE}
  538. SVAUD_GOODSESSLOGON = $6;
  539. {$EXTERNALSYM SVAUD_GOODSESSLOGON}
  540. SVAUD_BADSESSLOGON = $18;
  541. {$EXTERNALSYM SVAUD_BADSESSLOGON}
  542. SVAUD_SESSLOGON = SVAUD_GOODSESSLOGON or SVAUD_BADSESSLOGON;
  543. {$EXTERNALSYM SVAUD_SESSLOGON}
  544. SVAUD_GOODNETLOGON = $60;
  545. {$EXTERNALSYM SVAUD_GOODNETLOGON}
  546. SVAUD_BADNETLOGON = $180;
  547. {$EXTERNALSYM SVAUD_BADNETLOGON}
  548. SVAUD_NETLOGON = SVAUD_GOODNETLOGON or SVAUD_BADNETLOGON;
  549. {$EXTERNALSYM SVAUD_NETLOGON}
  550. SVAUD_LOGON = SVAUD_NETLOGON or SVAUD_SESSLOGON;
  551. {$EXTERNALSYM SVAUD_LOGON}
  552. SVAUD_GOODUSE = $600;
  553. {$EXTERNALSYM SVAUD_GOODUSE}
  554. SVAUD_BADUSE = $1800;
  555. {$EXTERNALSYM SVAUD_BADUSE}
  556. SVAUD_USE = SVAUD_GOODUSE or SVAUD_BADUSE;
  557. {$EXTERNALSYM SVAUD_USE}
  558. SVAUD_USERLIST = $2000;
  559. {$EXTERNALSYM SVAUD_USERLIST}
  560. SVAUD_PERMISSIONS = $4000;
  561. {$EXTERNALSYM SVAUD_PERMISSIONS}
  562. SVAUD_RESOURCE = $8000;
  563. {$EXTERNALSYM SVAUD_RESOURCE}
  564. SVAUD_LOGONLIM = $00010000;
  565. {$EXTERNALSYM SVAUD_LOGONLIM}
  566. //
  567. // Resource access audit bitmasks.
  568. //
  569. AA_AUDIT_ALL = $0001;
  570. {$EXTERNALSYM AA_AUDIT_ALL}
  571. AA_A_OWNER = $0004;
  572. {$EXTERNALSYM AA_A_OWNER}
  573. AA_CLOSE = $0008;
  574. {$EXTERNALSYM AA_CLOSE}
  575. AA_S_OPEN = $0010;
  576. {$EXTERNALSYM AA_S_OPEN}
  577. AA_S_WRITE = $0020;
  578. {$EXTERNALSYM AA_S_WRITE}
  579. AA_S_CREATE = $0020;
  580. {$EXTERNALSYM AA_S_CREATE}
  581. AA_S_DELETE = $0040;
  582. {$EXTERNALSYM AA_S_DELETE}
  583. AA_S_ACL = $0080;
  584. {$EXTERNALSYM AA_S_ACL}
  585. AA_S_ALL = AA_S_OPEN or AA_S_WRITE or AA_S_DELETE or AA_S_ACL;
  586. {$EXTERNALSYM AA_S_ALL}
  587. AA_F_OPEN = $0100;
  588. {$EXTERNALSYM AA_F_OPEN}
  589. AA_F_WRITE = $0200;
  590. {$EXTERNALSYM AA_F_WRITE}
  591. AA_F_CREATE = $0200;
  592. {$EXTERNALSYM AA_F_CREATE}
  593. AA_F_DELETE = $0400;
  594. {$EXTERNALSYM AA_F_DELETE}
  595. AA_F_ACL = $0800;
  596. {$EXTERNALSYM AA_F_ACL}
  597. AA_F_ALL = AA_F_OPEN or AA_F_WRITE or AA_F_DELETE or AA_F_ACL;
  598. {$EXTERNALSYM AA_F_ALL}
  599. // Pinball-specific
  600. AA_A_OPEN = $1000;
  601. {$EXTERNALSYM AA_A_OPEN}
  602. AA_A_WRITE = $2000;
  603. {$EXTERNALSYM AA_A_WRITE}
  604. AA_A_CREATE = $2000;
  605. {$EXTERNALSYM AA_A_CREATE}
  606. AA_A_DELETE = $4000;
  607. {$EXTERNALSYM AA_A_DELETE}
  608. AA_A_ACL = $8000;
  609. {$EXTERNALSYM AA_A_ACL}
  610. AA_A_ALL = AA_F_OPEN or AA_F_WRITE or AA_F_DELETE or AA_F_ACL;
  611. {$EXTERNALSYM AA_A_ALL}
  612. implementation
  613. {$IFDEF DYNAMIC_LINK}
  614. var
  615. _NetAuditClear: Pointer;
  616. function NetAuditClear;
  617. begin
  618. GetProcedureAddress(_NetAuditClear, netapi32, 'NetAuditClear');
  619. asm
  620. MOV ESP, EBP
  621. POP EBP
  622. JMP [_NetAuditClear]
  623. end;
  624. end;
  625. var
  626. _NetAuditRead: Pointer;
  627. function NetAuditRead;
  628. begin
  629. GetProcedureAddress(_NetAuditRead, netapi32, 'NetAuditRead');
  630. asm
  631. MOV ESP, EBP
  632. POP EBP
  633. JMP [_NetAuditRead]
  634. end;
  635. end;
  636. var
  637. _NetAuditWrite: Pointer;
  638. function NetAuditWrite;
  639. begin
  640. GetProcedureAddress(_NetAuditWrite, netapi32, 'NetAuditWrite');
  641. asm
  642. MOV ESP, EBP
  643. POP EBP
  644. JMP [_NetAuditWrite]
  645. end;
  646. end;
  647. {$ELSE}
  648. function NetAuditClear; external netapi32 name 'NetAuditClear';
  649. function NetAuditRead; external netapi32 name 'NetAuditRead';
  650. function NetAuditWrite; external netapi32 name 'NetAuditWrite';
  651. {$ENDIF DYNAMIC_LINK}
  652. end.