Enumeración MSHLFLAGS (wtypesbase.h)

Especifica por qué se va a realizar la serialización.

Sintaxis

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
La serialización se está produciendo porque se pasa un puntero de interfaz de un proceso a otro. Este es el caso normal. El paquete de datos generado por el proceso de serialización se desmarizará en el proceso de destino. El paquete de datos serializado se puede desmarizar una sola vez o no en absoluto. Si el receptor anula la firma del paquete de datos correctamente, se llama automáticamente a la función CoReleaseMarshalData en el paquete de datos como parte del proceso de desenlazamiento. Si el receptor no puede o no desenlazar el paquete de datos, el remitente debe llamar a CoReleaseMarshalData en el paquete de datos.
MSHLFLAGS_TABLESTRONG
Valor: 1
La serialización se está produciendo porque el paquete de datos se va a almacenar en una tabla accesible globalmente desde la que se puede desmarizar una o varias veces, o no en absoluto. La presencia del paquete de datos en la tabla cuenta como una referencia segura a la interfaz que se serializa, lo que significa que es suficiente mantener activo el objeto. Cuando se quita el paquete de datos de la tabla, el implementador de tabla debe llamar a la función CoReleaseMarshalData en el paquete de datos.

la función RegisterDragDrop usa MSHLFLAGS_TABLESTRONG al registrar una ventana como destino de colocación. Esto mantiene la ventana registrada como destino de colocación independientemente del número de veces que el usuario final arrastre a través de la ventana. La función RevokeDragDrop llama a CoReleaseMarshalData.
MSHLFLAGS_TABLEWEAK
Valor: 2
La serialización se está produciendo porque el paquete de datos se va a almacenar en una tabla accesible globalmente desde la que se puede desmarizar una o varias veces, o no en absoluto. Sin embargo, la presencia del paquete de datos en la tabla actúa como una referencia débil a la interfaz que se serializa, lo que significa que no es suficiente mantener activo el objeto. Cuando se quita el paquete de datos de la tabla, el implementador de tabla debe llamar a la función CoReleaseMarshalData en el paquete de datos.

MSHLFLAGS_TABLEWEAK se usa normalmente al registrar un objeto en la tabla de objetos en ejecución (ROT). Esto impide que la entrada del objeto en el ROT mantenga activo el objeto en ausencia de otras conexiones. Consulte IRunningObjectTable::Register para obtener más información.
MSHLFLAGS_NOPING
Valor: 4
Agregar esta marca a una serialización de objetos original (en lugar de serializar un proxy) deshabilitará el protocolo ping para ese objeto.
MSHLFLAGS_RESERVED1
Valor: 8
MSHLFLAGS_RESERVED2
Valor: 16
MSHLFLAGS_RESERVED3
Valor: 32
MSHLFLAGS_RESERVED4
Valor: 64

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado wtypesbase.h (include WTypes.h)

Consulte también

CoGetStandardMarshal

CoMarshalInterface

ICallFrame

IMarshal