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.
[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 |
---|---|
|
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.
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) |