我有一个有效的驱动器号列表,我想向最终用户提供一个选择。我想让他们看看驱动器的名称。下面的代码应该显示驱动器的名称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
,对于我拥有的某个闪存驱动器)?
仍然不起作用:
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
使用上面的片段,我填写了缺少的(可选,空)参数作为快速帮助:
这应该可以复制和粘贴。
改为尝试^{} 函数。它直接返回卷标。
为什么不使用win32api.GetVolumeInformation?
输出
相关问题 更多 >
编程相关推荐