Verwenden des DMA-Puffermodells für garantierte Verträge

Das Anzeigetreibermodell für Windows Vista garantiert die Größe von DMA-Puffern und Patchspeicherortlisten für ein Renderinggerät. Eine Patchspeicherortliste enthält die physischen Speicheradressen der Ressourcen, auf die von den Befehlen im DMA-Puffer verwiesen wird.

Im garantierten Vertragsmodus erkennt der Benutzermodusanzeigetreiber die genaue Größe des DMA-Puffers und der Patchpositionsliste, die für die Übersetzung verfügbar ist, wenn der Benutzermodusanzeigetreiber Befehlspuffer füllt und pfnRenderCb aufruft , um sie an den Anzeige-Miniporttreiber zu übermitteln. Nach jedem Aufruf von pfnRenderCb empfängt der Anzeigetreiber für den Benutzermodus die Größe des DMA-Puffers und der Patchspeicherortliste, die für die folgende Übersetzung verfügbar sind (d. a. den folgenden Aufruf von pfnRenderCb).

Der Videospeicher-Manager garantiert, dass die DMA-Puffer und Patchspeicherlisten für dieses Gerät erst nach Abschluss der nächsten Übersetzung zu kürzen sind. Der Anzeige-Miniporttreiber muss in der Lage sein, einen Befehlspuffer in genau einen DMA-Puffer und eine Patchspeicherortliste zu übersetzen. Wenn diese Übersetzung nicht möglich ist, ist der Befehlspuffer im Benutzermodus per Definition ungültig. Der Anzeige-Miniporttreiber kann keine status zurückgeben, die angibt, dass er während der Übersetzung nicht in den DMA-Pufferspeicher- und Patchspeicherlisten enthalten ist. Dies führt dazu, dass der Videospeicher-Manager das System überprüft, da der Speicher-Manager die Anforderungen des garantierten DMA-Vertrags nicht erfüllt.