Freigeben über


DXGKCB_EXCLUDE_ADAPTER_ACCESS Rückruffunktion (dispmprt.h)

Die DxgkCbExcludeAdapterAccess--Funktion verhindert den gesamten Zugriff auf den Anzeigeadapter und ruft einen bereitgestellten DxgkProtectedCallback Rückrufroutine in diesem geschützten Zustand auf.

Syntax

DXGKCB_EXCLUDE_ADAPTER_ACCESS DxgkcbExcludeAdapterAccess;

NTSTATUS DxgkcbExcludeAdapterAccess(
  [in] HANDLE DeviceHandle,
  [in] ULONG Attributes,
  [in] DXGKDDI_PROTECTED_CALLBACK DxgkProtectedCallback,
  [in] PVOID ProtectedCallbackContext
)
{...}

Parameter

[in] DeviceHandle

Ein Handle, das einen Anzeigeadapter darstellt. Der Display-Miniporttreiber hat diesen Handle im DeviceHandle Member der DXGKRNL_INTERFACE Struktur abgerufen, die an DxgkDdiStartDeviceübergeben wurde.

[in] Attributes

Ein Wert, der Videospeichervorgänge angibt. Dieser Parameter kann eine beliebige Kombination der folgenden Bitkennzeichnungswerte sein, außer dass DXGK_EXCLUDE_EVICT_ALL und DXGK_EXCLUDE_CALL_SYNCHRONOUS sich gegenseitig ausschließen. Diese Werte werden in Dispmprt.hdefiniert.

DXGK_EXCLUDE_EVICT_ALL

Der gesamte Videospeicher im Adapter wird in den Systemspeicher kopiert. Dies ist ein teurer Vorgang. Wenn der parameter Attributes nicht auf diesen Wert festgelegt ist, wird der Zugriff auf gesperrte Oberflächen im Systemspeicher angehalten.

DXGK_EXCLUDE_CALL_SYNCHRONOUS

Führt die geschützte DxgkProtectedCallback Treiberrückrufroutine im selben Threadkontext wie der Aufrufer aus. Der Anrufer muss von einer zweiten Ebene oder dritten Ebene synchronisierten DDI-Anrufs aufgerufen werden. Andernfalls schlägt die DxgkCbExcludeAdapterAccess--Funktion fehl.

DXGK_EXCLUDE_BRIDGE_ACCESS

Schützt den Zugriff auf den PCI Express (PCIe)-Stammport, wenn der Treiber auf den Konfigurationsspeicher für den Stammport zugreifen muss. Legen Sie den Attributes Parameter auf diesen Wert fest, bevor Sie DxgkCbReadDeviceSpace oder DxgkCbWriteDeviceSpace Funktionen aufrufen, wobei der DataType Parameter auf DXGK_WHICHSPACE_BRIDGE festgelegt ist.

[in] DxgkProtectedCallback

Die Rückrufroutine, die zurückgerufen werden soll, wenn der gesamte Zugriff auf den Adapter angehalten wurde.

[in] ProtectedCallbackContext

Ein Zeiger auf den Wert, der an den ProtectedCallbackContext Parameter der DxgkProtectedCallback Rückrufroutine übergeben werden soll.

Rückgabewert

DxgkCbExcludeAdapterAccess gibt STATUS_SUCCESS zurück, wenn dies erfolgreich ist. Andernfalls wird eine der fehlercodes zurückgegeben, die in ntstatus.hdefiniert sind.

Bemerkungen

Anwendungsanforderungen werden blockiert, bis diese Funktion zurückgegeben wird. In diesem Schutzzustand wird die bereitgestellte DxgkProtectedCallback- Rückrufroutine bei IRQL = PASSIVE_LEVEL aufgerufen.

DxgkCbExcludeAdapterAccess erhält exklusiven Adapterzugriff, um grafikbezogene E/A-Vorgänge an den Anzeigeadapter und alle Verknüpfungen zu verhindern. Dadurch wird die GPU für die gesamte Dauer des Anrufs effektiv leer.

Diese Funktion verhindert auch den gesamten PCI-Konfigurationsraumzugriff auf den PCI Express (PCIe)-Stammport, wenn DXGK_EXCLUDE_BRIDGE_ACCESS im parameter Attributes angegeben wird.

Der Treiber sollte die fortgesetzte Ausführung des aufrufenden Threads nicht blockieren, indem darauf gewartet wird, dass die DxgkProtectedCallback- Rückrufroutine zurückgegeben wird. Beispielsweise könnte der Treiber einen asynchronen Workerthread für die Verarbeitung der Rückrufroutine planen.

Eine Ausnahme dieses Blockierens von Anwendungsanforderungen tritt auf, wenn der Anzeigetreiber für den Benutzermodus das UseAlternateVA- Bitfeld-Flag im Flags-Element der D3DDDICB_LOCKFLAGS-Struktur in einem Aufruf der pfnLockCb--Funktion festgelegt hat. DxgkCbExcludeAdapterAccess diese Art von Zuordnungssperre nicht blockiert, und die CPU kann auf den Anzeigeadapter zugreifen, während die geschützte Rückrufroutine ausgeführt wird.

Hinweis Wenn UseAlternateVA in einem Aufruf von pfnLockCbfestgelegt wurde, sollte der Miniporttreiber DxgkCbExcludeAdapterAccessnicht aufrufen.
 

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows Vista
Zielplattform- Desktop
Header- dispmprt.h (include Dispmprt.h)
IRQL- PASSIVE_LEVEL

Siehe auch

DxgkProtectedCallback-