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

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)

Consulte también

EvtIoTargetRemoveComplete

WdfIoTargetCreate