Compartir a través de


Función VideoPortGetDeviceBase (video.h)

La función VideoPortGetDeviceBase asigna un intervalo de direcciones de E/S o memoria de 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, VideoPortGetRegistryParameterso 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 mediante 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.

marca de 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 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 memoria Write-Combining memoria en miniportador de vídeo sitio web.

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.

Observaciones

Puede pasar las direcciones virtuales asignadas a las funciones VideoPortReadXxx, VideoPortWriteXxxy VideoPortXxxMemory, excepto VideoPortMapMemory y VideoPortUnmapMemory.

Debe llamar a VideoPortGetDeviceBase desde la función HwVidFindAdapter del controlador de miniport, HwVidQueryDeviceCallbacko función HwVidQueryNamedValueCall back.

Antes de HwVidFindAdapter devuelve 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 (apuntado por HwDeviceExtension) para su uso posterior.

El acceso al espacio de direcciones asignado debe seguir estas reglas:

  • Si InIoSpace es VIDEO_MEMORY_SPACE_IO, 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 la VideoPortReadPortXxx, VideoPortWritePortXxx, VideoPortReadPortBufferXxxy VideoPortWritePortBufferfunciones xxx, donde Xxx es Uchar, Ushort o Ulong.
  • Si InIoSpace es VIDEO_MEMORY_SPACE_MEMORY, lo que indica que la dirección no está en el espacio de E/S, sino en el espacio de memoria, la dirección virtual que devuelve esta función debe pasarse al VideoPortReadRegisterXxx, VideoPortWriteRegisterXxx, VideoPortReadRegisterBufferXxxy Funciones de VideoPortWriteRegisterRegifferXxx, donde Xxx es Uchar, Ushort o Ulong.
  • El controlador no debe tener acceso a direcciones que están fuera del intervalo delimitado por NumberOfUchars.
videoPortGetDeviceBase y videoPortMapMemory pueden llamarlo el controlador de miniporte de vídeo para asignar la memoria de vídeo a un espacio de direcciones virtual. 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 de DriverEntry: llame a VideoPortFreeDeviceBase para desasignar el intervalo asignado previamente desde el espacio del sistema y llame a VideoPortGetAccessRanges o VideoPortVerifyAccessRanges para liberar sus notificaciones en el intervalo del registro.

Requisitos

Requisito Valor
cliente mínimo admitido Disponible en Windows 2000 y versiones posteriores de los sistemas operativos Windows.
de la plataforma de destino de Escritorio
encabezado de video.h (incluya Video.h)
biblioteca de Videoprt.lib
DLL de Videoprt.sys
irQL PASSIVE_LEVEL

Consulte también

HwVidFindAdapter

HwVidQueryDeviceCallback

HwVidQueryNamedValueCallback

VideoPortCompareMemory

VideoPortFreeDeviceBase

VideoPortGetAccessRanges

VideoPortGetDeviceData

VideoPortGetRegistryParameters

VideoPortMoveMemory

VideoPortVerifyAccessRanges

videoPortZeroDeviceMemory

videoPortZeroMemory