Add some ctypes definition associated with file APIs

This commit is contained in:
clement rouault
2024-05-11 22:27:18 +02:00
parent 46daca9539
commit 494317ee99
7 changed files with 59 additions and 4 deletions
@@ -70,4 +70,21 @@ BOOL ReadDirectoryChangesExW(
LPOVERLAPPED lpOverlapped,
LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
READ_DIRECTORY_NOTIFY_INFORMATION_CLASS ReadDirectoryNotifyInformationClass
);
BOOL LockFile(
[in] HANDLE hFile,
[in] DWORD dwFileOffsetLow,
[in] DWORD dwFileOffsetHigh,
[in] DWORD nNumberOfBytesToLockLow,
[in] DWORD nNumberOfBytesToLockHigh
);
BOOL LockFileEx(
[in] HANDLE hFile,
[in] DWORD dwFlags,
DWORD dwReserved,
[in] DWORD nNumberOfBytesToLockLow,
[in] DWORD nNumberOfBytesToLockHigh,
[in, out] LPOVERLAPPED lpOverlapped
);
@@ -1542,7 +1542,13 @@ typedef struct _OSVERSIONINFOEXW {
typedef struct _OVERLAPPED {
ULONG_PTR Internal;
ULONG_PTR InternalHigh;
PVOID Pointer;
union {
struct {
DWORD Offset;
DWORD OffsetHigh;
} _ANON_OVERLAPPED_DUMMYSTRUCTNAME;
PVOID Pointer;
} _ANON_OVERLAPPED_DUMMYUNIONNAME;
HANDLE hEvent;
} OVERLAPPED, *LPOVERLAPPED;
+2
View File
@@ -14409,6 +14409,8 @@ functions = set(['AccessCheck',
'LoadLibraryW',
'LoadResource',
'LocalFree',
'LockFile',
'LockFileEx',
'LockResource',
'LookupAccountNameA',
'LookupAccountNameW',
+10
View File
@@ -1210,6 +1210,16 @@ ReadDirectoryChangesWParams = ((1, 'hDirectory'), (1, 'lpBuffer'), (1, 'nBufferL
ReadDirectoryChangesExWPrototype = WINFUNCTYPE(BOOL, HANDLE, LPVOID, DWORD, BOOL, DWORD, LPDWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE, READ_DIRECTORY_NOTIFY_INFORMATION_CLASS)
ReadDirectoryChangesExWParams = ((1, 'hDirectory'), (1, 'lpBuffer'), (1, 'nBufferLength'), (1, 'bWatchSubtree'), (1, 'dwNotifyFilter'), (1, 'lpBytesReturned'), (1, 'lpOverlapped'), (1, 'lpCompletionRoutine'), (1, 'ReadDirectoryNotifyInformationClass'))
#def LockFile(hFile, dwFileOffsetLow, dwFileOffsetHigh, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh):
# return LockFile.ctypes_function(hFile, dwFileOffsetLow, dwFileOffsetHigh, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh)
LockFilePrototype = WINFUNCTYPE(BOOL, HANDLE, DWORD, DWORD, DWORD, DWORD)
LockFileParams = ((1, 'hFile'), (1, 'dwFileOffsetLow'), (1, 'dwFileOffsetHigh'), (1, 'nNumberOfBytesToLockLow'), (1, 'nNumberOfBytesToLockHigh'))
#def LockFileEx(hFile, dwFlags, dwReserved, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh, lpOverlapped):
# return LockFileEx.ctypes_function(hFile, dwFlags, dwReserved, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh, lpOverlapped)
LockFileExPrototype = WINFUNCTYPE(BOOL, HANDLE, DWORD, DWORD, DWORD, DWORD, LPOVERLAPPED)
LockFileExParams = ((1, 'hFile'), (1, 'dwFlags'), (1, 'dwReserved'), (1, 'nNumberOfBytesToLockLow'), (1, 'nNumberOfBytesToLockHigh'), (1, 'lpOverlapped'))
#def HeapAlloc(hHeap, dwFlags, dwBytes):
# return HeapAlloc.ctypes_function(hHeap, dwFlags, dwBytes)
HeapAllocPrototype = WINFUNCTYPE(LPVOID, HANDLE, DWORD, SIZE_T)
+15 -1
View File
@@ -5504,11 +5504,25 @@ OSVERSIONINFOEXW = _OSVERSIONINFOEXW
POSVERSIONINFOEXW = POINTER(_OSVERSIONINFOEXW)
RTL_OSVERSIONINFOEXW = _OSVERSIONINFOEXW
class _ANON__ANON__OVERLAPPED_SUB_UNION_1_SUB_STRUCTURE_1(Structure):
_fields_ = [
("Offset", DWORD),
("OffsetHigh", DWORD),
]
class _ANON__OVERLAPPED_SUB_UNION_1(Union):
_anonymous_ = ("_ANON_OVERLAPPED_DUMMYSTRUCTNAME",)
_fields_ = [
("_ANON_OVERLAPPED_DUMMYSTRUCTNAME", _ANON__ANON__OVERLAPPED_SUB_UNION_1_SUB_STRUCTURE_1),
("Pointer", PVOID),
]
class _OVERLAPPED(Structure):
_anonymous_ = ("_ANON_OVERLAPPED_DUMMYUNIONNAME",)
_fields_ = [
("Internal", ULONG_PTR),
("InternalHigh", ULONG_PTR),
("Pointer", PVOID),
("_ANON_OVERLAPPED_DUMMYUNIONNAME", _ANON__OVERLAPPED_SUB_UNION_1),
("hEvent", HANDLE),
]
LPOVERLAPPED = POINTER(_OVERLAPPED)
+6
View File
@@ -580,7 +580,13 @@ def ReadDirectoryChangesW(hDirectory, lpBuffer, nBufferLength, bWatchSubtree, dw
def ReadDirectoryChangesExW(hDirectory, lpBuffer, nBufferLength, bWatchSubtree, dwNotifyFilter, lpBytesReturned, lpOverlapped, lpCompletionRoutine, ReadDirectoryNotifyInformationClass):
return ReadDirectoryChangesExW.ctypes_function(hDirectory, lpBuffer, nBufferLength, bWatchSubtree, dwNotifyFilter, lpBytesReturned, lpOverlapped, lpCompletionRoutine, ReadDirectoryNotifyInformationClass)
@Kernel32Proxy()
def LockFile(hFile, dwFileOffsetLow, dwFileOffsetHigh, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh):
return LockFile.ctypes_function(hFile, dwFileOffsetLow, dwFileOffsetHigh, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh)
@Kernel32Proxy()
def LockFileEx(hFile, dwFlags, dwReserved, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh, lpOverlapped):
return LockFileEx.ctypes_function(hFile, dwFlags, dwReserved, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh, lpOverlapped)
## Tlhelp (snapshoot)
+2 -2
View File
@@ -2,11 +2,11 @@ import ctypes
import windows.generated_def as gdef
from ..apiproxy import ApiProxy, NeededParameter
from ..error import succeed_on_zero
from ..error import result_is_error_code
class NetApi32Proxy(ApiProxy):
APIDLL = "netapi32"
default_error_check = staticmethod(succeed_on_zero)
default_error_check = staticmethod(result_is_error_code)
@NetApi32Proxy()