EVT_WDF_DRIVER_DEVICE_ADD回呼函式 (wdfdriver.h)
[適用於 KMDF 和 UMDF]
當 隨插即用 (PnP) 管理員回報裝置是否存在時,驅動程式的 EvtDriverDeviceAdd 事件回呼函式會執行裝置初始化作業。
語法
EVT_WDF_DRIVER_DEVICE_ADD EvtWdfDriverDeviceAdd;
NTSTATUS EvtWdfDriverDeviceAdd(
[in] WDFDRIVER Driver,
[in, out] PWDFDEVICE_INIT DeviceInit
)
{...}
參數
[in] Driver
表示驅動程式之架構驅動程序物件的句柄。
[in, out] DeviceInit
架構配置的 WDFDEVICE_INIT 結構的指標。
傳回值
如果作業成功,EvtDriverDeviceAdd 回呼函式必須傳回STATUS_SUCCESS。 否則,這個回呼函式必須傳回 Ntstatus.h 中定義的其中一個錯誤狀態值。 如需詳細資訊,請參閱接下來的<備註>一節。
備註
每個支援 PnP 裝置的架構驅動程式都必須提供 EvtDriverDeviceAdd 回呼函式。 驅動程式必須先將回呼函式的位址放在其 WDF_DRIVER_CONFIG 結構中, 才能呼叫 WdfDriverCreate。
架構會在總線驅動程式偵測到硬體標識碼 (標識碼) 符合驅動程式所支援硬體標識碼的裝置之後呼叫驅動程式的 EvtDriverDeviceAdd 回呼函式。 您可以藉由提供 INF 檔案來指定驅動程式支援的硬體識別碼,操作系統會在第一次將其中一部裝置連線到電腦時,用來安裝驅動程式。 如需系統如何使用 INF 檔案和硬體識別碼的詳細資訊,請參閱 安裝程式如何選取驅動程式。
驅動程式的 EvtDriverDeviceAdd 回呼函式通常會執行至少一些下列初始化作業:
-
建立架構裝置物件 來代表裝置。
-
建立 I/O 佇列 ,讓驅動程式可以接收 I/O 要求。
-
建立應用程式用來與裝置通訊的裝置介面。
-
建立其他驅動程式可以使用的驅動程式定義介面。
- 初始化 Windows Management Instrumentation (WMI) 支援。
-
如果驅動程式處理裝置中斷,請建立中斷物件。
-
如果驅動程式處理 DMA 作業,請啟用直接記憶體存取 (DMA) 交易。
如果驅動程式的 EvtDriverDeviceAdd 回呼函式建立裝置物件,但不會傳回STATUS_SUCCESS,架構會刪除裝置物件及其子裝置。
如果函式驅動程式的 EvtDriverDeviceAdd 回呼函式未傳回STATUS_SUCCESS,則 I/O 管理員不會為裝置建置裝置堆疊。
如果篩選驅動程式的 EvtDriverDeviceAdd 回呼函式未傳回STATUS_SUCCESS,架構會將傳回值轉換成STATUS_SUCCESS,而 I/O 管理員會在沒有篩選驅動程式的情況下建置裝置堆疊。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
最小 KMDF 版本 | 1.0 |
最低UMDF版本 | 2.0 |
標頭 | wdfdriver.h (包含 Wdf.h) |
IRQL | PASSIVE_LEVEL |