Add some func/struct associated with [GS]etFileInformationByHandle

This commit is contained in:
hakril
2024-11-08 14:46:48 +01:00
parent 8d517f29cf
commit dce802e0f3
10 changed files with 343 additions and 28 deletions
@@ -85,3 +85,22 @@ BOOL LockFileEx(
[in] DWORD nNumberOfBytesToLockHigh,
[in, out] LPOVERLAPPED lpOverlapped
);
BOOL SetFileInformationByHandle(
[in] HANDLE hFile,
[in] FILE_INFO_BY_HANDLE_CLASS FileInformationClass,
[in] LPVOID lpFileInformation,
[in] DWORD dwBufferSize
);
BOOL GetFileInformationByHandle(
[in] HANDLE hFile,
[out] LPBY_HANDLE_FILE_INFORMATION lpFileInformation
);
BOOL GetFileInformationByHandleEx(
[in] HANDLE hFile,
[in] FILE_INFO_BY_HANDLE_CLASS FileInformationClass,
[out] LPVOID lpFileInformation,
[in] DWORD dwBufferSize
);
@@ -69,6 +69,35 @@ typedef enum _FILE_INFORMATION_CLASS {
FileMaximumInformation
} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
typedef enum _FILE_INFO_BY_HANDLE_CLASS {
FileBasicInfo,
FileStandardInfo,
FileNameInfo,
FileRenameInfo,
FileDispositionInfo,
FileAllocationInfo,
FileEndOfFileInfo,
FileStreamInfo,
FileCompressionInfo,
FileAttributeTagInfo,
FileIdBothDirectoryInfo,
FileIdBothDirectoryRestartInfo,
FileIoPriorityHintInfo,
FileRemoteProtocolInfo,
FileFullDirectoryInfo,
FileFullDirectoryRestartInfo,
FileStorageInfo,
FileAlignmentInfo,
FileIdInfo,
FileIdExtdDirectoryInfo,
FileIdExtdDirectoryRestartInfo,
FileDispositionInfoEx,
FileRenameInfoEx,
FileCaseSensitiveInfo,
FileNormalizedNameInfo,
MaximumFileInfoByHandleClass
} FILE_INFO_BY_HANDLE_CLASS, *PFILE_INFO_BY_HANDLE_CLASS;
typedef enum _IO_PRIORITY_HINT {
IoPriorityVeryLow = 0,
IoPriorityLow = 1,
@@ -193,6 +222,18 @@ typedef struct _FILE_GET_EA_INFORMATION
CHAR EaName[1];
} FILE_GET_EA_INFORMATION, *PFILE_GET_EA_INFORMATION;
typedef 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;
} BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION, *LPBY_HANDLE_FILE_INFORMATION;
typedef struct tagVS_FIXEDFILEINFO {
DWORD dwSignature;
+10 -10
View File
@@ -2,16 +2,6 @@
Interfaces
----------
.. class:: IActivationStageInfo
.. method:: QueryInterface
.. method:: AddRef
.. method:: Release
.. method:: SetStageAndIndex
.. method:: GetStage
.. method:: GetIndex
.. class:: ICallFactory
.. method:: QueryInterface
@@ -722,6 +712,16 @@ Interfaces
.. method:: GetReturnActivationProperties
.. class:: IActivationStageInfo
.. method:: QueryInterface
.. method:: AddRef
.. method:: Release
.. method:: SetStageAndIndex
.. method:: GetStage
.. method:: GetIndex
.. class:: IClassClassicInfo
.. method:: QueryInterface
+6
View File
@@ -488,6 +488,12 @@ Functions
.. function:: LockFileEx(hFile, dwFlags, dwReserved, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh, lpOverlapped)
.. function:: SetFileInformationByHandle(hFile, FileInformationClass, lpFileInformation, dwBufferSize)
.. function:: GetFileInformationByHandle(hFile, lpFileInformation)
.. function:: GetFileInformationByHandleEx(hFile, FileInformationClass, lpFileInformation, dwBufferSize)
.. function:: HeapAlloc(hHeap, dwFlags, dwBytes)
.. function:: InternetCheckConnectionA(lpszUrl, dwFlags, dwReserved)
+157
View File
@@ -21089,6 +21089,71 @@ _FILE_GET_EA_INFORMATION
:class:`CHAR`
_BY_HANDLE_FILE_INFORMATION
'''''''''''''''''''''''''''
.. class:: BY_HANDLE_FILE_INFORMATION
Alias for :class:`_BY_HANDLE_FILE_INFORMATION`
.. class:: LPBY_HANDLE_FILE_INFORMATION
Pointer to :class:`_BY_HANDLE_FILE_INFORMATION`
.. class:: PBY_HANDLE_FILE_INFORMATION
Pointer to :class:`_BY_HANDLE_FILE_INFORMATION`
.. class:: _BY_HANDLE_FILE_INFORMATION
.. attribute:: dwFileAttributes
:class:`DWORD`
.. attribute:: ftCreationTime
:class:`FILETIME`
.. attribute:: ftLastAccessTime
:class:`FILETIME`
.. attribute:: ftLastWriteTime
:class:`FILETIME`
.. attribute:: dwVolumeSerialNumber
:class:`DWORD`
.. attribute:: nFileSizeHigh
:class:`DWORD`
.. attribute:: nFileSizeLow
:class:`DWORD`
.. attribute:: nNumberOfLinks
:class:`DWORD`
.. attribute:: nFileIndexHigh
:class:`DWORD`
.. attribute:: nFileIndexLow
:class:`DWORD`
tagVS_FIXEDFILEINFO
'''''''''''''''''''
.. class:: VS_FIXEDFILEINFO
@@ -32567,6 +32632,98 @@ _FILE_INFORMATION_CLASS
.. attribute:: FileMaximumInformation(67)
_FILE_INFO_BY_HANDLE_CLASS
''''''''''''''''''''''''''
.. class:: FILE_INFO_BY_HANDLE_CLASS
Alias for :class:`_FILE_INFO_BY_HANDLE_CLASS`
.. class:: PFILE_INFO_BY_HANDLE_CLASS
Pointer to :class:`_FILE_INFO_BY_HANDLE_CLASS`
.. class:: _FILE_INFO_BY_HANDLE_CLASS
.. attribute:: FileBasicInfo(0)
.. attribute:: FileStandardInfo(1)
.. attribute:: FileNameInfo(2)
.. attribute:: FileRenameInfo(3)
.. attribute:: FileDispositionInfo(4)
.. attribute:: FileAllocationInfo(5)
.. attribute:: FileEndOfFileInfo(6)
.. attribute:: FileStreamInfo(7)
.. attribute:: FileCompressionInfo(8)
.. attribute:: FileAttributeTagInfo(9)
.. attribute:: FileIdBothDirectoryInfo(10)
.. attribute:: FileIdBothDirectoryRestartInfo(11)
.. attribute:: FileIoPriorityHintInfo(12)
.. attribute:: FileRemoteProtocolInfo(13)
.. attribute:: FileFullDirectoryInfo(14)
.. attribute:: FileFullDirectoryRestartInfo(15)
.. attribute:: FileStorageInfo(16)
.. attribute:: FileAlignmentInfo(17)
.. attribute:: FileIdInfo(18)
.. attribute:: FileIdExtdDirectoryInfo(19)
.. attribute:: FileIdExtdDirectoryRestartInfo(20)
.. attribute:: FileDispositionInfoEx(21)
.. attribute:: FileRenameInfoEx(22)
.. attribute:: FileCaseSensitiveInfo(23)
.. attribute:: FileNormalizedNameInfo(24)
.. attribute:: MaximumFileInfoByHandleClass(25)
_IO_PRIORITY_HINT
'''''''''''''''''
.. class:: IO_PRIORITY_HINT
+18 -18
View File
@@ -78,9 +78,6 @@ class COMInterface(ctypes.c_void_p):
class IActivationStageInfo(COMInterface):
IID = generate_IID(0x000001A8, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, name="IActivationStageInfo", strid="000001A8-0000-0000-C000-000000000046")
class ICallFactory(COMInterface):
IID = generate_IID(0x1C733A30, 0x2A1C, 0x11CE, 0xAD, 0xE5, 0x00, 0xAA, 0x00, 0x44, 0x77, 0x3D, name="ICallFactory", strid="1C733A30-2A1C-11CE-ADE5-00AA0044773D")
@@ -234,6 +231,9 @@ class IActivationPropertiesOut(COMInterface):
class IActivationPropertiesIn(COMInterface):
IID = generate_IID(0x000001A2, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, name="IActivationPropertiesIn", strid="000001A2-0000-0000-C000-000000000046")
class IActivationStageInfo(COMInterface):
IID = generate_IID(0x000001A8, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, name="IActivationStageInfo", strid="000001A8-0000-0000-C000-000000000046")
class IClassClassicInfo(COMInterface):
IID = generate_IID(0x000001E2, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, name="IClassClassicInfo", strid="000001E2-0000-0000-C000-000000000046")
@@ -432,21 +432,6 @@ class IWbemQualifierSet(COMInterface):
class IWbemServices(COMInterface):
IID = generate_IID(0x0EFA6E54, 0xF313, 0x405D, 0xB5, 0xD8, 0x83, 0x0A, 0x91, 0x4F, 0x64, 0x96, name="IWbemServices", strid="0EFA6E54-F313-405D-B5D8-830A914F6496")
IActivationStageInfo._functions_ = {
# QueryInterface -> riid:REFIID, ppvObject:**void
"QueryInterface": ctypes.WINFUNCTYPE(HRESULT, REFIID, POINTER(PVOID))(0, "QueryInterface"),
# AddRef ->
"AddRef": ctypes.WINFUNCTYPE(ULONG)(1, "AddRef"),
# Release ->
"Release": ctypes.WINFUNCTYPE(ULONG)(2, "Release"),
# SetStageAndIndex -> stage:ACTIVATION_STAGE, index:INT
"SetStageAndIndex": ctypes.WINFUNCTYPE(HRESULT, ACTIVATION_STAGE, INT)(3, "SetStageAndIndex"),
# GetStage -> pstage:*ACTIVATION_STAGE
"GetStage": ctypes.WINFUNCTYPE(HRESULT, POINTER(ACTIVATION_STAGE))(4, "GetStage"),
# GetIndex -> pindex:*INT
"GetIndex": ctypes.WINFUNCTYPE(HRESULT, POINTER(INT))(5, "GetIndex"),
}
ICallFactory._functions_ = {
# QueryInterface -> riid:REFIID, ppvObject:**void
"QueryInterface": ctypes.WINFUNCTYPE(HRESULT, REFIID, POINTER(PVOID))(0, "QueryInterface"),
@@ -1652,6 +1637,21 @@ IActivationPropertiesIn._functions_ = {
"GetReturnActivationProperties": ctypes.WINFUNCTYPE(HRESULT, IUnknown, POINTER(IActivationPropertiesOut))(12, "GetReturnActivationProperties"),
}
IActivationStageInfo._functions_ = {
# QueryInterface -> riid:REFIID, ppvObject:**void
"QueryInterface": ctypes.WINFUNCTYPE(HRESULT, REFIID, POINTER(PVOID))(0, "QueryInterface"),
# AddRef ->
"AddRef": ctypes.WINFUNCTYPE(ULONG)(1, "AddRef"),
# Release ->
"Release": ctypes.WINFUNCTYPE(ULONG)(2, "Release"),
# SetStageAndIndex -> stage:ACTIVATION_STAGE, index:INT
"SetStageAndIndex": ctypes.WINFUNCTYPE(HRESULT, ACTIVATION_STAGE, INT)(3, "SetStageAndIndex"),
# GetStage -> pstage:*ACTIVATION_STAGE
"GetStage": ctypes.WINFUNCTYPE(HRESULT, POINTER(ACTIVATION_STAGE))(4, "GetStage"),
# GetIndex -> pindex:*INT
"GetIndex": ctypes.WINFUNCTYPE(HRESULT, POINTER(INT))(5, "GetIndex"),
}
IClassClassicInfo._functions_ = {
# QueryInterface -> riid:REFIID, ppvObject:**void
"QueryInterface": ctypes.WINFUNCTYPE(HRESULT, REFIID, POINTER(PVOID))(0, "QueryInterface"),
+10
View File
@@ -12184,6 +12184,7 @@ structs = {'ACCESS_ALLOWED_ACE',
'BUSNUMBER_DES',
'BUSNUMBER_RANGE',
'BUSNUMBER_RESOURCE',
'BY_HANDLE_FILE_INFORMATION',
'BusNumber_Des_s',
'BusNumber_Range_s',
'BusNumber_Resource_s',
@@ -12555,6 +12556,7 @@ structs = {'ACCESS_ALLOWED_ACE',
'LPBITMAPFILEHEADER',
'LPBITMAPINFO',
'LPBITMAPINFOHEADER',
'LPBY_HANDLE_FILE_INFORMATION',
'LPCGUID',
'LPCLSID',
'LPCONTEXT32',
@@ -12784,6 +12786,7 @@ structs = {'ACCESS_ALLOWED_ACE',
'PBUSNUMBER_DES',
'PBUSNUMBER_RANGE',
'PBUSNUMBER_RESOURCE',
'PBY_HANDLE_FILE_INFORMATION',
'PCANSI_STRING',
'PCCARD_DES',
'PCCARD_RESOURCE',
@@ -13598,6 +13601,7 @@ structs = {'ACCESS_ALLOWED_ACE',
'_BG_JOB_PROGRESS',
'_BG_JOB_REPLY_PROGRESS',
'_BG_JOB_TIMES',
'_BY_HANDLE_FILE_INFORMATION',
'_CALLFRAMEINFO',
'_CALLFRAMEPARAMINFO',
'_CALLFRAME_MARSHALCONTEXT',
@@ -14199,6 +14203,7 @@ enums = {'ACCESS_MODE',
'EXPCMDFLAGS',
'EXPCMDSTATE',
'FILE_INFORMATION_CLASS',
'FILE_INFO_BY_HANDLE_CLASS',
'FS_INFORMATION_CLASS',
'FUNCKIND',
'GETPROPERTYSTOREFLAGS',
@@ -14234,6 +14239,7 @@ enums = {'ACCESS_MODE',
'PACKAGE_EXECUTION_STATE',
'PALPC_MESSAGE_INFORMATION_CLASS',
'PFILE_INFORMATION_CLASS',
'PFILE_INFO_BY_HANDLE_CLASS',
'PMEM_EXTENDED_PARAMETER_TYPE',
'PNT_PRODUCT_TYPE',
'POLICY_INFORMATION_CLASS',
@@ -14334,6 +14340,7 @@ enums = {'ACCESS_MODE',
'_EXPCMDFLAGS',
'_EXPCMDSTATE',
'_FILE_INFORMATION_CLASS',
'_FILE_INFO_BY_HANDLE_CLASS',
'_FS_INFORMATION_CLASS',
'_IMAGEHLP_EXTENDED_OPTIONS',
'_IMAGEHLP_SYMBOL_TYPE_INFO',
@@ -14713,6 +14720,8 @@ functions = {'AccessCheck',
'GetExitCodeThread',
'GetExtendedTcpTable',
'GetExtendedUdpTable',
'GetFileInformationByHandle',
'GetFileInformationByHandleEx',
'GetFileVersionInfoA',
'GetFileVersionInfoExA',
'GetFileVersionInfoExW',
@@ -15085,6 +15094,7 @@ functions = {'AccessCheck',
'SetEnvironmentStringsW',
'SetEnvironmentVariableA',
'SetEnvironmentVariableW',
'SetFileInformationByHandle',
'SetNamedPipeHandleState',
'SetNamedSecurityInfoA',
'SetNamedSecurityInfoW',
+15
View File
@@ -1215,6 +1215,21 @@ LockFileParams = ((1, 'hFile'), (1, 'dwFileOffsetLow'), (1, 'dwFileOffsetHigh'),
LockFileExPrototype = WINFUNCTYPE(BOOL, HANDLE, DWORD, DWORD, DWORD, DWORD, LPOVERLAPPED)
LockFileExParams = ((1, 'hFile'), (1, 'dwFlags'), (1, 'dwReserved'), (1, 'nNumberOfBytesToLockLow'), (1, 'nNumberOfBytesToLockHigh'), (1, 'lpOverlapped'))
#def SetFileInformationByHandle(hFile, FileInformationClass, lpFileInformation, dwBufferSize):
# return SetFileInformationByHandle.ctypes_function(hFile, FileInformationClass, lpFileInformation, dwBufferSize)
SetFileInformationByHandlePrototype = WINFUNCTYPE(BOOL, HANDLE, FILE_INFO_BY_HANDLE_CLASS, LPVOID, DWORD)
SetFileInformationByHandleParams = ((1, 'hFile'), (1, 'FileInformationClass'), (1, 'lpFileInformation'), (1, 'dwBufferSize'))
#def GetFileInformationByHandle(hFile, lpFileInformation):
# return GetFileInformationByHandle.ctypes_function(hFile, lpFileInformation)
GetFileInformationByHandlePrototype = WINFUNCTYPE(BOOL, HANDLE, LPBY_HANDLE_FILE_INFORMATION)
GetFileInformationByHandleParams = ((1, 'hFile'), (1, 'lpFileInformation'))
#def GetFileInformationByHandleEx(hFile, FileInformationClass, lpFileInformation, dwBufferSize):
# return GetFileInformationByHandleEx.ctypes_function(hFile, FileInformationClass, lpFileInformation, dwBufferSize)
GetFileInformationByHandleExPrototype = WINFUNCTYPE(BOOL, HANDLE, FILE_INFO_BY_HANDLE_CLASS, LPVOID, DWORD)
GetFileInformationByHandleExParams = ((1, 'hFile'), (1, 'FileInformationClass'), (1, 'lpFileInformation'), (1, 'dwBufferSize'))
#def HeapAlloc(hHeap, dwFlags, dwBytes):
# return HeapAlloc.ctypes_function(hHeap, dwFlags, dwBytes)
HeapAllocPrototype = WINFUNCTYPE(LPVOID, HANDLE, DWORD, SIZE_T)
+50
View File
@@ -9299,6 +9299,39 @@ FILE_INFORMATION_CLASS = _FILE_INFORMATION_CLASS
PFILE_INFORMATION_CLASS = POINTER(_FILE_INFORMATION_CLASS)
FileBasicInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileBasicInfo", 0x0)
FileStandardInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileStandardInfo", 0x1)
FileNameInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileNameInfo", 0x2)
FileRenameInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileRenameInfo", 0x3)
FileDispositionInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileDispositionInfo", 0x4)
FileAllocationInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileAllocationInfo", 0x5)
FileEndOfFileInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileEndOfFileInfo", 0x6)
FileStreamInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileStreamInfo", 0x7)
FileCompressionInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileCompressionInfo", 0x8)
FileAttributeTagInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileAttributeTagInfo", 0x9)
FileIdBothDirectoryInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileIdBothDirectoryInfo", 0xa)
FileIdBothDirectoryRestartInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileIdBothDirectoryRestartInfo", 0xb)
FileIoPriorityHintInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileIoPriorityHintInfo", 0xc)
FileRemoteProtocolInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileRemoteProtocolInfo", 0xd)
FileFullDirectoryInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileFullDirectoryInfo", 0xe)
FileFullDirectoryRestartInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileFullDirectoryRestartInfo", 0xf)
FileStorageInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileStorageInfo", 0x10)
FileAlignmentInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileAlignmentInfo", 0x11)
FileIdInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileIdInfo", 0x12)
FileIdExtdDirectoryInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileIdExtdDirectoryInfo", 0x13)
FileIdExtdDirectoryRestartInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileIdExtdDirectoryRestartInfo", 0x14)
FileDispositionInfoEx = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileDispositionInfoEx", 0x15)
FileRenameInfoEx = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileRenameInfoEx", 0x16)
FileCaseSensitiveInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileCaseSensitiveInfo", 0x17)
FileNormalizedNameInfo = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "FileNormalizedNameInfo", 0x18)
MaximumFileInfoByHandleClass = EnumValue("_FILE_INFO_BY_HANDLE_CLASS", "MaximumFileInfoByHandleClass", 0x19)
class _FILE_INFO_BY_HANDLE_CLASS(EnumType):
values = [FileBasicInfo, FileStandardInfo, FileNameInfo, FileRenameInfo, FileDispositionInfo, FileAllocationInfo, FileEndOfFileInfo, FileStreamInfo, FileCompressionInfo, FileAttributeTagInfo, FileIdBothDirectoryInfo, FileIdBothDirectoryRestartInfo, FileIoPriorityHintInfo, FileRemoteProtocolInfo, FileFullDirectoryInfo, FileFullDirectoryRestartInfo, FileStorageInfo, FileAlignmentInfo, FileIdInfo, FileIdExtdDirectoryInfo, FileIdExtdDirectoryRestartInfo, FileDispositionInfoEx, FileRenameInfoEx, FileCaseSensitiveInfo, FileNormalizedNameInfo, MaximumFileInfoByHandleClass]
mapper = FlagMapper(*values)
FILE_INFO_BY_HANDLE_CLASS = _FILE_INFO_BY_HANDLE_CLASS
PFILE_INFO_BY_HANDLE_CLASS = POINTER(_FILE_INFO_BY_HANDLE_CLASS)
IoPriorityVeryLow = EnumValue("_IO_PRIORITY_HINT", "IoPriorityVeryLow", 0x0)
IoPriorityLow = EnumValue("_IO_PRIORITY_HINT", "IoPriorityLow", 0x1)
IoPriorityNormal = EnumValue("_IO_PRIORITY_HINT", "IoPriorityNormal", 0x2)
@@ -9480,6 +9513,23 @@ class _FILE_GET_EA_INFORMATION(Structure):
FILE_GET_EA_INFORMATION = _FILE_GET_EA_INFORMATION
PFILE_GET_EA_INFORMATION = POINTER(_FILE_GET_EA_INFORMATION)
class _BY_HANDLE_FILE_INFORMATION(Structure):
_fields_ = [
("dwFileAttributes", DWORD),
("ftCreationTime", FILETIME),
("ftLastAccessTime", FILETIME),
("ftLastWriteTime", FILETIME),
("dwVolumeSerialNumber", DWORD),
("nFileSizeHigh", DWORD),
("nFileSizeLow", DWORD),
("nNumberOfLinks", DWORD),
("nFileIndexHigh", DWORD),
("nFileIndexLow", DWORD),
]
BY_HANDLE_FILE_INFORMATION = _BY_HANDLE_FILE_INFORMATION
LPBY_HANDLE_FILE_INFORMATION = POINTER(_BY_HANDLE_FILE_INFORMATION)
PBY_HANDLE_FILE_INFORMATION = POINTER(_BY_HANDLE_FILE_INFORMATION)
class tagVS_FIXEDFILEINFO(Structure):
_fields_ = [
("dwSignature", DWORD),
+17
View File
@@ -628,6 +628,23 @@ def LockFile(hFile, dwFileOffsetLow, dwFileOffsetHigh, nNumberOfBytesToLockLow,
def LockFileEx(hFile, dwFlags, dwReserved, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh, lpOverlapped):
return LockFileEx.ctypes_function(hFile, dwFlags, dwReserved, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh, lpOverlapped)
@Kernel32Proxy()
def SetFileInformationByHandle(hFile, FileInformationClass, lpFileInformation, dwBufferSize=None):
if dwBufferSize is None and lpFileInformation is not None:
dwBufferSize = len(lpFileInformation)
return SetFileInformationByHandle.ctypes_function(hFile, FileInformationClass, lpFileInformation, dwBufferSize)
@Kernel32Proxy()
def GetFileInformationByHandleEx(hFile, FileInformationClass, lpFileInformation, dwBufferSize=None):
if dwBufferSize is None and lpFileInformation is not None:
dwBufferSize = len(lpFileInformation)
return GetFileInformationByHandleEx.ctypes_function(hFile, FileInformationClass, lpFileInformation, dwBufferSize)
@Kernel32Proxy()
def GetFileInformationByHandle(hFile, lpFileInformation):
return GetFileInformationByHandle.ctypes_function(hFile, lpFileInformation)
## Tlhelp (snapshoot)
@Kernel32Proxy()