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 recurso novo 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. Para obter mais informações, consulte Introdução aoUMDF.
O método OnCreateFile é chamado para lidar com uma solicitação de arquivo aberta 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 do 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.
Valor de retorno
Nenhum
Observações
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 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 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 qualquer operação diferente daquelas que exigem representação, a estrutura chama os 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 manipulandode 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 |
---|---|
da Plataforma de Destino | Windows |
cabeçalho | wudfddi.h (inclua Wudfddi.h) |
Consulte também
- IImpersonateCallback::OnImpersonate
- IQueueCallbackCreate
- IWDFDevice::CreateIoQueue
- IWDFFile
- IWDFIoQueue
- IWDFIoRequest
- IWDFIoRequest::GetCreateParameters
- IWDFIoRequest::Impersonate