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