Enumerazione MSHLFLAGS (wtypesbase.h)

Specifica il motivo per cui deve essere eseguito il marshalling.

Sintassi

typedef enum tagMSHLFLAGS {
  MSHLFLAGS_NORMAL = 0,
  MSHLFLAGS_TABLESTRONG = 1,
  MSHLFLAGS_TABLEWEAK = 2,
  MSHLFLAGS_NOPING = 4,
  MSHLFLAGS_RESERVED1 = 8,
  MSHLFLAGS_RESERVED2 = 16,
  MSHLFLAGS_RESERVED3 = 32,
  MSHLFLAGS_RESERVED4 = 64
} MSHLFLAGS;

Costanti

 
MSHLFLAGS_NORMAL
Valore: 0
Il marshalling si verifica perché un puntatore all'interfaccia viene passato da un processo a un altro. Questo è il caso normale. Il pacchetto di dati prodotto dal processo di marshalling verrà scollegato nel processo di destinazione. Il pacchetto di dati di cui è stato eseguito il marshalling può essere scollegato una sola volta o non affatto. Se il ricevitore annulla correttamente il pacchetto di dati, la funzione CoReleaseMarshalData viene chiamata automaticamente sul pacchetto di dati come parte del processo di annullamento delmarshaling. Se il ricevitore non riesce o non può annullare il trasferimento del pacchetto di dati, il mittente deve chiamare CoReleaseMarshalData sul pacchetto di dati.
MSHLFLAGS_TABLESTRONG
Valore: 1
Il marshalling si verifica perché il pacchetto di dati deve essere archiviato in una tabella accessibile a livello globale da cui può essere scollegato una o più volte o non affatto. La presenza del pacchetto di dati nella tabella viene conteggiata come un riferimento sicuro all'interfaccia di cui viene eseguito il marshalling, ovvero è sufficiente mantenere attivo l'oggetto. Quando il pacchetto di dati viene rimosso dalla tabella, l'implementatore della tabella deve chiamare la funzione CoReleaseMarshalData sul pacchetto di dati.

MSHLFLAGS_TABLESTRONG viene usato dalla funzione RegisterDragDrop durante la registrazione di una finestra come destinazione di rilascio. In questo modo la finestra viene registrata come destinazione di rilascio indipendentemente dal numero di trascinamento dell'utente finale nella finestra. La funzione RevokeDragDrop chiama CoReleaseMarshalData.
MSHLFLAGS_TABLEWEAK
Valore: 2
Il marshalling si verifica perché il pacchetto di dati deve essere archiviato in una tabella accessibile a livello globale da cui può essere scollegato una o più volte o non affatto. Tuttavia, la presenza del pacchetto di dati nella tabella funge da riferimento debole all'interfaccia sottoposta a marshalling, ovvero non è sufficiente mantenere attivo l'oggetto. Quando il pacchetto di dati viene rimosso dalla tabella, l'implementatore della tabella deve chiamare la funzione CoReleaseMarshalData sul pacchetto di dati.

MSHLFLAGS_TABLEWEAK viene in genere utilizzato durante la registrazione di un oggetto nella tabella di oggetti in esecuzione (ROT). Ciò impedisce alla voce dell'oggetto nel rot di mantenere attivo l'oggetto in assenza di altre connessioni. Per altre informazioni , vedere IRunningObjectTable::Register .
MSHLFLAGS_NOPING
Valore: 4
L'aggiunta di questo flag a un marshalling di oggetti originale (anziché il marshalling di un proxy) disabiliterà il protocollo ping per tale oggetto.
MSHLFLAGS_RESERVED1
Valore: 8
MSHLFLAGS_RESERVED2
Valore: 16
MSHLFLAGS_RESERVED3
Valore: 32
MSHLFLAGS_RESERVED4
Valore: 64

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Intestazione wtypesbase.h (include WTypes.h)

Vedi anche

CoGetStandardMarshal

CoMarshalInterface

ICallFrame

IMarshal