共用方式為


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)

另請參閱