MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE función de devolución de llamada (ndis.h)
NDIS llama a la función MiniportSharedMemoryAllocateComplete del controlador de miniporte para completar una solicitud de asignación de memoria compartida que el controlador de miniporte inició llamando al Función NdisMAllocateSharedMemoryAsyncEx .
Sintaxis
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
)
{...}
Parámetros
[in] MiniportAdapterContext
Identificador de un área de contexto asignada por el controlador de minipuerto en el que el controlador mantiene la información de estado de una NIC. El controlador asigna este área de contexto en el Función MiniportInitializeEx .
[in] VirtualAddress
Dirección virtual base de la memoria compartida que el controlador de miniporte asignó llamando a NdisMAllocateSharedMemoryAsyncEx. VirtualAddress es NULL si se produjo un error en el intento de asignación.
[in] PhysicalAddress
La dirección física base para que la NIC use que se asigna a la dirección que especifica el parámetro VirtualAddress .
[in] Length
Número de bytes asignados por NdisMAllocateSharedMemoryAsyncEx .
[in] Context
Puntero a un área de contexto que el controlador de minipuerto especificó en la llamada anterior a NdisMAllocateSharedMemoryAsyncEx.
Valor devuelto
None
Observaciones
MiniportAllocateSharedMemoryComplete es una función opcional para los controladores de miniport. Un controlador de minipuerto registra una función MiniportAllocateSharedMemoryComplete en la estructura NDIS_SG_DMA_DESCRIPTION que el controlador pasó al Función NdisMRegisterScatterGatherDma .
Llamada a controladores de minipuerto NdisMAllocateSharedMemoryAsyncEx para asignar memoria compartida. Si NdisMAllocateSharedMemoryAsyncEx devuelve NDIS_STATUS_PENDING, NDIS llama a MiniportAllocateSharedMemoryComplete para pasar la memoria al controlador de miniport.
NDIS llama a MiniportSharedMemoryAllocateComplete en irQL PASSIVE_LEVEL.
Ejemplos
Para definir una función MiniportSharedMemoryAllocateComplete , primero debe proporcionar una declaración de función que identifique el tipo de función que está definiendo. Windows proporciona un conjunto de tipos de función para controladores. Declarar una función mediante los tipos de función ayuda a Code Analysis for Drivers, Static Driver Verifier (SDV) y otras herramientas de comprobación a encontrar errores y es un requisito para escribir controladores para el sistema operativo Windows.Por ejemplo, para definir una función MiniportSharedMemoryAllocateComplete denominada "MySharedMemoryAllocateComplete", use el tipo de MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE como se muestra en este ejemplo de código:
MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE MySharedMemoryAllocateComplete;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
VOID
MySharedMemoryAllocateComplete(
NDIS_HANDLE MiniportAdapterContext,
PVOID VirtualAddress,
PNDIS_PHYSICAL_ADDRESS PhysicalAddress,
ULONG Length,
PVOID Context
)
{...}
El tipo de función MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE se define en el archivo de encabezado Ndis.h. Para identificar con más precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación Use_decl_annotations a la definición de función. La anotación Use_decl_annotations garantiza que se usen las anotaciones que se aplican al tipo de función MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, vea Declarar funciones mediante tipos de roles de función para controladores NDIS.
Para obtener información sobre Use_decl_annotations, consulte Anotación del comportamiento de la función.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Compatible con NDIS 6.0 y versiones posteriores. |
Plataforma de destino | Windows |
Encabezado | ndis.h (incluya Ndis.h) |
IRQL | PASSIVE_LEVEL |