Compartilhar via


Controlando o estado de um destino de E/S geral no UMDF

Aviso

O UMDF 2 é a versão mais recente do UMDF e substitui o UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum novo recurso está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Os drivers universais do Windows devem usar o UMDF 2.

Os exemplos de UMDF 1 arquivados podem ser encontrados no Windows 11, versão 22H2 – Atualização de exemplos de driver de maio de 2022.

Para obter mais informações, consulte Introdução com UMDF.

A estrutura define os seguintes estados para destinos gerais de E/S:

Começou
O destino de E/S está aberto (ou seja, disponível para o driver UMDF) e o driver pode enviar solicitações de E/S para ele. A estrutura fornece as solicitações para o driver apropriado.

Parou
O destino de E/S está aberto, mas o driver UMDF não pode enviar solicitações de E/S para o destino de E/S, a menos que o driver passe o sinalizador WDF_REQUEST_SEND_OPTION_IGNORE_TARGET_STATE para o parâmetro Flags em uma chamada para o método IWDFIoRequest::Send .

A estrutura para de fornecer solicitações ao driver apropriado.

Fechado para Query-Remove
O destino de E/S é temporariamente fechado porque seu dispositivo pode ser removido em breve.

Fechado
O destino de E/S é fechado e não pode ser iniciado ou interrompido.

Excluído
O dispositivo do destino de E/S foi removido.

A enumeração WDF_IO_TARGET_STATE define os valores que representam esses estados.

Estados de destino de E/S locais

A estrutura é aberta automaticamente e inicia destinos de E/S locais.

Se necessário, o driver pode chamar IWDFIoTargetStateManagement::Stop para interromper temporariamente um destino de E/S local e chamar IWDFIoTargetStateManagement::Start para reiniciá-lo. Por exemplo, o driver poderá interromper um destino de E/S local se detectar uma condição de erro temporária e reiniciar o destino de E/S se a condição de erro for corrigida.

Se o dispositivo de um destino de E/S local for removido, a estrutura interromperá e fechará automaticamente o destino de E/S e cancelará todas as solicitações de E/S que estão na fila do destino. A estrutura notifica o driver de que o dispositivo não está mais disponível chamando funções de retorno de chamada de evento de objeto do dispositivo. Para obter mais informações sobre essas funções de retorno de chamada, consulte Cenários de PnP e Gerenciamento de Energia no UMDF.

Os drivers podem chamar IWDFIoTargetStateManagement::GetState para obter o estado atual de um destino de E/S local.

Estados de destino de E/S remotos

Os drivers devem chamar IWDFRemoteTarget::OpenFileByName ou IWDFRemoteTarget::OpenRemoteInterface para abrir destinos remotos de E/S. Quando um driver abre um destino de E/S remoto, a estrutura inicia automaticamente o destino de E/S.

Se necessário, o driver pode chamar IWDFRemoteTarget::Stop para interromper temporariamente um destino de E/S remoto e chamar IWDFRemoteTarget::Start para reiniciá-lo.

Se o dispositivo de um destino de E/S remoto for removido, a estrutura interromperá e fechará automaticamente o destino de E/S e cancelará todas as solicitações de E/S que estão na fila do destino, a menos que o driver registre as seguintes funções de retorno de chamada de evento:

IRemoteTargetCallbackRemoval::OnRemoteTargetQueryRemove
Informa ao driver que o dispositivo de um destino de E/S remoto pode ser removido. Seu driver deve chamar IWDFRemoteTarget::CloseForQueryRemove se você quiser que o driver permita a remoção do dispositivo.

IRemoteTargetCallbackRemoval::OnRemoteTargetRemoveComplete
Informa ao driver que o dispositivo de um destino de E/S remoto foi removido. Essa função de retorno de chamada deve chamar IWDFRemoteTarget::Close.

IRemoteTargetCallbackRemoval::OnRemoteTargetRemoveCanceled
Informa ao driver que uma tentativa de remover o dispositivo de um destino de E/S remoto foi cancelada. Se você quiser que o driver continue a usar o destino, o driver deverá chamar IWDFRemoteTarget::Reopen. Normalmente, um driver chama Reopen de dentro da função de retorno de chamada OnRemoteTargetRemoveCanceled , mas Reopen pode ser chamado após o retorno de OnRemoteTargetRemoveCanceled .

Os drivers podem chamar IWDFRemoteTarget::GetState para obter o estado atual de um destino de E/S remoto.