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 |
머리글 | wudfusb.h(Wudfusb.h 포함) |
DLL | WUDFx.dll |