WdfPdoRequestEject 函式 (wdfpdo.h)

[僅適用於 KMDF]

WdfPdoRequestEject 方法會通知架構指定的裝置即將從其停駐站退出。

語法

void WdfPdoRequestEject(
  [in] WDFDEVICE Device
);

參數

[in] Device

架構裝置物件的句柄,表示裝置的實體裝置物件 (PDO) 。

傳回值

備註

如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。

總線驅動程式可以呼叫 WdfPdoRequestEjectWdfChildListRequestChildEject 來報告驅動程式已偵測到嘗試從裝置停駐站退出其中一個列舉的子裝置。 例如,驅動程式可能會偵測到使用者已按下退出按鈕。

如果可用的裝置 PDO 架構裝置對象,驅動程式可以呼叫 WdfPdoRequestEject。 如果驅動程式使用動態總線列舉,而且裝置的識別描述可用,驅動程式可以呼叫 WdfChildListRequestChildEject

如需 WdfPdoRequestEjectWdfChildListRequestChildEject 的詳細資訊,請參閱 支援退出的裝置

範例

下列程式代碼範例會搜尋子裝置清單,以尋找符合指定序號的裝置清單。 當範例找到正確的子系時,它會呼叫 WdfPdoRequestEject 來指出該子系正在退出。 此範例取自 Toaster 範例總線驅動程式並簡化。

WDFDEVICE  hChild = NULL;
NTSTATUS  status = STATUS_INVALID_PARAMETER;
PPDO_DEVICE_DATA  pdoData;

WdfFdoLockStaticChildListForIteration(Device);

while ((hChild = WdfFdoRetrieveNextStaticChild(
                                               Device, 
                                               hChild,
                                               WdfRetrieveAddedChildren
                                               )) != NULL) {
    //
    // Obtain device object context space, and check the
    // stored serial number.
    //
    pdoData = PdoGetData(hChild);
    if (SerialNo == pdoData->SerialNo) {
        status = STATUS_SUCCESS;
        WdfPdoRequestEject(hChild);
    }
}
WdfFdoUnlockStaticChildListFromIteration(Device);

規格需求

需求
目標平台 Universal
最小 KMDF 版本 1.0
標頭 wdfpdo.h (包含 Wdf.h)
程式庫 Wdf01000.sys (請參閱 Framework Library Versioning.)
IRQL <= DISPATCH_LEVEL
DDI 合規性規則 DriverCreate (kmdf) KmdfIrql (kmdf) KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf)

另請參閱

WdfFdoLockStaticChildListForIteration

WdfFdoRetrieveNextStaticChild

WdfFdoUnlockStaticChildListFromIteration