local 屬性
[local]屬性會指定介面或函式不是遠端的 MIDL 編譯器。
[
local
[, interface-attribute-list]
]
interface interface-name
{
}
[
object,
uuid(string-uuid),
local [, interface-attribute-list]
]
interface interface-name
{
}
[ local [, function-attribute-list] ] function-declarator ;
-
interface-attribute-list
-
指定套用至整個介面的其他屬性。 屬性 [endpoint]、 [version]和 [pointer_default] 是選擇性的。 當您使用/app_config參數進行編譯時,也可以存在[implicit_handle]或[auto_handle]。 以逗號分隔多個屬性。
-
interface-name
-
指定軟體元件可依此名稱來描述介面。
-
string-uuid
-
指定 Uuidgen 公用程式所產生的 UUID 字串。 如果您未使用 MIDL 編譯器參數 /osf,則可以以引號括住 UUID 字串。
-
function-attribute-list
-
指定套用至函式的零個或多個屬性。 有效的函式屬性為[回呼];指標屬性[ref]、[unique]或[ptr];和使用屬性[string]、[ignore]和[coNtext_handle]。 以逗號分隔多個屬性。
-
function-declarator
-
指定函式的類型規範、函式名稱和參數清單。
[local]屬性可以套用至個別函式或整個介面。
在介面標頭中使用時, [local] 屬性可讓您使用 MIDL 編譯器作為標頭產生器。 編譯器不會為任何函式產生存根,而且不會確保標頭可以傳輸。
對於 RPC 介面, [local] 屬性不能與 [uuid] 屬性同時使用。 [uuid]或[local]必須存在於介面標頭中,而且您選擇的標頭必須剛好發生一次。
若為[object]介面屬性所識別的 COM 介面 () ,即使 [uuid]屬性存在,介面屬性清單也可以包含[local]屬性。
在個別函式中使用時, [local] 屬性會指定不會產生存根的本機程式。 使用 [local] 作為函式屬性是 DCE IDL 的 Microsoft 延伸模組。 因此,當您使用 MIDL /osf 參數進行編譯時,無法使用這個屬性。
請注意,沒有屬性的介面可以匯入基底 IDL 檔案。 不過,介面必須只包含沒有程式的資料類型。 如果介面中甚至包含一個程式,則必須指定本機或 UUID 屬性。
/* IDL file #1 */
[
local
]
interface local_procs
{
void MyLocalProc(void);
}
/* IDL file #2 */
[
object,
uuid(12345678-1234-1234-123456789ABC),
local
]
interface local_object_procs : IUnknown
{
void MyLocalObjectProc(void);
}
/* IDL file #3 */
[
uuid(87654321-1234-1234-123456789ABC)
]
interface mixed_procs
{
[local] void MyLocalProc(void);
HRESULT MyRemoteProc([in] short sParam);
}