handle 屬性

[handle] 屬性會指定使用者定義的或「自訂」句類型。

typedef [handle] typename;  
handle_t __RPC_USER typename_bind (typename);
void __RPC_USER typename_unbind (typename, handle_t);

參數

typename

指定使用者定義系結控制碼類型的名稱。

備註

使用者定義的控制碼可讓開發人員設計對應用程式有意義的控制碼。 使用者定義控制碼只能在類型宣告中定義,而不能定義在函式宣告子中。

[handle] 屬性所定義之型別的參數可用來判斷呼叫的系結,並傳輸至呼叫的程式。

使用者必須提供系結和解除系結常式,才能在基本型別和使用者定義控制碼類型之間轉換。 假設使用者定義 typename類型的控制碼,使用者必須提供常式 typename_bindtypename_unbind。 例如,如果使用者定義控制碼類型命名為 MYHANDLE,則常式會命名為 MYHANDLE_bind 和 MYHANDLE_unbind

如果成功, typename_bind 常式應該會傳回有效的基本系結控制碼。 如果失敗,常式應該會傳回 Null。 如果常式傳回 Null,將不會呼叫 typename_unbind 常式。 如果系結常式傳回不正確系結控制碼與 Null不同,則存根行為是未定義的。

當遠端程式具有使用者定義控制碼做為參數或隱含控制碼時,用戶端存根會在呼叫遠端程式之前呼叫系結常式。 用戶端存根會在遠端呼叫之後呼叫解除系結常式。

在 DCE IDL 中,具有 [handle] 屬性的參數必須顯示為遠端程式引數清單中的第一個參數。 後續參數,包括其他 [handle] 屬性,會被視為一般參數。 Microsoft 支援 DCE IDL 的延伸模組,可讓使用者定義 [handle] 參數出現在第一個參數以外的位置。

範例

typedef [handle] struct 
{ 
    char machine[8]; 
    char nmpipe[256]; 
} h_service; 
 
handle_t __RPC_USER h_service_bind(h_service); 
void __RPC_USER h_service_unbind(h_service, handle_t);

另請參閱

系結和控制碼

介面定義 (IDL) 檔案

implicit_handle

typedef