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 返回操作的状态。
注解
HwVidQueryDeviceCallback 通过微型端口驱动程序的 HwVidFindAdapter 函数在对 VideoPortGetDeviceData 的调用中传递。 VideoPortGetDeviceData 在收集注册表的 \Registry\Machine\Hardware\Description 节点下的可用配置信息后调用 HwVidQueryDeviceCallback。
HwVidQueryDeviceCallback 检查 VideoPortGetDeviceData 从注册表收集的 ConfigurationData。 它使用此信息配置其适配器,并可能填充 VIDEO_PORT_CONFIG_INFO 结构中缺少的配置信息。
HwVidQueryDeviceCallback 无法将 ConfigurationData 中找到的访问范围值直接传递给任何 VideoPortReadXxx 或 VideoPortWriteXxx ;此类地址必须先通过调用 VideoPortGetDeviceBase 进行映射。
如果 ConfigurationData 缓冲区没有访问范围信息,并且微型端口驱动程序的 HwVidFindAdapter 函数尚未调用 VideoPortGetBusData (或 VideoPortGetAccessRanges) ,则其 HwVidQueryDeviceCallback 函数可以调用 VideoPortGetBusData。 VideoPortGetBusData 返回的访问范围信息还必须传递到 VideoPortVerifyAccessRanges。
如果 VideoPortVerifyAccessRanges 返回NO_ERROR,微型端口驱动程序可以调用 VideoPortGetDeviceBase 来获取映射的逻辑地址,该地址可以通过调用 VideoPortReadXxx 和/或 VideoPortWriteXxx 函数来与适配器通信。
如果它无法通过调用 VideoPortGetDeviceData、 VideoPortGetBusData 或 VideoPortGetAccessRanges 获取相对于总线的访问范围值,微型端口驱动程序可以使用一组驱动程序提供的默认访问范围值来查找其适配器。 在这些情况下,微型端口驱动程序必须使用微型端口驱动程序提供的访问范围调用 VideoPortVerifyAccessRanges,然后仅当 VideoPortVerifyAccessRanges 返回NO_ERROR时才调用 VideoPortGetDeviceBase。 如果对 VideoPortVerifyAccessRanges 的 调用失败,则表示给定的总线相对范围已被另一个设备的驱动程序使用。
应使 HwVidQueryDeviceCallback 可分页。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | video.h (包括 Video.h) |