Freigeben über


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)

Weitere Informationen

IoCreateDevice

IoDisconnectInterrupt