PMINIPORT_QUERY_DEVICE_ROUTINE回调函数 (video.h)
HwVidQueryDeviceCallback 使用指定的配置数据来配置其适配器,并可能填充 VIDEO_PORT_CONFIG_INFO 结构中缺少的配置信息。
语法
PMINIPORT_QUERY_DEVICE_ROUTINE PminiportQueryDeviceRoutine;
VP_STATUS PminiportQueryDeviceRoutine(
PVOID HwDeviceExtension,
PVOID Context,
VIDEO_DEVICE_DATA_TYPE DeviceDataType,
PVOID Identifier,
ULONG IdentiferLength,
PVOID ConfigurationData,
ULONG ConfigurationDataLength,
PVOID ComponentInformation,
ULONG ComponentInformationLength
)
{...}
参数
HwDeviceExtension
指向微型端口驱动程序的每个适配器存储区域的指针。 有关详细信息,请参阅 设备扩展。
Context
指向由 HwVidFindAdapter设置的上下文值的指针。 通常,它指向VIDEO_PORT_CONFIG_INFO缓冲区或该缓冲区中的偏移量。
DeviceDataType
指定所请求的配置信息的类型,这是以下项之一:
VpBusData
VpCmosData
VpControllerData
VpMachineData
VpMonitorData
x86 类型的视频适配器的微型端口驱动程序通常指定 VpBusData,尤其是 EISA 总线上的适配器。 VpControllerData 和 VpMonitorData 值仅在符合 ARC 的平台上有意义。 很少使用 VpCmosData 和 VpMachineData 值。
Identifier
指向由 ARC 固件确定的设备名称的指针。 此参数只应在符合 ARC 的平台上使用。 否则,此指针应 NULL。
IdentiferLength
指定缓冲的 标识符 字符串的大小(以字节为单位)。 如果计算机不符合 ARC,则该值应为零。
ConfigurationData
指向硬件配置数据的指针。 此数据的格式由指定的 DeviceDataType 和 VIDEO_PORT_CONFIG_INFO 中的 AdapterInterfaceType 值决定。
ConfigurationDataLength
指定 ConfigurationData 缓冲区的大小(以字节为单位)。 实际上,这表示从注册表收集的信息量,并将其存储在由 VideoPortGetDeviceBase分配的 ConfigurationData 缓冲区中。
ComponentInformation
保留供系统使用。
ComponentInformationLength
保留供系统使用。
返回值
HwVidQueryDeviceCallback 返回作的状态。
言论
从微型端口驱动程序的 HwVidFindAdapter 函数,HwVidQueryDeviceCallback 传入对 VideoPortGetDeviceData 的调用。 VideoPortGetDeviceData 在注册表的 \Registry\Machine\Hardware\Description 节点下收集可用配置信息后,HwVidQueryDeviceCallback 调用。
HwVidQueryDeviceCallback 检查 VideoPortGetDeviceData从注册表收集的 ConfigurationData。 它使用此信息来配置其适配器,并可能填写 VIDEO_PORT_CONFIG_INFO 结构中缺少的配置信息。
HwVidQueryDeviceCallback 无法将 ConfigurationData 中找到的访问范围值传递给任何 VideoPortReadXxx 或 VideoPortWriteXxx;必须首先通过调用 VideoPortGetDeviceBase来映射此类地址。
如果 ConfigurationData 缓冲区没有访问范围信息,并且微型端口驱动程序的 HwVidFindAdapter 函数尚未调用 VideoPortGetBusDataVideoPortGetAccessRanges),其 HwVidQueryDeviceCallback 函数可以调用 VideoPortGetBusData。 VideoPortGetBusData 返回的访问范围信息也必须传递给 VideoPortVerifyAccessRanges。
如果 VideoPortVerifyAccessRanges 返回NO_ERROR,微型端口驱动程序可以调用 VideoPortGetDeviceBase,通过调用 VideoPortReadXxx 和/或 VideoPortWriteXxx 函数来获取它可用于与适配器通信的映射逻辑地址。
如果它无法通过调用 VideoPortGetDeviceData、VideoPortGetBusData或 VideoPortGetAccessRanges来获取相对于总线的访问范围值,微型端口驱动程序可以使用一组驱动程序提供的默认访问范围值来查找其适配器。 在这些情况下,微型端口驱动程序必须使用微型端口驱动程序提供的访问范围调用 VideoPortVerifyAccessRanges,然后仅当 VideoPortVerifyAccessRanges 返回NO_ERROR时才调用 VideoPortGetDeviceBase。 如果调用 VideoPortVerifyAccessRanges 失败,则给定的总线相对范围已由另一个设备的驱动程序使用。
应 HwVidQueryDeviceCallback 进行分页。
要求
要求 | 价值 |
---|---|
目标平台 | 桌面 |
标头 | video.h (include Video.h) |