Share via


Funzione type_to_xmit

Gli stub chiamano la funzione type_to_xmit per convertire il tipo presentato dall'applicazione nel tipo trasmesso. La funzione è definita come:

void __RPC_USER <type>_to_xmit ( 
     <type> __RPC_FAR *, <xmit_type> __RPC_FAR *     __RPC_FAR *);

Il primo parametro è un puntatore ai dati dell'applicazione. Il secondo parametro è impostato dalla funzione per puntare ai dati trasmessi. La funzione deve allocare memoria per il tipo trasmesso.

Nell'esempio seguente il client chiama la routine remota con un parametro [in, out] di tipo DOUBLE_LINK_TYPE. Lo stub client chiama la funzione type_to_xmit, qui denominata DOUBLE_LINK_TYPE_to_xmit , per convertire i dati dell'elenco a doppio collegamento in una matrice di dimensioni.

La funzione determina il numero di elementi nell'elenco, alloca una matrice abbastanza grande per contenere tali elementi, quindi copia gli elementi dell'elenco nella matrice. Prima che la funzione restituisca, il secondo parametro , ppArray, è impostato su come puntare alla struttura dei dati appena allocata.

void __RPC_USER DOUBLE_LINK_TYPE_to_xmit ( 
    DOUBLE_LINK_TYPE __RPC_FAR * pList, 
    DOUBLE_XMIT_TYPE __RPC_FAR * __RPC_FAR * ppArray)
{
    short cCount = 0;
    DOUBLE_LINK_TYPE * pHead = pList;  // save pointer to start 
    DOUBLE_XMIT_TYPE * pArray;
 
    /* count the number of elements to allocate memory */
    for (; pList != NULL; pList = pList->pNext)
        cCount++;
 
    /* allocate the memory for the array */
    pArray = (DOUBLE_XMIT_TYPE *) MIDL_user_allocate 
         (sizeof(DOUBLE_XMIT_TYPE) + (cCount * sizeof(short)));
    pArray->sSize = cCount;
 
    /* copy the linked list contents into the array */
    cCount = 0;
    for (i = 0, pList = pHead; pList != NULL; pList = pList->pNext)
        pArray->asNumber[cCount++] = pList->sNumber;
 
    /* return the address of the pointer to the array */
    *ppArray = pArray;
}