On 2017-11-07 08:58, Durumdara wrote: > Hi! > > Windows 10, Python 3.6. > > I want to get the serial number of the drives (without external modules > like Win32 or WMI). > It is needed for identification of removable devices (like USB external > drives). > > Somewhere I saw this code: > > def GetVolumeID(Drive): > import ctypes > kernel32 = ctypes.windll.kernel32 > volumeNameBuffer = ctypes.create_unicode_buffer(1024) > fileSystemNameBuffer = ctypes.create_unicode_buffer(1024) > serial_number = None > max_component_length = None > file_system_flags = None > > rc = kernel32.GetVolumeInformationW( > ctypes.c_wchar_p(Drive), > volumeNameBuffer, > ctypes.sizeof(volumeNameBuffer), > serial_number, > max_component_length, > file_system_flags, > fileSystemNameBuffer, > ctypes.sizeof(fileSystemNameBuffer) > ) > return serial_number; > > print(GetVolumeID('c:\\')) > > > This function is working with other values (volumeNameBuffer), but for > serial it returns None. > The serial number is empty. > How to I pass this parameter to I get the value?
Do you get a value for max_component_length? (I wouldn't expect so, but that is what you imply). Anyway, the ctypes docs are pretty clear: https://docs.python.org/3/library/ctypes.html#passing-pointers-or-passing-parameters-by-reference > > The doc said it's LPDWORD (pointer to DWORD): > > https://msdn.microsoft.com/en-us/library/windows/desktop/aa364993(v=vs.85).aspx > > _Out_opt_ LPDWORD lpVolumeSerialNumber, > > > Thank you for any advance in this theme! > > Best wishes > dd > -- Thomas Jollans -- https://mail.python.org/mailman/listinfo/python-list