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.
El controlador proxy debe configurar el acceso a los búferes de usuario para que el conmutador de Windows Sockets pueda transferir mensajes de control y realizar operaciones RDMA. Para solicitar este tipo de acceso al búfer, el controlador proxy configura un bit en el elemento Flags de su objeto de dispositivo en DO_DIRECT_IO. El controlador proxy también debe asignar o liberar memoria que se usa para la transferencia de mensajes y RDMA siempre que se solicite hacerlo. Cuando el conmutador de Windows Sockets solicita a un proveedor de servicios SAN que registre o libere memoria, el proveedor de servicios SAN solicita a su controlador proxy que asigne o libere memoria física respectivamente. Para obtener más información sobre cómo configurar el acceso al búfer y asignar y liberar memoria, consulte Administración de memoria y Uso de búferes de memoria.
Asignación de memoria baja para RDMA
Un controlador proxy debe asignar memoria a la que se pueda acceder para las operaciones RDMA. El controlador proxy puede asignar poca memoria para las operaciones RDMA incluso en un sistema configurado para que no se pueda asignar ninguna memoria física por debajo de 4 GB. (Esto se denomina configuración NOLOWMEM). El controlador proxy llama a la función MmAllocateContiguousMemorySpecifyCache o a su propia función AllocateCommonBuffer de DMA para recuperar memoria baja.
Para recuperar un puntero a su función AllocateCommonBuffer de DMA, el controlador proxy realiza los pasos siguientes:
Inicializa a cero una estructura DEVICE_DESCRIPTION y luego escribe la información relevante para la NIC SAN en esta estructura.
Llama a IoGetDmaAdapter para obtener un puntero a la estructura del adaptador DMA para su SAN NIC. En esta llamada, el controlador pasa un puntero a la estructura DEVICE_DESCRIPTION rellenada. IoGetDmaAdapter devuelve un puntero a una estructura de adaptador DMA que contiene otro puntero a una estructura DMA_OPERATIONS. DMA_OPERATIONS contiene punteros a un conjunto definido por el sistema de funciones DMA. Una de estas funciones es AllocateCommonBuffer, que asigna un búfer DMA físico contiguo.