Compartilhar via


Método IQueueCallbackCreate::OnCreateFile (wudfddi.h)

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. Drivers universais do Windows devem usar UMDF 2. Para obter mais informações, consulte Introdução com UMDF.

O método OnCreateFile é chamado para manipular uma solicitação de arquivo aberto quando um aplicativo abre um dispositivo por meio da função CreateFile do Microsoft Win32.

Sintaxe

void OnCreateFile(
  [in] IWDFIoQueue   *pWdfQueue,
  [in] IWDFIoRequest *pWDFRequest,
  [in] IWDFFile      *pWdfFileObject
);

Parâmetros

[in] pWdfQueue

Um ponteiro para a interface IWDFIoQueue para o formulário de objeto de fila de E/S que a solicitação chega.

[in] pWDFRequest

Um ponteiro para a interface IWDFIoRequest para o objeto de solicitação de E/S para o dispositivo.

[in] pWdfFileObject

Um ponteiro para a interface IWDFFile para o objeto de arquivo associado ao dispositivo. Essas informações são fornecidas para conveniência porque o driver pode chamar o método IWDFIoRequest::GetCreateParameters para obter o objeto de arquivo.

Retornar valor

Nenhum

Comentários

Se o driver implementar a interface IQueueCallbackCreate , a estrutura chamará o método OnCreateFile quando um aplicativo abrir um dispositivo por meio da função CreateFile do Win32 para executar uma operação de E/S, como ler ou gravar em um arquivo.

Um driver registra a interface IQueueCallbackCreate quando o driver chama o método IWDFDevice::CreateIoQueue para criar uma fila de E/S ou para configurar a fila de E/S padrão.

Um método OnCreateFile típico pode chamar o método IWDFObject::AssignContext no objeto de arquivo para associar o contexto ao objeto de arquivo e, em seguida, chamar IWDFIoRequest::Complete para concluir a solicitação.

Um driver UMDF pode ser necessário para abrir chaves ou arquivos do Registro enquanto ele representa um cliente que envia as solicitações de E/S. A partir de sua implementação do método OnCreateFile , o driver chama o método IWDFIoRequest::Impersonate para definir um nível de representação de segurança e definir o método IImpersonateCallback::OnImpersonate no qual o driver manipula a representação. Para acessar os recursos necessários usando as credenciais do usuário, a estrutura chama o método OnImpersonate do driver. Para operações diferentes daquelas que exigem representação, a estrutura chama métodos de driver que são executados na conta de driver padrão. Para obter mais informações sobre como os drivers UMDF e UMDF lidam com a representação, consulte Manipulando a representação.

Exemplos

Este exemplo é baseado no exemplo WpdWudfSampleDriver e é do arquivo Queue.cpp.

STDMETHODIMP_ (void) CQueue::OnCreateFile(
/*[in]*/ IWDFIoQueue* pQueue,
/*[in]*/ IWDFIoRequest* pRequest,
/*[in]*/ IWDFFile* pFileObject
)
{
  HRESULT hr = S_OK;
  ClientContext* pClientContext = new ClientContext ();

  // . . . Code omitted.

  if(pClientContext != NULL) {
    hr = pFileObject->AssignContext (this, (void*)pClientContext);

    // Release the client context if we cannot set it

    if(FAILED(hr)) {
      pClientContext->Release();
      pClientContext = NULL;
    }
  }
  else {
    hr = E_OUTOFMEMORY;
  }

  pRequest->Complete(hr);
}

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho wudfddi.h (include Wudfddi.h)

Confira também