IWDFUsbTargetFactory::CreateUsbTargetDevice メソッド (wudfusb.h)
[警告: UMDF 2 は UMDF の最新バージョンであり、UMDF 1 よりも優先されます。 すべての新しい UMDF ドライバーは、UMDF 2 を使用して記述する必要があります。 UMDF 1 には新機能が追加されておらず、新しいバージョンのWindows 10では UMDF 1 のサポートが制限されています。 ユニバーサル Windows ドライバーでは、UMDF 2 を使用する必要があります。 詳細については、「UMDF を使用したはじめに」を参照してください。
CreateUsbTargetDevice メソッドは、I/O ターゲットでもある USB デバイス オブジェクトを作成します。
構文
HRESULT CreateUsbTargetDevice(
[out] IWDFUsbTargetDevice **ppDevice
);
パラメーター
[out] ppDevice
USB ターゲット デバイス オブジェクトの IWDFUsbTargetDevice インターフェイスへのポインターを受け取るバッファーへのポインター。
戻り値
CreateUsbTargetDevice は 、次のいずれかの値を返します。
リターン コード | 説明 |
---|---|
|
CreateUsbTargetDevice は、I/O ターゲットでもある USB デバイス オブジェクトを正常に作成しました。 |
|
CreateUsbTargetDevice で 割り当てエラーが発生しました。 |
|
この値は、 WinUsb_Initialize 関数から返されたエラー コードに対応します。 |
注釈
UMDF ドライバーは、ドライバーがインターフェイスで実行されるときに、CreateUsbTargetDevice メソッドが ppDevice パラメーターで返す IWDFUsbTargetDevice インターフェイス ポインターを解放する必要があります。
作成された I/O ターゲット オブジェクトに関連付けられているファイル オブジェクトが必要な場合、ドライバーは IWDFIoTarget::GetTargetFile メソッドを呼び出す必要があります。 このファイル オブジェクトの詳細については、「 USB I/O ターゲットによるファイルの作成」を参照してください。
UmdfDispatcher=WinUsb
) に設定する必要があります。 UmdfDispatcher は、USB I/O ターゲットへのアクセスを許可できることを UMDF プラットフォームに通知するために必要です。 UmdfDispatcher の詳細については、「WDF ディレクティブの指定」を参照してください。
例
次のコード例は、UMDF ドライバーの IPnpCallbackHardware::OnPrepareHardware メソッドの実装で USB デバイス オブジェクトを作成して使用する方法を示しています。
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;
}
要件
要件 | 値 |
---|---|
サポート終了 | UMDF 2.0 以降では使用できません。 |
対象プラットフォーム | デスクトップ |
最小 UMDF バージョン | 1.5 |
Header | wudfusb.h (Wudfusb.h を含む) |
[DLL] | WUDFx.dll |