У меня есть список допустимых букв дисков, и я хочу представить выбор конечному пользователю. Я хотел бы показать им названия дисков. Вот некоторый код, который должен показать мне имя диска F:\
:
import ctypes
kernel32 = ctypes.windll.kernel32
buf = ctypes.create_unicode_buffer(1024)
kernel32.GetVolumeNameForVolumeMountPointW(
ctypes.c_wchar_p("F:\\"),
buf,
ctypes.sizeof(buf)
)
print buf.value
Однако, это выводит \\?\Volume{a8b6b3df-1a63-11e1-9f6f-0007e9ebdfbf}\
. Как я могу получить строку, которую Windows показывает в проводнике (например, KINGSTON
, для определенной моей флешки)?
EDIT:
Все еще не работает:
volumeNameBuffer = ctypes.create_unicode_buffer(1024)
fileSystemNameBuffer = ctypes.create_unicode_buffer(1024)
kernel32.GetVolumeInformationW(
ctypes.c_wchar_p("C:\\"),
volumeNameBuffer,
ctypes.sizeof(volumeNameBuffer),
fileSystemNameBuffer,
ctypes.sizeof(fileSystemNameBuffer)
)
Это дает мне эту ошибку:
WindowsError: exception: access violation reading 0x3A353FA0