функция обратного вызова DXGKCB_INDICATE_CHILD_STATUS (dispmprt.h)
Функция DxgkCbIndicateChildStatus записывает текущее состояние указанного дочернего устройства видеоадаптера.
Синтаксис
DXGKCB_INDICATE_CHILD_STATUS DxgkcbIndicateChildStatus;
NTSTATUS DxgkcbIndicateChildStatus(
[in] HANDLE DeviceHandle,
[in] PDXGK_CHILD_STATUS ChildStatus
)
{...}
Параметры
[in] DeviceHandle
Дескриптор, представляющий видеоадаптер. Драйвер мини-порта дисплея ранее получил этот дескриптор в элементе DeviceHandleструктуры DXGKRNL_INTERFACE , переданной в DxgkDdiStartDevice.
[in] ChildStatus
Указатель на структуру DXGK_CHILD_STATUS , которая идентифицирует дочернее устройство и описывает текущее состояние дочернего устройства.
Возвращаемое значение
DxgkCbIndicateChildStatus возвращает STATUS_SUCCESS в случае успешного выполнения. В противном случае возвращается один из кодов ошибок, определенных в ntstatus.h.
Комментарии
DPC драйвера минипорта дисплея для ISR вызывает DxgkCbIndicateChildStatus , когда видеоадаптер создает прерывание по любой из следующих причин:
- Внешнее устройство (обычно монитор) подключено к одному из дочерних устройств видеоадаптера с значением hpdAwarenessInterruptible. В этом случае драйвер минипорта дисплея устанавливает тип ChildStatus->взначение StatusConnection и задает ChildStatus.HotPlug. Подключено к TRUE.
- Внешнее устройство (обычно монитор) было отключено от одного из дочерних устройств видеоадаптера с значением hpdAwarenessInterruptible. В этом случае драйвер минипорта дисплея устанавливает тип ChildStatus->взначение StatusConnection и задает ChildStatus.HotPlug. Подключено к FALSE.
- Устройство отображения, подключенное к одному из его дочерних устройств (которое имеет значение отслеживания ориентации монитора D3DKMDT_MOA_INTERRUPTIBLE), было повернуто. В этом случае драйвер минипорта отображения устанавливаеттип ChildStatus-> в Значение StatusRotation и задает ChildStatus.Поворот. Угол поворота.
- Крышка на переносном компьютере открывается. В этом случае драйвер минипорта дисплея устанавливает тип ChildStatus->взначение StatusConnection и задает ChildStatus.HotPlug. Подключено к TRUE.
- Крышка на переносном компьютере закрывается. В этом случае драйвер минипорта дисплея устанавливает тип ChildStatus->взначение StatusConnection и задает ChildStatus.HotPlug. Подключено к FALSE.
Примеры
В следующем примере кода показано, как записать текущее состояние дочернего устройства.
NTSTATUS
AtiSimulateMonitor(HW_DEVICE_EXTENSION *pHwDeviceExtension, PR2_SIMULATE_MONITOR i_pEscape)
{
NTSTATUS Status;
PVOID MonitorDescriptor = NULL;
DXGK_CHILD_STATUS ChildStatus;
ChildStatus.ChildUid = pHwDeviceExtension->ulNumberDisplays | HW_ID_DISPLAY_CHILD;
ChildStatus.Type = StatusConnection;
if(i_pEscape->Data == NULL) {
// Remove a simulated monitor
if(pHwDeviceExtension->pvSimulatedMonitorDescriptor != NULL) {
ExFreePoolWithTag(pHwDeviceExtension->pvSimulatedMonitorDescriptor, ATI_TAG);
pHwDeviceExtension->pvSimulatedMonitorDescriptor = NULL;
pHwDeviceExtension->ulSimulatedMonitorDescriptorLength = 0;
pHwDeviceExtension->ulRetryCount = 0;
pHwDeviceExtension->bReportDescriptor = FALSE;
ChildStatus.HotPlug.Connected = FALSE;
Status = DxgkCbIndicateChildStatus(pHwDeviceExtension->DeviceHandle, &ChildStatus);
}
else {
// No simulated monitor is present so the request to remove one is invalid
return STATUS_INVALID_PARAMETER;
}
}
else {
//Add a simulated monitor
}
return Status;
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в Windows Vista и более поздних версиях операционных систем Windows. |
Целевая платформа | Персональный компьютер |
Верхняя часть | dispmprt.h (включая Dispmprt.h) |
IRQL | <=DISPATCH_LEVEL |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по