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 für ein 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
Keine
Bemerkungen
Eine Fehlerüberprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.
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 über den Indexwert n verfügt, ändert sich der Indexwert des nächsten Ressourcendeskriptors von n+1 in n.
Weitere Informationen zu Ressourcenlisten finden Sie unter Hardwareressourcen für Framework-Based Treiber.
Beispiele
Im folgenden Codebeispiel wird nach Portressourcendeskriptoren in den Ressourcenlisten eines Geräts 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 sowohl aus den Rohdatenlisten als auch aus der übersetzten Ressourcenliste.
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 | Universell |
KMDF-Mindestversion | 1.0 |
Kopfzeile | wdfresource.h (einschließen von Wdf.h) |
Bibliothek | Wdf01000.sys (siehe Versionierung der Frameworkbibliothek.) |
IRQL | <=DISPATCH_LEVEL |
DDI-Complianceregeln | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |