WdfIoTargetClose-Funktion (wdfiotarget.h)

[Gilt für KMDF und UMDF]

Die WdfIoTargetClose-Methode schließt ein angegebenes Remote-I/O-Ziel.

Syntax

void WdfIoTargetClose(
  [in] WDFIOTARGET IoTarget
);

Parameter

[in] IoTarget

Ein Handle zu einem I/O-Zielobjekt, das von einem vorherigen Aufruf an WdfIoTargetCreate abgerufen wurde.

Rückgabewert

Keine

Bemerkungen

Eine Fehlerprüfung tritt auf, wenn der Treiber einen ungültigen Objekthandpunkt bereitstellt.

Nachdem ein Treiber WdfIoTargetClose aufgerufen hat, kann es WdfIoTargetOpen aufrufen, um das Remote-I/O-Ziel erneut zu öffnen.

Treiber, die eine EvtIoTargetRemoveComplete-Rückruffunktion bereitstellen, müssen WdfIoTargetClose innerhalb dieser Rückruffunktion aufrufen.

Bevor die WdfIoTargetClose-Methode zurückgegeben wird, bricht das Framework alle I/O-Anforderungen der Zielwarteschlange ab.

Wenn ein Treiber die Verwendung eines Remote-I/O-Ziels abgeschlossen hat und das Ziel nicht erneut verwendet wird, und das Ziel hat keine untergeordneten Anforderungsobjekte, die noch ausstehen, kann der Treiber WdfObjectDelete aufrufen, ohne zuerst WdfIoTargetClose zu aufrufen. Der Aufruf von WdfObjectDelete schließt das Remote-I/O-Ziel, abbrechen alle I/O-Anforderungen der Zielwarteschlange, und löschen Sie das I/O-Zielobjekt. (Beachten Sie, dass das übergeordnete Objekt des Remote-I/O-Ziels ein Geräteobjekt ist, schließt das Framework das Ziel und löscht das Zielobjekt, wenn es das übergeordnete Objekt löscht.) Wenn das Ziel über untergeordnete Anforderungsobjekte verfügt, die noch ausstehen, muss der Treiber WdfIoTargetClose aufrufen, bevor es WdfObjectDelete sicher aufrufen kann.

Weitere Informationen zu WdfIoTargetClose finden Sie unter Steuern eines Allgemeinen I/O-Zielstatus.

Weitere Informationen zu I/O-Zielen finden Sie unter Verwenden von I/O-Zielen.

Beispiele

Im folgenden Codebeispiel handelt es sich um eine EvtIoTargetRemoveComplete-Rückruffunktion , die ein angegebenes I/O-Ziel aus einer Treibersammlung von I/O-Zielen entfernt und dann das I/O-Ziel schließt.

VOID
MyEvtIoTargetRemoveComplete(
    WDFIOTARGET IoTarget
)
{
    //
    // Get device information from the I/O target object's
    // context space.
    //
    targetDeviceInfo = GetTargetDeviceInfo(IoTarget);
    deviceExtension = targetDeviceInfo->DeviceExtension;

    //
    // Remove the target device from the collection.
    //
    WdfWaitLockAcquire(
                       deviceExtension->TargetDeviceCollectionLock,
                       NULL
                       );

    WdfCollectionRemove(
                        deviceExtension->TargetDeviceCollection,
                        IoTarget
                        );

    WdfWaitLockRelease(deviceExtension->TargetDeviceCollectionLock);

    //
    // Close the target.
    //
    WdfIoTargetClose(IoTarget);
}

Requirements (Anforderungen)

   
Zielplattform Universell
KMDF-Mindestversion 1.0
UMDF-Mindestversion 2.0
Header wdfiotarget.h (enthalten Wdf.h)
Bibliothek Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
DDI-Complianceregeln DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Weitere Informationen

EvtIoTargetRemoveComplete

WdfIoTargetCreate