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);.}.