共用方式為


wire_marshal屬性

[ wire_marshal] 屬性是類似 [ transmit_as] 語法的 IDL 類型屬性,但提供更有效率的方式來封送處理網路上的資料。

您可以使用 [wire_marshal] 屬性來指定將傳輸以取代應用程式特定資料類型的資料類型。 每個應用程式特定類型都有對應的可傳輸類型,定義網路) 上所使用的標記法 (線標記法。應用程式特定類型不需要可傳輸,但必須是 MIDL 可辨識的類型。 若要封送處理 MIDL 未知的類型,請使用 ACF 屬性 [ user_marshal]。

您的應用程式特定類型可以是簡單、複合或指標類型。 主要限制是類型實例必須具有固定且定義完善的記憶體大小。 如果類型實例的大小需要變更,請使用指標欄位,而不是一致陣列。 或者,您可以定義可變更類型的指標。

您必須提供調整大小、封送處理和取消封送處理資料的常式,以及釋放相關聯的記憶體。 下表描述四個使用者提供的常式名稱。 類型 <> 是 [wire_marshal] 類型定義中指定的 userm 類型。

常式傳回的值 描述
<type > _UserSize 在用戶端或伺服器端封送處理之前,調整 RPC 資料緩衝區的大小。
<type > _UserMarshal 封送處理用戶端或伺服器端的資料。
<type > _UserUnmarshal 取消封存用戶端或伺服器端的資料。
<type > _UserFree 釋放伺服器端的資料。

 

這些程式設計人員提供的常式是由用戶端或伺服器應用程式根據方向屬性提供。

如果參數只有 [ in] ,用戶端就會傳輸至伺服器。 用戶端需要< type_UserSize 和 >< type > _UserMarshal函式。 伺服器需要< type_UserUnmarshal 和 >< type > _UserFree函式。

若為 [ out]-only 參數,伺服器會傳送至用戶端。 伺服器需要< type_UserSize 和 type >_UserMarshal 函式,而用戶端則需要< 類型 > _UserMarshal函式。><

user_marshal屬性

封送處理user_marshal和wire_marshal規則

wire_marshal

user_marshal

NdrGetUserMarshalInfo