Compartir a través de


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.
VideoPortGetDeviceBase y VideoPortMapMemory pueden llamarlo el controlador de miniporte de vídeo para asignar memoria de vídeo a un espacio de direcciones virtuales. Si llama a ambas funciones para asignar las mismas direcciones físicas, o si llama a una de las funciones más de una vez para asignar las mismas direcciones físicas, es posible que tenga más de un intervalo de direcciones virtuales que se asigne al mismo intervalo de direcciones físicas. En ese caso, debe establecer la marca VIDEO_MEMORY_SPACE_P6CACHE del parámetro InIoSpace en el mismo valor en todas esas llamadas.

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

Consulte también

HwVidFindAdapter

HwVidQueryDeviceCallback

HwVidQueryNamedValueCallback

VideoPortCompareMemory

VideoPortFreeDeviceBase

VideoPortGetAccessRanges

VideoPortGetDeviceData

VideoPortGetRegistryParameters

VideoPortMoveMemory

VideoPortVerifyAccessRanges

VideoPortZeroDeviceMemory

VideoPortZeroMemory