WdfUsbTargetDeviceCreateWithParameters-Funktion (wdfusb.h)
[Gilt für KMDF und UMDF]
Die WdfUsbTargetDeviceCreateWithParameters--Methode erstellt ein Framework-USB-Geräteobjekt für ein angegebenes Framework-Geräteobjekt und öffnet das USB-Gerät für E/A-Vorgänge. Die Methode gibt außerdem Konfigurationsinformationen für das Framework-USB-Geräteobjekt an.
Syntax
NTSTATUS WdfUsbTargetDeviceCreateWithParameters(
[in] WDFDEVICE Device,
[in] PWDF_USB_DEVICE_CREATE_CONFIG Config,
[in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] WDFUSBDEVICE *UsbDevice
);
Parameter
[in] Device
Ein Handle zu einem Framework-Geräteobjekt.
[in] Config
Ein Zeiger auf eine WDF_USB_DEVICE_CREATE_CONFIG-Struktur, die Konfigurationsinformationen für das FRAMEWORK-USB-Geräteobjekt enthält.
[in, optional] Attributes
Ein Zeiger auf eine vom Aufrufer bereitgestellte WDF_OBJECT_ATTRIBUTES Struktur, die Attribute für das neue Framework-USB-Geräteobjekt enthält. (Das ParentObject-Element der Struktur muss NULL sein.) Dieser Parameter ist optional und kann WDF_NO_OBJECT_ATTRIBUTES werden.
[out] UsbDevice
Ein Zeiger auf eine Position, die ein Handle für das neue Framework-USB-Geräteobjekt empfängt.
Rückgabewert
WdfUsbTargetDeviceCreateWithParameters gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls kann diese Methode einen der folgenden Werte zurückgeben:
Rückgabecode | Beschreibung |
---|---|
|
Der parameter Config ist nicht die richtige Größe. |
|
Zum Erstellen eines neuen Framework-USB-Geräteobjekts ist nicht genügend Arbeitsspeicher vorhanden. |
|
Ein ungültiger Parameter wurde erkannt. Weitere Informationen finden Sie im Abschnitt "Hinweise". |
|
Fehler beim Versuch, USB-Konfigurationsinformationen abzurufen. |
Eine Liste mit anderen Rückgabewerten, die von der WdfUsbTargetDeviceCreateWithParameters Methode möglicherweise zurückgegeben werden, finden Sie unter Framework Object Creation Errors.
Diese Methode kann auch andere NTSTATUS-Wertezurückgeben.
Wenn der Treiber ein ungültiges Objekthandle bereitstellt, tritt eine Fehlerüberprüfung auf.
Bemerkungen
Windows 8 enthält einen neuen USB-Treiberstapel zur Unterstützung von USB 3.0-Geräten.
Bevor ein frameworkbasierter Clienttreiber die neuen Funktionen des USB-Treiberstapels für Windows 8 verwenden kann, muss sich der Treiber mit dem zugrunde liegenden USB-Treiberstapel registrieren, der von Windows für das Gerät geladen wird. Rufen Sie zum Registrieren des Clienttreibers WdfUsbTargetDeviceCreateWithParameters auf, und geben Sie eine Vertragsversion in der WDF_USB_DEVICE_CREATE_CONFIG-Struktur an.
Wenn der Clienttreiber die Verbesserungen und die neuen Funktionen unter Windows 8 erstellen, ausführen und verwenden soll, wird die Clientvertragsversion USBD_CLIENT_CONTRACT_VERSION_602.
In der Regel rufen Treiber WdfUsbTargetDeviceCreateWithParameters aus einer EvtDevicePrepareHardware- Rückruffunktion auf. Treiber können auch WdfUsbTargetDeviceCreateWithParameters innerhalb einer EvtDriverDeviceAdd- Rückruffunktion aufrufen.
Informationen dazu, wie WDM-USB-Clienttreiber mit dem USB 3.0-Treiberstapel interagieren, finden Sie unter Bewährte Methoden: Verwenden von URBs.
Wenn der Treiber WdfUsbTargetDeviceCreateWithParameters aufruft, um ein Framework-USB-Geräteobjekt zu erstellen, muss der Treiber NUR URBs erstellen, indem WdfUsbTargetDeviceCreateUrb oder WdfUsbTargetDeviceCreateIsochUrbaufgerufen wird.
Wenn Sie diese Methode von einem UMDF-Treiber aufrufen, müssen Sie die UmdfDispatcher--Direktive in der INF-Datei des Treibers angeben. Andernfalls kann diese Methode STATUS_INVALID_PARAMETERzurückgeben. Weitere Informationen zu dieser Direktive finden Sie unter Angeben von WDF-Direktiven in INF-Dateien.
Beispiele
Das folgende Codebeispiel ist Teil einer EvtDevicePrepareHardware- Rückruffunktion, die WdfUsbTargetDeviceCreateWithParametersaufruft. Im Beispiel wird das Handle für das Framework-USB-Geräteobjekt im vom Treiber definierten Kontextbereich gespeichert.
NTSTATUS
MyEvtDevicePrepareHardware(
IN WDFDEVICE Device,
IN WDFCMRESLIST ResourceList,
IN WDFCMRESLIST ResourceListTranslated
)
{
NTSTATUS status;
PMY_DEVICE_CONTEXT pMyDeviceContext;
WDF_USB_DEVICE_CREATE_CONFIG Config;
pMyDeviceContext = GetDeviceContext(Device);
// If object handle is not NULL, MyEvtDevicePrepareHardware
// was called previously and the handle is still valid.
if (pMyDeviceContext->UsbDevice != NULL) {
return STATUS_SUCCESS;
}
WDF_USB_DEVICE_CREATE_CONFIG_INIT(
&Config,
USBD_CLIENT_CONTRACT_VERSION_602
);
status = WdfUsbTargetDeviceCreateWithParameters(
Device,
&Config,
WDF_NO_OBJECT_ATTRIBUTES,
&pMyDeviceContext->UsbDevice
);
if (!NT_SUCCESS(status)) {
return status;
}
...
}
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Universal |
Minimale KMDF-Version | 1.11 |
Mindest-UMDF-Version | 2.0 |
Header- | wdfusb.h (include Wdfusb.h) |
Library | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL- | PASSIVE_LEVEL |
DDI-Complianceregeln | DriverCreate(kmdf), RequestForUrbXrb(kmdf), UsbDeviceCreate(kmdf), UsbDeviceCreateFail(kmdf), UsbDeviceCreateTarget(kmdf) |