IPrintOemUni::MemoryUsage 方法 (prcomoem.h)
IPrintOemUni::MemoryUsage
方法可以搭配 Unidrv 支援的印表機使用,以指定轉譯外掛程式的 IPrintOemUni::ImageProcessing 方法使用所需的記憶體數量。
語法
HRESULT MemoryUsage(
PDEVOBJ pdevobj,
POEMMEMORYUSAGE pMemoryUsage
);
參數
pdevobj
呼叫端提供的 DEVOBJ 結構的指標。
pMemoryUsage
呼叫端提供的 OEMMEMORYUSAGE 結構的指標。
傳回值
方法必須傳回下列其中一個值。
傳回碼 | 描述 |
---|---|
|
作業成功。 |
|
作業失敗。 |
|
此方法尚未實作。 |
備註
方法是 IPrintOemUni::MemoryUsage
協助 Unidrv 驅動程式根據 IPrintOemUni::ImageProcessing 方法的記憶體需求,判斷 GDI 繪圖介面的最佳大小。 方法的實作 IPrintOemUni::MemoryUsage
是選擇性的。
方法 IPrintOemUni::MemoryUsage
應該會傳回兩個值,如下所示:
-
IPrintOemUni::ImageProcessing 方法必須配置的永久配置固定大小記憶體數量。
此值會在 OEMMEMORYUSAGE 結構的 dwFixedMemoryUsage 成員中傳回。
-
IPrintOemUni::ImageProcessing 方法完成處理之後,保存點陣圖所需的記憶體數量。
轉譯外掛程式會將此處理的點陣圖傳回給 Unidrv,或將其多任務緩衝處理。 儲存所處理位圖所需的記憶體數量會傳回 OEMMEMORYUSAGE 結構的 dwPercentMemoryUsage 成員,並以來源位圖大小的百分比表示。
OEMMEMORYUSAGE 結構的 dwMaxBandSize 成員是由 Unidrv 提供,並指定預設的頻外大小上限。
在 Unidrv 驅動程式建立繪圖介面之前,它會要求 GDI 根據可用的系統記憶體來判斷影像帶狀位圖的最佳大小。 對於每個帶狀位圖,必須在傳遞至 IPrintOemUni::ImageProcessing 方法的來源位圖之間共用這個最佳記憶體空間,而 (通常較小的) 方法傳回或輸出的處理位圖。 Unidrv 會呼叫轉譯外掛程式的 IPrintOemUni::MemoryUsage
方法,如果存在,則會使用結果來計算最佳記憶體空間的分割方式。
例如,假設 GDI 報告要用於繪製的最佳記憶體數量是 6 MB (包含在 OEMMEMORYUSAGE 結構的 dwMaxBandSize 成員) ,而轉譯外掛程式的 IPrintOemUni::MemoryUsage
方法會傳回 dwFixedMemoryUsage 的零值,而 dwPercentMemoryUsage 則為 50。 50 的值表示 IPrintOemUni::ImageProcessing 方法的輸出位圖會比來源位圖小 50%。 因此,Unidrv 會配置 4 MB 的來源位圖大小,因而造成輸出位圖為 2 MB。
IPrintOemUni::MemoryUsage
如果未提供方法,Unidrv 會將所有最佳可用空間配置給來源位圖。 如果 IPrintOemUni::ImageProcessing 方法在為來源位圖配置的記憶體空間中傳回已處理的點陣圖,則這是可接受的。 不過,如果轉譯外掛程式的 IPrintOemUni::ImageProcessing 方法為目的地位圖配置空間,但未提供 IPrintOemUni::MemoryUsage
方法,結果就是將記憶體配置給位圖比最佳可用大小還要多,可能會導致效能降低。
方法是 IPrintOemUni::MemoryUsage
選擇性的。 如果轉譯外掛程式實作這個方法,外掛程式的 IPrintOemUni::GetImplementedMethod 方法必須在收到 “MemoryUsage” 做為輸入時傳回S_OK。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | prcomoem.h (包含 Prcomoem.h) |