Freigeben über


MINIPORT_ADD_DEVICE Rückruffunktion (ndis.h)

Mit der MiniportAddDevice-Funktion kann ein Miniporttreiber einen Kontextbereich für ein hinzugefügtes Gerät einrichten.

Hinweis Sie müssen die Funktion mithilfe des MINIPORT_ADD_DEVICE-Typs deklarieren. Weitere Informationen finden Sie im folgenden Abschnitt "Beispiele".
 

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
NDIS_STATUS_SUCCESS
Der Miniporttreiber hat die Ressourcen erfolgreich zugeordnet, die zum Hinzufügen des Geräts erforderlich sind.
NDIS_STATUS_RESOURCES
Der Miniporttreiber konnte die erforderlichen Ressourcen nicht zuordnen.
NDIS_STATUS_FAILURE

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

Siehe auch

IRP_MN_FILTER_RESOURCE_REQUIREMENTS MiniportFilterResourceRequirequirements

MiniportInitializeEx-

MiniportRemoveDevice

MiniportStartDevice

NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES

NDIS_MINIPORT_INIT_PARAMETERS

NDIS_MINIPORT_PNP_CHARACTERISTICS

NdisMRegisterMiniportDriver-

NdisMSetMiniportAttributes