represent_as 屬性
[represent_as] ACF 屬性會將目的語言repr-type中的具名本機類型與用戶端與伺服器之間傳輸的傳輸類型具名類型產生關聯。
typedef [represent_as(repr-type) [[ , type-attribute-list ]] ] named-type;
void __RPC_USER named-type_from_local (
repr-type __RPC_FAR * ,
named-type __RPC_FAR * __RPC_FAR * );
void __RPC_USER named-type_to_local (
named-type __RPC_FAR * ,
repr-type __RPC_FAR * ); void __RPC_USER named-type _free_inst ( named-type __RPC_FAR * ); void __RPC_USER named-type _free_local ( repr-type __RPC_FAR * );
-
named-type
-
指定用戶端與伺服器之間傳輸的具名傳輸資料類型。
-
type-attribute-list
-
指定套用至類型的一或多個屬性。 以逗號分隔多個屬性。
-
repr-type
-
以向用戶端和伺服器應用程式呈現的目的語言,指定表示的本機類型。
使用 [represent_as]時,您必須提供在本機和傳輸類型之間轉換的常式,以及用來保存已轉換資料的可用記憶體。 [represent_as]屬性會指示存根呼叫使用者提供的轉換常式。
傳送 的具名類型 類型必須解析為 MIDL 基底類型、預先定義的類型,或解析為類型識別碼。 如需詳細資訊,請參閱 MIDL 基底類型。
您必須提供下列常式:
常式名稱 | Description |
---|---|
named_type**_from_local** | 將資料從本機類型轉換成網路類型。 常式會配置網路資料類型的記憶體,包括網路資料類型中指標所參考之任何資料的記憶體。 |
named_type**_to_local** | 將資料從網路類型轉換成本機類型。 常式負責配置記憶體,以取得本機類型指標所參考的資料。 RPC 會配置本機類型本身的記憶體。 |
named_type**_free_local** | 釋放配置給本機類型中指標所參考資料的記憶體。 RPC 會釋放類型本身的記憶體 |
named_type**_free_inst** | 釋放配置給網路類型中指標所參考之資料的記憶體,以及針對網路類型本身所參考的資料。 |
用戶端存根會呼叫 named-type**_from_local** 來配置傳輸類型的空間,並將資料從本機類型轉譯為網路類型。 伺服器存根會配置原始資料類型的空間,並呼叫 具名類型**_to_local** ,將資料從網路類型轉譯為本機類型。
從應用程式程式碼傳回時,用戶端和伺服器存根會呼叫 具名類型**_free_inst** 來解除配置網路類型的儲存體。 用戶端存根會呼叫 named-type**_free_local** 來解除配置常式傳回的儲存體。
下列類型不能有 [represent_as] 屬性:
- 一致性、不同或一致性變化陣列
- 最後一個成員是一個一致性陣列的結構, (一致性結構)
- 包含指標的指標或類型
- 包含管道的管道或類型
- 做為管道基底類型的類型
- 預先定義的類型 handle_tvoid
- 具有[handle] 屬性的類型
//these data types defined in .IDL or elsewhere
typedef struct _lbox
{
long data;
struct _lbox *next;
} lbox;
typedef [ref] lbox *PBOX_LOC;
typedef long LONG4[4];
//in .ACF file :
interface iface
{
typedef [ represent_as(PBOX_LOC) ] LONG4;
}