Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Отправляет асинхронное сообщение в драйвер отображения пользовательского режима.
Синтаксис
DXGKCB_MIRACAST_SEND_MESSAGE DxgkcbMiracastSendMessage;
NTSTATUS DxgkcbMiracastSendMessage(
[in] HANDLE MiracastHandle,
[in] ULONG InputBufferSize,
[in] VOID *pInputBuffer,
[in] ULONG OutputBufferSize,
[out] VOID *pOutputBuffer,
[in, optional] DXGKCB_MIRACAST_SEND_MESSAGE_CALLBACK pCallback,
[in, optional] PVOID pCallbackContext
)
{...}
Параметры
[in] MiracastHandle
Предоставленный драйвером дескриптор устройства отображения Miracast. Этот дескриптор был первоначально передан в MiracastHandle элемент структуры DXGK_MIRACAST_DISPLAY_CALLBACKS в вызове функции DxgkDdiMiracastCreateContext.
[in] InputBufferSize
Размер в байтах входного буфера, на который указывает pInputBuffer.
[in] pInputBuffer
Указатель на входной буфер. InputBufferSize указывает размер буфера.
Дополнительные сведения о входной буфере см. в примечаниях.
[in] OutputBufferSize
Размер в байтах выходного буфера, на который указывает pOutputBuffer.
[out] pOutputBuffer
Указатель на выходной буфер. OutBufferSize указывает размер буфера.
Дополнительные сведения о выходном буфере см. в примечаниях.
[in, optional] pCallback
Необязательный указатель, предоставленный драйвером мини-порта дисплея, в функцию обратного вызова DxgkCbMiracastSendMessageCallback функции обратного вызова.
Если драйвер мини-порта дисплея предоставляет указатель на DxgkCbMiracastSendMessageCallback, то после того, как драйвер пользовательского режима обрабатывает сообщение, операционная система отправляет сообщение драйверу пользовательского режима асинхронно путем вызова DxgkCbMiracastSendMessageCallback.
Дополнительные сведения о вызовах DxgkCbMiracastSendMessageCallbackсм. в разделах "Возвращаемое значение" и "Примечания".
[in, optional] pCallbackContext
Необязательный указатель на предоставленный драйвером контекст обратного вызова. Операционная система передает этот контекст подпрограмме обратного вызова драйвера после завершения операции.
Возвращаемое значение
Возвращает STATUS_PENDING, если сообщение успешно доставлено. В противном случае возвращается один из кодов ошибок, определенных в Ntstatus.h.
Если драйвер минипорта отображения должен знать состояние обработки сообщений в пользовательском режиме, он должен предоставить функцию DxgkCbMiracastSendMessageCallback в параметре pCallback и проверить состояние возврата в параметре pIoStatusBlock.
Замечания
Если драйвер минипорта отображения предоставляет pInputBuffer и буферы pOutputBuffer, то драйвер несет ответственность за удержание этих двух буферов до вызова функции DxgkCbMiracastSendMessageCallback. В противном случае может быть создана проблема с повреждением случайной памяти.
Если драйвер предоставляет dxgkCbMiracastSendMessageCallback в параметре pCallback, возможно, что DxgkCbMiracastSendMessageCallback возвращается до DxgkCbMiracastSendMessage.
пример последовательности вызовов
Ниже приведен пример кода, в который показано, как использовать эту функцию:typedef struct _CALLBACK_CONTEXT
{
UCHAR InputBuffer[INPUT_BUFFER_SIZE];
UCHAR OutputBuffer[OUTPUT_BUFFER_SIZE];
} CALLBACK_CONTEXT, *PCALLBACK_CONTEXT;
...
_IRQL_requires_(PASSIVE_LEVEL)
VOID
DriverCallbackFunction(
_In_ PVOID Context,
_In_ PIO_STATUS_BLOCK pIoStatusBlock
)
{
PCALLBACK_CONTEXT CallbackContex = (PCALLBACK_CONTEXT)Context;
ExFreePool(CallbackContex);
}
...
CallbackContex = (PCALLBACK_CONTEXT)ExAllocatePoolWithTag(
PagedPool,
sizeof(CALLBACK_CONTEXT),
DRIVER_TAG);
if (CallbackContex == NULL)
{
return STATUS_NO_MEMORY;
}
RtlZeroMemory(CallbackContex, sizeof(CALLBACK_CONTEXT));
CallbackContex->InputBuffer[0] = 0xaa;
CallbackContex->InputBuffer[1] = 0x55;
Status =
pDeviceContext->MiracastCallbacks.DxgkCbMiracastSendMessage(
pDeviceContext->MiracastCallbacks.MiracastHandle,
sizeof(CallbackContex->InputBuffer),
CallbackContex->InputBuffer,
sizeof(CallbackContex->OutputBuffer),
CallbackContext->OutputBuffer,
&DriverCallbackFunction,
CallbackContex);
Требования
| Требование | Ценность |
|---|---|
| минимальные поддерживаемые клиентские | Windows 8.1 |
| минимальный поддерживаемый сервер | Windows Server 2012 R2 |
| целевая платформа | Настольный |
| заголовка | dispmprt.h (include Dispmprt.h) |
| IRQL | PASSIVE_LEVEL |
См. также
DXGK_MIRACAST_DISPLAY_CALLBACKS