次の方法で共有


WdfPdoMarkMissing 関数 (wdfpdo.h)

[KMDF にのみ適用]

WdfPdoMarkMissing メソッドは、デバイスにアクセスできなくなったことをフレームワークに通知します。

構文

NTSTATUS WdfPdoMarkMissing(
  [in] WDFDEVICE Device
);

パラメーター

[in] Device

デバイスの物理デバイス オブジェクト (PDO) を表すフレームワーク デバイス オブジェクトへのハンドル。

戻り値

操作が成功した場合、関数は STATUS_SUCCESSを返します。 その他の戻り値は次のとおりです。

リターン コード 説明
STATUS_INVALID_PARAMETER
デバイス ハンドルは PDO を表しません。
STATUS_NO_SUCH_DEVICE
デバイス オブジェクトが見つかりませんでした。
 

メソッドは、他の NTSTATUS 値を返す場合もあります。

ドライバーが無効なオブジェクト ハンドルを提供すると、システム バグ チェックが発生します。

注釈

WdfPdoMarkMissing の詳細については、「静的列挙」を参照してください。

次のコード例では、子デバイスの一覧を検索して、指定したシリアル番号と一致するものを見つけます。 この例では、正しい子が見つかると、 WdfPdoMarkMissing を呼び出して、子にアクセスできないことを示します。 この例は 、トースター サンプル バス ドライバーから取得され、簡略化されています。

WDFDEVICE  hChild = NULL;
NTSTATUS  status = STATUS_INVALID_PARAMETER;
BOOLEAN  found = FALSE;
PPDO_DEVICE_DATA  pdoData;

WdfFdoLockStaticChildListForIteration(Device);

while ((hChild = WdfFdoRetrieveNextStaticChild(
                                               Device, 
                                               hChild,
                                               WdfRetrieveAddedChildren
                                               )) != NULL) {
    pdoData = PdoGetData(hChild);  // Device object context space
    if (SerialNo == pdoData->SerialNo) {
        status = WdfPdoMarkMissing(hChild);
        if(!NT_SUCCESS(status)) {
            KdPrint(("WdfPdoMarkMissing failed 0x%x\n", status));
            break;
        }
        found = TRUE;
        break;
    }
}
WdfFdoUnlockStaticChildListFromIteration(Device);

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
Header wdfpdo.h (Wdf.h を含む)
Library Wdf01000.sys (「Framework ライブラリのバージョン管理」を参照)。
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 DriverCreate(kmdf)KmdfIrql(kmdf)KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf)

こちらもご覧ください

WdfFdoLockStaticChildListForIteration

WdfFdoRetrieveNextStaticChild

WdfFdoUnlockStaticChildListFromIteration