Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
[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
Ninguno
Observaciones
Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.
Después de llamar a un controlador WdfIoTargetClose, puede llamar a WdfIoTargetOpenOpen para volver a abrir el destino de E/S remoto.
Los controladores que proporcionan un EvtIoTargetRemoveComplete función de devolución de llamada deben llamar a WdfIoTargetClose desde dentro de esa función de devolución de llamada.
Antes de que se devuelva el método WdfIoTargetClo se, 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, el marco cierra el destino y elimina el objeto de destino cuando elimina el objeto primario). Si el destino tiene objetos de solicitud secundarios que aún están pendientes, el controlador debe llamar a WdfIoTargetClose antes de poder llamar 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 ejemplo de código siguiente es un EvtIoTargetRemoveComplete función de devolución de llamada 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 | Valor |
---|---|
de la plataforma de destino de | Universal |
versión mínima de KMDF | 1.0 |
versión mínima de UMDF | 2.0 |
encabezado | wdfiotarget.h (incluya Wdf.h) |
Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
irQL | PASSIVE_LEVEL |
reglas de cumplimiento de DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |