DXGKCB_INDICATE_CHILD_STATUS fonction de rappel (dispmprt.h)
La fonction DxgkCbIndicateChildStatus enregistre la status actuelle d’un périphérique 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 une carte d’affichage. Le pilote miniport d’affichage a précédemment obtenu cette poignée dans le membre DeviceHandle de la structure DXGKRNL_INTERFACE qui a été passé à DxgkDdiStartDevice.
[in] ChildStatus
Pointeur vers une structure de DXGK_CHILD_STATUS qui identifie l’appareil enfant et décrit la status actuelle de l’appareil enfant.
Valeur retournée
DxgkCbIndicateChildStatus retourne STATUS_SUCCESS si elle réussit. Sinon, il retourne l’un des codes d’erreur définis dans Ntstatus.h.
Remarques
Le DPC du pilote miniport d’affichage pour ISR appelle 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 reconnaissance HPD de HpdAwarenessInterruptible. Dans ce cas, le pilote miniport d’affichage 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 reconnaissance HPD de HpdAwarenessInterruptible. Dans ce cas, le pilote miniport d’affichage définit ChildStatus->Type sur StatusConnection et définit ChildStatus.HotPlug. Connecté à FALSE.
- Le périphérique d’affichage connecté à l’un de ses appareils enfants embarqués (qui a une valeur de sensibilisation à l’orientation du moniteur de D3DKMDT_MOA_INTERRUPTIBLE) a été pivoté. Dans ce cas, le pilote miniport d’affichage définit ChildStatus->Type sur StatusRotation et définit ChildStatus.Rotation. Angle par rapport à l’angle de rotation.
- Le couvercle d’un ordinateur portable est ouvert. Dans ce cas, le pilote miniport d’affichage définit ChildStatus->Type sur StatusConnection et définit ChildStatus.HotPlug. Connecté à TRUE.
- Le couvercle d’un ordinateur portable est fermé. Dans ce cas, le pilote miniport d’affichage définit ChildStatus->Type sur StatusConnection et définit ChildStatus.HotPlug. Connecté à FALSE.
Exemples
L’exemple de code suivant montre comment enregistrer le status 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;
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Vista |
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | dispmprt.h (inclure Dispmprt.h) |
IRQL | <=DISPATCH_LEVEL |