Hex Artifact Content

Not logged in

Artifact 817cc0a842105b34e02fee8f613a318f8a0c3a06:


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 75 69             aclui
0070: 2e 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .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: 54 72 61 6e 73 6c 61 74 65 64 20 66 72 6f 6d 20  Translated from 
0190: 4d 69 6e 47 57 20 41 50 49 20 66 6f 72 20 4d 53  MinGW API for MS
01a0: 2d 57 69 6e 64 6f 77 73 20 33 2e 31 30 20 20 20  -Windows 3.10   
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 75 69 3b 0a 70 72 61 67 6d 61 28 6c  .aclui;.pragma(l
0300: 69 62 2c 20 22 61 63 6c 75 69 2e 6c 69 62 22 29  ib, "aclui.lib")
0310: 3b 0a 0a 70 72 69 76 61 74 65 20 69 6d 70 6f 72  ;..private impor
0320: 74 20 77 69 6e 33 32 2e 77 33 32 61 70 69 3b 0a  t win32.w32api;.
0330: 0a 73 74 61 74 69 63 20 61 73 73 65 72 74 20 28  .static assert (
0340: 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 5f 4f 4e 4c  _WIN32_WINNT_ONL
0350: 59 20 26 26 20 5f 57 49 4e 33 32 5f 57 49 4e 4e  Y && _WIN32_WINN
0360: 54 20 3e 3d 20 30 78 35 30 30 2c 0a 09 22 77 69  T >= 0x500,.."wi
0370: 6e 33 32 2e 61 63 6c 75 69 20 69 73 20 61 76 61  n32.aclui is ava
0380: 69 6c 61 62 6c 65 20 6f 6e 6c 79 20 69 66 20 76  ilable only if v
0390: 65 72 73 69 6f 6e 20 57 69 6e 64 6f 77 73 58 50  ersion WindowsXP
03a0: 2c 20 57 69 6e 64 6f 77 73 32 30 30 33 20 22 0a  , Windows2003 ".
03b0: 09 22 6f 72 20 57 69 6e 64 6f 77 73 56 69 73 74  ."or WindowsVist
03c0: 61 20 69 73 20 73 65 74 2c 20 6f 72 20 62 6f 74  a is set, or bot
03d0: 68 20 57 69 6e 64 6f 77 73 32 30 30 30 20 61 6e  h Windows2000 an
03e0: 64 20 57 69 6e 64 6f 77 73 4e 54 6f 6e 6c 79 20  d WindowsNTonly 
03f0: 61 72 65 20 73 65 74 22 29 3b 0a 0a 69 6d 70 6f  are set");..impo
0400: 72 74 20 77 69 6e 33 32 2e 61 63 63 63 74 72 6c  rt win32.accctrl
0410: 2c 20 77 69 6e 33 32 2e 63 6f 6d 6d 63 74 72 6c  , win32.commctrl
0420: 2c 20 77 69 6e 33 32 2e 6f 62 6a 62 61 73 65 3b  , win32.objbase;
0430: 0a 70 72 69 76 61 74 65 20 69 6d 70 6f 72 74 20  .private import 
0440: 77 69 6e 33 32 2e 62 61 73 65 74 79 70 73 2c 20  win32.basetyps, 
0450: 77 69 6e 33 32 2e 70 72 73 68 74 2c 20 77 69 6e  win32.prsht, win
0460: 33 32 2e 75 6e 6b 6e 77 6e 2c 20 77 69 6e 33 32  32.unknwn, win32
0470: 2e 77 69 6e 64 65 66 2c 0a 20 20 77 69 6e 33 32  .windef,.  win32
0480: 2e 77 69 6e 75 73 65 72 3b 0a 0a 0a 73 74 72 75  .winuser;...stru
0490: 63 74 20 53 49 5f 4f 42 4a 45 43 54 5f 49 4e 46  ct SI_OBJECT_INF
04a0: 4f 20 7b 0a 09 44 57 4f 52 44 20 20 20 20 20 64  O {..DWORD     d
04b0: 77 46 6c 61 67 73 3b 0a 09 48 49 4e 53 54 41 4e  wFlags;..HINSTAN
04c0: 43 45 20 68 49 6e 73 74 61 6e 63 65 3b 0a 09 4c  CE hInstance;..L
04d0: 50 57 53 54 52 20 20 20 20 70 73 7a 53 65 72 76  PWSTR    pszServ
04e0: 65 72 4e 61 6d 65 3b 0a 09 4c 50 57 53 54 52 20  erName;..LPWSTR 
04f0: 20 20 20 70 73 7a 4f 62 6a 65 63 74 4e 61 6d 65     pszObjectName
0500: 3b 0a 09 4c 50 57 53 54 52 20 20 20 20 70 73 7a  ;..LPWSTR    psz
0510: 50 61 67 65 54 69 74 6c 65 3b 0a 09 47 55 49 44  PageTitle;..GUID
0520: 20 20 20 20 20 20 67 75 69 64 4f 62 6a 65 63 74        guidObject
0530: 54 79 70 65 3b 0a 7d 0a 61 6c 69 61 73 20 53 49  Type;.}.alias SI
0540: 5f 4f 42 4a 45 43 54 5f 49 4e 46 4f 2a 20 50 53  _OBJECT_INFO* PS
0550: 49 5f 4f 42 4a 45 43 54 5f 49 4e 46 4f 3b 0a 0a  I_OBJECT_INFO;..
0560: 2f 2f 20 76 61 6c 75 65 73 20 66 6f 72 20 53 49  // values for SI
0570: 5f 4f 42 4a 45 43 54 5f 49 4e 46 4f 2e 64 77 46  _OBJECT_INFO.dwF
0580: 6c 61 67 73 0a 63 6f 6e 73 74 20 44 57 4f 52 44  lags.const DWORD
0590: 0a 09 53 49 5f 45 44 49 54 5f 50 45 52 4d 53 20  ..SI_EDIT_PERMS 
05a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20                = 
05b0: 30 78 30 30 30 30 30 30 30 30 2c 0a 09 53 49 5f  0x00000000,..SI_
05c0: 45 44 49 54 5f 4f 57 4e 45 52 20 20 20 20 20 20  EDIT_OWNER      
05d0: 20 20 20 20 20 20 20 20 20 3d 20 30 78 30 30 30           = 0x000
05e0: 30 30 30 30 31 2c 0a 09 53 49 5f 45 44 49 54 5f  00001,..SI_EDIT_
05f0: 41 55 44 49 54 53 20 20 20 20 20 20 20 20 20 20  AUDITS          
0600: 20 20 20 20 3d 20 30 78 30 30 30 30 30 30 30 32      = 0x00000002
0610: 2c 0a 09 53 49 5f 43 4f 4e 54 41 49 4e 45 52 20  ,..SI_CONTAINER 
0620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d                 =
0630: 20 30 78 30 30 30 30 30 30 30 34 2c 0a 09 53 49   0x00000004,..SI
0640: 5f 52 45 41 44 4f 4e 4c 59 20 20 20 20 20 20 20  _READONLY       
0650: 20 20 20 20 20 20 20 20 20 20 3d 20 30 78 30 30            = 0x00
0660: 30 30 30 30 30 38 2c 0a 09 53 49 5f 41 44 56 41  000008,..SI_ADVA
0670: 4e 43 45 44 20 20 20 20 20 20 20 20 20 20 20 20  NCED            
0680: 20 20 20 20 20 3d 20 30 78 30 30 30 30 30 30 31       = 0x0000001
0690: 30 2c 0a 09 53 49 5f 52 45 53 45 54 20 20 20 20  0,..SI_RESET    
06a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
06b0: 3d 20 30 78 30 30 30 30 30 30 32 30 2c 0a 09 53  = 0x00000020,..S
06c0: 49 5f 4f 57 4e 45 52 5f 52 45 41 44 4f 4e 4c 59  I_OWNER_READONLY
06d0: 20 20 20 20 20 20 20 20 20 20 20 3d 20 30 78 30             = 0x0
06e0: 30 30 30 30 30 34 30 2c 0a 09 53 49 5f 45 44 49  0000040,..SI_EDI
06f0: 54 5f 50 52 4f 50 45 52 54 49 45 53 20 20 20 20  T_PROPERTIES    
0700: 20 20 20 20 20 20 3d 20 30 78 30 30 30 30 30 30        = 0x000000
0710: 38 30 2c 0a 09 53 49 5f 4f 57 4e 45 52 5f 52 45  80,..SI_OWNER_RE
0720: 43 55 52 53 45 20 20 20 20 20 20 20 20 20 20 20  CURSE           
0730: 20 3d 20 30 78 30 30 30 30 30 31 30 30 2c 0a 09   = 0x00000100,..
0740: 53 49 5f 4e 4f 5f 41 43 4c 5f 50 52 4f 54 45 43  SI_NO_ACL_PROTEC
0750: 54 20 20 20 20 20 20 20 20 20 20 20 3d 20 30 78  T           = 0x
0760: 30 30 30 30 30 32 30 30 2c 0a 09 53 49 5f 4e 4f  00000200,..SI_NO
0770: 5f 54 52 45 45 5f 41 50 50 4c 59 20 20 20 20 20  _TREE_APPLY     
0780: 20 20 20 20 20 20 20 3d 20 30 78 30 30 30 30 30         = 0x00000
0790: 34 30 30 2c 0a 09 53 49 5f 50 41 47 45 5f 54 49  400,..SI_PAGE_TI
07a0: 54 4c 45 20 20 20 20 20 20 20 20 20 20 20 20 20  TLE             
07b0: 20 20 3d 20 30 78 30 30 30 30 30 38 30 30 2c 0a    = 0x00000800,.
07c0: 09 53 49 5f 53 45 52 56 45 52 5f 49 53 5f 44 43  .SI_SERVER_IS_DC
07d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 30               = 0
07e0: 78 30 30 30 30 31 30 30 30 2c 0a 09 53 49 5f 52  x00001000,..SI_R
07f0: 45 53 45 54 5f 44 41 43 4c 5f 54 52 45 45 20 20  ESET_DACL_TREE  
0800: 20 20 20 20 20 20 20 20 3d 20 30 78 30 30 30 30          = 0x0000
0810: 34 30 30 30 2c 0a 09 53 49 5f 52 45 53 45 54 5f  4000,..SI_RESET_
0820: 53 41 43 4c 5f 54 52 45 45 20 20 20 20 20 20 20  SACL_TREE       
0830: 20 20 20 3d 20 30 78 30 30 30 30 38 30 30 30 2c     = 0x00008000,
0840: 0a 09 53 49 5f 4f 42 4a 45 43 54 5f 47 55 49 44  ..SI_OBJECT_GUID
0850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20                = 
0860: 30 78 30 30 30 31 30 30 30 30 2c 0a 09 53 49 5f  0x00010000,..SI_
0870: 45 44 49 54 5f 45 46 46 45 43 54 49 56 45 20 20  EDIT_EFFECTIVE  
0880: 20 20 20 20 20 20 20 20 20 3d 20 30 78 30 30 30           = 0x000
0890: 32 30 30 30 30 2c 0a 09 53 49 5f 52 45 53 45 54  20000,..SI_RESET
08a0: 5f 44 41 43 4c 20 20 20 20 20 20 20 20 20 20 20  _DACL           
08b0: 20 20 20 20 3d 20 30 78 30 30 30 34 30 30 30 30      = 0x00040000
08c0: 2c 0a 09 53 49 5f 52 45 53 45 54 5f 53 41 43 4c  ,..SI_RESET_SACL
08d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d                 =
08e0: 20 30 78 30 30 30 38 30 30 30 30 2c 0a 09 53 49   0x00080000,..SI
08f0: 5f 52 45 53 45 54 5f 4f 57 4e 45 52 20 20 20 20  _RESET_OWNER    
0900: 20 20 20 20 20 20 20 20 20 20 3d 20 30 78 30 30            = 0x00
0910: 31 30 30 30 30 30 2c 0a 09 53 49 5f 4e 4f 5f 41  100000,..SI_NO_A
0920: 44 44 49 54 49 4f 4e 41 4c 5f 50 45 52 4d 49 53  DDITIONAL_PERMIS
0930: 53 49 4f 4e 20 3d 20 30 78 30 30 32 30 30 30 30  SION = 0x0020000
0940: 30 2c 0a 09 53 49 5f 4d 41 59 5f 57 52 49 54 45  0,..SI_MAY_WRITE
0950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0960: 3d 20 30 78 31 30 30 30 30 30 30 30 2c 0a 09 53  = 0x10000000,..S
0970: 49 5f 45 44 49 54 5f 41 4c 4c 20 20 20 20 20 20  I_EDIT_ALL      
0980: 20 20 20 20 20 20 20 20 20 20 20 3d 20 53 49 5f             = SI_
0990: 45 44 49 54 5f 50 45 52 4d 53 20 7c 20 53 49 5f  EDIT_PERMS | SI_
09a0: 45 44 49 54 5f 4f 57 4e 45 52 0a 09 20 20 20 20  EDIT_OWNER..    
09b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
09c0: 20 20 20 20 20 20 20 20 20 20 7c 20 53 49 5f 45            | SI_E
09d0: 44 49 54 5f 41 55 44 49 54 53 3b 0a 0a 73 74 72  DIT_AUDITS;..str
09e0: 75 63 74 20 53 49 5f 41 43 43 45 53 53 20 7b 0a  uct SI_ACCESS {.
09f0: 09 43 50 74 72 21 28 47 55 49 44 29 20 70 67 75  .CPtr!(GUID) pgu
0a00: 69 64 3b 0a 09 41 43 43 45 53 53 5f 4d 41 53 4b  id;..ACCESS_MASK
0a10: 20 6d 61 73 6b 3b 0a 09 4c 50 43 57 53 54 52 20   mask;..LPCWSTR 
0a20: 20 20 20 20 70 73 7a 4e 61 6d 65 3b 0a 09 44 57      pszName;..DW
0a30: 4f 52 44 20 20 20 20 20 20 20 64 77 46 6c 61 67  ORD       dwFlag
0a40: 73 3b 0a 7d 0a 61 6c 69 61 73 20 53 49 5f 41 43  s;.}.alias SI_AC
0a50: 43 45 53 53 2a 20 50 53 49 5f 41 43 43 45 53 53  CESS* PSI_ACCESS
0a60: 3b 0a 0a 2f 2f 20 76 61 6c 75 65 73 20 66 6f 72  ;..// values for
0a70: 20 53 49 5f 41 43 43 45 53 53 2e 64 77 46 6c 61   SI_ACCESS.dwFla
0a80: 67 73 0a 63 6f 6e 73 74 20 44 57 4f 52 44 0a 09  gs.const DWORD..
0a90: 53 49 5f 41 43 43 45 53 53 5f 53 50 45 43 49 46  SI_ACCESS_SPECIF
0aa0: 49 43 20 20 3d 20 30 78 30 30 30 31 30 30 30 30  IC  = 0x00010000
0ab0: 2c 0a 09 53 49 5f 41 43 43 45 53 53 5f 47 45 4e  ,..SI_ACCESS_GEN
0ac0: 45 52 41 4c 20 20 20 3d 20 30 78 30 30 30 32 30  ERAL   = 0x00020
0ad0: 30 30 30 2c 0a 09 53 49 5f 41 43 43 45 53 53 5f  000,..SI_ACCESS_
0ae0: 43 4f 4e 54 41 49 4e 45 52 20 3d 20 30 78 30 30  CONTAINER = 0x00
0af0: 30 34 30 30 30 30 2c 0a 09 53 49 5f 41 43 43 45  040000,..SI_ACCE
0b00: 53 53 5f 50 52 4f 50 45 52 54 59 20 20 3d 20 30  SS_PROPERTY  = 0
0b10: 78 30 30 30 38 30 30 30 30 3b 0a 0a 0a 73 74 72  x00080000;...str
0b20: 75 63 74 20 53 49 5f 49 4e 48 45 52 49 54 5f 54  uct SI_INHERIT_T
0b30: 59 50 45 20 7b 0a 09 43 50 74 72 21 28 47 55 49  YPE {..CPtr!(GUI
0b40: 44 29 20 70 67 75 69 64 3b 0a 09 55 4c 4f 4e 47  D) pguid;..ULONG
0b50: 20 20 20 20 20 20 20 64 77 46 6c 61 67 73 3b 0a         dwFlags;.
0b60: 09 4c 50 43 57 53 54 52 20 20 20 20 20 70 73 7a  .LPCWSTR     psz
0b70: 4e 61 6d 65 3b 0a 7d 0a 61 6c 69 61 73 20 53 49  Name;.}.alias SI
0b80: 5f 49 4e 48 45 52 49 54 5f 54 59 50 45 2a 20 50  _INHERIT_TYPE* P
0b90: 53 49 5f 49 4e 48 45 52 49 54 5f 54 59 50 45 3b  SI_INHERIT_TYPE;
0ba0: 0a 0a 2f 2a 20 76 61 6c 75 65 73 20 66 6f 72 20  ../* values for 
0bb0: 53 49 5f 49 4e 48 45 52 49 54 5f 54 59 50 45 2e  SI_INHERIT_TYPE.
0bc0: 64 77 46 6c 61 67 73 0a 20 20 20 49 4e 48 45 52  dwFlags.   INHER
0bd0: 49 54 5f 4f 4e 4c 59 5f 41 43 45 2c 20 43 4f 4e  IT_ONLY_ACE, CON
0be0: 54 41 49 4e 45 52 5f 49 4e 48 45 52 49 54 5f 41  TAINER_INHERIT_A
0bf0: 43 45 2c 20 4f 42 4a 45 43 54 5f 49 4e 48 45 52  CE, OBJECT_INHER
0c00: 49 54 5f 41 43 45 0a 20 20 20 64 65 66 69 6e 65  IT_ACE.   define
0c10: 64 20 65 6c 73 65 77 68 65 72 65 20 2a 2f 0a 0a  d elsewhere */..
0c20: 65 6e 75 6d 20 53 49 5f 50 41 47 45 5f 54 59 50  enum SI_PAGE_TYP
0c30: 45 20 7b 0a 09 53 49 5f 50 41 47 45 5f 50 45 52  E {..SI_PAGE_PER
0c40: 4d 2c 0a 09 53 49 5f 50 41 47 45 5f 41 44 56 50  M,..SI_PAGE_ADVP
0c50: 45 52 4d 2c 0a 09 53 49 5f 50 41 47 45 5f 41 55  ERM,..SI_PAGE_AU
0c60: 44 49 54 2c 0a 09 53 49 5f 50 41 47 45 5f 4f 57  DIT,..SI_PAGE_OW
0c70: 4e 45 52 0a 7d 0a 0a 63 6f 6e 73 74 20 75 69 6e  NER.}..const uin
0c80: 74 20 50 53 50 43 42 5f 53 49 5f 49 4e 49 54 44  t PSPCB_SI_INITD
0c90: 49 41 4c 4f 47 20 3d 20 57 4d 5f 55 53 45 52 20  IALOG = WM_USER 
0ca0: 2b 20 31 3b 0a 0a 69 6e 74 65 72 66 61 63 65 20  + 1;..interface 
0cb0: 49 53 65 63 75 72 69 74 79 49 6e 66 6f 72 6d 61  ISecurityInforma
0cc0: 74 69 6f 6e 20 3a 20 49 55 6e 6b 6e 6f 77 6e 20  tion : IUnknown 
0cd0: 7b 0a 09 48 52 45 53 55 4c 54 20 47 65 74 4f 62  {..HRESULT GetOb
0ce0: 6a 65 63 74 49 6e 66 6f 72 6d 61 74 69 6f 6e 28  jectInformation(
0cf0: 50 53 49 5f 4f 42 4a 45 43 54 5f 49 4e 46 4f 29  PSI_OBJECT_INFO)
0d00: 3b 0a 09 48 52 45 53 55 4c 54 20 47 65 74 53 65  ;..HRESULT GetSe
0d10: 63 75 72 69 74 79 28 53 45 43 55 52 49 54 59 5f  curity(SECURITY_
0d20: 49 4e 46 4f 52 4d 41 54 49 4f 4e 2c 20 50 53 45  INFORMATION, PSE
0d30: 43 55 52 49 54 59 5f 44 45 53 43 52 49 50 54 4f  CURITY_DESCRIPTO
0d40: 52 2a 2c 20 42 4f 4f 4c 29 3b 0a 09 48 52 45 53  R*, BOOL);..HRES
0d50: 55 4c 54 20 53 65 74 53 65 63 75 72 69 74 79 28  ULT SetSecurity(
0d60: 53 45 43 55 52 49 54 59 5f 49 4e 46 4f 52 4d 41  SECURITY_INFORMA
0d70: 54 49 4f 4e 2c 20 50 53 45 43 55 52 49 54 59 5f  TION, PSECURITY_
0d80: 44 45 53 43 52 49 50 54 4f 52 29 3b 0a 09 48 52  DESCRIPTOR);..HR
0d90: 45 53 55 4c 54 20 47 65 74 41 63 63 65 73 73 52  ESULT GetAccessR
0da0: 69 67 68 74 73 28 43 50 74 72 21 28 47 55 49 44  ights(CPtr!(GUID
0db0: 29 2c 20 44 57 4f 52 44 2c 20 50 53 49 5f 41 43  ), DWORD, PSI_AC
0dc0: 43 45 53 53 2a 2c 20 55 4c 4f 4e 47 2a 2c 20 55  CESS*, ULONG*, U
0dd0: 4c 4f 4e 47 2a 29 3b 0a 09 48 52 45 53 55 4c 54  LONG*);..HRESULT
0de0: 20 4d 61 70 47 65 6e 65 72 69 63 28 43 50 74 72   MapGeneric(CPtr
0df0: 21 28 47 55 49 44 29 2c 20 55 43 48 41 52 2a 2c  !(GUID), UCHAR*,
0e00: 20 41 43 43 45 53 53 5f 4d 41 53 4b 2a 29 3b 0a   ACCESS_MASK*);.
0e10: 09 48 52 45 53 55 4c 54 20 47 65 74 49 6e 68 65  .HRESULT GetInhe
0e20: 72 69 74 54 79 70 65 73 28 50 53 49 5f 49 4e 48  ritTypes(PSI_INH
0e30: 45 52 49 54 5f 54 59 50 45 2a 2c 20 55 4c 4f 4e  ERIT_TYPE*, ULON
0e40: 47 2a 29 3b 0a 09 48 52 45 53 55 4c 54 20 50 72  G*);..HRESULT Pr
0e50: 6f 70 65 72 74 79 53 68 65 65 74 50 61 67 65 43  opertySheetPageC
0e60: 61 6c 6c 62 61 63 6b 28 48 57 4e 44 2c 20 55 49  allback(HWND, UI
0e70: 4e 54 2c 20 53 49 5f 50 41 47 45 5f 54 59 50 45  NT, SI_PAGE_TYPE
0e80: 29 3b 0a 7d 0a 61 6c 69 61 73 20 49 53 65 63 75  );.}.alias ISecu
0e90: 72 69 74 79 49 6e 66 6f 72 6d 61 74 69 6f 6e 2a  rityInformation*
0ea0: 20 4c 50 53 45 43 55 52 49 54 59 49 4e 46 4f 3b   LPSECURITYINFO;
0eb0: 0a 0a 2f 2a 20 43 6f 6d 6d 65 6e 74 20 66 72 6f  ../* Comment fro
0ec0: 6d 20 4d 69 6e 47 57 0a 20 2a 20 54 4f 44 4f 3a  m MinGW. * TODO:
0ed0: 20 49 53 65 63 75 72 69 74 79 49 6e 66 6f 72 6d   ISecurityInform
0ee0: 61 74 69 6f 6e 32 2c 20 49 45 66 66 65 63 74 69  ation2, IEffecti
0ef0: 76 65 50 65 72 6d 69 73 73 69 6f 6e 2c 20 49 53  vePermission, IS
0f00: 65 63 75 72 69 74 79 4f 62 6a 65 63 74 54 79 70  ecurityObjectTyp
0f10: 65 49 6e 66 6f 0a 20 2a 2f 0a 0a 2f 2f 20 46 49  eInfo. */..// FI
0f20: 58 4d 45 3a 20 6c 69 6e 6b 61 67 65 20 61 74 74  XME: linkage att
0f30: 72 69 62 75 74 65 3f 0a 65 78 74 65 72 6e 20 28  ribute?.extern (
0f40: 43 29 20 2f 2b 44 45 43 4c 53 50 45 43 5f 49 4d  C) /+DECLSPEC_IM
0f50: 50 4f 52 54 2b 2f 20 65 78 74 65 72 6e 20 63 6f  PORT+/ extern co
0f60: 6e 73 74 20 49 49 44 20 49 49 44 5f 49 53 65 63  nst IID IID_ISec
0f70: 75 72 69 74 79 49 6e 66 6f 72 6d 61 74 69 6f 6e  urityInformation
0f80: 3b 0a 0a 65 78 74 65 72 6e 20 28 57 69 6e 64 6f  ;..extern (Windo
0f90: 77 73 29 20 7b 0a 09 48 50 52 4f 50 53 48 45 45  ws) {..HPROPSHEE
0fa0: 54 50 41 47 45 20 43 72 65 61 74 65 53 65 63 75  TPAGE CreateSecu
0fb0: 72 69 74 79 50 61 67 65 28 4c 50 53 45 43 55 52  rityPage(LPSECUR
0fc0: 49 54 59 49 4e 46 4f 20 70 73 69 29 3b 0a 09 42  ITYINFO psi);..B
0fd0: 4f 4f 4c 20 45 64 69 74 53 65 63 75 72 69 74 79  OOL EditSecurity
0fe0: 28 48 57 4e 44 20 68 77 6e 64 4f 77 6e 65 72 2c  (HWND hwndOwner,
0ff0: 20 4c 50 53 45 43 55 52 49 54 59 49 4e 46 4f 20   LPSECURITYINFO 
1000: 70 73 69 29 3b 0a 7d 0a                          psi);.}.