DXGKDDI_MIRACAST_HANDLE_IO_CONTROL回调函数 (dispmprt.h)

由操作系统调用,以请求显示微型端口驱动程序处理同步 I/O 控制请求,以响应用户模式显示驱动程序对 MiracastIoControl 函数的调用。

语法

DXGKDDI_MIRACAST_HANDLE_IO_CONTROL DxgkddiMiracastHandleIoControl;

NTSTATUS DxgkddiMiracastHandleIoControl(
  [in]  PVOID DriverContext,
  [in]  PVOID MiracastContext,
  [in]  ULONG InputBufferSize,
  [in]  VOID *pInputBuffer,
  [in]  ULONG OutputBufferSize,
  [out] VOID *pOutputBuffer,
  [out] ULONG *BytesReturned
)
{...}

参数

[in] DriverContext

与显示适配器关联的上下文块的句柄。 显示微型端口驱动程序的 DxgkDdiAddDevice 函数之前向 DirectX 图形内核子系统提供了此句柄。

[in] MiracastContext

由操作系统提供的 Miracast 设备上下文。 此上下文由显示微型端口驱动程序在对 DxgkDdiMiracastCreateContext 函数的调用中提供。

[in] InputBufferSize

由操作系统作为 pInputBuffer 指向的输入缓冲区的大小(以字节为单位)提供。 此值源自用户模式 MiracastIoControl 函数的 InputBufferSize 参数。

[in] pInputBuffer

由操作系统作为指向输入缓冲区的指针提供。 此值源自用户模式 MiracastIoControl 函数的 InputBufferSize 参数。

InputBufferSize 指定缓冲区的大小。

[in] OutputBufferSize

由操作系统作为 pOutputBuffer 指向的输出缓冲区的大小(以字节为单位)提供。

此值源自用户模式 MiracastIoControl 函数的 OutputBufferSize 参数。

[out] pOutputBuffer

由操作系统作为指向输出缓冲区的指针提供。 此值源自用户模式 MiracastIoControl 函数的 pOutputBuffer 参数。

OutBufferSize 指定缓冲区的大小。

[out] BytesReturned

由操作系统作为指向缓冲区的指针提供,该缓冲区保存 ULONG 类型值,即显示微型端口驱动程序在 pOutputBuffer 指向的缓冲区中返回的字节数。

返回值

如果成功 则返回STATUS_SUCCESS。 否则,它将返回 Ntstatus.h 中定义的错误代码之一。

注解

操作系统保证对 DxgkDdiMiracastIoControl 的调用发生在与调用用户模式 MiracastIoControl 请求相同的进程空间中。

即使操作系统仅从 MiracastIoControl 的相应参数复制输入和输出缓冲区大小的值,显示微型端口驱动程序也负责在使用缓冲区之前检查缓冲区大小。 此外,驱动程序应使用 ProbeForRead 和/或 ProbeForWrite 函数在 try/except 调用块中执行探测操作,以验证输入缓冲区指向的任何用户模式内存。

此 I/O 控制操作通过调用用户模式 MiracastIoControl 函数进行同步处理。

同步

操作系统将 DxgkDdiMiracastCreateContextDxgkDdiMiracastDestroyContextDxgkDdiMiracastIoControl 函数分组为 Miracast 类。

此函数的线程和同步级别由用户模式驱动程序在对 MiracastIoControl 函数的调用中设置 HardwareAccess 参数的方式设置:

  • 如果 HardwareAccessFALSE,则操作系统保证 DxgkDdiMiracastIoControl 遵循 线程处理和同步二级中定义的二级同步模式。 在另一个线程上下文上调用其他级别 0、1 或非 Miracast 类的 2 级函数时,可以调用 DxgkDdiMiracastIoControl。 但是,一次只能调用级别 2 Miracast 类函数中的一个。
  • 如果 HardwareAccessTRUE,则 DxgkDdiMiracastIoControl 遵循 线程处理和同步第三级中定义的第三级同步模式。 请注意,刷新 GPU 会产生巨大的处理开销。

要求

要求
最低受支持的客户端 Windows 8.1
最低受支持的服务器 Windows Server 2012 R2
目标平台 桌面
标头 dispmprt.h (包括 Dispmprt.h)
IRQL PASSIVE_LEVEL

另请参阅

DxgkDdiAddDevice

DxgkDdiMiracastCreateContext

MiracastIoControl

ProbeForRead

ProbeForWrite