IoDeleteDevice-Funktion (wdm.h)
Die IoDeleteDevice-Routine entfernt ein Geräteobjekt aus dem System, z. B. wenn das zugrunde liegende Gerät aus dem System entfernt wird.
Syntax
void IoDeleteDevice(
[in] PDEVICE_OBJECT DeviceObject
);
Parameter
[in] DeviceObject
Zeiger auf das zu löschende Geräteobjekt.
Rückgabewert
Keine
Bemerkungen
Bei der Verarbeitung einer PnP-IRP_MN_REMOVE_DEVICE-Anforderung ruft ein PnP-Treiber IoDeleteDevice auf, um alle zugeordneten Geräteobjekte zu löschen. Weitere Informationen finden Sie unter Behandeln einer IRP_MN_REMOVE_DEVICE-Anforderung .
Ein Legacytreiber sollte diese Routine aufrufen, wenn er entladen wird oder wenn seine DriverEntry-Routine auf einen schwerwiegenden Initialisierungsfehler stößt, z. B. wenn ein physisches Gerät nicht ordnungsgemäß initialisiert werden kann. Diese Routine wird auch aufgerufen, wenn ein Treiber seine Geräte dynamisch neu konfiguriert. Ein Datenträgertreiber, der zum Neupartitionieren eines Datenträgers aufgerufen wird, ruft beispielsweise IoDeleteDevice auf, um die Geräteobjekte, die zu ersetzende Partitionen darstellen, zu löschen.
Ein Treiber muss bestimmte Ressourcen freigeben, für die der Treiber Speicher in seiner Geräteerweiterung bereitgestellt hat, bevor ioDeleteDevice aufgerufen wird. Wenn der Treiber beispielsweise den Zeiger auf seine Interruptobjekte in der Geräteerweiterung speichert, muss er IoDisconnectInterrupt aufrufen, bevor IoDeleteDevice aufgerufen wird.
Ein Treiber kann IoDeleteDevice nur einmal für ein bestimmtes Geräteobjekt aufrufen.
Wenn ein Treiber IoDeleteDevice aufruft, löscht der E/A-Manager das Zielgerätobjekt, wenn keine ausstehenden Verweise darauf vorhanden sind. Wenn jedoch ausstehende Verweise verbleiben, markiert der E/A-Manager das Geräteobjekt als "löschen ausstehend" und löscht das Geräteobjekt, wenn die Verweise freigegeben werden.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar ab Windows 2000. |
Zielplattform | Universell |
Header | wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
DDI-Complianceregeln | DeleteDevice(wdm), HwStorPortProhibitedDIs(storport), IrqlIoApcLte(wdm), PnpSurpriseRemove(wdm), RemoveLockCheck(wdm) |