Compartir a través de


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)

Consulte también

EvtIoTargetRemoveComplete

WdfIoTargetCreate