DEVPROP_TYPE_STRING_INDIRECT

DEVPROP_TYPE_STRING_INDIRECT 識別碼代表包含間接字串參考的 NULL 終止 Unicode 字串的基底資料型別識別碼。

Remarks

間接字串參考描述包含實際字串的字串資源。 間接字串參考可出現於以下格式之一:

@[路徑\]檔案名稱,-ResourceID
Windows 會從路由與 FileName 條目指定的模組中擷取字串,而該字串的資源識別碼則由 ResourceID 條目提供(不含必要的負號)。 字串資源會從模組資源區段載入,該區段最符合呼叫者偏好的 UI 語言之一。 路徑輸入是可選的。 如果你指定 路徑 條目,該模組必須位於系統定義的搜尋路徑中的目錄中。

@ InfName,%strkey%
Windows 從 %SystemRoot%\inf 目錄中 INF 字串區段擷取字串,該目錄名稱由 InfName 條目提供。 strkey 標記識別碼應與字串區塊中最符合呼叫者偏好的 UI 語言之一的行鍵相符。 若不存在語言專屬的字串區塊,Windows 則使用預設的字串區塊。

你不能將DEVPROP_TYPE_STRING_INDIRECT與任何屬性資料類型修飾符結合。

設定此類屬性

要設定一個基本資料型態為DEVPROP_TYPE_STRING_INDIRECT的屬性,請呼叫對應的 SetupDiSetXxx 屬性函式,並將函式輸入參數設為以下:

  • 將 PropertyType 參數設為 DEVPROP_TYPE_STRING_INDIRECT。

  • 將 PropertyBuffer 參數設為指向包含 NULL 終止字串的緩衝區的指標,該字串提供間接字串參考。

  • 將 PropertyBufferSize 參數設為字串的大小(以位元組為單位)。

  • 根據適當的方式,設定剩餘的函式參數以設定該性質。

取得此類型房產的價值

當應用程式呼叫 SetupDiGetXxx 屬性函式來取得該基礎資料型態屬性的值時,Windows 會嘗試定位該屬性所參考的實際字串。 如果Windows能取得實際字串,就會將實際字串回傳給呼叫者,並將所取得屬性的基底資料型態識別為DEVPROP_TYPE_STRING。 否則,Windows 會回傳間接字串參考,並將所檢索屬性的基底資料型態識別為 DEVPROP_TYPE_STRING_INDIRECT。

靜態文字在地化

從 Windows Vista 開始,你可以利用 PE 影像的字串或資源表中的資源,將自訂及標準字串類型的 PnP 靜態文字屬性設定為 DEVPROP_TYPE_STRING_INDIRECT。 你也可以加入非本地化的替換字串資料,這些資料可以格式化成靜態文字。

位於 PE 映像檔 STRINGTABLE 資源中的字串(通常由 LoadString 執行)應使用以下格式:

“@”System32\mydll.dll,-21[;備用「弦」

「@System32\mydll.dll,-21[;備用弦 %1、 %2、... %n[;(Arg1,Arg2,...,ArgN)]]」

位於 PE 映像檔訊息表資源中的字串(通常由 RtlFindMessage 執行,驅動程式中更常用)應使用以下格式:

「@System32\drivers\mydriver.sys,#21[;備用字串]」

「@System32\drivers\mydriver.sys,#21[;備用弦 %1、 %2、... %n[;(Arg1,Arg2,...,ArgN)]]」

「備用字串」是可選的,但很有用,因為如果找不到或載入資源,可以回傳它。 回退字串也會回傳給非互動式系統程序,這些程序不會冒充使用者,因此無法向使用者顯示在地化文字。

此技術能讓你在地化從字串或訊息表資源中擷取的靜態文字,並最符合呼叫者所在位置。

Windows 會在從相應資源表擷取後續參數時,將後方參數格式化成字串(或備用字串),方式與 RtlFormatMessage 類似。

自訂且標準的字串型 PnP 靜態文字會在設定屬性時被本地化,方法是從執行設定操作的元件載入資源,這通常在系統層級元件的預設區域下進行。

注意:PE 映像檔可使用資源表類型(STRINGTABLE 資源或訊息表資源)。

Requirements

Version

Windows Vista 及後續版本的 Windows。

頁首

Devpropdef.h(包含 Devpropdef.h)

也請參閱

DEVPROP_TYPE_STRING