我一直在尝试观看USB子系统以检测何时添加或删除设备,但我在解码PDEV_BROADCAST_DEVICEINTERFACE::dbcc_name
字段时遇到问题。我的代码基于an example over on codeproject。
如果我在visual studio中右键单击我的C ++ / CLI应用程序并转到Dbt.h
中的声明,我会得到:
typedef struct _DEV_BROADCAST_DEVICEINTERFACE_W {
DWORD dbcc_size;
DWORD dbcc_devicetype;
DWORD dbcc_reserved;
GUID dbcc_classguid;
wchar_t dbcc_name[1];
} DEV_BROADCAST_DEVICEINTERFACE_W, *PDEV_BROADCAST_DEVICEINTERFACE_W;
这表明该名称应为wchar_t
。将它提供给一个新的System :: String就会出现随机字符。还有更多转换wchar_t字符串吗?
[edit] 基本上我想在C ++中执行this - cli但是如何移植它?
答案 0 :(得分:1)
不知道“喂食”可能意味着什么。使用Marshal :: PtrToStringUni()来转换字符串。如果接收此消息的窗口是使用CreateWindowExA()创建的,那么您需要Marshal :: PtrToStringAnsi()。