Freigeben über


MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE Rückruffunktion (ndis.h)

NDIS ruft die MiniportSharedMemoryAllocateComplete--Funktion eines Miniporttreibers auf, um eine Anforderung für die gemeinsame Speicherzuweisung abzuschließen, die der Miniporttreiber gestartet hat, indem er den Aufruf der NdisMAllocateSharedMemoryAsyncEx Funktion.

Note You must declare the function by using the MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE type. Weitere Informationen finden Sie im folgenden Abschnitt "Beispiele".
 

Syntax

MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE MiniportAllocateSharedMemComplete;

void MiniportAllocateSharedMemComplete(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] PVOID VirtualAddress,
  [in] PNDIS_PHYSICAL_ADDRESS PhysicalAddress,
  [in] ULONG Length,
  [in] PVOID Context
)
{...}

Parameter

[in] MiniportAdapterContext

Der Handle zu einem Kontextbereich, der vom Miniporttreiber zugewiesen wird, in dem der Treiber Zustandsinformationen für eine NIC verwaltet. Der Treiber weist diesen Kontextbereich im MiniportInitializeEx Funktion.

[in] VirtualAddress

Die virtuelle Basisadresse des freigegebenen Speichers, den der Miniporttreiber durch Aufrufen von NdisMAllocateSharedMemoryAsyncEx. VirtualAddress- ist NULL-, wenn der Zuordnungsversuch fehlgeschlagen ist.

[in] PhysicalAddress

Die physische Basisadresse für die NIC, die der Adresse zugeordnet ist, die der VirtualAddress-Parameter angibt.

[in] Length

Die Anzahl der Bytes, die NdisMAllocateSharedMemoryAsyncEx zugeordnet .

[in] Context

Ein Zeiger auf einen Kontextbereich, den der miniport-Treiber im vorherigen Aufruf an NdisMAllocateSharedMemoryAsyncExangegeben hat.

Rückgabewert

Nichts

Bemerkungen

MiniportAllocateSharedMemoryComplete ist eine optionale Funktion für Miniporttreiber. Ein Miniporttreiber registriert eine MiniportAllocateSharedMemoryComplete--Funktion in der NDIS_SG_DMA_DESCRIPTION Struktur, die der Treiber an die NdisMRegisterScatterGatherDma Funktion.

Anruf von Miniporttreibern NdisMAllocateSharedMemoryAsyncEx, um gemeinsam genutzten Speicher zuzuweisen. Wenn NdisMAllocateSharedMemoryAsyncEx NDIS_STATUS_PENDING zurückgibt, ruft NDIS MiniportAllocateSharedMemoryComplete auf, um den Speicher an den Miniporttreiber zu übergeben.

NDIS ruft MiniportSharedMemoryAllocateComplete bei IRQL-PASSIVE_LEVEL auf.

beispiele für

Um eine MiniportSharedMemoryAllocateComplete--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 MiniportSharedMemoryAllocateComplete--Funktion zu definieren, die den Namen "MySharedMemoryAllocateComplete" hat, verwenden Sie den MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE Typ, wie in diesem Codebeispiel gezeigt:

MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE MySharedMemoryAllocateComplete;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
VOID
 MySharedMemoryAllocateComplete(
    NDIS_HANDLE  MiniportAdapterContext,
    PVOID  VirtualAddress,
    PNDIS_PHYSICAL_ADDRESS  PhysicalAddress,
    ULONG  Length,
    PVOID  Context
    )
  {...}

Der MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE 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_ALLOCATE_SHARED_MEM_COMPLETE 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

MiniportInitializeEx-

NdisMAllocateSharedMemoryAsyncEx NdisMRegisterScatterGatherDma