video.h) (PVIDEO_HW_QUERY_INTERFACE 回调函数

HwVidQueryInterface 返回子设备可以调用的微型端口驱动程序实现的功能接口。

语法

PVIDEO_HW_QUERY_INTERFACE PvideoHwQueryInterface;

VP_STATUS PvideoHwQueryInterface(
  PVOID HwDeviceExtension,
  PQUERY_INTERFACE QueryInterface
)
{...}

参数

HwDeviceExtension

指向微型端口驱动程序的每个适配器存储区域的指针。 有关详细信息,请参阅 设备扩展

QueryInterface

指向 QUERY_INTERFACE 结构的指针,微型端口驱动程序应在该结构中返回有关它支持的接口的信息。

返回值

HwVidQueryInterface 在成功后应返回NO_ERROR;否则,它应返回相应的错误代码。 例如,如果微型端口驱动程序无法分配内存来完成操作,则应返回ERROR_OUTOFMEMORY。

注解

HwVidQueryInterface 公开视频微型端口驱动程序与子设备驱动程序之间的通信机制。 公开此类机制的微型端口驱动程序应实现此函数。

视频端口在收到IRP_MN_QUERY_INTERFACE请求时调用 HwVidQueryInterface 。 如果微型端口驱动程序调用失败,视频端口驱动程序会将请求传递给微型端口驱动程序的父设备。

HwVidQueryInterface 应填充 QueryInterface-Interface> 指向的 INTERFACE 结构的成员,如下所示:

  • “大小 ”设置为 INTERFACE 结构中的字节数。 此值不得超过 QueryInterface->Size 指定的字节数。
  • “版本 ”设置为微型端口驱动程序返回的接口的版本。 微型端口驱动程序应与 QueryInterface->版本中的子驱动程序请求的版本最匹配。
  • “上下文” 设置为指向接口的微型端口驱动程序定义的上下文。 通常,微型端口驱动程序会将 Context 设置为指向 HwDeviceExtension 标识的设备扩展。
  • 初始化 InterfaceReferenceInterfaceDereference ,以指向此接口的微型端口驱动程序实现的引用和取消引用例程。
  • 初始化所有其他特定于接口的成员,以指向要公开的接口的相应例程。
返回接口的微型端口驱动程序负责通过调用 QueryInterface->Interface.InterfaceReference 来引用接口。 当驱动程序不再需要接口时,请求接口的子驱动程序负责通过调用 QueryInterface->Interface.InterfaceDereference 来取消该接口的引用。 如果子驱动程序将接口传递给另一个组件,则子驱动程序负责获取另一个引用,而另一个组件负责在不再需要访问该接口时删除其他引用。 引用允许父级确定子设备何时仍需要接口,从而确定父设备何时可以释放任何与接口相关的资源。

子设备的驱动程序可以随时通过 HwVidQueryInterface 公开的函数调用微型端口驱动程序,而无需视频端口驱动程序的不知情。 因此,微型端口驱动程序必须通过在 HwVidQueryInterface 公开的所有函数中获取和释放视频端口驱动程序维护的设备锁来同步对自身的访问。

子设备由 HwVidGetVideoChildDescriptor 枚举。

应使 HwVidQueryInterface 可分页。

要求

要求
目标平台 桌面
标头 video.h (包括 Video.h)

另请参阅

HwVidGetVideoChildDescriptor

QUERY_INTERFACE

VideoPortAcquireDeviceLock

VideoPortReleaseDeviceLock