callback 屬性
[callback]屬性會宣告存在於分散式應用程式用戶端上的靜態回呼函式。 回呼函式提供一種方式,讓伺服器在用戶端上執行程式碼。
[callback [ , function-attr-list] ] type-specifier [ptr-declarator] function-name(
[ [attribute-list] ] type-specifier [declarator]
, ...);
-
function-attr-list
-
指定套用至函式的零個或多個屬性。 有效的函式屬性為[local];指標屬性[ref]、[unique]或[ptr];和使用方式屬性[string]、[ignore]和[coNtext_handle]。 以逗號分隔多個屬性。
-
type-specifier
-
指定 base_type、 結構、 等位、 列舉 類型或類型識別碼。 選擇性的儲存體規格可以在 type-specifier之前。
-
ptr-declarator
-
指定零個或多個指標宣告子。 指標宣告子與 C 中使用的指標宣告子相同;它是從 * 指示項、 遠方修飾詞和限定詞 const所建構。
-
function-name
-
指定遠端程式的名稱。
-
attribute-list
-
指定零個或多個方向屬性、欄位屬性、使用方式屬性,以及適用于指定參數類型的指標屬性。 以逗號分隔多個屬性。
-
宣告子
-
指定標準 C 宣告子,例如識別碼、指標宣告子和陣列宣告子。 如需詳細資訊,請參閱 陣列和Sized-Pointer屬性、 陣列和 陣列和指標。 參數名稱識別碼是選擇性的。
當伺服器必須從用戶端取得資訊時 ,[回呼] 函式很有用。 如果 Windows 3 支援伺服器應用程式。x,伺服器可以呼叫 Windows 3 上的遠端程式。x 伺服器以取得所需的資訊。 回呼函式會完成相同的用途,並讓伺服器查詢用戶端以取得原始呼叫內容中的資訊。
回呼是遠端呼叫的特殊案例,會在單一執行緒中執行。 回呼會在遠端呼叫的內容中發出。 任何定義為靜態回呼函式之介面一部分的遠端程式都可以呼叫回呼函式。
請務必注意,在多執行緒程式設計中不建議使用 [callback]。 作為單一線程程式設計函式,它無法支援多執行緒環境提供的安全性需求。
RpcCancelThread函式無法用來取消可能會分派靜態回呼的呼叫。 如果特定的遠端程序呼叫永遠不會產生回呼,則可以取消它。 否則,只有在可以保證尚未發出其回呼時,才能取消呼叫。
只有連線導向和本機通訊協定序列支援回呼屬性。 透過本機通訊協定序列回呼的 [out] 資料大小限制為 150 個位元組。 如果 RPC 介面使用無連接 (資料包) 通訊協定順序,則呼叫具有回呼屬性的程式將會失敗。
控制碼不能當做回呼函式中的參數使用。 因為回呼一律會在呼叫的內容中執行,所以用戶端用來呼叫伺服器的系結控制碼也會當做從伺服器到用戶端的系結控制碼使用。
回呼可以巢狀至任何深度。
[callback] HRESULT DisplayString([in, string] char * p1);