MINIPORT_ADD_DEVICE Rückruffunktion (ndis.h)
Mit der MiniportAddDevice-Funktion kann ein Miniporttreiber einen Kontextbereich für ein hinzugefügtes Gerät einrichten.
Syntax
MINIPORT_ADD_DEVICE MiniportAddDevice;
NDIS_STATUS MiniportAddDevice(
[in] NDIS_HANDLE NdisMiniportHandle,
[in] NDIS_HANDLE MiniportDriverContext
)
{...}
Parameter
[in] NdisMiniportHandle
Ein NDIS-Handle, das den Miniportadapter identifiziert, den der Plug and Play (PnP)-Manager hinzufügt. NDIS übergibt diesen Handle auch an den MiniportInitializeEx Funktion.
[in] MiniportDriverContext
Ein Handle für einen vom Treiber zugewiesenen Kontextbereich, in dem der Treiber Zustands- und Konfigurationsinformationen verwaltet. Der Miniporttreiber hat diesen Kontextbereich an den NdisMRegisterMiniportDriver Funktion.
Rückgabewert
MiniportAddDevice gibt einen der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
|
Der Miniporttreiber hat die Ressourcen erfolgreich zugeordnet, die zum Hinzufügen des Geräts erforderlich sind. |
|
Der Miniporttreiber konnte die erforderlichen Ressourcen nicht zuordnen. |
|
MiniportAddDevice aus anderen Gründen als unzureichenden Ressourcen fehlgeschlagen. |
Wenn MiniportAddDevice- fehlschlägt, ruft NDIS die MiniportInitializeEx--Funktion nicht auf, um den Miniportadapter zu initialisieren.
Bemerkungen
Die MiniportAddDevice Funktion ist eine optionale Funktion. Miniporttreiber, die MSI-X unterstützen, sollten einen Einstiegspunkt für diese Funktion in der NDIS_MINIPORT_PNP_CHARACTERISTICS Struktur.
MiniportAddDevice kann einen Kontextbereich für die Verarbeitung zuordnen. IRP_MN_FILTER_RESOURCE_REQUIREMENTS E/A-Anforderungspakete (IRPs), die die MiniportFilterResourceRequirequirements Funktionshandles. Miniporttreiber geben den Kontextbereich an, indem sie eine Initialisierung NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES Struktur und anschließendes Aufrufen der NdisMSetMiniportAttributes Funktion. NDIS stellt diesen Kontexthandle für die MiniportRemoveDevicebereit, MiniportFilterResourceRequirements, MiniportStartDeviceund MiniportInitializeEx Funktionen. Für MiniportInitializeExwird der Kontextziehpunkt im MiniportAddDeviceContext Member des NDIS_MINIPORT_INIT_PARAMETERS Struktur, auf die der MiniportInitParameters Parameter verweist.
Wenn der Miniporttreiber den MiniportAddDevice Aufruf nach der Zuordnung des Kontextbereichs fehlschlägt, muss der Treiber den Kontextbereich freigeben, bevor er von MiniportAddDevicezurückkehrt.
Miniport-Treiber sollten einen anderen Kontextbereich für die MiniportAddDeviceContext Member der NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES Struktur und das MiniportAdapterContext Member der NDIS_MINIPORT_INIT_PARAMETERS Struktur verwenden. Separate Kontextbereiche stellen sicher, dass Informationen im Kontextbereich nicht erneut initialisiert werden, was in der MiniportInitializeEx--Funktion auftreten kann, wenn der Miniportadapter angehalten und erneut initialisiert wird.
Wenn der PnP-Manager anfordert, das Gerät zu entfernen, ruft NDIS die MiniportRemoveDevice--Funktion auf, um die Vorgänge rückgängig zu machen, die MiniportAddDevice ausgeführt wurden.
NDIS ruft MiniportAddDevice bei IRQL = PASSIVE_LEVEL auf.
beispiele für
Um eine MiniportAddDevice--Funktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der Funktion identifiziert, die Sie definieren. Windows stellt eine Reihe von Funktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Funktionstypen können Codeanalyse für Treiber, statische Treiberüberprüfung (SDV) und andere Überprüfungstools Fehler finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.Um beispielsweise eine MiniportAddDevice--Funktion zu definieren, die den Namen "MyAddDevice" hat, verwenden Sie den MINIPORT_ADD_DEVICE Typ, wie in diesem Codebeispiel gezeigt:
MINIPORT_ADD_DEVICE MyAddDevice;
Implementieren Sie dann Ihre Funktion wie folgt:
_Use_decl_annotations_
NDIS_STATUS
MyAddDevice(
NDIS_HANDLE NdisMiniportHandle,
NDIS_HANDLE MiniportDriverContext
)
{...}
Der MINIPORT_ADD_DEVICE Funktionstyp wird in der Ndis.h-Headerdatei definiert. Um Fehler genauer zu identifizieren, wenn Sie die Codeanalysetools ausführen, müssen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzufügen. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen, die auf den funktionstyp MINIPORT_ADD_DEVICE in der Headerdatei angewendet werden, verwendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für NDIS-Treiber.
Informationen zu Use_decl_annotationsfinden Sie unter Annotating Function Behavior.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Unterstützt in NDIS 6.0 und höher. |
Zielplattform- | Fenster |
Header- | ndis.h (include Ndis.h) |
IRQL- | PASSIVE_LEVEL |