Funzione WdfIoTargetClose (wdfiotarget.h)

[Si applica a KMDF e UMDF]

Il metodo WdfIoTargetClose chiude una destinazione di I/O remota specificata.

Sintassi

void WdfIoTargetClose(
  [in] WDFIOTARGET IoTarget
);

Parametri

[in] IoTarget

Handle per un oggetto di destinazione di I/O ottenuto da una chiamata precedente a WdfIoTargetCreate.

Valore restituito

nessuno

Osservazioni

Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.

Dopo che un driver ha chiamato WdfIoTargetClose, può chiamare WdfIoTargetOpen per riaprire la destinazione di I/O remota.

I driver che forniscono una funzione di callback EvtIoTargetRemoveComplete devono chiamare WdfIoTargetClose dall'interno di tale funzione di callback.

Prima che il metodo WdfIoTargetClose restituisca , il framework annulla tutte le richieste di I/O della coda di destinazione.

Se un driver ha terminato di usare una destinazione di I/O remota e non userà di nuovo la destinazione e la destinazione non dispone di oggetti richiesta figlio ancora in sospeso, il driver può chiamare WdfObjectDelete senza prima chiamare WdfIoTargetClose. La chiamata a WdfObjectDelete chiude la destinazione di I/O remota, annulla tutte le richieste di I/O della coda di destinazione ed elimina l'oggetto di destinazione di I/O. Si noti che se l'oggetto padre della destinazione I/O remota è un oggetto dispositivo, il framework chiude la destinazione ed elimina l'oggetto di destinazione quando elimina l'oggetto padre. Se nella destinazione sono presenti oggetti richiesta figlio ancora in sospeso, il driver deve chiamare WdfIoTargetClose prima di poter chiamare in modo sicuro WdfObjectDelete.

Per altre informazioni su WdfIoTargetClose, vedere Controllo dello stato di una destinazione di I/O generale.

Per altre informazioni sulle destinazioni di I/O, vedere Uso delle destinazioni di I/O.

Esempio

L'esempio di codice seguente è una funzione di callback EvtIoTargetRemoveComplete che rimuove una destinazione di I/O specificata dalla raccolta di destinazioni di I/O di un driver e quindi chiude la destinazione di I/O.

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);
}

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.0
Versione UMDF minima 2,0
Intestazione wdfiotarget.h (include Wdf.h)
Libreria Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
Regole di conformità DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Vedi anche

EvtIoTargetRemoveComplete

WdfIoTargetCreate