Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Para asignar recursos de memoria compartidos para una cola de máquina virtual, un controlador de miniporta llama a la función NdisAllocateSharedMemory . Por ejemplo, el controlador de miniporta asigna memoria compartida cuando recibe el OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE OID. Además, un controlador de miniporte puede asignar memoria compartida para la cola predeterminada durante la inicialización del adaptador de red. Para más información sobre cómo asignar colas, consulte Asignación de una cola VM.
El controlador de miniporte puede asignar más memoria para la cola hasta que ésta se libere. Para más información sobre cómo liberar una cola, consulte Liberar una cola de máquinas virtuales.
La estructura NDIS_SHARED_MEMORY_PARAMETERS especifica los parámetros de memoria compartida para una solicitud de asignación de memoria compartida. Los controladores de miniporte pasan esta estructura a la función NdisAllocateSharedMemory . NDIS pasa esta estructura a la función NetAllocateSharedMemory (es decir, el punto de entrada de ALLOCATE_SHARED_MEMORY_HANDLER).
Cuando un controlador de miniporte asigna memoria compartida, especifica lo siguiente:
Identificador de cola.
Longitud de memoria compartida.
Cómo se usa la memoria compartida. Por ejemplo, el controlador de miniport especifica NdisSharedMemoryUsageReceive si se va a usar la memoria compartida para los búferes de recepción.
Si el indicador NDIS_SHARED_MEM_PARAMETERS_CONTIGUOUS no está establecido en el miembro Flags, la memoria compartida se puede especificar en una lista scatter-gather que está en memoria no contigua.
La enumeración NDIS_SHARED_MEMORY_USAGE especifica cómo se usa la memoria compartida. La enumeración NDIS_SHARED_MEMORY_USAGE se usa en las estructuras NDIS_SHARED_MEMORY_PARAMETERS y NDIS_SCATTER_GATHER_LIST_PARAMETERS . Para obtener información sobre los parámetros de memoria compartida en los búferes de datos de recepción de VMQ, consulte Memoria compartida en búferes de recepción.
La función NdisAllocateSharedMemory proporciona lo siguiente al autor de la llamada:
Dirección virtual de la memoria asignada.
Lista de recopilación de dispersión.
Manejo de memoria compartida: para indicaciones de recepción.
Identificador de asignación: se usa para identificar la memoria más adelante.
Los controladores de miniport llaman a la función NdisFreeSharedMemory para liberar memoria compartida para una cola. Si el controlador de miniporta asignó la memoria compartida para una cola no predeterminada, libera la memoria compartida en el contexto del OID OID_RECEIVE_FILTER_FREE_QUEUE al liberar la cola. Los controladores miniport liberan la memoria compartida que asignaron para la cola predeterminada en el contexto de la función MiniportHaltEx.