Función WdfIoTargetClose (wdfiotarget.h)
[Se aplica a KMDF y UMDF]
El método WdfIoTargetClose cierra un destino de E/S remoto especificado.
Sintaxis
void WdfIoTargetClose(
[in] WDFIOTARGET IoTarget
);
Parámetros
[in] IoTarget
Identificador de un objeto de destino de E/S obtenido de una llamada anterior a WdfIoTargetCreate.
Valor devuelto
None
Observaciones
Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.
Una vez que un controlador ha llamado a WdfIoTargetClose, puede llamar a WdfIoTargetOpen para volver a abrir el destino de E/S remoto.
Los controladores que proporcionan una función de devolución de llamada EvtIoTargetRemoveComplete deben llamar a WdfIoTargetClose desde dentro de esa función de devolución de llamada.
Antes de que se devuelva el método WdfIoTargetClose , el marco cancela todas las solicitudes de E/S de la cola de destino.
Si un controlador ha terminado de usar un destino de E/S remoto y no volverá a usar el destino, y el destino no tiene objetos de solicitud secundarios que todavía están pendientes, el controlador puede llamar a WdfObjectDelete sin llamar primero a WdfIoTargetClose. La llamada a WdfObjectDelete cerrará el destino de E/S remoto, cancelará todas las solicitudes de E/S de la cola de destino y eliminará el objeto de destino de E/S. (Tenga en cuenta que si el objeto primario del destino de E/S remoto es un objeto de dispositivo, la plataforma cierra el destino y elimina el objeto de destino cuando elimina el objeto primario). Si el destino tiene objetos de solicitud secundarios que todavía están pendientes, el controlador debe llamar a WdfIoTargetClose antes de que pueda llamar de forma segura a WdfObjectDelete.
Para obtener más información sobre WdfIoTargetClose, vea Controlar el estado de un destino de E/S general.
Para obtener más información sobre los destinos de E/S, consulte Uso de destinos de E/S.
Ejemplos
El siguiente ejemplo de código es una función de devolución de llamada EvtIoTargetRemoveComplete que quita un destino de E/S especificado de la colección de destinos de E/S de un controlador y, a continuación, cierra el destino de E/S.
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);
}
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.0 |
Versión mínima de UMDF | 2.0 |
Encabezado | wdfiotarget.h (incluya Wdf.h) |
Library | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
Reglas de cumplimiento de DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |