IVMRSurfaceAllocator::AllocateSurface-Methode (strmif.h)
[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]
Die AllocateSurface
-Methode weist eine DirectDraw-Oberfläche zu.
Syntax
HRESULT AllocateSurface(
[in] DWORD_PTR dwUserID,
[in] VMRALLOCATIONINFO *lpAllocInfo,
[in] DWORD *lpdwActualBuffers,
[out] LPDIRECTDRAWSURFACE7 *lplpSurface
);
Parameter
[in] dwUserID
Ein anwendungsdefiniertes DWORD_PTR Cookie, das diese instance der VMR für die Verwendung in Szenarien eindeutig identifiziert, in denen eine instance des Zuteilungs-Referenten mit mehreren VMR-Instanzen verwendet wird.
[in] lpAllocInfo
Gibt die VMRALLOCATIONINFO-Struktur an. Siehe Hinweise.
[in] lpdwActualBuffers
[out] Bei der Eingabe wird dieser Parameter verwendet, um die anzahl der gewünschten Puffer anzufordern. Bei der Ausgabe empfängt es die tatsächliche Anzahl der erstellten Puffer.
[out] lplpSurface
Adresse eines Zeigers, der die Direct3D-Oberfläche empfängt.
Rückgabewert
Wenn die Methode erfolgreich ist, wird S_OK zurückgegeben. Bei einem Fehler wird ein Fehlercode zurückgegeben.
Rückgabecode | Beschreibung |
---|---|
|
Einer der Zeiger ist ungültig. |
|
In dwFlags wurde die AMAP_3D_TARGET mit AMAP_FORCE_SYSMEM oder AMAP_ALLOW_SYSMEM kombiniert. |
|
Mindestens ein Element der BITMAPINFOHEADER-Struktur, die von lpAllocInfo-lpHdr> angegeben wird, ist falsch. |
Hinweise
Vor dem expliziten Aufrufen von AllocateSurface sollte eine Clientanwendung IVMRSurfaceAllocator::FreeSurface aufrufen, um sicherzustellen, dass der DirectDraw-Decodierungs-Frontpuffer NULL ist. Wenn es zum Zeitpunkt, zu dem eine Anwendung AllocateSurface aufruft, nicht NULL ist, verursacht die Debugversion von quartz.dll eine Assertion.
Wenn Sie diese Methode in einem benutzerdefinierten Zuweisungs-Presenter implementieren, müssen Sie den Wert von lpAllocInfo-lpHdr-biBitCount >>untersuchen. Wenn biBitCount 0 ist, müssen Sie es auf die Pixeltiefe für die aktuelle Anzeige festlegen. Wenn BiBitCount bei 0 belassen wird, tritt bei der Oberflächenzuordnung ein Fehler auf, und es wird eine neue VMR (Standardeinstellung) erstellt.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP mit SP1 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | strmif.h (include Dshow.h) |
Bibliothek | Strmiids.lib |