SwDeviceCreate 函式 (swdevice.h)

起始軟體裝置的列舉。

語法

HRESULT SwDeviceCreate(
  [in]           PCWSTR                      pszEnumeratorName,
  [in]           PCWSTR                      pszParentDeviceInstance,
  [in]           const SW_DEVICE_CREATE_INFO *pCreateInfo,
  [in]           ULONG                       cPropertyCount,
  [in, optional] const DEVPROPERTY           *pProperties,
  [in]           SW_DEVICE_CREATE_CALLBACK   pCallback,
  [in, optional] PVOID                       pContext,
  [out]          PHSWDEVICE                  phSwDevice
);

參數

[in] pszEnumeratorName

為軟體裝置命名列舉值的字串。 選擇代表列舉裝置之元件的名稱。

[in] pszParentDeviceInstance

字串,指定軟體裝置父系之裝置的裝置實例標識符。

這可以是 HTREE\ROOT\0,但建議將根裝置的子系保持在最低。 我們也建議軟體裝置的慣用父系是軟體裝置擴充功能的實際裝置。 在軟體裝置沒有這類自然父系的情況下,請建立裝置作為根目錄的子系,以收集元件將列舉的所有軟體裝置;然後,將實際的軟體裝置列舉為此裝置群組節點的子系。 這會將根裝置的子系保留為可管理的數位。

[in] pCreateInfo

SW_DEVICE_CREATE_INFO 結構的指標,描述 PnP 用來建立裝置的資訊。

[in] cPropertyCount

pProperties 陣列中的 DEVPROPERTY 結構數目。

[in, optional] pProperties

DEVPROPERTY 結構的選擇性數位。 這些屬性會在裝置建立之後設定,但在傳送裝置已建立的通知之前。 如需詳細資訊,請參閱。 此指標可以是 NULL

[in] pCallback

操作系統在 PnP 列舉裝置之後呼叫 的SW_DEVICE_CREATE_CALLBACK 回呼函式。

[in, optional] pContext

操作系統傳遞給回呼函式的選擇性客戶端內容。 此指標可以是 NULL

[out] phSwDevice

接收代表裝置 之 HSWDEVICE 句柄之變數的指標。 呼叫 SwDeviceClose 以在用戶端應用程式想要 PnP 移除裝置之後關閉此句柄。


DECLARE_HANDLE(HSWDEVICE);
typedef HSWDEVICE *PHSWDEVICE;

傳回值

如果已成功起始裝置列舉,則會傳回S_OK。 這並不表示已成功列舉裝置。 檢查SW_DEVICE_CREATE_CALLBACK回呼函式的 CreateResult 參數,以判斷裝置是否已成功列舉。

備註

SwDeviceCreate 會 傳回代表裝置的句柄。 關閉此句柄之後,PnP 會移除裝置。

呼叫程式必須具有系統管理員存取權,才能起始軟體裝置的列舉。

PnP 會將軟體裝置的裝置實例標識元形成為 「SWD<pszEnumeratorName><pszInstanceId>“,但此字串可能會變更,或 PnP 可能會裝飾名稱。 請一律從回呼函式取得裝置實例標識碼。

SwDeviceCreate 呼叫中設定的屬性與稍後藉由呼叫 SwDevicePropertySet 所設定的屬性之間有些微差異。 設定為 SwDeviceCreate 一部分的屬性會儲存在記憶體中;如果卸載裝置或 Null 驅動程式抹除屬性存放區,當 PnP 重新列舉裝置時,軟體裝置 API 功能會再次寫出這些屬性。 這對用戶端而言都是透明的。 列舉之後使用 SwDevicePropertySet 設定的屬性不會保存在記憶體中。 但是,如果您使用 SwDeviceCreate 來設定屬性,您可以使用 SwDevicePropertySet 來更新值,而且此更新會套用至記憶體內部值以及保存的存放區。

建議您盡可能將所有屬性指定為 SwDeviceCreate 呼叫的一部分,並針對每個 SwDeviceCreate 呼叫指定這些屬性。

注意操作系統可能會在呼叫 SwDeviceCreate 傳回之前呼叫SW_DEVICE_CREATE_CALLBACK。 基於這個理由,會將裝置的軟體裝置句柄當做回呼函式的參數提供。
 
您可以將軟體裝置建立為目前不存在之父系的子系。 PnP 會在父系出現之後列舉軟體裝置。

規格需求

需求
最低支援的用戶端 Windows 8
最低支援的伺服器 Windows Server 2012
目標平台 Universal
標頭 swdevice.h
程式庫 Swdevice.lib;Windows 10 上的 OneCoreUAP.lib
Dll Cfgmgr32.dll

另請參閱

SW_DEVICE_CREATE_CALLBACK