Called by the display port driver's GPU scheduler to query dependencies of nodes in a physical display adapter.



NTSTATUS APIENTRY DxgkDdiQueryDependentEngineGroup(
  _In_    const HANDLE                            hAdapter,
  _Inout_       DXGKARG_QUERYDEPENDENTENGINEGROUP *pQueryDependentEngineGroup
{ ... }


hAdapter [in]

A handle to a context block that is associated with a display adapter. The display miniport driver previously provided this handle to the DirectX graphics kernel subsystem in the MiniportDeviceContext output parameter of the DxgkDdiAddDevice function.

pQueryDependentEngineGroup [in, out]

A value of type DXGKARG_QUERYDEPENDENTENGINEGROUP that specifies all nodes that are affected by the reset operation.

Return value

Returns STATUS_SUCCESS if it succeeds. Otherwise, it returns one of the error codes defined in Ntstatus.h.


This function is used to describe all physical adapters (engines) that are affected by an engine reset request. It helps improve user experience on hardware architectures that have dependencies among multiple engines that can affect the reset process. Note that all affected nodes must have the same engine affinity value. (See engine affinity discussion in TDR changes in Windows 8.)

The display port driver's GPU scheduler calls DxgkDdiQueryDependentEngineGroup every time it calls the DxgkDdiResetEngine function. The GPU scheduler waits 500 milliseconds for the display miniport driver to complete preemption of all dependent engines. For any engines for which the driver cannot complete a preemption, the GPU scheduler calls the DxgkDdiResetEngine function sequentially based upon the engine ordinal value.

Here is an example of how to compute the bitmask in the DXGKARG_QUERYDEPENDENTENGINEGROUP.DependentNodeOrdinalMask member. If the original values of the DXGKARG_QUERYDEPENDENTENGINEGROUP structure's NodeOrdinal and EngineOrdinal members are 1 and 0, respectively, and additional nodes with identifiers 2 and 4 will also be reset when node 1 is reset, the driver should set the binary value of DependentNodeOrdinalMask to 10110, or 0x16 in hexadecimal notation. The index value EngineOrdinal is assumed to be identical for all dependent nodes. The node being reset is included in the DependentNodeOrdinalMask bit mask.

This function should be made pageable, and it should always succeed.

The operating system guarantees that this function follows the first level synchronization mode as defined in Threading and Synchronization First Level.

For more information, see TDR changes in Windows 8.


Minimum supported client

Windows 8

Minimum supported server

Windows Server 2012

Target platform



D3dkmddi.h (include D3dkmddi.h)



See also




Send comments about this topic to Microsoft