C#如何指定SetupDiGetDeviceRegistryProperty字段值SPDRP_HARDWAREID

时间:2012-09-13 14:44:49

标签: c#

我在C#中使用此函数SetupDiGetDeviceRegistryProperty来查询硬件ID并知道为数据分配多大的缓冲区。但我在`SPDRP_HARDWAREID收到错误。错误信息是

  

“当前上下文中不存在名称”SPDRP_HARDWAREID“。

我尝试将SPDRP_HARDWAREID声明为enum,但它没有用。

有人有想法吗?

1 个答案:

答案 0 :(得分:1)

如果您只想使用hardwareid函数,只需输入0x00000001并忘记变量名称。还记得让其他参数类型有效,你的声明是错误的,你应该使用它:

[DllImport("setupapi.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool SetupDiGetDeviceRegistryProperty(
    IntPtr DeviceInfoSet,
    ref SP_DEVINFO_DATA DeviceInfoData,
    uint Property,
    out UInt32 PropertyRegDataType,
    byte[] PropertyBuffer,
    uint PropertyBufferSize,
    out UInt32 RequiredSize
    );