Sdílet prostřednictvím


Atribut user_marshal

Atribut [ user_marshal] je atribut typu ACF podobný syntaxi jako [ represent_as]. Stejně jako u atributu IDL nabízí [ wire_marshal], efektivnější způsob, jak zařazovat data v síti. Jako atribut ACF vám [user_marshal] umožňuje zařazovat vlastní datové typy, které nejsou pro MIDL neznámé. Každý typ specifický pro aplikaci má odpovídající přenositelný typ, který definuje reprezentaci drátu.

Typ specifický pro vaši aplikaci může být jednoduchý, složený nebo ukazatel. Hlavním omezením je, že instance typu musí mít pevnou, dobře definovanou velikost paměti. Pokud je potřeba změnit velikost instance typu, použijte místo odpovídajícího pole pole ukazatel. Případně můžete definovat ukazatel na změnitelný typ.

Stejně jako u atributu [wire_marshal] zadáte rutiny pro změnu velikosti, zařazování, nezařazování a uvolnění průchodů. Následující tabulka popisuje čtyři uživatelsky zadané názvy rutin. Typ <> je typuživatele zadaný v definici typu [user_marshal].

Rutina Popis
<typ>_UserSize Velikost vyrovnávací paměti dat RPC před zařazením na straně klienta nebo serveru.
typ <>_UserMarshal Zařadí data na straně klienta nebo serveru.
typ <>_UserUnmarshal Rozbalí data na straně klienta nebo serveru.
typ <>_UserFree Uvolní data na straně serveru.

 

Tyto rutiny poskytované uživatelem poskytují klient nebo serverová aplikace na základě směrových atributů.

Pokud je parametr pouze [ v], klient se odešle na server. Klient potřebuje <typ>_UserSize a <>_UserMarshal funkce. Server potřebuje <typ>_UserUnmarshal a <>_UserFree funkce.

Pro parametr [out]-only server přenese do klienta. Server potřebuje <typ>_UserSize a <>_UserMarshal funkce, zatímco klient potřebuje <typ>_UserMarshal funkce.

atributu wire_marshal

pravidla zařazování pro zařazování uživatelů a wire_marshal

user_marshal

wire_marshal

NdrGetUserMarshalInfo