如何解码PDEV_BROADCAST_DEVICEINTERFACE :: dbcc_name?

时间:2010-07-06 14:17:42

标签: .net windows c++-cli type-conversion

我一直在尝试观看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但是如何移植它?

1 个答案:

答案 0 :(得分:1)

不知道“喂食”可能意味着什么。使用Marshal :: PtrToStringUni()来转换字符串。如果接收此消息的窗口是使用CreateWindowExA()创建的,那么您需要Marshal :: PtrToStringAnsi()。