update windows.kernel32 structs (*)

db4
Joe Groff 2009-09-18 18:54:08 -05:00
parent c093f52271
commit 81db20f59e
2 changed files with 89 additions and 109 deletions

View File

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

View File

@ -317,14 +317,14 @@ STRUCT: OSVERSIONINFO
TYPEDEF: void* LPOSVERSIONINFO
C-STRUCT: MEMORY_BASIC_INFORMATION
{ "void*" "BaseAddress" }
{ "void*" "AllocationBase" }
{ "DWORD" "AllocationProtect" }
{ "SIZE_T" "RegionSize" }
{ "DWORD" "state" }
{ "DWORD" "protect" }
{ "DWORD" "type" } ;
STRUCT: MEMORY_BASIC_INFORMATION
{ BaseAddress void* }
{ AllocationBase void* }
{ AllocationProtect DWORD }
{ RegionSize SIZE_T }
{ state DWORD }
{ protect DWORD }
{ type DWORD } ;
STRUCT: GUID
{ Data1 ULONG }
@ -524,55 +524,55 @@ CONSTANT: EV_RX80FULL HEX: 400
CONSTANT: EV_EVENT1 HEX: 800
CONSTANT: EV_EVENT2 HEX: 1000
C-STRUCT: DCB
{ "DWORD" "DCBlength" }
{ "DWORD" "BaudRate" }
{ "DWORD" "flags" }
{ "WORD" "wReserved" }
{ "WORD" "XonLim" }
{ "WORD" "XoffLim" }
{ "BYTE" "ByteSize" }
{ "BYTE" "Parity" }
{ "BYTE" "StopBits" }
{ "char" "XonChar" }
{ "char" "XoffChar" }
{ "char" "ErrorChar" }
{ "char" "EofChar" }
{ "char" "EvtChar" }
{ "WORD" "wReserved1" } ;
STRUCT: DCB
{ DCBlength DWORD }
{ BaudRate DWORD }
{ flags DWORD }
{ wReserved WORD }
{ XonLim WORD }
{ XoffLim WORD }
{ ByteSize BYTE }
{ Parity BYTE }
{ StopBits BYTE }
{ XonChar char }
{ XoffChar char }
{ ErrorChar char }
{ EofChar char }
{ EvtChar char }
{ wReserved1 WORD } ;
TYPEDEF: DCB* PDCB
TYPEDEF: DCB* LPDCB
C-STRUCT: COMM_CONFIG
{ "DWORD" "dwSize" }
{ "WORD" "wVersion" }
{ "WORD" "wReserved" }
{ "DCB" "dcb" }
{ "DWORD" "dwProviderSubType" }
{ "DWORD" "dwProviderOffset" }
{ "DWORD" "dwProviderSize" }
{ { "WCHAR" 1 } "wcProviderData" } ;
STRUCT: COMM_CONFIG
{ dwSize DWORD }
{ wVersion WORD }
{ wReserved WORD }
{ dcb DCB }
{ dwProviderSubType DWORD }
{ dwProviderOffset DWORD }
{ dwProviderSize DWORD }
{ wcProviderData { WCHAR 1 } } ;
TYPEDEF: COMMCONFIG* LPCOMMCONFIG
C-STRUCT: COMMPROP
{ "WORD" "wPacketLength" }
{ "WORD" "wPacketVersion" }
{ "DWORD" "dwServiceMask" }
{ "DWORD" "dwReserved1" }
{ "DWORD" "dwMaxTxQueue" }
{ "DWORD" "dwMaxRxQueue" }
{ "DWORD" "dwMaxBaud" }
{ "DWORD" "dwProvSubType" }
{ "DWORD" "dwProvCapabilities" }
{ "DWORD" "dwSettableParams" }
{ "DWORD" "dwSettableBaud" }
{ "WORD" "wSettableData" }
{ "WORD" "wSettableStopParity" }
{ "DWORD" "dwCurrentTxQueue" }
{ "DWORD" "dwCurrentRxQueue" }
{ "DWORD" "dwProvSpec1" }
{ "DWORD" "dwProvSpec2" }
{ { "WCHAR" 1 } "wcProvChar" } ;
STRUCT: COMMPROP
{ wPacketLength WORD }
{ wPacketVersion WORD }
{ dwServiceMask DWORD }
{ dwReserved1 DWORD }
{ dwMaxTxQueue DWORD }
{ dwMaxRxQueue DWORD }
{ dwMaxBaud DWORD }
{ dwProvSubType DWORD }
{ dwProvCapabilities DWORD }
{ dwSettableParams DWORD }
{ dwSettableBaud DWORD }
{ wSettableData WORD }
{ wSettableStopParity WORD }
{ dwCurrentTxQueue DWORD }
{ dwCurrentRxQueue DWORD }
{ dwProvSpec1 DWORD }
{ dwProvSpec2 DWORD }
{ wcProvChar { WCHAR 1 } } ;
TYPEDEF: COMMPROP* LPCOMMPROP
@ -645,19 +645,19 @@ CONSTANT: WAIT_TIMEOUT 258
CONSTANT: WAIT_IO_COMPLETION HEX: c0
CONSTANT: WAIT_FAILED HEX: ffffffff
C-STRUCT: LUID
{ "DWORD" "LowPart" }
{ "LONG" "HighPart" } ;
STRUCT: LUID
{ LowPart DWORD }
{ HighPart LONG } ;
TYPEDEF: LUID* PLUID
C-STRUCT: LUID_AND_ATTRIBUTES
{ "LUID" "Luid" }
{ "DWORD" "Attributes" } ;
STRUCT: LUID_AND_ATTRIBUTES
{ Luid LUID }
{ Attributes DWORD } ;
TYPEDEF: LUID_AND_ATTRIBUTES* PLUID_AND_ATTRIBUTES
C-STRUCT: TOKEN_PRIVILEGES
{ "DWORD" "PrivilegeCount" }
{ "LUID_AND_ATTRIBUTES*" "Privileges" } ;
STRUCT: TOKEN_PRIVILEGES
{ PrivilegeCount DWORD }
{ Privileges LUID_AND_ATTRIBUTES* } ;
TYPEDEF: TOKEN_PRIVILEGES* PTOKEN_PRIVILEGES
STRUCT: WIN32_FILE_ATTRIBUTE_DATA
@ -669,29 +669,29 @@ STRUCT: WIN32_FILE_ATTRIBUTE_DATA
{ nFileSizeLow DWORD } ;
TYPEDEF: WIN32_FILE_ATTRIBUTE_DATA* LPWIN32_FILE_ATTRIBUTE_DATA
C-STRUCT: BY_HANDLE_FILE_INFORMATION
{ "DWORD" "dwFileAttributes" }
{ "FILETIME" "ftCreationTime" }
{ "FILETIME" "ftLastAccessTime" }
{ "FILETIME" "ftLastWriteTime" }
{ "DWORD" "dwVolumeSerialNumber" }
{ "DWORD" "nFileSizeHigh" }
{ "DWORD" "nFileSizeLow" }
{ "DWORD" "nNumberOfLinks" }
{ "DWORD" "nFileIndexHigh" }
{ "DWORD" "nFileIndexLow" } ;
STRUCT: BY_HANDLE_FILE_INFORMATION
{ dwFileAttributes DWORD }
{ ftCreationTime FILETIME }
{ ftLastAccessTime FILETIME }
{ ftLastWriteTime FILETIME }
{ dwVolumeSerialNumber DWORD }
{ nFileSizeHigh DWORD }
{ nFileSizeLow DWORD }
{ nNumberOfLinks DWORD }
{ nFileIndexHigh DWORD }
{ nFileIndexLow DWORD } ;
TYPEDEF: BY_HANDLE_FILE_INFORMATION* LPBY_HANDLE_FILE_INFORMATION
CONSTANT: OFS_MAXPATHNAME 128
C-STRUCT: OFSTRUCT
{ "BYTE" "cBytes" }
{ "BYTE" "fFixedDisk" }
{ "WORD" "nErrCode" }
{ "WORD" "Reserved1" }
{ "WORD" "Reserved2" }
! { { "CHAR" OFS_MAXPATHNAME } "szPathName" } ;
{ { "CHAR" 128 } "szPathName" } ;
STRUCT: OFSTRUCT
{ cBytes BYTE }
{ fFixedDisk BYTE }
{ nErrCode WORD }
{ Reserved1 WORD }
{ Reserved2 WORD }
! { szPathName { CHAR OFS_MAXPATHNAME } } ;
{ szPathName { CHAR 128 } } ;
TYPEDEF: OFSTRUCT* LPOFSTRUCT
@ -707,18 +707,6 @@ STRUCT: WIN32_FIND_DATA
{ cFileName { "TCHAR" MAX_PATH } }
{ cAlternateFileName TCHAR[14] } ;
STRUCT: BY_HANDLE_FILE_INFORMATION
{ dwFileAttributes DWORD }
{ ftCreationTime FILETIME }
{ ftLastAccessTime FILETIME }
{ ftLastWriteTime FILETIME }
{ dwVolumeSerialNumber DWORD }
{ nFileSizeHigh DWORD }
{ nFileSizeLow DWORD }
{ nNumberOfLinks DWORD }
{ nFileIndexHigh DWORD }
{ nFileIndexLow DWORD } ;
TYPEDEF: WIN32_FIND_DATA* PWIN32_FIND_DATA
TYPEDEF: WIN32_FIND_DATA* LPWIN32_FIND_DATA
TYPEDEF: void* POVERLAPPED