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.
Kapcsolódó témakörök