Hex Artifact Content

Not logged in

Artifact dc98e950dc2783b3c17912f75b71dc15bc3192fd:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0040: 2a 2a 2a 2a 2a 2a 2a 2a 5c 0a 2a 20 20 20 20 20  ********\.*     
0050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0060: 20 20 20 20 20 20 20 20 20 20 20 61 63 6c 61 70             aclap
0070: 69 2e 64 20 20 20 20 20 20 20 20 20 20 20 20 20  i.d             
0080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0090: 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20    *.*           
00a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00d0: 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20              *.* 
00e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00f0: 20 20 20 20 20 20 57 69 6e 64 6f 77 73 20 41 50        Windows AP
0100: 49 20 68 65 61 64 65 72 20 6d 6f 64 75 6c 65 20  I header module 
0110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0120: 20 20 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20        *.*       
0130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0170: 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20  *.*             
0180: 20 20 20 20 54 72 61 6e 73 6c 61 74 65 64 20 66      Translated f
0190: 72 6f 6d 20 4d 69 6e 47 57 20 57 69 6e 64 6f 77  rom MinGW Window
01a0: 73 20 68 65 61 64 65 72 73 20 20 20 20 20 20 20  s headers       
01b0: 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20 20 20            *.*   
01c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
01d0: 20 20 20 20 20 20 20 20 62 79 20 53 74 65 77 61          by Stewa
01e0: 72 74 20 47 6f 72 64 6f 6e 20 20 20 20 20 20 20  rt Gordon       
01f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0200: 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20      *.*         
0210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a                *.
0250: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  *               
0260: 20 20 20 20 20 20 20 20 50 6c 61 63 65 64 20 69          Placed i
0270: 6e 74 6f 20 70 75 62 6c 69 63 20 64 6f 6d 61 69  nto public domai
0280: 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  n               
0290: 20 20 20 20 20 20 20 20 2a 0a 5c 2a 2a 2a 2a 2a          *.\*****
02a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
02b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
02c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
02d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
02e0: 2a 2a 2f 0a 6d 6f 64 75 6c 65 20 77 69 6e 33 32  **/.module win32
02f0: 2e 61 63 6c 61 70 69 3b 0a 70 72 61 67 6d 61 28  .aclapi;.pragma(
0300: 6c 69 62 2c 20 22 61 64 76 61 70 69 33 32 2e 6c  lib, "advapi32.l
0310: 69 62 22 29 3b 0a 0a 69 6d 70 6f 72 74 20 77 69  ib");..import wi
0320: 6e 33 32 2e 77 69 6e 64 6f 77 73 2c 20 77 69 6e  n32.windows, win
0330: 33 32 2e 61 63 63 63 74 72 6c 3b 0a 0a 73 74 61  32.accctrl;..sta
0340: 74 69 63 20 61 73 73 65 72 74 20 28 5f 57 49 4e  tic assert (_WIN
0350: 33 32 5f 57 49 4e 4e 54 5f 4f 4e 4c 59 2c 0a 09  32_WINNT_ONLY,..
0360: 22 77 69 6e 33 32 2e 61 63 6c 61 70 69 20 69 73  "win32.aclapi is
0370: 20 61 76 61 69 6c 61 62 6c 65 20 6f 6e 6c 79 20   available only 
0380: 69 66 20 76 65 72 73 69 6f 6e 20 57 69 6e 64 6f  if version Windo
0390: 77 73 4e 54 6f 6e 6c 79 2c 20 57 69 6e 64 6f 77  wsNTonly, Window
03a0: 73 58 50 2c 20 22 0a 09 22 57 69 6e 64 6f 77 73  sXP, ".."Windows
03b0: 32 30 30 33 20 6f 72 20 57 69 6e 64 6f 77 73 56  2003 or WindowsV
03c0: 69 73 74 61 20 69 73 20 73 65 74 22 29 3b 0a 0a  ista is set");..
03d0: 65 78 74 65 72 6e 20 28 57 69 6e 64 6f 77 73 29  extern (Windows)
03e0: 20 7b 0a 09 56 4f 49 44 20 42 75 69 6c 64 45 78   {..VOID BuildEx
03f0: 70 6c 69 63 69 74 41 63 63 65 73 73 57 69 74 68  plicitAccessWith
0400: 4e 61 6d 65 41 28 50 45 58 50 4c 49 43 49 54 5f  NameA(PEXPLICIT_
0410: 41 43 43 45 53 53 5f 41 2c 20 4c 50 53 54 52 2c  ACCESS_A, LPSTR,
0420: 20 44 57 4f 52 44 2c 0a 09 20 20 41 43 43 45 53   DWORD,..  ACCES
0430: 53 5f 4d 4f 44 45 2c 20 44 57 4f 52 44 29 3b 0a  S_MODE, DWORD);.
0440: 09 56 4f 49 44 20 42 75 69 6c 64 45 78 70 6c 69  .VOID BuildExpli
0450: 63 69 74 41 63 63 65 73 73 57 69 74 68 4e 61 6d  citAccessWithNam
0460: 65 57 28 50 45 58 50 4c 49 43 49 54 5f 41 43 43  eW(PEXPLICIT_ACC
0470: 45 53 53 5f 57 2c 20 4c 50 57 53 54 52 2c 20 44  ESS_W, LPWSTR, D
0480: 57 4f 52 44 2c 0a 09 20 20 41 43 43 45 53 53 5f  WORD,..  ACCESS_
0490: 4d 4f 44 45 2c 20 44 57 4f 52 44 29 3b 0a 09 44  MODE, DWORD);..D
04a0: 57 4f 52 44 20 42 75 69 6c 64 53 65 63 75 72 69  WORD BuildSecuri
04b0: 74 79 44 65 73 63 72 69 70 74 6f 72 41 28 50 54  tyDescriptorA(PT
04c0: 52 55 53 54 45 45 5f 41 2c 20 50 54 52 55 53 54  RUSTEE_A, PTRUST
04d0: 45 45 5f 41 20 2c 20 55 4c 4f 4e 47 2c 0a 09 20  EE_A , ULONG,.. 
04e0: 20 50 45 58 50 4c 49 43 49 54 5f 41 43 43 45 53   PEXPLICIT_ACCES
04f0: 53 5f 41 2c 20 55 4c 4f 4e 47 2c 20 50 45 58 50  S_A, ULONG, PEXP
0500: 4c 49 43 49 54 5f 41 43 43 45 53 53 5f 41 2c 20  LICIT_ACCESS_A, 
0510: 50 53 45 43 55 52 49 54 59 5f 44 45 53 43 52 49  PSECURITY_DESCRI
0520: 50 54 4f 52 2c 0a 09 20 20 50 55 4c 4f 4e 47 2c  PTOR,..  PULONG,
0530: 20 50 53 45 43 55 52 49 54 59 5f 44 45 53 43 52   PSECURITY_DESCR
0540: 49 50 54 4f 52 2a 29 3b 0a 09 44 57 4f 52 44 20  IPTOR*);..DWORD 
0550: 42 75 69 6c 64 53 65 63 75 72 69 74 79 44 65 73  BuildSecurityDes
0560: 63 72 69 70 74 6f 72 57 28 50 54 52 55 53 54 45  criptorW(PTRUSTE
0570: 45 5f 57 2c 20 50 54 52 55 53 54 45 45 5f 57 20  E_W, PTRUSTEE_W 
0580: 2c 20 55 4c 4f 4e 47 2c 0a 09 20 20 50 45 58 50  , ULONG,..  PEXP
0590: 4c 49 43 49 54 5f 41 43 43 45 53 53 5f 57 2c 20  LICIT_ACCESS_W, 
05a0: 55 4c 4f 4e 47 2c 20 50 45 58 50 4c 49 43 49 54  ULONG, PEXPLICIT
05b0: 5f 41 43 43 45 53 53 5f 57 2c 20 50 53 45 43 55  _ACCESS_W, PSECU
05c0: 52 49 54 59 5f 44 45 53 43 52 49 50 54 4f 52 2c  RITY_DESCRIPTOR,
05d0: 0a 09 20 20 50 55 4c 4f 4e 47 2c 20 50 53 45 43  ..  PULONG, PSEC
05e0: 55 52 49 54 59 5f 44 45 53 43 52 49 50 54 4f 52  URITY_DESCRIPTOR
05f0: 2a 29 3b 0a 09 56 4f 49 44 20 42 75 69 6c 64 54  *);..VOID BuildT
0600: 72 75 73 74 65 65 57 69 74 68 4e 61 6d 65 41 28  rusteeWithNameA(
0610: 50 54 52 55 53 54 45 45 5f 41 2c 20 4c 50 53 54  PTRUSTEE_A, LPST
0620: 52 29 3b 0a 09 56 4f 49 44 20 42 75 69 6c 64 54  R);..VOID BuildT
0630: 72 75 73 74 65 65 57 69 74 68 4e 61 6d 65 57 28  rusteeWithNameW(
0640: 50 54 52 55 53 54 45 45 5f 57 2c 20 4c 50 57 53  PTRUSTEE_W, LPWS
0650: 54 52 29 3b 0a 09 56 4f 49 44 20 42 75 69 6c 64  TR);..VOID Build
0660: 54 72 75 73 74 65 65 57 69 74 68 4f 62 6a 65 63  TrusteeWithObjec
0670: 74 73 41 6e 64 4e 61 6d 65 41 28 50 54 52 55 53  tsAndNameA(PTRUS
0680: 54 45 45 5f 41 2c 20 50 4f 42 4a 45 43 54 53 5f  TEE_A, POBJECTS_
0690: 41 4e 44 5f 4e 41 4d 45 5f 41 2c 0a 09 20 20 53  AND_NAME_A,..  S
06a0: 45 5f 4f 42 4a 45 43 54 5f 54 59 50 45 2c 20 4c  E_OBJECT_TYPE, L
06b0: 50 53 54 52 2c 20 4c 50 53 54 52 2c 20 4c 50 53  PSTR, LPSTR, LPS
06c0: 54 52 29 3b 0a 09 56 4f 49 44 20 42 75 69 6c 64  TR);..VOID Build
06d0: 54 72 75 73 74 65 65 57 69 74 68 4f 62 6a 65 63  TrusteeWithObjec
06e0: 74 73 41 6e 64 4e 61 6d 65 57 28 50 54 52 55 53  tsAndNameW(PTRUS
06f0: 54 45 45 5f 57 2c 20 50 4f 42 4a 45 43 54 53 5f  TEE_W, POBJECTS_
0700: 41 4e 44 5f 4e 41 4d 45 5f 57 2c 0a 09 20 20 53  AND_NAME_W,..  S
0710: 45 5f 4f 42 4a 45 43 54 5f 54 59 50 45 2c 20 4c  E_OBJECT_TYPE, L
0720: 50 57 53 54 52 2c 20 4c 50 57 53 54 52 2c 20 4c  PWSTR, LPWSTR, L
0730: 50 57 53 54 52 29 3b 0a 09 56 4f 49 44 20 42 75  PWSTR);..VOID Bu
0740: 69 6c 64 54 72 75 73 74 65 65 57 69 74 68 4f 62  ildTrusteeWithOb
0750: 6a 65 63 74 73 41 6e 64 53 69 64 41 28 50 54 52  jectsAndSidA(PTR
0760: 55 53 54 45 45 5f 41 2c 20 50 4f 42 4a 45 43 54  USTEE_A, POBJECT
0770: 53 5f 41 4e 44 5f 53 49 44 2c 0a 09 20 20 47 55  S_AND_SID,..  GU
0780: 49 44 2a 2c 20 47 55 49 44 2a 2c 20 50 53 49 44  ID*, GUID*, PSID
0790: 29 3b 0a 09 56 4f 49 44 20 42 75 69 6c 64 54 72  );..VOID BuildTr
07a0: 75 73 74 65 65 57 69 74 68 4f 62 6a 65 63 74 73  usteeWithObjects
07b0: 41 6e 64 53 69 64 57 28 50 54 52 55 53 54 45 45  AndSidW(PTRUSTEE
07c0: 5f 57 2c 20 50 4f 42 4a 45 43 54 53 5f 41 4e 44  _W, POBJECTS_AND
07d0: 5f 53 49 44 2c 0a 09 20 20 47 55 49 44 2a 2c 20  _SID,..  GUID*, 
07e0: 47 55 49 44 2a 2c 20 50 53 49 44 29 3b 0a 09 56  GUID*, PSID);..V
07f0: 4f 49 44 20 42 75 69 6c 64 54 72 75 73 74 65 65  OID BuildTrustee
0800: 57 69 74 68 53 69 64 41 28 50 54 52 55 53 54 45  WithSidA(PTRUSTE
0810: 45 5f 41 2c 20 50 53 49 44 29 3b 0a 09 56 4f 49  E_A, PSID);..VOI
0820: 44 20 42 75 69 6c 64 54 72 75 73 74 65 65 57 69  D BuildTrusteeWi
0830: 74 68 53 69 64 57 28 50 54 52 55 53 54 45 45 5f  thSidW(PTRUSTEE_
0840: 57 2c 20 50 53 49 44 29 3b 0a 09 44 57 4f 52 44  W, PSID);..DWORD
0850: 20 47 65 74 41 75 64 69 74 65 64 50 65 72 6d 69   GetAuditedPermi
0860: 73 73 69 6f 6e 73 46 72 6f 6d 41 63 6c 41 28 50  ssionsFromAclA(P
0870: 41 43 4c 2c 20 50 54 52 55 53 54 45 45 5f 41 2c  ACL, PTRUSTEE_A,
0880: 20 50 41 43 43 45 53 53 5f 4d 41 53 4b 2c 0a 09   PACCESS_MASK,..
0890: 20 20 50 41 43 43 45 53 53 5f 4d 41 53 4b 29 3b    PACCESS_MASK);
08a0: 0a 09 44 57 4f 52 44 20 47 65 74 41 75 64 69 74  ..DWORD GetAudit
08b0: 65 64 50 65 72 6d 69 73 73 69 6f 6e 73 46 72 6f  edPermissionsFro
08c0: 6d 41 63 6c 57 28 50 41 43 4c 2c 20 50 54 52 55  mAclW(PACL, PTRU
08d0: 53 54 45 45 5f 57 2c 20 50 41 43 43 45 53 53 5f  STEE_W, PACCESS_
08e0: 4d 41 53 4b 2c 0a 09 20 20 50 41 43 43 45 53 53  MASK,..  PACCESS
08f0: 5f 4d 41 53 4b 29 3b 0a 09 44 57 4f 52 44 20 47  _MASK);..DWORD G
0900: 65 74 45 66 66 65 63 74 69 76 65 52 69 67 68 74  etEffectiveRight
0910: 73 46 72 6f 6d 41 63 6c 41 28 50 41 43 4c 2c 20  sFromAclA(PACL, 
0920: 50 54 52 55 53 54 45 45 5f 41 2c 20 50 41 43 43  PTRUSTEE_A, PACC
0930: 45 53 53 5f 4d 41 53 4b 29 3b 0a 09 44 57 4f 52  ESS_MASK);..DWOR
0940: 44 20 47 65 74 45 66 66 65 63 74 69 76 65 52 69  D GetEffectiveRi
0950: 67 68 74 73 46 72 6f 6d 41 63 6c 57 28 50 41 43  ghtsFromAclW(PAC
0960: 4c 2c 20 50 54 52 55 53 54 45 45 5f 57 2c 20 50  L, PTRUSTEE_W, P
0970: 41 43 43 45 53 53 5f 4d 41 53 4b 29 3b 0a 09 44  ACCESS_MASK);..D
0980: 57 4f 52 44 20 47 65 74 45 78 70 6c 69 63 69 74  WORD GetExplicit
0990: 45 6e 74 72 69 65 73 46 72 6f 6d 41 63 6c 41 28  EntriesFromAclA(
09a0: 50 41 43 4c 2c 20 50 55 4c 4f 4e 47 2c 20 50 45  PACL, PULONG, PE
09b0: 58 50 4c 49 43 49 54 5f 41 43 43 45 53 53 5f 41  XPLICIT_ACCESS_A
09c0: 2a 29 3b 0a 09 44 57 4f 52 44 20 47 65 74 45 78  *);..DWORD GetEx
09d0: 70 6c 69 63 69 74 45 6e 74 72 69 65 73 46 72 6f  plicitEntriesFro
09e0: 6d 41 63 6c 57 28 50 41 43 4c 2c 20 50 55 4c 4f  mAclW(PACL, PULO
09f0: 4e 47 2c 20 50 45 58 50 4c 49 43 49 54 5f 41 43  NG, PEXPLICIT_AC
0a00: 43 45 53 53 5f 57 2a 29 3b 0a 09 73 74 61 74 69  CESS_W*);..stati
0a10: 63 20 69 66 20 28 57 49 4e 56 45 52 20 3e 3d 20  c if (WINVER >= 
0a20: 30 78 35 30 31 29 20 7b 0a 09 09 44 57 4f 52 44  0x501) {...DWORD
0a30: 20 47 65 74 49 6e 68 65 72 69 74 61 6e 63 65 53   GetInheritanceS
0a40: 6f 75 72 63 65 41 28 4c 50 53 54 52 2c 20 53 45  ourceA(LPSTR, SE
0a50: 5f 4f 42 4a 45 43 54 5f 54 59 50 45 2c 0a 09 09  _OBJECT_TYPE,...
0a60: 20 20 53 45 43 55 52 49 54 59 5f 49 4e 46 4f 52    SECURITY_INFOR
0a70: 4d 41 54 49 4f 4e 2c 20 42 4f 4f 4c 2c 20 47 55  MATION, BOOL, GU
0a80: 49 44 2a 2a 2c 20 44 57 4f 52 44 2c 20 50 41 43  ID**, DWORD, PAC
0a90: 4c 2c 20 76 6f 69 64 2a 2c 0a 09 09 20 20 50 47  L, void*,...  PG
0aa0: 45 4e 45 52 49 43 5f 4d 41 50 50 49 4e 47 2c 20  ENERIC_MAPPING, 
0ab0: 50 49 4e 48 45 52 49 54 45 44 5f 46 52 4f 4d 41  PINHERITED_FROMA
0ac0: 29 3b 0a 09 09 44 57 4f 52 44 20 47 65 74 49 6e  );...DWORD GetIn
0ad0: 68 65 72 69 74 61 6e 63 65 53 6f 75 72 63 65 57  heritanceSourceW
0ae0: 28 4c 50 57 53 54 52 2c 20 53 45 5f 4f 42 4a 45  (LPWSTR, SE_OBJE
0af0: 43 54 5f 54 59 50 45 2c 0a 09 09 20 20 53 45 43  CT_TYPE,...  SEC
0b00: 55 52 49 54 59 5f 49 4e 46 4f 52 4d 41 54 49 4f  URITY_INFORMATIO
0b10: 4e 2c 20 42 4f 4f 4c 2c 20 47 55 49 44 2a 2a 2c  N, BOOL, GUID**,
0b20: 20 44 57 4f 52 44 2c 20 50 41 43 4c 2c 20 76 6f   DWORD, PACL, vo
0b30: 69 64 2a 2c 0a 09 09 20 20 50 47 45 4e 45 52 49  id*,...  PGENERI
0b40: 43 5f 4d 41 50 50 49 4e 47 2c 20 50 49 4e 48 45  C_MAPPING, PINHE
0b50: 52 49 54 45 44 5f 46 52 4f 4d 57 29 3b 0a 09 7d  RITED_FROMW);..}
0b60: 0a 09 44 57 4f 52 44 20 47 65 74 4e 61 6d 65 64  ..DWORD GetNamed
0b70: 53 65 63 75 72 69 74 79 49 6e 66 6f 41 28 4c 50  SecurityInfoA(LP
0b80: 53 54 52 2c 20 53 45 5f 4f 42 4a 45 43 54 5f 54  STR, SE_OBJECT_T
0b90: 59 50 45 2c 20 53 45 43 55 52 49 54 59 5f 49 4e  YPE, SECURITY_IN
0ba0: 46 4f 52 4d 41 54 49 4f 4e 2c 0a 09 20 20 50 53  FORMATION,..  PS
0bb0: 49 44 2a 2c 20 50 53 49 44 2a 2c 20 50 41 43 4c  ID*, PSID*, PACL
0bc0: 2a 2c 20 50 41 43 4c 2a 2c 20 50 53 45 43 55 52  *, PACL*, PSECUR
0bd0: 49 54 59 5f 44 45 53 43 52 49 50 54 4f 52 2a 29  ITY_DESCRIPTOR*)
0be0: 3b 0a 09 44 57 4f 52 44 20 47 65 74 4e 61 6d 65  ;..DWORD GetName
0bf0: 64 53 65 63 75 72 69 74 79 49 6e 66 6f 57 28 4c  dSecurityInfoW(L
0c00: 50 57 53 54 52 2c 20 53 45 5f 4f 42 4a 45 43 54  PWSTR, SE_OBJECT
0c10: 5f 54 59 50 45 2c 20 53 45 43 55 52 49 54 59 5f  _TYPE, SECURITY_
0c20: 49 4e 46 4f 52 4d 41 54 49 4f 4e 2c 0a 09 20 20  INFORMATION,..  
0c30: 50 53 49 44 2a 2c 20 50 53 49 44 2a 2c 20 50 41  PSID*, PSID*, PA
0c40: 43 4c 2a 2c 20 50 41 43 4c 2a 2c 20 50 53 45 43  CL*, PACL*, PSEC
0c50: 55 52 49 54 59 5f 44 45 53 43 52 49 50 54 4f 52  URITY_DESCRIPTOR
0c60: 2a 29 3b 0a 09 44 57 4f 52 44 20 47 65 74 53 65  *);..DWORD GetSe
0c70: 63 75 72 69 74 79 49 6e 66 6f 28 48 41 4e 44 4c  curityInfo(HANDL
0c80: 45 2c 20 53 45 5f 4f 42 4a 45 43 54 5f 54 59 50  E, SE_OBJECT_TYP
0c90: 45 2c 20 53 45 43 55 52 49 54 59 5f 49 4e 46 4f  E, SECURITY_INFO
0ca0: 52 4d 41 54 49 4f 4e 2c 0a 09 20 20 50 53 49 44  RMATION,..  PSID
0cb0: 2a 2c 20 50 53 49 44 2a 2c 20 50 41 43 4c 2a 2c  *, PSID*, PACL*,
0cc0: 20 50 41 43 4c 2a 2c 20 50 53 45 43 55 52 49 54   PACL*, PSECURIT
0cd0: 59 5f 44 45 53 43 52 49 50 54 4f 52 2a 29 3b 0a  Y_DESCRIPTOR*);.
0ce0: 09 54 52 55 53 54 45 45 5f 46 4f 52 4d 20 47 65  .TRUSTEE_FORM Ge
0cf0: 74 54 72 75 73 74 65 65 46 6f 72 6d 41 28 50 54  tTrusteeFormA(PT
0d00: 52 55 53 54 45 45 5f 41 29 3b 0a 09 54 52 55 53  RUSTEE_A);..TRUS
0d10: 54 45 45 5f 46 4f 52 4d 20 47 65 74 54 72 75 73  TEE_FORM GetTrus
0d20: 74 65 65 46 6f 72 6d 57 28 50 54 52 55 53 54 45  teeFormW(PTRUSTE
0d30: 45 5f 57 29 3b 0a 09 4c 50 53 54 52 20 47 65 74  E_W);..LPSTR Get
0d40: 54 72 75 73 74 65 65 4e 61 6d 65 41 28 50 54 52  TrusteeNameA(PTR
0d50: 55 53 54 45 45 5f 41 29 3b 0a 09 4c 50 57 53 54  USTEE_A);..LPWST
0d60: 52 20 47 65 74 54 72 75 73 74 65 65 4e 61 6d 65  R GetTrusteeName
0d70: 57 28 50 54 52 55 53 54 45 45 5f 57 29 3b 0a 09  W(PTRUSTEE_W);..
0d80: 54 52 55 53 54 45 45 5f 54 59 50 45 20 47 65 74  TRUSTEE_TYPE Get
0d90: 54 72 75 73 74 65 65 54 79 70 65 41 28 50 54 52  TrusteeTypeA(PTR
0da0: 55 53 54 45 45 5f 41 29 3b 0a 09 54 52 55 53 54  USTEE_A);..TRUST
0db0: 45 45 5f 54 59 50 45 20 47 65 74 54 72 75 73 74  EE_TYPE GetTrust
0dc0: 65 65 54 79 70 65 57 28 50 54 52 55 53 54 45 45  eeTypeW(PTRUSTEE
0dd0: 5f 57 29 3b 0a 09 44 57 4f 52 44 20 4c 6f 6f 6b  _W);..DWORD Look
0de0: 75 70 53 65 63 75 72 69 74 79 44 65 73 63 72 69  upSecurityDescri
0df0: 70 74 6f 72 50 61 72 74 73 41 28 50 54 52 55 53  ptorPartsA(PTRUS
0e00: 54 45 45 5f 41 2a 2c 20 50 54 52 55 53 54 45 45  TEE_A*, PTRUSTEE
0e10: 5f 41 2a 2c 20 50 55 4c 4f 4e 47 2c 0a 09 20 20  _A*, PULONG,..  
0e20: 50 45 58 50 4c 49 43 49 54 5f 41 43 43 45 53 53  PEXPLICIT_ACCESS
0e30: 5f 41 2a 2c 20 50 55 4c 4f 4e 47 2c 20 50 45 58  _A*, PULONG, PEX
0e40: 50 4c 49 43 49 54 5f 41 43 43 45 53 53 5f 41 2a  PLICIT_ACCESS_A*
0e50: 2c 0a 09 20 20 50 53 45 43 55 52 49 54 59 5f 44  ,..  PSECURITY_D
0e60: 45 53 43 52 49 50 54 4f 52 29 3b 0a 09 44 57 4f  ESCRIPTOR);..DWO
0e70: 52 44 20 4c 6f 6f 6b 75 70 53 65 63 75 72 69 74  RD LookupSecurit
0e80: 79 44 65 73 63 72 69 70 74 6f 72 50 61 72 74 73  yDescriptorParts
0e90: 57 28 50 54 52 55 53 54 45 45 5f 57 2a 2c 20 50  W(PTRUSTEE_W*, P
0ea0: 54 52 55 53 54 45 45 5f 57 2a 2c 20 50 55 4c 4f  TRUSTEE_W*, PULO
0eb0: 4e 47 2c 0a 09 20 20 50 45 58 50 4c 49 43 49 54  NG,..  PEXPLICIT
0ec0: 5f 41 43 43 45 53 53 5f 57 2a 2c 20 50 55 4c 4f  _ACCESS_W*, PULO
0ed0: 4e 47 2c 20 50 45 58 50 4c 49 43 49 54 5f 41 43  NG, PEXPLICIT_AC
0ee0: 43 45 53 53 5f 57 2a 2c 0a 09 20 20 50 53 45 43  CESS_W*,..  PSEC
0ef0: 55 52 49 54 59 5f 44 45 53 43 52 49 50 54 4f 52  URITY_DESCRIPTOR
0f00: 29 3b 0a 09 44 57 4f 52 44 20 53 65 74 45 6e 74  );..DWORD SetEnt
0f10: 72 69 65 73 49 6e 41 63 6c 41 28 55 4c 4f 4e 47  riesInAclA(ULONG
0f20: 2c 20 50 45 58 50 4c 49 43 49 54 5f 41 43 43 45  , PEXPLICIT_ACCE
0f30: 53 53 5f 41 2c 20 50 41 43 4c 2c 20 50 41 43 4c  SS_A, PACL, PACL
0f40: 2a 29 3b 0a 09 44 57 4f 52 44 20 53 65 74 45 6e  *);..DWORD SetEn
0f50: 74 72 69 65 73 49 6e 41 63 6c 57 28 55 4c 4f 4e  triesInAclW(ULON
0f60: 47 2c 20 50 45 58 50 4c 49 43 49 54 5f 41 43 43  G, PEXPLICIT_ACC
0f70: 45 53 53 5f 57 2c 20 50 41 43 4c 2c 20 50 41 43  ESS_W, PACL, PAC
0f80: 4c 2a 29 3b 0a 09 44 57 4f 52 44 20 53 65 74 4e  L*);..DWORD SetN
0f90: 61 6d 65 64 53 65 63 75 72 69 74 79 49 6e 66 6f  amedSecurityInfo
0fa0: 41 28 4c 50 53 54 52 2c 20 53 45 5f 4f 42 4a 45  A(LPSTR, SE_OBJE
0fb0: 43 54 5f 54 59 50 45 2c 20 53 45 43 55 52 49 54  CT_TYPE, SECURIT
0fc0: 59 5f 49 4e 46 4f 52 4d 41 54 49 4f 4e 2c 0a 09  Y_INFORMATION,..
0fd0: 20 20 50 53 49 44 2c 20 50 53 49 44 2c 20 50 41    PSID, PSID, PA
0fe0: 43 4c 2c 20 50 41 43 4c 29 3b 0a 09 44 57 4f 52  CL, PACL);..DWOR
0ff0: 44 20 53 65 74 4e 61 6d 65 64 53 65 63 75 72 69  D SetNamedSecuri
1000: 74 79 49 6e 66 6f 57 28 4c 50 57 53 54 52 2c 20  tyInfoW(LPWSTR, 
1010: 53 45 5f 4f 42 4a 45 43 54 5f 54 59 50 45 2c 20  SE_OBJECT_TYPE, 
1020: 53 45 43 55 52 49 54 59 5f 49 4e 46 4f 52 4d 41  SECURITY_INFORMA
1030: 54 49 4f 4e 2c 0a 09 20 20 50 53 49 44 2c 20 50  TION,..  PSID, P
1040: 53 49 44 2c 20 50 41 43 4c 2c 20 50 41 43 4c 29  SID, PACL, PACL)
1050: 3b 0a 09 44 57 4f 52 44 20 53 65 74 53 65 63 75  ;..DWORD SetSecu
1060: 72 69 74 79 49 6e 66 6f 28 48 41 4e 44 4c 45 2c  rityInfo(HANDLE,
1070: 20 53 45 5f 4f 42 4a 45 43 54 5f 54 59 50 45 2c   SE_OBJECT_TYPE,
1080: 20 53 45 43 55 52 49 54 59 5f 49 4e 46 4f 52 4d   SECURITY_INFORM
1090: 41 54 49 4f 4e 2c 20 50 53 49 44 2c 0a 09 20 20  ATION, PSID,..  
10a0: 50 53 49 44 2c 20 50 41 43 4c 2c 20 50 41 43 4c  PSID, PACL, PACL
10b0: 29 3b 0a 09 56 4f 49 44 20 42 75 69 6c 64 49 6d  );..VOID BuildIm
10c0: 70 65 72 73 6f 6e 61 74 65 45 78 70 6c 69 63 69  personateExplici
10d0: 74 41 63 63 65 73 73 57 69 74 68 4e 61 6d 65 41  tAccessWithNameA
10e0: 28 50 45 58 50 4c 49 43 49 54 5f 41 43 43 45 53  (PEXPLICIT_ACCES
10f0: 53 5f 41 2c 20 4c 50 53 54 52 2c 0a 09 20 20 50  S_A, LPSTR,..  P
1100: 54 52 55 53 54 45 45 5f 41 2c 20 44 57 4f 52 44  TRUSTEE_A, DWORD
1110: 2c 20 41 43 43 45 53 53 5f 4d 4f 44 45 2c 20 44  , ACCESS_MODE, D
1120: 57 4f 52 44 29 3b 0a 09 56 4f 49 44 20 42 75 69  WORD);..VOID Bui
1130: 6c 64 49 6d 70 65 72 73 6f 6e 61 74 65 45 78 70  ldImpersonateExp
1140: 6c 69 63 69 74 41 63 63 65 73 73 57 69 74 68 4e  licitAccessWithN
1150: 61 6d 65 57 28 50 45 58 50 4c 49 43 49 54 5f 41  ameW(PEXPLICIT_A
1160: 43 43 45 53 53 5f 57 2c 20 4c 50 57 53 54 52 2c  CCESS_W, LPWSTR,
1170: 0a 09 20 20 50 54 52 55 53 54 45 45 5f 57 2c 20  ..  PTRUSTEE_W, 
1180: 44 57 4f 52 44 2c 20 41 43 43 45 53 53 5f 4d 4f  DWORD, ACCESS_MO
1190: 44 45 2c 20 44 57 4f 52 44 29 3b 0a 09 56 4f 49  DE, DWORD);..VOI
11a0: 44 20 42 75 69 6c 64 49 6d 70 65 72 73 6f 6e 61  D BuildImpersona
11b0: 74 65 54 72 75 73 74 65 65 41 28 50 54 52 55 53  teTrusteeA(PTRUS
11c0: 54 45 45 5f 41 2c 20 50 54 52 55 53 54 45 45 5f  TEE_A, PTRUSTEE_
11d0: 41 29 3b 0a 09 56 4f 49 44 20 42 75 69 6c 64 49  A);..VOID BuildI
11e0: 6d 70 65 72 73 6f 6e 61 74 65 54 72 75 73 74 65  mpersonateTruste
11f0: 65 57 28 50 54 52 55 53 54 45 45 5f 57 2c 20 50  eW(PTRUSTEE_W, P
1200: 54 52 55 53 54 45 45 5f 57 29 3b 0a 09 50 54 52  TRUSTEE_W);..PTR
1210: 55 53 54 45 45 5f 41 20 47 65 74 4d 75 6c 74 69  USTEE_A GetMulti
1220: 70 6c 65 54 72 75 73 74 65 65 41 28 50 54 52 55  pleTrusteeA(PTRU
1230: 53 54 45 45 5f 41 29 3b 0a 09 50 54 52 55 53 54  STEE_A);..PTRUST
1240: 45 45 5f 57 20 47 65 74 4d 75 6c 74 69 70 6c 65  EE_W GetMultiple
1250: 54 72 75 73 74 65 65 57 28 50 54 52 55 53 54 45  TrusteeW(PTRUSTE
1260: 45 5f 57 29 3b 0a 09 4d 55 4c 54 49 50 4c 45 5f  E_W);..MULTIPLE_
1270: 54 52 55 53 54 45 45 5f 4f 50 45 52 41 54 49 4f  TRUSTEE_OPERATIO
1280: 4e 20 47 65 74 4d 75 6c 74 69 70 6c 65 54 72 75  N GetMultipleTru
1290: 73 74 65 65 4f 70 65 72 61 74 69 6f 6e 41 28 50  steeOperationA(P
12a0: 54 52 55 53 54 45 45 5f 41 29 3b 0a 09 4d 55 4c  TRUSTEE_A);..MUL
12b0: 54 49 50 4c 45 5f 54 52 55 53 54 45 45 5f 4f 50  TIPLE_TRUSTEE_OP
12c0: 45 52 41 54 49 4f 4e 20 47 65 74 4d 75 6c 74 69  ERATION GetMulti
12d0: 70 6c 65 54 72 75 73 74 65 65 4f 70 65 72 61 74  pleTrusteeOperat
12e0: 69 6f 6e 57 28 50 54 52 55 53 54 45 45 5f 57 29  ionW(PTRUSTEE_W)
12f0: 3b 0a 7d 0a 0a 76 65 72 73 69 6f 6e 20 28 55 6e  ;.}..version (Un
1300: 69 63 6f 64 65 29 20 7b 0a 09 61 6c 69 61 73 20  icode) {..alias 
1310: 42 75 69 6c 64 45 78 70 6c 69 63 69 74 41 63 63  BuildExplicitAcc
1320: 65 73 73 57 69 74 68 4e 61 6d 65 57 20 42 75 69  essWithNameW Bui
1330: 6c 64 45 78 70 6c 69 63 69 74 41 63 63 65 73 73  ldExplicitAccess
1340: 57 69 74 68 4e 61 6d 65 3b 0a 09 61 6c 69 61 73  WithName;..alias
1350: 20 42 75 69 6c 64 53 65 63 75 72 69 74 79 44 65   BuildSecurityDe
1360: 73 63 72 69 70 74 6f 72 57 20 42 75 69 6c 64 53  scriptorW BuildS
1370: 65 63 75 72 69 74 79 44 65 73 63 72 69 70 74 6f  ecurityDescripto
1380: 72 3b 0a 09 61 6c 69 61 73 20 42 75 69 6c 64 54  r;..alias BuildT
1390: 72 75 73 74 65 65 57 69 74 68 4e 61 6d 65 57 20  rusteeWithNameW 
13a0: 42 75 69 6c 64 54 72 75 73 74 65 65 57 69 74 68  BuildTrusteeWith
13b0: 4e 61 6d 65 3b 0a 09 61 6c 69 61 73 20 42 75 69  Name;..alias Bui
13c0: 6c 64 54 72 75 73 74 65 65 57 69 74 68 4f 62 6a  ldTrusteeWithObj
13d0: 65 63 74 73 41 6e 64 4e 61 6d 65 57 20 42 75 69  ectsAndNameW Bui
13e0: 6c 64 54 72 75 73 74 65 65 57 69 74 68 4f 62 6a  ldTrusteeWithObj
13f0: 65 63 74 73 41 6e 64 4e 61 6d 65 3b 0a 09 61 6c  ectsAndName;..al
1400: 69 61 73 20 42 75 69 6c 64 54 72 75 73 74 65 65  ias BuildTrustee
1410: 57 69 74 68 4f 62 6a 65 63 74 73 41 6e 64 53 69  WithObjectsAndSi
1420: 64 57 20 42 75 69 6c 64 54 72 75 73 74 65 65 57  dW BuildTrusteeW
1430: 69 74 68 4f 62 6a 65 63 74 73 41 6e 64 53 69 64  ithObjectsAndSid
1440: 3b 0a 09 61 6c 69 61 73 20 42 75 69 6c 64 54 72  ;..alias BuildTr
1450: 75 73 74 65 65 57 69 74 68 53 69 64 57 20 42 75  usteeWithSidW Bu
1460: 69 6c 64 54 72 75 73 74 65 65 57 69 74 68 53 69  ildTrusteeWithSi
1470: 64 3b 0a 09 61 6c 69 61 73 20 47 65 74 41 75 64  d;..alias GetAud
1480: 69 74 65 64 50 65 72 6d 69 73 73 69 6f 6e 73 46  itedPermissionsF
1490: 72 6f 6d 41 63 6c 57 20 47 65 74 41 75 64 69 74  romAclW GetAudit
14a0: 65 64 50 65 72 6d 69 73 73 69 6f 6e 73 46 72 6f  edPermissionsFro
14b0: 6d 41 63 6c 3b 0a 09 61 6c 69 61 73 20 47 65 74  mAcl;..alias Get
14c0: 45 66 66 65 63 74 69 76 65 52 69 67 68 74 73 46  EffectiveRightsF
14d0: 72 6f 6d 41 63 6c 57 20 47 65 74 45 66 66 65 63  romAclW GetEffec
14e0: 74 69 76 65 52 69 67 68 74 73 46 72 6f 6d 41 63  tiveRightsFromAc
14f0: 6c 3b 0a 09 61 6c 69 61 73 20 47 65 74 45 78 70  l;..alias GetExp
1500: 6c 69 63 69 74 45 6e 74 72 69 65 73 46 72 6f 6d  licitEntriesFrom
1510: 41 63 6c 57 20 47 65 74 45 78 70 6c 69 63 69 74  AclW GetExplicit
1520: 45 6e 74 72 69 65 73 46 72 6f 6d 41 63 6c 3b 0a  EntriesFromAcl;.
1530: 09 61 6c 69 61 73 20 47 65 74 4e 61 6d 65 64 53  .alias GetNamedS
1540: 65 63 75 72 69 74 79 49 6e 66 6f 57 20 47 65 74  ecurityInfoW Get
1550: 4e 61 6d 65 64 53 65 63 75 72 69 74 79 49 6e 66  NamedSecurityInf
1560: 6f 3b 0a 09 61 6c 69 61 73 20 47 65 74 54 72 75  o;..alias GetTru
1570: 73 74 65 65 46 6f 72 6d 57 20 47 65 74 54 72 75  steeFormW GetTru
1580: 73 74 65 65 46 6f 72 6d 3b 0a 09 61 6c 69 61 73  steeForm;..alias
1590: 20 47 65 74 54 72 75 73 74 65 65 4e 61 6d 65 57   GetTrusteeNameW
15a0: 20 47 65 74 54 72 75 73 74 65 65 4e 61 6d 65 3b   GetTrusteeName;
15b0: 0a 09 61 6c 69 61 73 20 47 65 74 54 72 75 73 74  ..alias GetTrust
15c0: 65 65 54 79 70 65 57 20 47 65 74 54 72 75 73 74  eeTypeW GetTrust
15d0: 65 65 54 79 70 65 3b 0a 09 61 6c 69 61 73 20 4c  eeType;..alias L
15e0: 6f 6f 6b 75 70 53 65 63 75 72 69 74 79 44 65 73  ookupSecurityDes
15f0: 63 72 69 70 74 6f 72 50 61 72 74 73 57 20 4c 6f  criptorPartsW Lo
1600: 6f 6b 75 70 53 65 63 75 72 69 74 79 44 65 73 63  okupSecurityDesc
1610: 72 69 70 74 6f 72 50 61 72 74 73 3b 0a 09 61 6c  riptorParts;..al
1620: 69 61 73 20 53 65 74 45 6e 74 72 69 65 73 49 6e  ias SetEntriesIn
1630: 41 63 6c 57 20 53 65 74 45 6e 74 72 69 65 73 49  AclW SetEntriesI
1640: 6e 41 63 6c 3b 0a 09 61 6c 69 61 73 20 53 65 74  nAcl;..alias Set
1650: 4e 61 6d 65 64 53 65 63 75 72 69 74 79 49 6e 66  NamedSecurityInf
1660: 6f 57 20 53 65 74 4e 61 6d 65 64 53 65 63 75 72  oW SetNamedSecur
1670: 69 74 79 49 6e 66 6f 3b 0a 09 61 6c 69 61 73 20  ityInfo;..alias 
1680: 42 75 69 6c 64 49 6d 70 65 72 73 6f 6e 61 74 65  BuildImpersonate
1690: 45 78 70 6c 69 63 69 74 41 63 63 65 73 73 57 69  ExplicitAccessWi
16a0: 74 68 4e 61 6d 65 57 0a 09 20 20 42 75 69 6c 64  thNameW..  Build
16b0: 49 6d 70 65 72 73 6f 6e 61 74 65 45 78 70 6c 69  ImpersonateExpli
16c0: 63 69 74 41 63 63 65 73 73 57 69 74 68 4e 61 6d  citAccessWithNam
16d0: 65 3b 0a 09 61 6c 69 61 73 20 42 75 69 6c 64 49  e;..alias BuildI
16e0: 6d 70 65 72 73 6f 6e 61 74 65 54 72 75 73 74 65  mpersonateTruste
16f0: 65 57 20 42 75 69 6c 64 49 6d 70 65 72 73 6f 6e  eW BuildImperson
1700: 61 74 65 54 72 75 73 74 65 65 3b 0a 09 61 6c 69  ateTrustee;..ali
1710: 61 73 20 47 65 74 4d 75 6c 74 69 70 6c 65 54 72  as GetMultipleTr
1720: 75 73 74 65 65 57 20 47 65 74 4d 75 6c 74 69 70  usteeW GetMultip
1730: 6c 65 54 72 75 73 74 65 65 3b 0a 09 61 6c 69 61  leTrustee;..alia
1740: 73 20 47 65 74 4d 75 6c 74 69 70 6c 65 54 72 75  s GetMultipleTru
1750: 73 74 65 65 4f 70 65 72 61 74 69 6f 6e 57 20 47  steeOperationW G
1760: 65 74 4d 75 6c 74 69 70 6c 65 54 72 75 73 74 65  etMultipleTruste
1770: 65 4f 70 65 72 61 74 69 6f 6e 3b 0a 7d 20 65 6c  eOperation;.} el
1780: 73 65 20 7b 0a 09 61 6c 69 61 73 20 42 75 69 6c  se {..alias Buil
1790: 64 45 78 70 6c 69 63 69 74 41 63 63 65 73 73 57  dExplicitAccessW
17a0: 69 74 68 4e 61 6d 65 41 20 42 75 69 6c 64 45 78  ithNameA BuildEx
17b0: 70 6c 69 63 69 74 41 63 63 65 73 73 57 69 74 68  plicitAccessWith
17c0: 4e 61 6d 65 3b 0a 09 61 6c 69 61 73 20 42 75 69  Name;..alias Bui
17d0: 6c 64 53 65 63 75 72 69 74 79 44 65 73 63 72 69  ldSecurityDescri
17e0: 70 74 6f 72 41 20 42 75 69 6c 64 53 65 63 75 72  ptorA BuildSecur
17f0: 69 74 79 44 65 73 63 72 69 70 74 6f 72 3b 0a 09  ityDescriptor;..
1800: 61 6c 69 61 73 20 42 75 69 6c 64 54 72 75 73 74  alias BuildTrust
1810: 65 65 57 69 74 68 4e 61 6d 65 41 20 42 75 69 6c  eeWithNameA Buil
1820: 64 54 72 75 73 74 65 65 57 69 74 68 4e 61 6d 65  dTrusteeWithName
1830: 3b 0a 09 61 6c 69 61 73 20 42 75 69 6c 64 54 72  ;..alias BuildTr
1840: 75 73 74 65 65 57 69 74 68 4f 62 6a 65 63 74 73  usteeWithObjects
1850: 41 6e 64 4e 61 6d 65 41 20 42 75 69 6c 64 54 72  AndNameA BuildTr
1860: 75 73 74 65 65 57 69 74 68 4f 62 6a 65 63 74 73  usteeWithObjects
1870: 41 6e 64 4e 61 6d 65 3b 0a 09 61 6c 69 61 73 20  AndName;..alias 
1880: 42 75 69 6c 64 54 72 75 73 74 65 65 57 69 74 68  BuildTrusteeWith
1890: 4f 62 6a 65 63 74 73 41 6e 64 53 69 64 41 20 42  ObjectsAndSidA B
18a0: 75 69 6c 64 54 72 75 73 74 65 65 57 69 74 68 4f  uildTrusteeWithO
18b0: 62 6a 65 63 74 73 41 6e 64 53 69 64 3b 0a 09 61  bjectsAndSid;..a
18c0: 6c 69 61 73 20 42 75 69 6c 64 54 72 75 73 74 65  lias BuildTruste
18d0: 65 57 69 74 68 53 69 64 41 20 42 75 69 6c 64 54  eWithSidA BuildT
18e0: 72 75 73 74 65 65 57 69 74 68 53 69 64 3b 0a 09  rusteeWithSid;..
18f0: 61 6c 69 61 73 20 47 65 74 41 75 64 69 74 65 64  alias GetAudited
1900: 50 65 72 6d 69 73 73 69 6f 6e 73 46 72 6f 6d 41  PermissionsFromA
1910: 63 6c 41 20 47 65 74 41 75 64 69 74 65 64 50 65  clA GetAuditedPe
1920: 72 6d 69 73 73 69 6f 6e 73 46 72 6f 6d 41 63 6c  rmissionsFromAcl
1930: 3b 0a 09 61 6c 69 61 73 20 47 65 74 45 66 66 65  ;..alias GetEffe
1940: 63 74 69 76 65 52 69 67 68 74 73 46 72 6f 6d 41  ctiveRightsFromA
1950: 63 6c 41 20 47 65 74 45 66 66 65 63 74 69 76 65  clA GetEffective
1960: 52 69 67 68 74 73 46 72 6f 6d 41 63 6c 3b 0a 09  RightsFromAcl;..
1970: 61 6c 69 61 73 20 47 65 74 45 78 70 6c 69 63 69  alias GetExplici
1980: 74 45 6e 74 72 69 65 73 46 72 6f 6d 41 63 6c 41  tEntriesFromAclA
1990: 20 47 65 74 45 78 70 6c 69 63 69 74 45 6e 74 72   GetExplicitEntr
19a0: 69 65 73 46 72 6f 6d 41 63 6c 3b 0a 09 61 6c 69  iesFromAcl;..ali
19b0: 61 73 20 47 65 74 4e 61 6d 65 64 53 65 63 75 72  as GetNamedSecur
19c0: 69 74 79 49 6e 66 6f 41 20 47 65 74 4e 61 6d 65  ityInfoA GetName
19d0: 64 53 65 63 75 72 69 74 79 49 6e 66 6f 3b 0a 09  dSecurityInfo;..
19e0: 61 6c 69 61 73 20 47 65 74 54 72 75 73 74 65 65  alias GetTrustee
19f0: 46 6f 72 6d 41 20 47 65 74 54 72 75 73 74 65 65  FormA GetTrustee
1a00: 46 6f 72 6d 3b 0a 09 61 6c 69 61 73 20 47 65 74  Form;..alias Get
1a10: 54 72 75 73 74 65 65 4e 61 6d 65 41 20 47 65 74  TrusteeNameA Get
1a20: 54 72 75 73 74 65 65 4e 61 6d 65 3b 0a 09 61 6c  TrusteeName;..al
1a30: 69 61 73 20 47 65 74 54 72 75 73 74 65 65 54 79  ias GetTrusteeTy
1a40: 70 65 41 20 47 65 74 54 72 75 73 74 65 65 54 79  peA GetTrusteeTy
1a50: 70 65 3b 0a 09 61 6c 69 61 73 20 4c 6f 6f 6b 75  pe;..alias Looku
1a60: 70 53 65 63 75 72 69 74 79 44 65 73 63 72 69 70  pSecurityDescrip
1a70: 74 6f 72 50 61 72 74 73 41 20 4c 6f 6f 6b 75 70  torPartsA Lookup
1a80: 53 65 63 75 72 69 74 79 44 65 73 63 72 69 70 74  SecurityDescript
1a90: 6f 72 50 61 72 74 73 3b 0a 09 61 6c 69 61 73 20  orParts;..alias 
1aa0: 53 65 74 45 6e 74 72 69 65 73 49 6e 41 63 6c 41  SetEntriesInAclA
1ab0: 20 53 65 74 45 6e 74 72 69 65 73 49 6e 41 63 6c   SetEntriesInAcl
1ac0: 3b 0a 09 61 6c 69 61 73 20 53 65 74 4e 61 6d 65  ;..alias SetName
1ad0: 64 53 65 63 75 72 69 74 79 49 6e 66 6f 41 20 53  dSecurityInfoA S
1ae0: 65 74 4e 61 6d 65 64 53 65 63 75 72 69 74 79 49  etNamedSecurityI
1af0: 6e 66 6f 3b 0a 09 61 6c 69 61 73 20 42 75 69 6c  nfo;..alias Buil
1b00: 64 49 6d 70 65 72 73 6f 6e 61 74 65 45 78 70 6c  dImpersonateExpl
1b10: 69 63 69 74 41 63 63 65 73 73 57 69 74 68 4e 61  icitAccessWithNa
1b20: 6d 65 41 0a 09 20 20 42 75 69 6c 64 49 6d 70 65  meA..  BuildImpe
1b30: 72 73 6f 6e 61 74 65 45 78 70 6c 69 63 69 74 41  rsonateExplicitA
1b40: 63 63 65 73 73 57 69 74 68 4e 61 6d 65 3b 0a 09  ccessWithName;..
1b50: 61 6c 69 61 73 20 42 75 69 6c 64 49 6d 70 65 72  alias BuildImper
1b60: 73 6f 6e 61 74 65 54 72 75 73 74 65 65 41 20 42  sonateTrusteeA B
1b70: 75 69 6c 64 49 6d 70 65 72 73 6f 6e 61 74 65 54  uildImpersonateT
1b80: 72 75 73 74 65 65 3b 0a 09 61 6c 69 61 73 20 47  rustee;..alias G
1b90: 65 74 4d 75 6c 74 69 70 6c 65 54 72 75 73 74 65  etMultipleTruste
1ba0: 65 41 20 47 65 74 4d 75 6c 74 69 70 6c 65 54 72  eA GetMultipleTr
1bb0: 75 73 74 65 65 3b 0a 09 61 6c 69 61 73 20 47 65  ustee;..alias Ge
1bc0: 74 4d 75 6c 74 69 70 6c 65 54 72 75 73 74 65 65  tMultipleTrustee
1bd0: 4f 70 65 72 61 74 69 6f 6e 41 20 47 65 74 4d 75  OperationA GetMu
1be0: 6c 74 69 70 6c 65 54 72 75 73 74 65 65 4f 70 65  ltipleTrusteeOpe
1bf0: 72 61 74 69 6f 6e 3b 0a 7d 0a                    ration;.}.