Share via


程式序列化

當您使用程式序列化時,程式會加上 [編碼] 或 [解碼] 屬性的標籤。 編譯器會產生常式的序列化存根,而不是產生一般的遠端存根。

就像遠端程式必須使用系結控制碼進行遠端呼叫一樣,序列化程式必須使用序列化控制碼來使用序列化服務。 如果未指定序列化控制碼,則會使用預設隱含控制碼來指示呼叫。 另一方面,如果指定序列化控制碼,可以是常式的明確 handle_t 引數,或使用 [explicit_handle] 屬性,您必須傳遞有效的控制碼做為呼叫的引數。 如需如何建立有效序列化控制碼的其他資訊,請參閱 序列化控制碼固定緩衝區編碼範例累加編碼範例

注意

Microsoft RPC 允許在一個介面中混合遠端和序列化程式。 不過,請在這樣做時小心。

對於具有隱含系結控制碼的遠端程式,MIDL 編譯器會產生類型 為 handle_t的全域控制碼變數。 具有隱含序列化控制碼的程式和類型會使用相同的全域控制碼變數。

對於隱含控制碼,全域隱含控制碼必須在遠端呼叫之前設定為有效的系結控制碼。 在序列化呼叫之前,隱含控制碼必須設定為有效的序列化控制碼。 因此,程式不能同時為遠端和序列化。 它必須是其中一個或另一個。