Freigeben über


WdfDeviceMiniportCreate-Funktion (wdfminiport.h)

[Gilt nur für KMDF]

Die WdfDeviceMiniportCreate-Methode erstellt ein Framework-Geräteobjekt, das ein Miniporttreiber verwenden 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
);

Die Parameter

[in] Driver

Ein Handle für das Framework-Treiberobjekt des Treibers, abgerufen durch einen vorherigen Aufruf von WdfDriverCreate.

[in, optional] Attributes

Ein Zeiger auf eine vom Aufrufer zugewiesene 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 (FDO) für den Miniporttreiber darstellt.

[in, optional] AttachedDeviceObject

Ein Zeiger auf eine WDM-DEVICE_OBJECT-Struktur, die das nächste untere 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 eine Position, die ein Handle für das neue Framework-Geräteobjekt empfängt.

Rückgabewert

Wenn die WdfDeviceMiniportCreate Methode keine Fehler auftritt, wird STATUS_SUCCESS zurückgegeben. Weitere Rückgabewerte sind:

Rückgabecode BESCHREIBUNG
STATUS_INSUFFICIENT_RESOURCES
Ein Geräteobjekt konnte nicht zugewiesen werden.
 

Eine Liste mit anderen Rückgabewerten, die WdfDeviceMiniportCreate zurückgeben können, finden Sie unter Framework Object Creation Errors.

Die Methode gibt möglicherweise andere NTSTATUS-Wertezurück.

Wenn der Treiber ein ungültiges Objekthandle bereitstellt, tritt eine Fehlerüberprüfung auf.

Bemerkungen

Wenn Ihr Miniporttreiber das Framework verwendet, sollte der Miniporttreiber WdfDeviceMiniportCreate aufrufen, wenn der Porttreiber informiert, dass ein Gerät verfügbar ist. Miniporttreiber rufen WdfDeviceCreatenicht auf.

Ihr Miniporttreiber erhält möglicherweise seine DeviceObject-, AttachedDeviceObject-und PDO- Zeiger vom Porttreiber. Beispielsweise kann ein NDIS-Miniporttreiber diese Zeiger abrufen, indem NdisMGetDevicePropertyaufgerufen wird.

Die folgenden Einschränkungen gelten für Framework-Geräteobjekte, die ein Miniporttreiber durch Aufrufen von WdfDeviceMiniportCreateabruft:

  • Das Gerät, das das Geräteobjekt darstellt, muss Plug and Play unterstützen.
  • Das Geräteobjekt unterstützt keines der Ereignisrückruffunktionen des Geräteobjekts. Daher muss der Porttreiber alle Plug-and-Play-Vorgänge (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 Geräteobjekthandle 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 übergeben werden, außer WdfDeviceGetIoTarget, WdfDeviceWdmGetDeviceObject, WdfDeviceWdmGetAttachedDeviceund WdfDeviceWdmGetPhysicalDevice.
  • Das Geräteobjekthandle kann nicht an Framework-FDO-Methoden übergeben werden, außer WdfFdoQueryForInterface.
  • Das Geräteobjekthandle kann nicht an Framework-PDO-Methoden oder an WdfChildListCreateübergeben werden, sodass der Miniporttreiber kein Bustreiber sein kann.
  • Der Treiber muss schließlich WdfObjectDelete- aufrufen, um das Geräteobjekt zu löschen, das WdfDeviceMiniportCreate erstellt.
Framework-Geräteobjekte, die WdfDeviceMiniportCreate erstellen, können als übergeordnetes Objekt für jedes anschließend erstellte Frameworkobjekt verwendet werden.

Um E/A-Anforderungen an E/A-Ziele zu senden, übergibt der Miniporttreiber möglicherweise das Geräteobjekthandle an WdfDeviceGetIoTarget, WdfIoTargetCreateoder 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 Using Kernel-Mode Driver Framework with Miniport Drivers.

Beispiele

Im folgenden Codebeispiel wird NdisMGetDeviceProperty- aufgerufen, um DeviceObject-, AttachedDeviceObject-und PDO- Zeiger 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
Minimale KMDF-Version 1.0
Kopfzeile wdfminiport.h (include Wdfminiport.h)
Bibliothek Wdf01000.sys (siehe Framework-Bibliotheksversionsverwaltung.)
IRQL PASSIVE_LEVEL
DDI-Complianceregeln DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Siehe auch

WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE

WdfDeviceCreate

WdfDriverMiniportUnload-