IoDeleteDevice-Funktion (wdm.h)
Die IoDeleteDevice Routine entfernt beispielsweise ein Geräteobjekt aus dem System, 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
Nichts
Bemerkungen
Bei der Behandlung einer PnP-IRP_MN_REMOVE_DEVICE-Anforderung ruft ein PnP-Treiber IoDeleteDevice auf, um alle zugeordneten Geräteobjekte zu löschen. Ausführliche Informationen finden Sie unter Behandeln einer IRP_MN_REMOVE_DEVICE Anforderungs-.
Ein Legacytreiber sollte diese Routine aufrufen, wenn sie entladen wird oder wenn die DriverEntry- Routine einen schwerwiegenden Initialisierungsfehler auftritt, z. B. dass 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, würde z. B. IoDeleteDevice aufrufen, um die Geräteobjekte, die Partitionen darstellen, zu ersetzen, zu zerreißen.
Ein Treiber muss bestimmte Ressourcen freigeben, für die der Treiber Speicher in seiner Geräteerweiterung bereitgestellt hat, bevor er IoDeleteDeviceaufruft. Wenn der Treiber beispielsweise den Zeiger auf seine Interrupt-Objekte in der Geräteerweiterung speichert, muss er IoDisconnectInterrupt aufrufen, bevor IoDeleteDeviceaufgerufen wird.
Ein Treiber kann IoDeleteDevice nur einmal für ein bestimmtes Geräteobjekt aufrufen.
Wenn ein Treiber IoDeleteDeviceaufruft, löscht der E/A-Manager das Zielgerätobjekt, wenn keine ausstehenden Verweise darauf vorhanden sind. Wenn jedoch noch ausstehende Verweise bestehen, kennzeichnet 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 |
---|---|
mindestens unterstützte Client- | Ab Windows 2000 verfügbar. |
Zielplattform- | Universal |
Header- | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
DLL- | NtosKrnl.exe |
IRQL- | <= APC_LEVEL |
DDI-Complianceregeln | DeleteDevice(wdm), HwStorPortProhibitedDIs(storport), IrqlIoApcLte(wdm), PnpSurpriseRemove(wdm), RemoveLockCheck(wdm) |