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.
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 |