Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
[Warnung: UMDF 2 ist die neueste Version von UMDF und ersetzt UMDF 1. Alle neuen UMDF-Treiber sollten mit UMDF 2 geschrieben werden. Es werden keine neuen Features zu UMDF 1 hinzugefügt, und es gibt eingeschränkte Unterstützung für UMDF 1 für neuere Versionen von Windows 10. Universelle Windows-Treiber müssen UMDF 2 verwenden. Weitere Informationen finden Sie unter Erste Schritte mit UMDF-.]
Die CreateUsbTargetDevice-Methode erstellt ein USB-Geräteobjekt, das auch ein E/A-Ziel ist.
Syntax
HRESULT CreateUsbTargetDevice(
[out] IWDFUsbTargetDevice **ppDevice
);
Parameter
[out] ppDevice
Ein Zeiger auf einen Puffer, der einen Zeiger auf die IWDFUsbTargetDevice Schnittstelle für das USB-Zielgerätobjekt empfängt.
Rückgabewert
CreateUsbTargetDevice gibt einen der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
|
CreateUsbTargetDevice erfolgreich ein USB-Geräteobjekt erstellt, das auch ein E/A-Ziel ist. |
|
CreateUsbTargetDevice ein Zuordnungsfehler aufgetreten ist. |
|
Dieser Wert entspricht dem Fehlercode, den die zurückgegebene WinUsb_Initialize-Funktion zurückgibt. |
Bemerkungen
Ein UMDF-Treiber sollte den IWDFUsbTargetDevice Schnittstellenzeiger freigeben, den die CreateUsbTargetDevice--Methode im ppDevice Parameter zurückgibt, wenn der Treiber mit der Schnittstelle erfolgt.
Wenn das Dateiobjekt, das dem erstellten E/A-Zielobjekt zugeordnet ist, erforderlich ist, sollte der Treiber die IWDFIoTarget::GetTargetFile-Methode aufrufen. Weitere Informationen zu diesem Dateiobjekt finden Sie unter Dateierstellung durch ein USB-E/A-Ziel-.
UmdfDispatcher=WinUsb
) im Abschnitt DDInstall.WDF festlegen.
UmdfDispatcher- ist erforderlich, um die UMDF-Plattform darüber zu informieren, dass sie den Zugriff auf das USB-E/A-Ziel zulassen kann. Weitere Informationen zu UmdfDispatcher-finden Sie unter Angeben von WDF-Direktiven.
Beispiele
Das folgende Codebeispiel zeigt, wie Sie ein USB-Geräteobjekt in einer Implementierung der IPnpCallbackHardware::OnPrepareHardware-Methode des UMDF-Treibers erstellen und verwenden.
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;
}
Anforderungen
Anforderung | Wert |
---|---|
Ende des Supports | In UMDF 2.0 und höher nicht verfügbar. |
Zielplattform- | Desktop |
Mindest-UMDF-Version | 1.5 |
Header- | wudfusb.h (include Wudfusb.h) |
DLL- | WUDFx.dll |