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 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 un EvtIoTargetRemoveComplete funzione di callback devono chiamare WdfIoTargetClose dall'interno di tale funzione di callback.
Prima che venga restituito il metodo di WdfIoTargetClose, 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 chiuderà la destinazione di I/O remota, cancellerà tutte le richieste di I/O della coda di destinazione ed eliminerà 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 I/O generale.
Per altre informazioni sulle destinazioni di I/O, vedere Uso delle destinazioni di I/O.
Esempi
L'esempio di codice seguente è un EvtIoTargetRemoveComplete funzione di callback che rimuove una destinazione I/O specificata dalla raccolta di destinazioni 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 minima di KMDF | 1.0 |
versione minima di UMDF | 2.0 |
intestazione | wdfiotarget.h (include Wdf.h) |
Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
regole di conformità DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |