Função WdfIoTargetClose (wdfiotarget.h)

[Aplica-se a KMDF e UMDF]

O método WdfIoTargetClose fecha um destino de E/S remoto especificado.

Sintaxe

void WdfIoTargetClose(
  [in] WDFIOTARGET IoTarget
);

Parâmetros

[in] IoTarget

Um identificador para um objeto de destino de E/S obtido de uma chamada anterior para WdfIoTargetCreate.

Retornar valor

Nenhum

Comentários

Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.

Depois que um driver tiver chamado WdfIoTargetClose, ele poderá chamar WdfIoTargetOpen para reabrir o destino de E/S remoto.

Os drivers que fornecem uma função de retorno de chamada EvtIoTargetRemoveComplete devem chamar WdfIoTargetClose de dentro dessa função de retorno de chamada.

Antes que o método WdfIoTargetClose retorne, a estrutura cancela todas as solicitações de E/S da fila de destino.

Se um driver tiver terminado de usar um destino de E/S remoto e não usar o destino novamente e o destino não tiver nenhum objeto de solicitação filho que ainda esteja pendente, o driver poderá chamar WdfObjectDelete sem chamar wdfIoTargetClose primeiro. A chamada para WdfObjectDelete fechará o destino de E/S remoto, cancelará todas as solicitações de E/S da fila de destino e excluirá o objeto de destino de E/S. (Observe que, se o objeto pai do destino de E/S remoto for um objeto de dispositivo, a estrutura fechará o destino e excluirá o objeto de destino quando ele excluir o objeto pai.) Se o destino tiver objetos de solicitação filho que ainda estejam pendentes, o driver deverá chamar WdfIoTargetClose antes que ele possa chamar WdfObjectDelete com segurança.

Para obter mais informações sobre WdfIoTargetClose, consulte Controlando o estado de um destino de E/S geral.

Para obter mais informações sobre destinos de E/S, consulte Usando destinos de E/S.

Exemplos

O exemplo de código a seguir é uma função de retorno de chamada EvtIoTargetRemoveComplete que remove um destino de E/S especificado da coleção de destinos de E/S de um driver e, em seguida, fecha o 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
Plataforma de Destino Universal
Versão mínima do KMDF 1.0
Versão mínima do UMDF 2,0
Cabeçalho wdfiotarget.h (inclua Wdf.h)
Biblioteca Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
Regras de conformidade de DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Confira também

EvtIoTargetRemoveComplete

WdfIoTargetCreate