WdfCmResourceListRemoveByDescriptor 関数 (wdfresource.h)

[KMDF にのみ適用]

WdfCmResourceListRemoveByDescriptor メソッドは、指定したリソース リストから指定したリソース記述子を削除します。

構文

void WdfCmResourceListRemoveByDescriptor(
  [in] WDFCMRESLIST                    List,
  [in] PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor
);

パラメーター

[in] List

デバイスのハードウェア リソースの一覧を表すフレームワーク リソースリスト オブジェクトへのハンドル。

[in] Descriptor

ハードウェア リソースを記述する CM_PARTIAL_RESOURCE_DESCRIPTOR 構造体へのポインター。

戻り値

何一つ

備考

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

WdfCmResourceListRemoveByDescriptor メソッドは、Descriptor パラメーターに一致するリソース記述子を削除します。 一致するものを見つけるために、メソッドは指定されたリソース記述子を論理構成のリソース記述子 (バイトのバイト) と比較します。

WdfCmResourceListRemoveByDescriptor 、インデックス値が n リソース記述子を削除すると、次のリソース記述子のインデックス値が n+1 から nに変わります。

リソース 一覧の詳細については、「Framework-Based ドライバー のハードウェア リソースの」を参照してください。

次のコード例では、デバイスのリソース リスト内のポート リソース記述子を検索します。 この例で見つけたポート リソースごとに、ポート アドレスが特定の範囲内にあるかどうかを確認します。 ポート アドレスが範囲外の場合、この例では、未加工のリソース リストと変換されたリソース リストの両方から記述子を削除します。

NTSTATUS
MyEvtDeviceRemoveAddedResources(
    WDFDEVICE Device,
    WDFCMRESLIST ResourcesRaw,
    WDFCMRESLIST ResourcesTranslated
    )
{    
    ULONG i, count;

    pDevExt = DeviceGetExtension(Device);
    count = WdfCmResourceListGetCount(ResourcesRaw);

    for (i = 0; i < count; i++) {
        PCM_PARTIAL_RESOURCE_DESCRIPTOR descriptor;

        descriptor = WdfCmResourceListGetDescriptor(
                                                    ResourcesRaw,
                                                    i
                                                    );

        if (descriptor->Type != CmResourceTypePort) {
            continue;
        }

        if (descriptor->u.Port.Start.QuadPart < pDevExt->Ranges[0].MinAddress ||
             descriptor->u.Port.Start.QuadPart > pDevExt->Ranges[0].MaxAddress)
        {
            WdfCmResourceListRemoveByDescriptor(
                                                ResourcesRaw,
                                                descriptor
                                                );

            // The descriptor may not be the same in the raw and translated resource lists, so use an index for the second removal

            WdfCmResourceListRemove(
                                                ResourcesTranslated,
                                                i
                                                );
            break;
        }
    }
}

必要条件

要件 価値
ターゲット プラットフォーム 万国
最小 KMDF バージョン 1.0
ヘッダー wdfresource.h (Wdf.h を含む)
ライブラリ Wdf01000.sys (フレームワーク ライブラリのバージョン管理を参照)。
IRQL <=DISPATCH_LEVEL
DDI コンプライアンス規則 する DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

関連項目

CM_PARTIAL_RESOURCE_DESCRIPTOR

WdfCmResourceListRemove