IQueueCallbackCreate::OnCreateFile 方法 (wudfddi.h)
警告
UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的UMDF驅動程式都應該使用UMDF 2撰寫。 未將新功能新增至 UMDF 1,且較新版本的 Windows 10 上,UMDF 1 的支援有限。 通用 Windows 驅動程式必須使用 UMDF 2。 如需詳細資訊,請參閱使用UMDF使用者入門。
當應用程式透過 Microsoft Win32 CreateFile 函式開啟裝置時,會呼叫 OnCreateFile 方法來處理開啟的檔案要求。
語法
void OnCreateFile(
[in] IWDFIoQueue *pWdfQueue,
[in] IWDFIoRequest *pWDFRequest,
[in] IWDFFile *pWdfFileObject
);
參數
[in] pWdfQueue
要求送達之 I/O 佇列物件表單之 IWDFIoQueue 介面的指標。
[in] pWDFRequest
裝置 I/O 要求物件的 IWDFIoRequest 介面指標。
[in] pWdfFileObject
與裝置相關聯之檔案物件的 IWDFFile 介面指標。 由於驅動程式可以呼叫 IWDFIoRequest::GetCreateParameters 方法來取得檔案物件,因此提供這項資訊以方便起見。
傳回值
無
備註
如果驅動程式實作 IQueueCallbackCreate 介面,當應用程式透過 Win32 CreateFile 函式開啟裝置以執行 I/O 作業時,架構會呼叫 OnCreateFile 方法,例如讀取或寫入檔案。
驅動程式會在驅動程式呼叫 IWDFDevice::CreateIoQueue 方法來建立 I/O 佇列或設定預設 I/O 佇列時,註冊 IQueueCallbackCreate 介面。
典型的 OnCreateFile 方法可能會在檔案物件上呼叫 IWDFObject::AssignContext 方法,以將內容與檔案對象產生關聯,然後呼叫 IWDFIoRequest::Complete 來完成要求。
當 UMDF 驅動程式模擬傳送 I/O 要求的用戶端時,可能需要開啟登錄機碼或檔案。 從 OnCreateFile 方法的實作中,驅動程式會呼叫 IWDFIoRequest::Impersonate 方法來設定安全性模擬層級,並設定驅動程式處理仿真的 IImpersonateCallback::OnImpersonate 方法。 若要使用使用者的認證來存取必要的資源,架構會呼叫驅動程式的 OnImpersonate 方法。 對於需要模擬之作業以外的任何作業,架構會呼叫在默認驅動程式帳戶下執行的驅動程式方法。 如需UMDF和UMDF驅動程式如何處理模擬,請參閱 處理模擬。
範例
此範例是以 WpdWudfSampleDriver 範例為基礎,而且來自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);
}
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | wudfddi.h (包含 Wudfddi.h) |