Partilhar via


Objeto De Arquivo de Estrutura

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.

O objeto de arquivo de estrutura é exposto aos drivers pela interface IWDFFile . É a representação da estrutura do dispositivo aberto. Quando um aplicativo abre o dispositivo por meio da função CreateFile do Microsoft Win32, a estrutura cria um objeto de arquivo para representar a instância de dispositivo aberta. Portanto, o objeto de arquivo de estrutura é conceitualmente equivalente ao identificador Win32 retornado da chamada do aplicativo para CreateFile. A estrutura pode criar vários objetos de arquivo associados a um único dispositivo. Cada objeto de arquivo é criado para cada chamada bem-sucedida para CreateFile. Todas as operações de E/S, como leituras e gravações, são direcionadas a uma instância específica do objeto de arquivo.

Nota Todas as solicitações passadas para drivers UMDF são associadas a objetos de arquivo. No entanto, as solicitações passadas para drivers WDM e KMDF às vezes não são associadas a objetos de arquivo.

Um driver UMDF pode chamar o método IWDFIoRequest::GetFileObject para obter o objeto de arquivo associado a uma solicitação.

Quando o driver chama GetFileObject, a estrutura incrementa a contagem de referência na interface. Seu driver é responsável por liberar a referência quando terminar com o ponteiro da interface. Para fazer isso, use um ponteiro inteligente que diminui automaticamente a contagem de referência quando o objeto sai do contexto ou chame Release na interface quando terminar de usá-lo. Para obter um exemplo de código que mostra como usar um ponteiro inteligente, consulte GetFileObject.