DXGKCB_DISCONNECTDOORBELL callback function (d3dkmddi.h)

Important

Some information relates to a prerelease product which may be substantially modified before it's commercially released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

KMD calls this DxgkCbDisconnectDoorbell function to notify Dxgkrnl that KMD needs to disconnect a previously connected doorbell object from a hardware queue.

Syntax

DXGKCB_DISCONNECTDOORBELL DxgkcbDisconnectdoorbell;

NTSTATUS DxgkcbDisconnectdoorbell(
  INOUT_PDXGKARGCB_DISCONNECTDOORBELL pArgs
)
{...}

Parameters

pArgs

[in] Pointer to a DXGKARGCB_DISCONNECTDOORBELL structure that describes the doorbell to disconnect.

Return value

DxgkCbDisconnectDoorbell returns STATUS_INVALID_PARAMETER if Dxgkrnl can't find the associated doorbell object for hHwQueue. In all other cases this function succeeds, even when the doorbell is already disconnected.

Remarks

KMD calls this function to notify Dxgkrnl when it needs to disconnect a doorbell. KMD should consider the physical doorbell address to be disconnected only after return from this callback.

Dxgkrnl unmaps the virtual addresses and marks the doorbell as disconnected. Specifically, Dxgkrnl does the following steps to disconnect the doorbell:

  • Rotates the user-mode DoorbellCpuVirtualAddress to a dummy page so that UMD can no longer write to the physical doorbell location.
  • Writes the DisconnectReason into DoorbellStatusCpuVirtualAddress so that UMD knows that the doorbell is disconnected and the reason why.

Requirements

Requirement Value
Minimum supported client WIN11_FUTURE
Header d3dkmddi.h
IRQL PASSIVE_LEVEL

See also

DXGKARGCB_DISCONNECTDOORBELL

DxgkDdiConnectDoorbell