Перечисление MSHLFLAGS (wtypesbase.h)
Указывает, почему требуется выполнить маршалинг.
Синтаксис
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;
Константы
MSHLFLAGS_NORMAL Значение: 0 Маршалинг происходит из-за того, что указатель интерфейса передается из одного процесса в другой. Это нормальный случай. Пакет данных, созданный процессом маршалинга, будет разархивирован в целевом процессе. Маршалированные пакеты данных можно отменить только один раз или вообще не выполнять. Если получатель успешно отменяет удаление пакета данных, функция CoReleaseMarshalData автоматически вызывается для пакета данных в рамках процесса размежевывания. Если получатель не отменяет или не может отменить удаление пакета данных, отправитель должен вызвать CoReleaseMarshalData для пакета данных. |
MSHLFLAGS_TABLESTRONG Значение: 1 Маршалинг происходит потому, что пакет данных должен храниться в глобально доступной таблице, из которой его можно отменить один или несколько раз или вообще не удалить. Наличие пакета данных в таблице считается строгой ссылкой на маршалингуемый интерфейс, что означает, что этого достаточно для поддержания активности объекта. При удалении пакета данных из таблицы средство реализации таблицы должно вызвать функцию CoReleaseMarshalData для пакета данных. MSHLFLAGS_TABLESTRONG используется функцией RegisterDragDrop при регистрации окна в качестве целевого объекта удаления. Это позволяет зарегистрировать окно в качестве целевого объекта удаления независимо от того, сколько раз пользователь перетаскивает его. Функция RevokeDragDrop вызывает CoReleaseMarshalData. |
MSHLFLAGS_TABLEWEAK Значение: 2 Маршалинг происходит потому, что пакет данных должен храниться в глобально доступной таблице, из которой его можно отменить один или несколько раз или вообще не удалить. Однако наличие пакета данных в таблице выступает в качестве слабой ссылки на маршалингуемый интерфейс, а это означает, что этого недостаточно для поддержания активности объекта. При удалении пакета данных из таблицы средство реализации таблицы должно вызвать функцию CoReleaseMarshalData для пакета данных. MSHLFLAGS_TABLEWEAK обычно используется при регистрации объекта в таблице выполняющихся объектов (ROT). Это предотвращает сохранение объекта в объекте ROT при отсутствии других соединений. Дополнительные сведения см. в разделе IRunningObjectTable::Register . |
MSHLFLAGS_NOPING Значение: 4 Добавление этого флага к маршалингу исходного объекта (в отличие от маршалинга прокси-сервера) отключит протокол проверки связи для этого объекта. |
MSHLFLAGS_RESERVED1 Значение: 8 |
MSHLFLAGS_RESERVED2 Значение: 16 |
MSHLFLAGS_RESERVED3 Значение: 32 |
MSHLFLAGS_RESERVED4 Значение: 64 |
Требования
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Верхняя часть | wtypesbase.h (включая WTypes.h) |