Freigeben über


WdfCmResourceListRemoveByDescriptor-Funktion (wdfresource.h)

[Gilt nur für KMDF]

Die WdfCmResourceListRemoveByDescriptor- Methode entfernt einen angegebenen Ressourcendeskriptor aus einer angegebenen Ressourcenliste.

Syntax

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

Parameter

[in] List

Ein Handle zu einem Framework-Ressourcenlistenobjekt, das eine Liste der Hardwareressourcen für ein Gerät darstellt.

[in] Descriptor

Ein Zeiger auf eine CM_PARTIAL_RESOURCE_DESCRIPTOR Struktur, die eine Hardwareressource beschreibt.

Rückgabewert

Nichts

Bemerkungen

Wenn der Treiber ein ungültiges Objekthandle bereitstellt, tritt eine Fehlerüberprüfung auf.

Die WdfCmResourceListRemoveByDescriptor- Methode entfernt den Ressourcendeskriptor, der dem Descriptor-Parameter entspricht. Um eine Übereinstimmung zu finden, vergleicht die Methode den angegebenen Ressourcendeskriptor mit den Ressourcendeskriptoren in der logischen Konfiguration, Byte für Byte.

Wenn WdfCmResourceListRemoveByDescriptor den Ressourcendeskriptor entfernt, der den Indexwert naufweist, ändert sich der Indexwert des nächsten Ressourcendeskriptors von n+1 zu n.

Weitere Informationen zu Ressourcenlisten finden Sie unter Hardwareressourcen für Framework-Based Drivers.

Beispiele

Im folgenden Codebeispiel wird in den Ressourcenlisten eines Geräts nach Portressourcenbeschreibungen gesucht. Für jede Portressource, die im Beispiel gefunden wird, wird überprüft, ob sich die Portadresse innerhalb eines bestimmten Bereichs befindet. Wenn sich die Portadresse außerhalb des Bereichs befindet, entfernt das Beispiel den Deskriptor aus den rohen und übersetzten Ressourcenlisten.

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;
        }
    }
}

Anforderungen

Anforderung Wert
Zielplattform- Universal
Minimale KMDF-Version 1.0
Header- wdfresource.h (include Wdf.h)
Library Wdf01000.sys (siehe Framework-Bibliotheksversionsverwaltung.)
IRQL- <=DISPATCH_LEVEL
DDI-Complianceregeln DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Siehe auch

CM_PARTIAL_RESOURCE_DESCRIPTOR

WdfCmResourceListRemove-