USING: alien alien.c-types alien.data alien.syntax arrays continuations\r
destructors generic io.mmap io.ports io.backend.windows io.files.windows\r
kernel libc math math.bitwise namespaces quotations sequences windows\r
-windows.advapi32 windows.kernel32 io.backend system accessors\r
+windows.advapi32 windows.kernel32 windows.types io.backend system accessors\r
io.backend.windows.privileges windows.errors ;\r
IN: io.backend.windows.nt.privileges\r
\r
! http://msdn.microsoft.com/msdnmag/issues/05/03/TokenPrivileges/\r
\r
: (open-process-token) ( handle -- handle )\r
- { TOKEN_ADJUST_PRIVILEGES TOKEN_QUERY } flags "PHANDLE" <c-object>\r
+ { TOKEN_ADJUST_PRIVILEGES TOKEN_QUERY } flags PHANDLE <c-object>\r
[ OpenProcessToken win32-error=0/f ] keep *void* ;\r
\r
: open-process-token ( -- handle )\r
[ CloseHandle drop ] [ ] cleanup ; inline\r
\r
: lookup-privilege ( string -- luid )\r
- [ f ] dip "LUID" <c-object>\r
+ [ f ] dip LUID <struct>\r
[ LookupPrivilegeValue win32-error=0/f ] keep ;\r
\r
: make-token-privileges ( name ? -- obj )\r
- "TOKEN_PRIVILEGES" <c-object>\r
- 1 over set-TOKEN_PRIVILEGES-PrivilegeCount\r
- "LUID_AND_ATTRIBUTES" malloc-object &free\r
- over set-TOKEN_PRIVILEGES-Privileges\r
-\r
- swap [\r
- SE_PRIVILEGE_ENABLED over TOKEN_PRIVILEGES-Privileges\r
- set-LUID_AND_ATTRIBUTES-Attributes\r
- ] when\r
-\r
+ TOKEN_PRIVILEGES <struct>\r
+ 1 >>PrivilegeCount\r
+ LUID_AND_ATTRIBUTES malloc-struct &free\r
+ swap [ SE_PRIVILEGE_ENABLED >>Attributes ] when\r
+ >>Privileges\r
[ lookup-privilege ] dip\r
- [\r
- TOKEN_PRIVILEGES-Privileges\r
- set-LUID_AND_ATTRIBUTES-Luid\r
- ] keep ;\r
+ [ Privileges>> (>>Luid) ] keep ;\r
\r
M: winnt set-privilege ( name ? -- )\r
[\r