2012-09-13 117 views
-2

我在C#中使用此函數SetupDiGetDeviceRegistryProperty來查詢硬件ID並知道爲數據分配多大的緩衝區。但我在`SPDRP_HARDWAREID收到錯誤。錯誤消息是C#如何指定SetupDiGetDeviceRegistryProperty字段值SPDRP_HARDWAREID

「這個名字‘SPDRP_HARDWAREID’並不在當前的背景下存在。

我曾嘗試宣告SPDRP_HARDWAREIDenum,但它並沒有奏效。

沒有人有主意?

+0

的#define SPDRP_HARDWAREID(00000001)//硬件ID(R/W) –

+0

是它允許在C#中使用 「#定義」。我嘗試過這個。但給錯誤爲「無法定義/取消定義預處理符號。任何其他方式 – user1668957

+0

不,它不是。我只是從'.h'文件複製的代碼,你需要定義一個常數或只是通過價值(1) 。直接在C#我,你需要在你的代碼不止一個'SPDRP_'值應定義枚舉,而不是 –

回答

1

只需輸入00000001,忘了變量名,如果你只想使用的硬件ID功能。記得有其他的參數類型也有效,你declarat離子是不對的,你應該這樣做:

[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 
    );