DXGKCB_INDICATE_CHILD_STATUS fonction de rappel (dispmprt.h)
La fonction DxgkCbIndicateChildStatus enregistre l’état actuel d’un appareil enfant spécifié d’une carte d’affichage.
Syntaxe
DXGKCB_INDICATE_CHILD_STATUS DxgkcbIndicateChildStatus;
NTSTATUS DxgkcbIndicateChildStatus(
[in] HANDLE DeviceHandle,
[in] PDXGK_CHILD_STATUS ChildStatus
)
{...}
Paramètres
[in] DeviceHandle
Handle qui représente un adaptateur d’affichage. Le pilote miniport d’affichage a précédemment obtenu ce handle dans le membre DeviceHandle de la structure DXGKRNL_INTERFACE qui a été passée à DxgkDdiStartDevice.
[in] ChildStatus
Pointeur vers une structure DXGK_CHILD_STATUS qui identifie l’appareil enfant et décrit l’état actuel de l’appareil enfant.
Valeur de retour
DxgkCbIndicateChildStatus retourne STATUS_SUCCESS si elle réussit. Sinon, elle retourne l’un des codes d’erreur définis dans Ntstatus.h.
Remarques
Le DPC du pilote miniport d’affichage pour les appels ISR DxgkCbIndicateChildStatus lorsque l’adaptateur d’affichage génère une interruption pour l’une des raisons suivantes :
- Un appareil externe (généralement un moniteur) a été connecté à l’un des appareils enfants de l’adaptateur d’affichage qui a une valeur de sensibilisation HPD de HpdAwarenessInterruptible. Dans ce cas, le pilote display miniport définit ChildStatus->Type sur StatusConnection et définit ChildStatus.hotPlug. connecté à TRUE.
- Un appareil externe (généralement un moniteur) a été déconnecté de l’un des appareils enfants de l’adaptateur d’affichage qui a une valeur de sensibilisation HPD de HpdAwarenessInterruptible. Dans ce cas, le pilote display miniport définit ChildStatus->Type sur StatusConnection et définit ChildStatus.hotPlug. connecté à FALSE .
- L’appareil d’affichage connecté à l’un de ses appareils enfants à bord (qui a une valeur de reconnaissance de l’orientation du moniteur de D3DKMDT_MOA_INTERRUPTIBLE) a été pivoté. Dans ce cas, le pilote display miniport définit ChildStatus->Type sur StatusRotation et définit ChildStatus.rotation.Angle à l’angle de rotation.
- Le couvercle sur un ordinateur portable est ouvert. Dans ce cas, le pilote display miniport définit ChildStatus->Type sur StatusConnection et définit ChildStatus.hotPlug. connecté à TRUE.
- Le couvercle sur un ordinateur portable est fermé. Dans ce cas, le pilote display miniport définit ChildStatus->Type sur StatusConnection et définit ChildStatus.hotPlug. connecté à FALSE .
Exemples
L’exemple de code suivant montre comment enregistrer l’état actuel d’un appareil enfant.
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;
}
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows Vista |
plateforme cible | Bureau |
d’en-tête | dispmprt.h (include Dispmprt.h) |
IRQL | <=DISPATCH_LEVEL |