Metode IWDFUsbTargetFactory::CreateUsbTargetDevice (wudfusb.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 CreateUsbTargetDevice membuat objek perangkat USB yang juga merupakan target I/O.
Sintaks
HRESULT CreateUsbTargetDevice(
[out] IWDFUsbTargetDevice **ppDevice
);
Parameter
[out] ppDevice
Pointer ke buffer yang menerima pointer ke antarmuka IWDFUsbTargetDevice untuk objek perangkat target USB.
Nilai kembali
CreateUsbTargetDevice mengembalikan salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
|
CreateUsbTargetDevice berhasil membuat objek perangkat USB yang juga merupakan target I/O. |
|
CreateUsbTargetDevice mengalami kegagalan alokasi. |
|
Nilai ini sesuai dengan kode kesalahan yang dikembalikan fungsi WinUsb_Initialize . |
Keterangan
Driver UMDF harus merilis penunjuk antarmuka IWDFUsbTargetDevice yang dikembalikan metode CreateUsbTargetDevice dalam parameter ppDevice ketika driver selesai dengan antarmuka.
Jika objek file yang terkait dengan objek target I/O yang dibuat diperlukan, driver harus memanggil metode IWDFIoTarget::GetTargetFile . Untuk informasi selengkapnya tentang objek file ini, lihat Pembuatan File oleh Target I/O USB.
UmdfDispatcher=WinUsb
) di bagian DDInstall.WDF . UmdfDispatcher diperlukan untuk menginformasikan platform UMDF bahwa ia dapat mengizinkan akses ke target I/O USB. Untuk informasi selengkapnya tentang UmdfDispatcher, lihat Menentukan Arahan WDF.
Contoh
Contoh kode berikut menunjukkan cara membuat dan menggunakan objek perangkat USB dalam implementasi metode IPnpCallbackHardware::OnPrepareHardware driver UMDF.
HRESULT
CUmdfHidDevice::OnPrepareHardware(
__in IWDFDevice* WdfDevice
)
{
CComPtr<IWDFUsbTargetFactory> factory;
USB_INTERFACE_DESCRIPTOR interfaceDescriptor;
bool hidInterfaceFound = false;
PUSB_HID_DESCRIPTOR hidDescriptor;
NTSTATUS status;
HRESULT hr = S_OK;
//
// Get the USB I/O target factory interface.
//
hr = WdfDevice->QueryInterface(IID_PPV_ARGS(&factory));
//
// Create the USB I/O target.
//
hr = factory->CreateUsbTargetDevice(&m_UsbTargetDevice);
//
// Get the configuration descriptor for the target device.
//
if (SUCCEEDED(hr))
{
hr = RetrieveConfigDescriptor(&m_ConfigDescriptor,
&m_ConfigDescriptorCb);
}
//
// Iterate through the interfaces on the device and find the HID interface.
//
if (SUCCEEDED(hr))
{
CComPtr<IWDFUsbInterface> usbInterface;
UCHAR index;
bool found = true;
for (index = 0; index < m_ConfigDescriptor->bNumInterfaces; index += 1)
{
hr = m_UsbTargetDevice->RetrieveUsbInterface(index, &usbInterface);
if (SUCCEEDED(hr))
{
usbInterface->GetInterfaceDescriptor(&interfaceDescriptor);
if (interfaceDescriptor.bInterfaceClass == 0x3)
{
hidInterfaceFound = true;
break;
}
}
else
{
break;
}
}
if (SUCCEEDED(hr) && (hidInterfaceFound == false))
{
hr = E_FAIL;
}
}
//
// Get the HID descriptor associated with this interface.
//
if (SUCCEEDED(hr))
{
hr = ParseHidDescriptor(
m_ConfigDescriptor,
m_ConfigDescriptorCb,
interfaceDescriptor.bInterfaceNumber
);
}
//
// Process the HID information from the device and setup
// the collection data structures.
//
if (SUCCEEDED(hr))
{
hr = SetupCollections();
}
return hr;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Akhir dukungan | Tidak tersedia di UMDF 2.0 dan yang lebih baru. |
Target Platform | Desktop |
Versi UMDF minimum | 1,5 |
Header | wudfusb.h (termasuk Wudfusb.h) |
DLL | WUDFx.dll |