Bagikan melalui


Metode IWDFFileHandleTargetFactory::CreateFileHandleTarget (wudfddi.h)

[Peringatan: UMDF 2 adalah versi terbaru UMDF dan pengganti 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 CreateFileHandleTarget membuat objek target I/O berbasis handel file.

Sintaks

HRESULT CreateFileHandleTarget(
  [in]  HANDLE       hTarget,
  [out] IWDFIoTarget **ppTarget
);

Parameter

[in] hTarget

Handel ke perangkat target. Handel sebelumnya harus dibuka dengan bendera FILE_FLAG_OVERLAPPED. Misalnya, FILE_FLAG_OVERLAPPED harus ditentukan dalam parameter dwFlagsAndAttributes dari fungsi Microsoft Win32 CreateFile .

[out] ppTarget

Pointer ke lokasi yang menerima pointer ke antarmuka IWDFIoTarget dari objek target I/O.

Nilai kembali

CreateFileHandleTarget mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
S_OK

CreateFileHandleTarget berhasil membuat objek target I/O berbasis handel file.

E_OUTOFMEMORY

CreateFileHandleTarget mengalami kegagalan alokasi.

 

CreateFileHandleTarget mungkin juga mengembalikan nilai HRESULT lainnya yang ditentukan dalam Winerror.h.

Keterangan

Jika driver Anda menggunakan target I/O berbasis handel file, bagian DDInstall.WDF dari file INF driver harus mengatur arahan UmdfDispatcher ke FileHandle. Untuk informasi selengkapnya tentang UmdfDispatcher, lihat Menentukan Arahan WDF.

Setelah driver membuat objek target I/O berbasis handel file, driver dapat memformat permintaan I/O dan mengirimkannya ke target I/O. Biasanya, jika driver memanggil IWDFIoTarget::FormatRequestForRead, IWDFIoTarget::FormatRequestForWrite, atau IWDFIoTarget::FormatRequestForIoctl, driver mengatur parameter pFile ke NULL. NULL menyebabkan kerangka kerja menggunakan nama file yang ditentukan driver ke CreateFileHandleTarget. Jika driver menyediakan parameter pFilenon-NULL, file yang ditentukan menggantikan file yang ditentukan driver ke CreateFileHandleTarget. (Driver juga dapat memanggil IWDFIoRequest::FormatUsingCurrentType untuk memformat permintaan I/O.)

Ketika driver memanggil IWDFIoRequest::Send untuk mengirim permintaan I/O ke target I/O, driver tidak boleh mengatur nilai WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET dalam parameter Flags .

Handel Win32 yang diteruskan driver ke CreateFileHandleTarget harus tetap valid selama masa pakai objek target I/O berbasis handel file. (Kerangka kerja tidak mengambil referensi pada handel target ini, jadi driver Anda harus memastikan bahwa handel Win32 tetap valid.)

Setelah driver selesai menggunakan antarmuka IWDFIoTarget yang disediakan CreateFileHandleTarget , driver harus merilis antarmuka IWDFIoTarget .

Untuk informasi selengkapnya tentang target CreateFileHandleTarget dan I/O, lihat Menginisialisasi Target I/O Umum di UMDF.

Contoh

Contoh kode berikut menunjukkan cara membuat target I/O berbasis handel file untuk pipa bernama. Dalam contoh ini, m_FxDevice adalah penunjuk antarmuka yang disediakan IWDFDriver::CreateDevice .

HRESULT hr = S_OK;
CComPtr<IWDFFileHandleTargetFactory> pFileHandleTargetFactory;
//
// Create a pipe and get the handle.
//
m_WriteHandle = CreateNamedPipe(NP_NAME, 
                                PIPE_ACCESS_DUPLEX|FILE_FLAG_OVERLAPPED, 
                                PIPE_TYPE_MESSAGE|PIPE_READMODE_MESSAGE|PIPE_WAIT,
                                2,
                                MAX_TRANSFER_SIZE,
                                MAX_TRANSFER_SIZE,
                                1000,
                                NULL);
if (m_WriteHandle == INVALID_HANDLE_VALUE) {
    DWORD err = GetLastError();
    hr = HRESULT_FROM_WIN32(err);
}
//
// Obtain the IWDFFileHandleTargetFactory interface
// by calling IWDFDevice::QueryInterface. 
//
if (SUCCEEDED(hr)) {
    hr = m_FxDevice->QueryInterface(IID_PPV_ARGS(&pFileHandleTargetFactory));
}
//
// Create a file handle target.
//
if (SUCCEEDED(hr)) {
    hr = pFileHandleTargetFactory->CreateFileHandleTarget(m_WriteHandle,
                                                          &m_WriteTarget);
}

Persyaratan

Persyaratan Nilai
Akhir dukungan Tidak tersedia di UMDF 2.0 dan yang lebih baru.
Target Platform Desktop
Versi UMDF minimum 1,5
Header wudfddi.h (termasuk Wudfusb.h)
DLL WUDFx.dll

Lihat juga

IWDFFileHandleTargetFactory

IWDFIoRequest::Send

IWDFIoTarget