WdfDeviceMiniportCreate-Funktion (wdfminiport.h)
[Gilt nur für KMDF]
Die WdfDeviceMiniportCreate-Methode erstellt ein Framework-Geräteobjekt, das von einem Miniporttreiber verwendet werden kann.
Syntax
NTSTATUS WdfDeviceMiniportCreate(
[in] WDFDRIVER Driver,
[in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
[in] PDEVICE_OBJECT DeviceObject,
[in, optional] PDEVICE_OBJECT AttachedDeviceObject,
[in, optional] PDEVICE_OBJECT Pdo,
[out] WDFDEVICE *Device
);
Parameter
[in] Driver
Ein Handle für das Frameworktreiberobjekt des Treibers, das durch einen vorherigen Aufruf von WdfDriverCreate abgerufen wurde.
[in, optional] Attributes
Ein Zeiger auf eine vom Aufrufer zugeordnete WDF_OBJECT_ATTRIBUTES-Struktur , die Attribute für das neue Objekt enthält. Dieser Parameter ist optional und kann WDF_NO_OBJECT_ATTRIBUTES werden.
[in] DeviceObject
Ein Zeiger auf eine WDM-DEVICE_OBJECT-Struktur , die das funktionale Geräteobjekt (Functional Device Object, FDO) für den Miniporttreiber darstellt.
[in, optional] AttachedDeviceObject
Ein Zeiger auf eine WDM-DEVICE_OBJECT Struktur, die das nächstniedrige Geräteobjekt im Gerätestapel darstellt.
[in, optional] Pdo
Ein Zeiger auf eine WDM-DEVICE_OBJECT-Struktur, die das physische Geräteobjekt (PDO) für das Gerät darstellt.
[out] Device
Ein Zeiger auf einen Speicherort, der ein Handle für das neue Frameworkgeräteobjekt empfängt.
Rückgabewert
Wenn bei der WdfDeviceMiniportCreate-Methode keine Fehler auftreten, wird STATUS_SUCCESS zurückgegeben. Weitere Rückgabewerte sind:
Rückgabecode | Beschreibung |
---|---|
|
Ein Geräteobjekt konnte nicht zugeordnet werden. |
Eine Liste mit anderen Rückgabewerten, die WdfDeviceMiniportCreate zurückgeben kann, finden Sie unter Fehler beim Erstellen von Frameworkobjekten.
Die -Methode gibt möglicherweise andere NTSTATUS-Werte zurück.
Eine Fehlerüberprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.
Hinweise
Wenn Ihr Miniporttreiber das Framework verwendet, sollte der Miniporttreiber WdfDeviceMiniportCreate aufrufen, wenn der Porttreiber ihn darüber informiert, dass ein Gerät verfügbar ist. Miniport-Treiber rufen WdfDeviceCreate nicht auf.
Ihr Miniporttreiber erhält möglicherweise seine DeviceObject-, AttachedDeviceObject- und PDO-Zeiger vom Porttreiber. Beispielsweise kann ein NDIS-Miniporttreiber diese Zeiger abrufen, indem er NdisMGetDeviceProperty aufruft.
Die folgenden Einschränkungen gelten für Frameworkgeräteobjekte, die ein Miniporttreiber durch Aufrufen von WdfDeviceMiniportCreate abruft:
- Das Gerät, das das Geräteobjekt darstellt, muss Plug & Play unterstützen.
- Das Geräteobjekt unterstützt keine der Ereignisrückruffunktionen des Geräteobjekts. Daher muss der Porttreiber alle Plug & Play (PnP) und Energieverwaltungsvorgänge verarbeiten.
- Das Geräteobjekthandle kann nicht an WdfWmiProviderCreate übergeben werden, sodass der Porttreiber alle erforderlichen Unterstützung für die Windows-Verwaltungsinstrumentation (WMI) bereitstellen muss.
- Das Geräteobjekthandle kann nicht an WdfIoQueueCreate übergeben werden, sodass das Framework keine E/A-Warteschlangen für Miniporttreiber unterstützt.
- Das Objekthandle des Geräts kann nicht an WdfInterruptCreate übergeben werden, sodass das Framework keine Interruptobjekte für Miniporttreiber unterstützt.
- Das Geräteobjekthandle kann nicht an allgemeine Framework-Geräteobjektmethoden mit Ausnahme von WdfDeviceGetIoTarget, WdfDeviceWdmGetDeviceObject, WdfDeviceWdmGetAttachedDevice und WdfDeviceWdmGetPhysicalDevice übergeben werden.
- Das Objekthandle des Geräts kann nicht an framework-FDO-Methoden mit Ausnahme von WdfFdoQueryForInterface übergeben werden.
- Das Geräteobjekthandle kann nicht an keine Framework-PDO-Methoden oder an WdfChildListCreate übergeben werden, sodass der Miniporttreiber kein Bustreiber sein kann.
- Der Treiber muss schließlich WdfObjectDelete aufrufen, um das von WdfDeviceMiniportCreate erstellte Geräteobjekt zu löschen.
Um E/A-Anforderungen an E/A-Ziele zu senden, übergibt der Miniporttreiber möglicherweise das Geräteobjekthandle an WdfDeviceGetIoTarget, WdfIoTargetCreate oder WdfUsbTargetDeviceCreateWithParameters.
Der Miniporttreiber kann das Geräteobjekthandle an WdfDmaEnablerCreate übergeben, wenn das Gerät DMA-Vorgänge unterstützt.
Weitere Informationen zu Miniporttreibern finden Sie unter Verwenden von Kernel-Mode Driver Framework mit Miniport-Treibern.
Beispiele
Im folgenden Codebeispiel wird NdisMGetDeviceProperty aufgerufen, um Die Zeiger DeviceObject, AttachedDeviceObject und PDO abzurufen. initialisiert den Kontextbereich des Geräteobjekts und erstellt ein Miniport-Geräteobjekt.
WDF_OBJECT_ATTRIBUTES ObjectAttributes;
NdisMGetDeviceProperty(
MiniportAdapterHandle,
&Adapter->Pdo,
&Adapter->Fdo,
&Adapter->NextDeviceObject,
NULL,
NULL
);
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(
&ObjectAttributes,
WDF_DEVICE_INFO
);
ntStatus = WdfDeviceMiniportCreate(
WdfGetDriver(),
&ObjectAttributes,
Adapter->Fdo,
Adapter->NextDeviceObject,
Adapter->Pdo,
&Adapter->WdfDevice
);
if (!NT_SUCCESS (ntStatus)) {
Status = NDIS_STATUS_FAILURE;
break;
}
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
KMDF-Mindestversion | 1.0 |
Kopfzeile | wdfminiport.h (include Wdfminiport.h) |
Bibliothek | Wdf01000.sys (siehe Versionsverwaltung der Frameworkbibliothek).) |
IRQL | PASSIVE_LEVEL |
DDI-Complianceregeln | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |