DEVPROP_TYPE_STRING_INDIRECT
DEVPROP_TYPE_STRING_INDIRECT識別碼代表包含間接字串參考之 Null 終止 Unicode 字串的基底資料類型識別碼。
備註
間接字串參考描述包含實際字串的字串資源。 間接字串參考可以以下列其中一種格式顯示:
@[path\ ]FileName,-ResourceID
Windows 會從 path 和 FileName 專案指定的模組中擷取字串,而該字串的資源識別碼是由 ResourceID 專案提供, (排除必要的減號) 。 字串資源會從模組資源區段載入,最符合呼叫端慣用的 UI 語言之一。
路徑專案是選擇性的。 如果您指定 路徑 專案,模組必須位於系統定義搜尋路徑中的目錄中。
@
InfName,%strkey%
Windows 會從 %SystemRoot%\inf目錄中 INF 檔案的 INF字串區段擷取字串,其名稱是由InfName專案提供。
strkey權杖識別碼應該符合Strings區段中最符合其中一個呼叫端慣用 UI 語言的行索引鍵。 如果沒有語言特定的 Strings 區段存在,Windows 會使用預設 的 Strings 區 段。
您無法將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 資源,或訊息資料表資源) 。
規格需求
版本 |
Windows Vista 和更新版本的 Windows。 |
標頭 |
Devpropdef.h (包含 Devpropdef.h) |