Metodo IQueueCallbackCreate::OnCreateFile (wudfddi.h)
Avviso
UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Nessuna nuova funzionalità viene aggiunta 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 con UMDF.
Il metodo OnCreateFile viene chiamato per gestire una richiesta di file aperto quando un'applicazione apre un dispositivo tramite la funzione Microsoft Win32 CreateFile .
Sintassi
void OnCreateFile(
[in] IWDFIoQueue *pWdfQueue,
[in] IWDFIoRequest *pWDFRequest,
[in] IWDFFile *pWdfFileObject
);
Parametri
[in] pWdfQueue
Puntatore all'interfaccia IWDFIoQueue per il modulo dell'oggetto coda I/O che arriva la richiesta.
[in] pWDFRequest
Puntatore all'interfaccia IWDFIoRequest per l'oggetto richiesta 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 Win32 CreateFile 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 o per configurare la coda I/O predefinita.
Un metodo OnCreateFile tipico potrebbe chiamare il metodo IWDFObject::AssignContext nell'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 della 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 tutte le operazioni diverse da quelle che richiedono la rappresentazione, il framework chiama i metodi driver eseguiti nell'account driver predefinito. Per altre informazioni sul modo in cui i driver UMDF e UMDF gestiscono la rappresentazione, vedere Gestione della rappresentazione.
Esempio
Questo esempio si basa sull'esempio WpdWudfSampleDriver ed è dal file di 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);
}
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | wudfddi.h (include Wudfddi.h) |