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) |