From 81db20f59ebc82dbe3bac77e40776a13d2ea5612 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Fri, 18 Sep 2009 18:54:08 -0500 Subject: [PATCH] update windows.kernel32 structs (*) --- .../windows/nt/privileges/privileges.factor | 26 +-- basis/windows/kernel32/kernel32.factor | 172 ++++++++---------- 2 files changed, 89 insertions(+), 109 deletions(-) diff --git a/basis/io/backend/windows/nt/privileges/privileges.factor b/basis/io/backend/windows/nt/privileges/privileges.factor index bb9e0edc33..6acc1f3544 100755 --- a/basis/io/backend/windows/nt/privileges/privileges.factor +++ b/basis/io/backend/windows/nt/privileges/privileges.factor @@ -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" + { TOKEN_ADJUST_PRIVILEGES TOKEN_QUERY } flags PHANDLE [ 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" + [ f ] dip LUID [ LookupPrivilegeValue win32-error=0/f ] keep ; : make-token-privileges ( name ? -- obj ) - "TOKEN_PRIVILEGES" - 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 + 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 ? -- ) [ diff --git a/basis/windows/kernel32/kernel32.factor b/basis/windows/kernel32/kernel32.factor index 2cba1173d5..ef8952be73 100755 --- a/basis/windows/kernel32/kernel32.factor +++ b/basis/windows/kernel32/kernel32.factor @@ -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 -- 2.34.1