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 DxgkCbDisconnectDoorbell to notify Dxgkrnl that KMD needs to disconnect a previously connected doorbell 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 hDoorbell for hHwQueue, or if DisconnectReason isn't one of the D3DDDI_DOORBELLSTATUS_DISCONNECTED_XXX values. 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.
For more information, see User-mode work submission.
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows 11, version 24H2 (WDDM 3.2) |
Header | d3dkmddi.h |
IRQL | PASSIVE_LEVEL |