Freigeben über


MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE Rückruffunktion (ndis.h)

NDIS ruft die MiniportSharedMemoryAllocateComplete-Funktion eines Miniporttreibers auf, um eine Anforderung zur Zuweisung gemeinsam genutzten Arbeitsspeichers abzuschließen, die der Miniporttreiber durch Aufrufen der NdisMAllocateSharedMemoryAsyncEx-Funktion .

Hinweis Sie müssen die Funktion mithilfe des typs MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE deklarieren. 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

Das Handle zu einem Kontextbereich, der vom Miniporttreiber zugeordnet ist, in dem der Treiber Zustandsinformationen für eine NIC verwaltet. Der Treiber ordnet diesen Kontextbereich im MiniportInitializeEx-Funktion .

[in] VirtualAddress

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

[in] PhysicalAddress

Die physische Basisadresse für die zu verwendende Netzwerkkarte, die der Adresse zugeordnet ist, die vom VirtualAddress-Parameter angegeben wird.

[in] Length

Die Anzahl der Bytes, die NdisMAllocateSharedMemoryAsyncEx zugewiesen hat.

[in] Context

Ein Zeiger auf einen Kontextbereich, den der miniport-Treiber im vorherigen Aufruf von NdisMAllocateSharedMemoryAsyncEx angegeben hat.

Rückgabewert

Keine

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 übergeben hat. NdisMRegisterScatterGatherDma-Funktion .

Miniport-Fahrer rufen an NdisMAllocateSharedMemoryAsyncEx zum Zuweisen von freigegebenem Arbeitsspeicher. Wenn NdisMAllocateSharedMemoryAsyncEx NDIS_STATUS_PENDING zurückgibt, ruft NDIS MiniportAllocateSharedMemoryComplete auf, um den Arbeitsspeicher an den Miniporttreiber zu übergeben.

NDIS ruft MiniportSharedMemoryAllocateComplete am IRQL-PASSIVE_LEVEL auf.

Beispiele

Um eine MiniportSharedMemoryAllocateComplete-Funktion zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der zu definierenden Funktion identifiziert. Windows bietet eine Reihe von Funktionstypen für Treiber. Das Deklarieren einer Funktion mithilfe der Funktionstypen hilft der Codeanalyse für Treiber, der statischen Treiberüberprüfung (Static Driver Verifier , SDV) und anderen Überprüfungstools, Fehler zu finden, und es ist eine Voraussetzung für das Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine MiniportSharedMemoryAllocateComplete-Funktion mit dem Namen "MySharedMemoryAllocateComplete" zu definieren, verwenden Sie den typ MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE , 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 ist in der Ndis.h-Headerdatei definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, müssen Sie der Funktionsdefinition die anmerkung Use_decl_annotations hinzufügen. Die Use_decl_annotations-Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE Funktionstyp in der Headerdatei angewendet 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_annotations finden Sie unter Verhalten von Funktionen mit Anmerkungen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.0 und höher.
Zielplattform Windows
Kopfzeile ndis.h (include Ndis.h)
IRQL PASSIVE_LEVEL

Weitere Informationen

MiniportInitializeEx

NdisMAllocateSharedMemoryAsyncEx NdisMRegisterScatterGatherDma