Metodo IQueueCallbackCreate::OnCreateFile (wudfddi.h)
Avvertimento
UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Non vengono aggiunte nuove funzionalità a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2. Per altre informazioni, vedere Introduzione a UMDF.
Il metodo OnCreateFile viene chiamato per gestire una richiesta di file aperta quando un'applicazione apre un dispositivo tramite la funzione CreateFile di Microsoft Win32.
Sintassi
void OnCreateFile(
[in] IWDFIoQueue *pWdfQueue,
[in] IWDFIoRequest *pWDFRequest,
[in] IWDFFile *pWdfFileObject
);
Parametri
[in] pWdfQueue
Puntatore al interfaccia IWDFIoQueue per il modulo dell'oggetto coda di I/O che arriva la richiesta.
[in] pWDFRequest
Puntatore all'interfaccia di IWDFIoRequest per l'oggetto richiesta di I/O per il dispositivo.
[in] pWdfFileObject
Puntatore all'interfaccia IWDFFile per l'oggetto file associato al dispositivo. Queste informazioni vengono fornite per praticità perché il driver può chiamare il metodo IWDFIoRequest::GetCreateParameters per ottenere l'oggetto file.
Valore restituito
Nessuno
Osservazioni
Se il driver implementa l'interfaccia IQueueCallbackCreate, il framework chiama il metodo onCreateFile quando un'applicazione apre un dispositivo tramite la funzione CreateFile Win32 per eseguire un'operazione di I/O, ad esempio la lettura o la scrittura in un file.
Un driver registra l'interfaccia IQueueCallbackCreate quando il driver chiama il metodo IWDFDevice::CreateIoQueue per creare una coda di I/O o per configurare la coda di I/O predefinita.
Un metodo OnCreateFile tipico potrebbe chiamare metodo IWDFObject::AssignContext sull'oggetto file per associare il contesto all'oggetto file e quindi chiamare IWDFIoRequest::Complete per completare la richiesta.
Un driver UMDF potrebbe essere necessario per aprire chiavi o file del Registro di sistema mentre rappresenta un client che invia le richieste di I/O. Dall'implementazione del metodo OnCreateFile, il driver chiama il metodo IWDFIoRequest::Impersonate per impostare un livello di rappresentazione di sicurezza e per impostare il metodo IImpersonateCallback::OnImpersonate in cui il driver gestisce la rappresentazione. Per accedere alle risorse necessarie usando le credenziali dell'utente, il framework chiama il metodo OnImpersonate del driver. Per qualsiasi operazione diversa da quelle che richiedono la rappresentazione, il framework chiama i metodi driver eseguiti con l'account driver predefinito. Per altre informazioni su come i driver UMDF e UMDF gestiscono la rappresentazione, vedere Gestione della rappresentazione.
Esempi
Questo esempio si basa sull'esempio WpdWudfSampleDriver e proviene dal file 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);
}
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Finestre |
intestazione | wudfddi.h (include Wudfddi.h) |