DXGKCB_INDICATE_CHILD_STATUS fungsi panggilan balik (dispmprt.h)

Fungsi DxgkCbIndicateChildStatus merekam status perangkat anak tertentu saat ini dari adaptor tampilan.

Sintaks

DXGKCB_INDICATE_CHILD_STATUS DxgkcbIndicateChildStatus;

NTSTATUS DxgkcbIndicateChildStatus(
  [in] HANDLE DeviceHandle,
  [in] PDXGK_CHILD_STATUS ChildStatus
)
{...}

Parameter

[in] DeviceHandle

Handel yang mewakili adaptor tampilan. Driver miniport tampilan sebelumnya memperoleh handel ini di anggota DeviceHandle dari struktur DXGKRNL_INTERFACE yang diteruskan ke DxgkDdiStartDevice.

[in] ChildStatus

Penunjuk ke struktur DXGK_CHILD_STATUS yang mengidentifikasi perangkat anak dan menjelaskan status perangkat anak saat ini.

Nilai kembali

DxgkCbIndicateChildStatus mengembalikan STATUS_SUCCESS jika berhasil. Jika tidak, ia mengembalikan salah satu kode kesalahan yang ditentukan dalam Ntstatus.h.

Keterangan

DPC driver miniport tampilan untuk ISR memanggil DxgkCbIndicateChildStatus ketika adaptor tampilan menghasilkan gangguan karena salah satu alasan berikut:

  • Perangkat eksternal (biasanya monitor) telah terhubung ke salah satu perangkat anak adaptor tampilan yang memiliki nilai kesadaran HPD hpdAwarenessInterruptible. Dalam hal ini, driver miniport tampilan mengaturJenis ChildStatus-> ke StatusConnection dan mengatur ChildStatus.HotPlug. Tersambung ke TRUE.
  • Perangkat eksternal (biasanya monitor) telah terputus dari salah satu perangkat anak adaptor layar yang memiliki nilai kesadaran HPD hpdAwarenessInterruptible. Dalam hal ini, driver miniport tampilan mengaturJenis ChildStatus-> ke StatusConnection dan mengatur ChildStatus.HotPlug. Tersambung ke FALSE.
  • Perangkat tampilan yang terhubung ke salah satu perangkat anak on-board -nya (yang memiliki nilai kesadaran orientasi monitor D3DKMDT_MOA_INTERRUPTIBLE) telah diputar. Dalam hal ini, driver miniport tampilan mengaturJenis ChildStatus-> ke StatusRotation dan mengatur ChildStatus.Rotasi. Sudut ke sudut rotasi.
Fungsi DxgkDdiNotifyAcpiEvent driver miniport tampilan memanggil DxgkCbIndicateChildStatus dalam situasi berikut:
  • Tutup pada komputer portabel akan dibuka. Dalam hal ini, driver miniport tampilan mengaturJenis ChildStatus-> ke StatusConnection dan mengatur ChildStatus.HotPlug. Tersambung ke TRUE.
  • Tutup pada komputer portabel ditutup. Dalam hal ini, driver miniport tampilan mengaturJenis ChildStatus-> ke StatusConnection dan mengatur ChildStatus.HotPlug. Tersambung ke FALSE.

Contoh

Contoh kode berikut menunjukkan cara merekam status perangkat anak saat ini.

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;
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia di Windows Vista dan versi yang lebih baru dari sistem operasi Windows.
Target Platform Desktop
Header dispmprt.h (termasuk Dispmprt.h)
IRQL <=DISPATCH_LEVEL

Lihat juga

DxgkDdiQueryChildRelations

DxgkDdiQueryChildStatus