Bagikan melalui


Metode IQueueCallbackCreate::OnCreateFile (wudfddi.h)

Peringatan

UMDF 2 adalah versi terbaru UMDF dan supersedes UMDF 1. Semua driver UMDF baru harus ditulis menggunakan UMDF 2. Tidak ada fitur baru yang ditambahkan ke UMDF 1 dan ada dukungan terbatas untuk UMDF 1 pada versi Windows 10 yang lebih baru. Driver Universal Windows harus menggunakan UMDF 2. Untuk informasi selengkapnya, lihat Mulai menggunakan UMDF.

Metode OnCreateFile dipanggil untuk menangani permintaan file terbuka saat aplikasi membuka perangkat melalui fungsi Microsoft Win32 CreateFile .

Sintaks

void OnCreateFile(
  [in] IWDFIoQueue   *pWdfQueue,
  [in] IWDFIoRequest *pWDFRequest,
  [in] IWDFFile      *pWdfFileObject
);

Parameter

[in] pWdfQueue

Penunjuk ke antarmuka IWDFIoQueue untuk formulir objek antrean I/O tempat permintaan tiba.

[in] pWDFRequest

Penunjuk ke antarmuka IWDFIoRequest untuk objek permintaan I/O untuk perangkat.

[in] pWdfFileObject

Penunjuk ke antarmuka IWDFFile untuk objek file yang terkait dengan perangkat. Informasi ini disediakan untuk kenyamanan karena driver dapat memanggil metode IWDFIoRequest::GetCreateParameters untuk mendapatkan objek file.

Nilai kembali

Tidak ada

Keterangan

Jika driver mengimplementasikan antarmuka IQueueCallbackCreate , kerangka kerja memanggil metode OnCreateFile saat aplikasi membuka perangkat melalui fungsi Win32 CreateFile untuk melakukan operasi I/O, seperti membaca dari atau menulis ke file.

Driver mendaftarkan antarmuka IQueueCallbackCreate saat driver memanggil metode IWDFDevice::CreateIoQueue untuk membuat antrean I/O atau untuk mengonfigurasi antrean I/O default.

Metode OnCreateFile yang khas mungkin memanggil metode IWDFObject::AssignContext pada objek file untuk mengaitkan konteks dengan objek file, lalu memanggil IWDFIoRequest::Complete untuk menyelesaikan permintaan.

Driver UMDF mungkin diperlukan untuk membuka kunci atau file registri saat meniru klien yang mengirim permintaan I/O. Dari implementasi metode OnCreateFile , driver memanggil metode IWDFIoRequest::Impersonate untuk mengatur tingkat peniruan identitas keamanan dan untuk mengatur metode IImpersonateCallback::OnImpersonate di mana driver menangani peniruan identitas. Untuk mengakses sumber daya yang diperlukan dengan menggunakan kredensial pengguna, kerangka kerja memanggil metode OnImpersonate driver. Untuk setiap operasi selain yang memerlukan peniruan identitas, kerangka kerja memanggil metode driver yang berjalan di bawah akun driver default. Untuk informasi selengkapnya tentang cara driver UMDF dan UMDF menangani peniruan, lihat Menangani Peniruan.

Contoh

Contoh ini didasarkan pada sampel WpdWudfSampleDriver, dan berasal dari 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);
}

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header wudfddi.h (termasuk Wudfddi.h)

Lihat juga