user_marshal屬性
[ user_marshal] 屬性是類似 [ represent_as] 語法的 ACF 類型屬性。 如同 IDL 屬性 [ wire_marshal],它提供更有效率的方式來封送處理網路上的資料。 作為 ACF 屬性, [user_marshal] 可讓您封送處理 MIDL 未知的自訂資料類型。 每個應用程式特定類型都有一個對應的可傳輸類型,可定義線標記法。
您的應用程式特定類型可以是簡單、複合或指標類型。 主要限制是類型實例必須具有固定且定義完善的記憶體大小。 如果類型實例的大小需要變更,請使用指標欄位,而不是一致陣列。 或者,您可以定義可變更型別的指標。
如同 [wire_marshal] 屬性,您可以提供調整大小、封送處理、取消封送處理和釋放傳遞的常式。 下表描述四個使用者提供的常式名稱。 此 < 類型 > 是[user_marshal]類型定義中指定的 userm類型。
常式傳回的值 | Description |
---|---|
<type > _UserSize | 在用戶端或伺服器端封送處理之前,請先調整 RPC 資料緩衝區的大小。 |
<type > _UserMarshal | 封送處理用戶端或伺服器端上的資料。 |
<type > _UserUnmarshal | 取消封存用戶端或伺服器端的資料。 |
<type > _UserFree | 釋放伺服器端的資料。 |
根據方向屬性,用戶端或伺服器應用程式會提供這些使用者提供的常式。
如果參數只有 [ in] ,用戶端就會傳送至伺服器。 用戶端需要< type > _UserSize和< type > _UserMarshal函式。 伺服器需要< type > _UserUnmarshal和< type > _UserFree函式。
若為 [ out]-only 參數,伺服器會傳送至用戶端。 伺服器需要< 類型_UserSize和類型 > _UserMarshal函式,而用戶端需要< 類型 > _UserMarshal函式。><
相關主題