Enumeração MSHLFLAGS (wtypesbase.h)

Especifica por que o marshaling deve ser feito.

Syntax

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;

Constantes

 
MSHLFLAGS_NORMAL
Valor: 0
O marshaling está ocorrendo porque um ponteiro de interface está sendo passado de um processo para outro. Esse é o caso normal. O pacote de dados produzido pelo processo de marshaling não será gravado no processo de destino. O pacote de dados marshaled pode ser desmarcado apenas uma vez ou não. Se o receptor desmarcar o pacote de dados com êxito, a função CoReleaseMarshalData será chamada automaticamente no pacote de dados como parte do processo de unmarshaling. Se o receptor não fizer ou não puder desmarcar o pacote de dados, o remetente deverá chamar CoReleaseMarshalData no pacote de dados.
MSHLFLAGS_TABLESTRONG
Valor: 1
O marshaling está ocorrendo porque o pacote de dados deve ser armazenado em uma tabela acessível globalmente da qual ele pode ser desmarcando uma ou mais vezes ou não. A presença do pacote de dados na tabela conta como uma forte referência à interface que está sendo empacotada, o que significa que é suficiente manter o objeto ativo. Quando o pacote de dados é removido da tabela, o implementador de tabela deve chamar a função CoReleaseMarshalData no pacote de dados.

MSHLFLAGS_TABLESTRONG é usado pela função RegisterDragDrop ao registrar uma janela como um destino de soltar. Isso mantém a janela registrada como um destino de soltar, independentemente de quantas vezes o usuário final arrasta pela janela. A função RevokeDragDrop chama CoReleaseMarshalData.
MSHLFLAGS_TABLEWEAK
Valor: 2
O marshaling está ocorrendo porque o pacote de dados deve ser armazenado em uma tabela acessível globalmente da qual ele pode ser desmarcando uma ou mais vezes ou não. No entanto, a presença do pacote de dados na tabela atua como uma referência fraca à interface que está sendo marshalada, o que significa que não é suficiente manter o objeto ativo. Quando o pacote de dados é removido da tabela, o implementador de tabela deve chamar a função CoReleaseMarshalData no pacote de dados.

MSHLFLAGS_TABLEWEAK normalmente é usado ao registrar um objeto na ROT (tabela de objetos em execução). Isso impede que a entrada do objeto no ROT mantenha o objeto ativo na ausência de outras conexões. Consulte IRunningObjectTable::Register para obter mais informações.
MSHLFLAGS_NOPING
Valor: 4
Adicionar esse sinalizador a um marshaling de objeto original (em vez de realizar marshaling de um proxy) desabilitará o protocolo de ping para esse objeto.
MSHLFLAGS_RESERVED1
Valor: 8
MSHLFLAGS_RESERVED2
Valor: 16
MSHLFLAGS_RESERVED3
Valor: 32
MSHLFLAGS_RESERVED4
Valor: 64

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho wtypesbase.h (inclua WTypes.h)

Confira também

Cogetstandardmarshal

Comarshalinterface

ICallFrame

IMarshal