IVMRSurfaceAllocator::AllocateSurface 方法 (strmif.h)
[與此頁面相關的功能 DirectShow 是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft 強烈建議新程式代碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 API 的現有程式代碼盡可能重寫為使用新的 API。
方法 AllocateSurface
會配置 DirectDraw 表面。
語法
HRESULT AllocateSurface(
[in] DWORD_PTR dwUserID,
[in] VMRALLOCATIONINFO *lpAllocInfo,
[in] DWORD *lpdwActualBuffers,
[out] LPDIRECTDRAWSURFACE7 *lplpSurface
);
參數
[in] dwUserID
應用程式定義的DWORD_PTR Cookie,可唯一識別此 VMR 實例,以用於配置器演示者的一個實例搭配多個 VMR 實例時使用。
[in] lpAllocInfo
指定 VMRALLOCATIONINFO 結構。 請參閱<備註>。
[in] lpdwActualBuffers
[out]在輸入上,此參數用來要求所需的緩衝區數目。 在輸出上,它會收到實際建立的緩衝區數目。
[out] lplpSurface
接收 Direct3D 表面的指標位址。
傳回值
如果方法成功,它會傳回 S_OK。 如果方法失敗,則會傳回錯誤碼。
傳回碼 | Description |
---|---|
|
其中一個指標無效。 |
|
在 dwFlags 中,AMAP_3D_TARGET會結合AMAP_FORCE_SYSMEM或AMAP_ALLOW_SYSMEM。 |
|
lpAllocInfo-lpHdr> 所指定的 BITMAPINFOHEADER 結構的一或多個成員不正確。 |
備註
明確呼叫 AllocateSurface 之前,用戶端應用程式應該呼叫 IVMRSurfaceAllocator::FreeSurface ,以確保 DirectDraw 譯碼介面前端緩衝區為 NULL。 如果應用程式呼叫 AllocateSurface 時不是 NULL,則偵錯版本的 quartz.dll 會導致判斷提示。
在自訂配置器演示者中實作此方法時,您必須檢查 lpAllocInfo-lpHdr-biBitCount>> 的值。 如果 biBitCount 為零,則您必須將它設定為目前顯示器的圖元深度。 如果 BiBitCount 保留為零,介面配置將會失敗,並建立新的 (預設) VMR。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 具有 SP1 的 Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | strmif.h (包含 Dshow.h) |
程式庫 | Strmiids.lib |