Función VideoPortMapBankedMemory (video.h)
La función VideoPortMapBankedMemory está obsoleta y solo se admite para windows NT 4.0 y controladores anteriores. Los controladores de Windows 2000 y versiones posteriores deben usar VideoPortMapMemory.
VideoPortMapBankedMemory reasigna un intervalo físico relativo al bus de memoria de vídeo en el espacio de direcciones virtual del controlador de pantalla correspondiente en respuesta a un VRP con el miembro IoControlCode establecido en IOCTL_VIDEO_SHARE_VIDEO_MEMORY o IOCTL_VIDEO_MAP_VIDEO_MEMORY.
Sintaxis
VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortMapBankedMemory(
PVOID HwDeviceExtension,
PHYSICAL_ADDRESS PhysicalAddress,
PULONG Length,
PULONG InIoSpace,
PVOID *VirtualAddress,
ULONG BankLength,
UCHAR ReadWriteBank,
PBANKED_SECTION_ROUTINE BankRoutine,
PVOID Context
);
Parámetros
HwDeviceExtension
Puntero a la extensión del dispositivo del controlador de minipuerto.
PhysicalAddress
Especifica la dirección base relativa al bus del intervalo que se va a asignar.
Length
Puntero a una variable que especifica el número total de bytes de memoria del dispositivo que se asignarán (independientemente del tamaño del banco). VideoPortMapBankedMemory devuelve el tamaño real de la memoria asignada, que se puede redondear a un límite de alineación determinado por el sistema, en este parámetro. Sin embargo, los controladores de minipuerto y visualización no pueden acceder a la memoria fuera del intervalo delimitado por el valor de entrada en Length.
InIoSpace
Indica la ubicación del intervalo. Este parámetro puede ser uno de los valores siguientes:
Valor | Significado |
---|---|
VIDEO_MEMORY_SPACE_DENSE | Obsoletos |
VIDEO_MEMORY_SPACE_IO | El intervalo está en el espacio de E/S del sistema en lugar de en el espacio de memoria. |
VIDEO_MEMORY_SPACE_MEMORY | El intervalo está en espacio de memoria en lugar de en el espacio de E/S del sistema. |
VIDEO_MEMORY_SPACE_P6CACHE | El procesador agrega una secuencia de operaciones de escritura y las envía a una línea de caché determinada. A continuación, el procesador vacía la memoria caché. Esta marca solo es significativa cuando no se establece VIDEO_MEMORY_SPACE_IO. |
VIDEO_MEMORY_SPACE_USER_MODE | Indica que el intervalo de direcciones especificado debe asignarse al modo de usuario en lugar del modo kernel. Esta marca solo es significativa cuando no se establece VIDEO_MEMORY_SPACE_IO. |
VirtualAddress
Es un identificador del proceso en el que se debe asignar la memoria o NULL. NULL especifica que el controlador de puerto debe asignar el intervalo de memoria lógico en cualquier ubicación del espacio de direcciones del proceso actual. De lo contrario, este identificador puede ser un valor pasado en un VRP mediante el controlador de pantalla correspondiente del controlador de miniporte. Cuando se devuelve una llamada correcta, VideoPortMapBankedMemory restablece la variable a la dirección virtual base a la que ha asignado physicalAddress dado.
BankLength
Especifica el tamaño de un banco, en bytes.
ReadWriteBank
Si se establece en TRUE , el banco es Read\Write; si se establece en FALSE , hay dos bancos de lectura y escritura independientes.
BankRoutine
Puntero a una función HwVidBankedMemoryCallback proporcionada por el controlador para que lo llame el Administrador de memoria cuando el controlador de pantalla accede a un nuevo banco.
Context
Puntero a un contexto proporcionado por el controlador de minipuerto que se devuelve al controlador cuando se llama a BankRoutine .
Valor devuelto
VideoPortMapBankedMemory devuelve NO_ERROR si el intervalo lógico especificado se asignó correctamente a un intervalo virtual de espacio de usuario. De lo contrario, puede devolver ERROR_INVALID_PARAMETER.
Comentarios
VideoPortMapBankedMemory se ejecuta en modo kernel en el mismo contexto que el subproceso en modo de usuario que inició la llamada.
Los controladores de minipuerto llaman a VideoPortMapBankedMemory para administrar eficazmente los dispositivos de tipo x86 que están limitados a asignar un búfer de fotogramas en los bancos. Cuando esta rutina vuelve al autor de la llamada, el búfer de fotogramas administrado por el controlador de miniporte se asigna como un búfer de fotogramas lineal en el espacio de direcciones del proceso de solicitud (consulte el parámetro VirtualAddress ). Cuando se realiza un acceso a una dirección en ese espacio asignado, el Administrador de memoria llama al controlador de miniporte para actualizar el registro de índice bancario para que apunte a un nuevo banco que contiene la dirección a la que se hace referencia actualmente. Bank Index Register se mantiene mediante el controlador de minipuerto en BankRoutine. El Índice bancario correcto se calcula mediante el Administrador de memoria de forma transparente en un controlador de pantalla y se pasa al controlador de miniporte en la devolución de llamada a BankRoutine.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible en Windows 2000 y versiones posteriores de los sistemas operativos Windows. |
Plataforma de destino | Escritorio |
Encabezado | video.h (incluir Video.h) |
Library | Videoprt.lib |
Archivo DLL | Videoprt.sys |
IRQL | PASSIVE_LEVEL |
Consulte también
IOCTL_VIDEO_SHARE_VIDEO_MEMORY