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 函数进行同步处理。
同步
操作系统将 DxgkDdiMiracastCreateContext、 DxgkDdiMiracastDestroyContext 和 DxgkDdiMiracastIoControl 函数分组为 Miracast 类。此函数的线程和同步级别由用户模式驱动程序在对 MiracastIoControl 函数的调用中设置 HardwareAccess 参数的方式设置:
- 如果 HardwareAccess 为 FALSE,则操作系统保证 DxgkDdiMiracastIoControl 遵循 线程处理和同步二级中定义的二级同步模式。 在另一个线程上下文上调用其他级别 0、1 或非 Miracast 类的 2 级函数时,可以调用 DxgkDdiMiracastIoControl。 但是,一次只能调用级别 2 Miracast 类函数中的一个。
- 如果 HardwareAccess 为 TRUE,则 DxgkDdiMiracastIoControl 遵循 线程处理和同步第三级中定义的第三级同步模式。 请注意,刷新 GPU 会产生巨大的处理开销。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 8.1 |
最低受支持的服务器 | Windows Server 2012 R2 |
目标平台 | 桌面 |
标头 | dispmprt.h (包括 Dispmprt.h) |
IRQL | PASSIVE_LEVEL |