MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE fonction de rappel (ndis.h)
NDIS appelle la fonction MiniportSharedMemoryAllocateComplete d’un pilote miniport pour effectuer une demande d’allocation de mémoire partagée que le pilote miniport a démarré en appelant le Fonction NdisMAllocateSharedMemoryAsyncEx .
Syntaxe
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
)
{...}
Paramètres
[in] MiniportAdapterContext
Handle à une zone de contexte allouée par le pilote miniport dans lequel le pilote conserve les informations d’état d’une carte réseau. Le pilote alloue cette zone de contexte dans le Fonction MiniportInitializeEx .
[in] VirtualAddress
Adresse virtuelle de base de la mémoire partagée allouée par le pilote miniport en appelant NdisMAllocateSharedMemoryAsyncEx. VirtualAddress a la valeur NULL si la tentative d’allocation a échoué.
[in] PhysicalAddress
Adresse physique de base que la carte réseau doit utiliser et qui est mappée à l’adresse spécifiée par le paramètre VirtualAddress .
[in] Length
Nombre d’octets alloués par NdisMAllocateSharedMemoryAsyncEx .
[in] Context
Pointeur vers une zone de contexte spécifiée par le pilote miniport dans l’appel précédent à NdisMAllocateSharedMemoryAsyncEx.
Valeur de retour
None
Remarques
MiniportAllocateSharedMemoryComplete est une fonction facultative pour les pilotes miniport. Un pilote miniport enregistre une fonction MiniportAllocateSharedMemoryComplete dans la structure de NDIS_SG_DMA_DESCRIPTION que le pilote a transmise au Fonction NdisMRegisterScatterGatherDma .
Appel de pilotes miniports NdisMAllocateSharedMemoryAsyncEx pour allouer de la mémoire partagée. Si NdisMAllocateSharedMemoryAsyncEx retourne NDIS_STATUS_PENDING, NDIS appelle MiniportAllocateSharedMemoryComplete pour passer la mémoire au pilote miniport.
NDIS appelle MiniportSharedMemoryAllocateComplete au PASSIVE_LEVEL IRQL.
Exemples
Pour définir une fonction MiniportSharedMemoryAllocateComplete , vous devez d’abord fournir une déclaration de fonction qui identifie le type de fonction que vous définissez. Windows fournit un ensemble de types de fonctions pour les pilotes. La déclaration d’une fonction à l’aide des types de fonction permet à l’analyse du code pour les pilotes, le vérificateur de pilotes statique (SDV) et d’autres outils de vérification de trouver les erreurs, et il s’agit d’une exigence pour l’écriture de pilotes pour le système d’exploitation Windows.Par exemple, pour définir une fonction MiniportSharedMemoryAllocateComplete nommée « MySharedMemoryAllocateComplete », utilisez le type MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE comme indiqué dans cet exemple de code :
MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE MySharedMemoryAllocateComplete;
Ensuite, implémentez votre fonction comme suit :
_Use_decl_annotations_
VOID
MySharedMemoryAllocateComplete(
NDIS_HANDLE MiniportAdapterContext,
PVOID VirtualAddress,
PNDIS_PHYSICAL_ADDRESS PhysicalAddress,
ULONG Length,
PVOID Context
)
{...}
Le type de fonction MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE est défini dans le fichier d’en-tête Ndis.h. Pour identifier plus précisément les erreurs lors de l’exécution des outils d’analyse du code, veillez à ajouter l’annotation Use_decl_annotations à votre définition de fonction. L’annotation Use_decl_annotations garantit que les annotations appliquées au type de fonction MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE dans le fichier d’en-tête sont utilisées. Pour plus d’informations sur la configuration requise pour les déclarations de fonction, consultez Déclaration de fonctions à l’aide de types de rôles de fonction pour les pilotes NDIS.
Pour plus d’informations sur Use_decl_annotations, consultez Annotating Function Behavior.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Pris en charge dans NDIS 6.0 et versions ultérieures. |
Plateforme cible | Windows |
En-tête | ndis.h (inclure Ndis.h) |
IRQL | PASSIVE_LEVEL |