WdfIoTargetOpen-Funktion (wdfiotarget.h)
[Gilt für KMDF und UMDF]
Die WdfIoTargetOpen-Methode öffnet ein Remote-E/A-Ziel, damit der Treiber E/A-Anforderungen an ihn senden kann.
Syntax
NTSTATUS WdfIoTargetOpen(
[in] WDFIOTARGET IoTarget,
[in] PWDF_IO_TARGET_OPEN_PARAMS OpenParams
);
Parameter
[in] IoTarget
Ein Handle für ein E/A-Zielobjekt, das aus einem vorherigen Aufruf von WdfIoTargetCreate abgerufen wurde.
[in] OpenParams
Ein Zeiger auf eine aufruferseitig zugeordnete WDF_IO_TARGET_OPEN_PARAMS-Struktur .
Rückgabewert
WdfIoTargetOpen gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt diese Methode möglicherweise einen der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
|
Das angegebene E/A-Ziel ist bereits geöffnet. |
|
Die verfügbaren Systemressourcen reichten nicht aus, um den Vorgang abzuschließen. |
|
Die Größe der von OpenParams angegebenen WDF_IO_TARGET_OPEN_PARAMS-Struktur war falsch. |
|
Das TargetFileObject-Element der WDF_IO_TARGET_OPEN_PARAMS-Struktur des Aufrufers hat ein ungültiges Dateiobjekt angegeben. |
|
Ein ungültiger Parameter wurde erkannt. |
|
Der Gerätename, der im OpenParams-Parameter identifiziert wird, kann nicht gefunden werden. |
Diese Methode kann auch andere NTSTATUS-Werte zurückgeben.
Eine Fehlerüberprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.
Hinweise
Treiber können Remote-E/A-Ziele öffnen, indem sie eine Unicode-Zeichenfolge angeben, die einen Objektnamen darstellt, oder indem sie einen Zeiger auf ein Windows-Treibermodell (WDM) DEVICE_OBJECT Struktur bereitstellen. (Frameworkbasierte Treiber verfügen in der Regel nicht über Zeiger auf die DEVICE_OBJECT Strukturen anderer Treiber.)
Um vor dem Aufruf von WdfIoTargetOpen einen Geräteschnittstellennamen zu erhalten, sollte ein UMDF-Treiber CM_Register_Notification aufrufen, um sich für die Benachrichtigung zum Eintreffen und Entfernen der Schnittstelle zu registrieren. Anschließend kann das Remoteziel mithilfe des symbolischen Schnittstellennamens geöffnet werden, den es in der Rückrufroutine für Schnittstellenbenachrichtigungen empfängt. Der Treiber sollte weiterhin auf die Entfernungsbenachrichtigung lauschen, während das Handle geöffnet ist. Wenn der Zieltreiber ausfällt, muss der UMDF-Treiber das Handle schließen.
Wenn die Schnittstelle bereits vorhanden ist, sollte ein UMDF-Treiber CM_Get_Device_Interface_List aufrufen und möglicherweise zuerst CM_Get_Device_Interface_List_Size aufrufen, um die erforderliche Puffergröße zu bestimmen.
Wenn Ihr Treiber sein lokales E/A-Ziel verwenden soll, muss der Treiber WdfDeviceGetIoTarget anstelle von WdfIoTargetOpen aufrufen.
Wenn ein Aufruf von WdfIoTargetOpen fehlschlägt, sollte der Treiber WdfObjectDelete aufrufen, um das E/A-Zielobjekt zu löschen.
Weitere Informationen zu WdfIoTargetOpen finden Sie unter Initialisieren eines allgemeinen E/A-Ziels.
Weitere Informationen zu E/A-Zielen finden Sie unter Verwenden von E/A-Zielen.
Beispiele
Im folgenden Beispiel wird ein E/A-Zielobjekt erstellt, eine WDF_IO_TARGET_OPEN_PARAMS-Struktur initialisiert und ein Remote-E/A-Ziel geöffnet, indem der symbolische Linkname eines Geräts angegeben wird.
WDF_OBJECT_ATTRIBUTES ioTargetAttrib;
WDFIOTARGET ioTarget;
WDF_IO_TARGET_OPEN_PARAMS openParams;
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(
&ioTargetAttrib,
TARGET_DEVICE_INFO
);
status = WdfIoTargetCreate(
device,
&ioTargetAttrib,
&ioTarget
);
if (!NT_SUCCESS(status)) {
return status;
}
WDF_IO_TARGET_OPEN_PARAMS_INIT_OPEN_BY_NAME(
&openParams,
SymbolicLink,
STANDARD_RIGHTS_ALL
);
status = WdfIoTargetOpen(
ioTarget,
&openParams
);
if (!NT_SUCCESS(status)) {
WdfObjectDelete(ioTarget);
return status;
}
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
KMDF-Mindestversion | 1.0 |
UMDF-Mindestversion | 2.0 |
Kopfzeile | wdfiotarget.h (include Wdf.h) |
Bibliothek | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
DDI-Complianceregeln | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |