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) |