IPrintCorePS2::GetFeatureAttribute 方法 (prcomoem.h)

方法 IPrintCorePS2::GetFeatureAttribute 會擷取功能屬性清單或特定特徵屬性的值。

語法

HRESULT GetFeatureAttribute(
  [in]  PDEVOBJ pdevobj,
  [in]  DWORD   dwFlags,
  [in]  PCSTR   pszFeatureKeyword,
  [in]  PCSTR   pszAttribute,
  [out] PDWORD  pdwDataType,
  [out] PBYTE   pbData,
  [in]  DWORD   cbSize,
  [out] PDWORD  pcbNeeded
);

參數

[in] pdevobj

DEVOBJ 結構的指標。

[in] dwFlags

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

[in] pszFeatureKeyword

呼叫端提供的緩衝區指標,其中包含指定要查詢之單一功能關鍵詞的 ASCII 字串。 此值可從 先前呼叫 IPrintCorePS2::EnumFeatures 取得。

[in] pszAttribute

呼叫端提供的緩衝區指標,其中包含指定所要求之單一屬性的 ASCII 字串。 如果此參數為 NULL,呼叫端會要求所有支援的功能屬性名稱清單,而不是指定特定的特徵屬性名稱。

[out] pdwDataType

接收指定所要求屬性數據類型之值的記憶體位置指標。 這個值是 EATTRIBUTE_DATATYPE 列舉的列舉值,定義於 printoem.h 中。

[out] pbData

呼叫端提供的緩衝區指標,該緩衝區會接收要求的數據。 只要查詢滿足要求所需的位元組數目,請將此參數設定為 NULL

[in] cbSize

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

[out] pcbNeeded

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

傳回值

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

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

已呼叫 方法, 並將 pbData 設定為 NULL

E_INVALIDARG
方法嘗試查詢不存在的屬性。

無法辨識功能關鍵詞。

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

E_FAIL
方法失敗。

備註

如果使用其 pszAttributepbData 參數設定為 NULL 呼叫這個方法,則方法會傳回 ,並將 *bsNeeded 設定為功能所有支援屬性名稱清單所需的位元組數目。 如果第二次呼叫方法,並將 pszAttribute 設定為 NULL 且 pbData 指向上一次呼叫中指定之大小緩衝區的 pbData,則方法會傳回將 *pdwDataType 設定為 kADT_ASCII (列举型别的列举 EATTRIBUTE_DATATYPE值,) ,而 pbData 指向功能所有支援屬性名稱的 Null 分隔清單。 此清單會以兩個 Null 字元終止。

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

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

如需詳細資訊,請參閱 使用 GetFeatureAttribute

規格需求

需求
目標平台 桌面
標頭 prcomoem.h (包含 Prcomoem.h)

另請參閱

DEVOBJ

IPrintCorePS2

IPrintCorePS2::EnumFeatures

IPrintCorePS2::GetGlobalAttribute

IPrintCorePS2::GetOptionAttribute