volume.py (logicaldrives) now use W() APIs

This commit is contained in:
hakril
2024-05-22 10:17:07 +02:00
parent 3ad9bad56e
commit 4bcec38cc1
+11 -11
View File
@@ -31,7 +31,7 @@ class LogicalDrive(AutoHandle):
:type: :class:`long` or :class:`int` (or subclass)
"""
t = winproxy.GetDriveTypeA(self.name)
t = winproxy.GetDriveTypeW(self.name)
return self.DRIVE_TYPE.get(t,t)
@property
@@ -63,7 +63,7 @@ class LogicalDrive(AutoHandle):
def _get_handle(self):
nt_name = windows.utils.dospath_to_ntpath(self.name)
handle = windows.winproxy.CreateFileA(nt_name, gdef.GENERIC_READ,
handle = windows.winproxy.CreateFileW(nt_name, gdef.GENERIC_READ,
gdef.FILE_SHARE_READ, None, gdef.OPEN_EXISTING, gdef.FILE_FLAG_BACKUP_SEMANTICS , None)
return handle
@@ -75,20 +75,20 @@ def enum_logical_drive():
def get_logical_drive_names():
size = 0x100
buffer = ctypes.c_buffer(size)
rsize = winproxy.GetLogicalDriveStringsA(0x1000, buffer)
return buffer[:rsize].rstrip(b"\x00").split(b"\x00")
buffer = ctypes.create_unicode_buffer(size)
rsize = winproxy.GetLogicalDriveStringsW(size, buffer)
return buffer[:rsize].rstrip(u"\x00").split(u"\x00")
def get_info(drivename):
size = 0x1000
volume_name = ctypes.c_buffer(size)
fs_name = ctypes.c_buffer(size)
volume_name = ctypes.create_unicode_buffer(size)
fs_name = ctypes.create_unicode_buffer(size)
flags = DWORD()
winproxy.GetVolumeInformationA(drivename, volume_name, size, None, None, ctypes.byref(flags), fs_name, size)
winproxy.GetVolumeInformationW(drivename, volume_name, size, None, None, ctypes.byref(flags), fs_name, size)
return volume_name[:10], fs_name[:10]
def query_dos_device(name):
size = 0x1000
buffer = ctypes.c_buffer(size)
rsize = winproxy.QueryDosDeviceA(name, buffer, size)
return buffer[:rsize].rstrip(b"\x00").split(b"\x00")
buffer = ctypes.create_unicode_buffer(size)
rsize = winproxy.QueryDosDeviceW(name, buffer, size)
return buffer[:rsize].rstrip(u"\x00").split(u"\x00")