Megosztás a következőn keresztül:


A wire_marshal attribútum

A [wire_marshal] attribútum egy olyan IDL-típusú attribútum, amely a [ transmit_as] szintaxisához hasonló, de hatékonyabb módot kínál az adatok hálózaton keresztüli biztosítására.

A [wire_marshal] attribútummal megadhatja az alkalmazásspecifikus adattípus helyett továbbítandó adattípust. Minden alkalmazásspecifikus típus rendelkezik egy megfelelő továbbítható típussal, amely meghatározza a vezetékképet (a hálózaton használt ábrázolás). Az alkalmazásspecifikus típusnak nem kell továbbíthatónak lennie, de a MIDL által felismert típusnak kell lennie. A MIDL számára ismeretlen típust az [ user_marshal] ACF attribútummal lehet létrehozni.

Az alkalmazásspecifikus típus lehet egyszerű, összetett vagy mutató típusú. A fő korlátozás az, hogy a típuspéldánynak rögzített, jól definiált memóriaméretet kell tartalmaznia. Ha a típuspéldány méretét módosítani kell, a megfelelő tömb helyett használjon mutatómezőt. Másik lehetőségként megadhat egy mutatót a módosítható típusra.

Meg kell adnia az adatok méretezéséhez, tárolásához és leválasztásához, valamint a kapcsolódó memória felszabadításához szükséges rutinokat. Az alábbi táblázat a felhasználó által megadott rutinneveket ismerteti. A <típus> a [wire_marshal] típusdefinícióban megadott felhasználótípus.

Rutin Leírás
<típus>_UserSize Méretezi az RPC-adatpuffert, mielőtt az ügyfél- vagy kiszolgálóoldalon üzembe helyezésekor sorba áll.
<típus>_UserMarshal Az ügyfél- vagy kiszolgálóoldalon rögzíti az adatokat.
<típus>_UserUnmarshal Az ügyfél- vagy kiszolgálóoldalon lévő adatok leválasztása.
<típus>_UserFree Felszabadítja az adatokat a kiszolgáló oldalán.

 

Ezeket a programozó által biztosított rutinokat az ügyfél vagy a kiszolgálóalkalmazás biztosítja az irányattribútumok alapján.

Ha a paraméter csak [] fájlban található, az ügyfél továbbítja a kiszolgálónak. Az ügyfélnek szüksége van a <típusra>_UserSize és <>_UserMarshal függvények típusára. A kiszolgálónak szüksége van a <típusra>_UserUnmarshal, <pedig>_UserFree függvényeket.

A [ki]-only paraméter esetén a kiszolgáló továbbítja az ügyfelet. A kiszolgálónak szüksége van a <típusra>_UserSize és <>_UserMarshal függvények típusára, míg az ügyfélnek <>_UserMarshal függvényre van szüksége.

A user_marshal attribútum

marshaling rules for user_marshal and wire_marshal

wire_marshal

user_marshal

NdrGetUserMarshalInfo