共用方式為


IPrintCorePS2::GetOptions 方法 (prcomoem.h)

IPrintCorePS2::GetOptions 方法會以功能/選項關鍵片語清單的格式擷取驅動程式目前的功能設定。

語法

HRESULT GetOptions(
  [in]  PDEVOBJ pdevobj,
  [in]  DWORD   dwFlags,
  [in]  PCZZSTR pmszFeaturesRequested,
  [in]  DWORD   cbIn,
  [out] PZZSTR  pmszFeatureOptionBuf,
  [in]  DWORD   cbSize,
  [out] PDWORD  pcbNeeded
);

參數

[in] pdevobj

DEVOBJ 結構的指標。

[in] dwFlags

已保留 ,且必須設定為零。

[in] pmszFeaturesRequested

呼叫端提供的緩衝區指標,其中包含要求其設定的功能關鍵詞清單(MULTI_SZ格式)。 將此參數設定為 NULL,以取得所有功能的設定。

[in] cbIn

指定 pmszFeaturesRequested所指向之緩衝區的大小,以位元組為單位。 大小包含最後一個MULTI_SZ null 字元。

[out] pmszFeatureOptionBuf

呼叫端提供的緩衝區指標,接收從驅動程式設定取得的功能/選項關鍵片語清單(MULTI_SZ格式)。 每個功能/選項關鍵片語都包含功能關鍵詞名稱、Null 字元、選項關鍵詞名稱,以及另一個 Null 字元。 清單會以兩個NULL 字元終止。

[in] cbSize

指定 pmszFeatureOptionBuf 所指向之緩衝區的大小,以位元組為單位。

[out] pcbNeeded

記憶體位置的指標,該位置會接收所要求數據的實際大小,以位元組為單位。

傳回值

方法必須傳回下列其中一個值。

傳回碼 描述
S_OK
方法成功。
E_OUTOFMEMORY
cbSize 中的值小於要寫入輸出緩衝區的位元組數目(pmszFeatureOptionBuf所指向的緩衝區)。

呼叫 方法時,pmszFeatureOptionBuf 設定為 NULL

E_INVALIDARG
已提供輸入緩衝區(pmszFeaturesRequested所指向的緩衝區,但其內容不是MULTI_SZ格式。

pdevobj 參數指向無效的驅動程序內容物件。

E_NOTIMPL
不支援方法。
E_FAIL
方法失敗。

言論

此方法同時支援 檔黏性印表機黏 功能。 只有在核心驅動程式完成其 DrvEnablePDEV 處理之後,才會支援它,這會設定所有選項設定。 不支援時 IPrintCorePS2::GetOptions 的呼叫應該會導致傳回E_NOTIMPL。 例如,當核心驅動程式呼叫轉譯外掛程式的 IPrintOemPS::EnablePDEV 方法時, 驅動程式仍會佔用其 DrvEnablePDEV 處理,因此,如果外掛程式在外掛程式的 IPrintOemPS::D evMode 方法內 IPrintCorePS2::GetOptions 呼叫外掛程式,外掛程式就會接收E_NOTIMPL傳回值。 不過,由於外掛程式的 IPrintOemPS::EnablePDEV 方法會在核心驅動程式完成其 DrvEnablePDEV 處理之後呼叫,外掛程式可以在其 IPrintOemPS::EnablePDEV 方法內成功呼叫 IPrintCorePS2::GetOptions

如果無法辨識要求的功能關鍵詞,或辨識特徵,但目前沒有選項選取,則會忽略此功能,而且不會將功能/選項關鍵詞組放在輸出緩衝區中。

若要減少每次數據存取兩次呼叫的需求,請傳遞固定大小的輸出緩衝區 (例如 1 KB),然後檢查函式傳回值。 如果方法傳回S_OK,則緩衝區已經包含感興趣的數據。 如果方法傳回E_OUTOFMEMORY,* 中的值就是保存感興趣數據的緩衝區大小。 接著,呼叫端應該配置大小較大的緩衝區,然後繼續進行方法的第二次呼叫。

任何 Pscript5 轉譯外掛程式都支援此方法。

如需詳細資訊,請參閱 使用 GetOptions 和 SetOptions

要求

要求 價值
目標平臺 桌面
標頭 prcomoem.h (include Prcomoem.h)

另請參閱

DEVOBJ

DrvEnablePDEV

IPrintCorePS2

IPrintOemPS::D evMode

IPrintOemPS::EnablePDEV