Función VideoPortGetDeviceBase (video.h)
La función VideoPortGetDeviceBase asigna un intervalo de direcciones de E/S o memoria del dispositivo relativas al bus en el espacio del sistema.
Sintaxis
VIDEOPORT_DEPRECATED VIDEOPORT_API PVOID VideoPortGetDeviceBase(
PVOID HwDeviceExtension,
PHYSICAL_ADDRESS IoAddress,
ULONG NumberOfUchars,
UCHAR InIoSpace
);
Parámetros
HwDeviceExtension
Puntero a la extensión del dispositivo del controlador de minipuerto.
IoAddress
Dirección física base del intervalo que se va a asignar. Para obtener este valor relativo al bus, llame a VideoPortGetDeviceData, VideoPortGetRegistryParameters o VideoPortGetAccessRanges. De lo contrario, este valor es una dirección base predeterminada proporcionada por el controlador para los puertos de E/S o memoria del dispositivo.
Debe haber reclamado correctamente el intervalo descrito por IoAddress y NumberOfUchars en el registro a través de una llamada anterior a VideoPortVerifyAccessRanges o VideoPortGetAccessRanges.
NumberOfUchars
Número de bytes, a partir de IoAddress, que se va a asignar.
InIoSpace
Ubicación del intervalo IoAddress . Este parámetro puede ser una de las marcas siguientes o una combinación compatible con ORed de estas marcas.
Marcar | Significado |
---|---|
VIDEO_MEMORY_SPACE_DENSE | Obsoleto. |
VIDEO_MEMORY_SPACE_IO | El intervalo de direcciones está en el espacio de E/S, no en el espacio de memoria. |
VIDEO_MEMORY_SPACE_MEMORY | El intervalo de direcciones está en el espacio de memoria, no en el espacio de E/S. |
VIDEO_MEMORY_SPACE_P6CACHE | El procesador agrega una secuencia de operaciones de escritura, las envía a una línea de caché y, posteriormente, vacía la memoria caché. Esta marca solo es significativa cuando no se establece VIDEO_MEMORY_SPACE_IO. Designa la memoria de vídeo como combinada de escritura (WC). Para obtener información sobre el almacenamiento en caché de WC, consulte el artículo Sobre la combinación de memoria en el sitio web de controladores de miniportador de vídeo . |
Valor devuelto
Si se ejecuta correctamente, VideoPortGetDeviceBase devuelve la dirección virtual base de la asignación. Si no se puede asignar el intervalo relativo al bus especificado, VideoPortGetDeviceBase devuelve NULL.
Comentarios
Puede pasar las direcciones virtuales asignadas a las funciones VideoPortReadXxx, VideoPortWriteXxx y VideoPortXxxMemory , excepto VideoPortMapMemory y VideoPortUnmapMemory.
Debe llamar a VideoPortGetDeviceBase desde la función HwVidFindAdapter del controlador de miniport, HwVidQueryDeviceCallback o HwVidQueryNamedValueCallback .
Antes de que HwVidFindAdapter devuelva el control, debe almacenar la dirección base asignada devuelta por VideoPortGetDeviceBase y la longitud del intervalo de acceso asignado en la extensión del dispositivo del adaptador (a la que apunta HwDeviceExtension) para su uso posterior.
El acceso al espacio de direcciones asignado debe seguir estas reglas:
- Si InIoSpace es VIDEO_MEMORY_SPACE_IO, lo que indica que la dirección está en el espacio de E/S, la dirección virtual que devuelve esta función debe pasarse a las funciones VideoPortReadPortXxx, VideoPortWritePortXxx, VideoPortReadPortBufferXxx y VideoPortWritePortBufferXxx, donde Xxx es Uchar, Ushort o Ulong.
- Si InIoSpace es VIDEO_MEMORY_SPACE_MEMORY, lo que indica que la dirección no está en espacio de E/S, sino en el espacio de memoria, la dirección virtual que devuelve esta función debe pasarse a las funciones VideoPortReadRegisterXxx, VideoPortWriteRegisterXxx, VideoPortReadRegisterBufferXxx y VideoPortWriteRegisterRegisterBufferXxx, donde Xxx es Uchar, Ushort o Ulong.
- El controlador no debe tener acceso a las direcciones que están fuera del intervalo delimitado por NumberOfUchars.
Cada dispositivo de visualización de arquitectura de memoria universal (UMA) usa un búfer de fotogramas que se encuentra en la memoria principal en lugar de en un bus PCI. En este caso, no llame a VideoPortMapMemory para asignar el búfer de fotogramas. Para asignar un búfer de fotogramas de UMA al espacio del sistema, llame a MmMapIoSpace.
Si un controlador de miniporte no admite un adaptador para el que ha asignado un intervalo lógico, debe realizar dos pasos antes de devolver el control a la función DriverEntry : llame a VideoPortFreeDeviceBase para desasignar el intervalo asignado previamente desde el espacio del sistema y llamar a VideoPortGetAccessRanges o VideoPortVerifyAccessRanges para liberar sus notificaciones en el intervalo del registro.
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 (incluya Video.h) |
Library | Videoprt.lib |
Archivo DLL | Videoprt.sys |
IRQL | PASSIVE_LEVEL |