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