Condividi tramite


Funzione type_UserUnmarshal

La funzione>_UserUnmarshal di tipo<è una funzione helper per gli attributi [ wire_marshal] e [ user_marshal] . Gli stub chiamano questa funzione per annullare ilmarshal dei dati sul lato client o server. La funzione è definita come:

unsigned char __RPC_FAR * __RPC_USER  <type>_UserUnmarshal(
    unsigned long __RPC_FAR * pFlags,
    unsigned char __RPC_FAR * pBuffer,
    <type>  __RPC_FAR *       pMyObj);

Il tipo <> nel nome della funzione indica il tipo utente specificato nella definizione del tipo [wire_marshal] o [user_marshal]. Questo tipo può essere non trasmettibile o persino, se usato con l'attributo [user_marshal] sconosciuto al compilatore MIDL. Il nome del tipo di filo (il nome del tipo trasmissibile) non viene usato nel prototipo di funzione. Si noti, tuttavia, che il tipo di filo definisce il layout di collegamento per i dati come specificato da OSF DCE.

Il parametro pFlags è un puntatore a un campo flag lungo senza segno. La parola superiore del flag contiene flag di rappresentazione dei dati NDR definiti da OSF DCE per rappresentazioni a virgola mobile, ordine di byte e caratteri. La parola inferiore contiene un flag di contesto di marshalling come definito dal canale COM. Il layout esatto dei flag all'interno del campo è descritto in La funzione type_UserSize.

Il parametro pBuffer è il puntatore del buffer corrente. Questo puntatore può essere allineato o meno alla voce. Il tipo di <>_UserUnmarshal funzione deve allineare il puntatore del buffer in modo appropriato, annullare ilmarsaling dei dati e restituire la nuova posizione del buffer, ovvero l'indirizzo del primo byte dopo l'oggetto non mappato.Your <type>_UserUnmarshal function should align the buffer point in modo appropriato, unmarshal the data, and return the new buffer position, which is the address of the first byte after the unmarshaled object.

Il parametro pMyObj è un puntatore a un oggetto di tipo definito dall'utente.

In un ambiente eterogeneo, il motore NDR esegue qualsiasi conversione dei dati necessaria prima di chiamare il tipo di <funzione>_UserUnmarshal. Si noti che il motore NDR esegue questa conversione dei dati in base alla definizione di tipo wire fornita per questo tipo di dati utente. Il flag indica la rappresentazione dei dati del mittente.

regole di marshalling per user_marshal e wire_marshal

wire_marshal

user_marshal