Bagikan melalui


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
S_OK

CreateUsbTargetDevice berhasil membuat objek perangkat USB yang juga merupakan target I/O.

E_OUTOFMEMORY

CreateUsbTargetDevice mengalami kegagalan alokasi.

Kode kesalahan yang ditentukan dalam Winerror.h
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.

CatatanCreateUsbTargetDevice mewarisi semua metode antarmuka IWDFIoTarget .
 
Untuk menggunakan objek target USB I/O yang baru dibuat di tumpukan perangkat, file INF yang menginstal driver UMDF harus berisi arahan UmdfDispatcher dan mengatur UmdfDispatcher ke WinUsb (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

Lihat juga

IWDFIoTarget

IWDFIoTarget::GetTargetFile

IWDFUsbTargetDevice

IWDFUsbTargetFactory

WinUsb_Initialize