Condividi tramite


Funzione type_UserUnmarshal

La <funzione type>_UserUnmarshal è una funzione helper per gli attributi [ wire_marshal] e [ user_marshal]. Gli stub chiamano questa funzione per annullare i dati del client o del 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 la definizione del tipo userm specificata nella definizione di tipo [wire_marshal] o[user_marshal]. Questo tipo può essere nontransmittable o anche, quando usato con l'attributo [user_marshal] sconosciuto al compilatore MIDL. Il nome del tipo di filo (nome del tipo trasmissibile) non viene usato nel prototipo di funzione. Si noti tuttavia che il tipo di filo definisce il layout del filo per i dati come specificato da OSF DCE.

Il parametro pFlags è un puntatore a un campo di 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 byte e rappresentazioni di 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ò o non essere allineato alla voce. La <funzione type>_UserUnmarshal deve allineare il puntatore del buffer in modo appropriato, annullare ilmarshal i dati e restituire la nuova posizione del buffer, ovvero l'indirizzo del primo byte dopo l'oggetto non allineato.

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

In un ambiente eterogeneo, il motore NDR esegue qualsiasi conversione dei dati necessaria prima di chiamare la <funzione type>_UserUnmarshal . Si noti che il motore NDR esegue questa conversione dei dati in base alla definizione del tipo di filo 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