Поделиться через


Функция CreateEnlistment (ktmw32.h)

Создает перечисление, задает исходное состояние и открывает дескриптор для зачисления с указанным доступом.

Синтаксис

HANDLE CreateEnlistment(
  [in, optional] LPSECURITY_ATTRIBUTES lpEnlistmentAttributes,
  [in]           HANDLE                ResourceManagerHandle,
  [in]           HANDLE                TransactionHandle,
  [in]           NOTIFICATION_MASK     NotificationMask,
  [in, optional] DWORD                 CreateOptions,
  [in, optional] PVOID                 EnlistmentKey
);

Параметры

[in, optional] lpEnlistmentAttributes

Указатель на структуру SECURITY_ATTRIBUTES, содержащую атрибуты безопасности для диспетчера зачисления. Укажите null для получения атрибутов по умолчанию.

[in] ResourceManagerHandle

Дескриптор диспетчера ресурсов (RM) для включения.

[in] TransactionHandle

Дескриптор транзакции, в которой выполняется перечисление RM.

[in] NotificationMask

Уведомления об этом RM запрашивают параметр TransactionHandle. Список допустимых значений см. в NOTIFICATION_MASK.

[in, optional] CreateOptions

Любые необязательные инструкции по зачислению.

Ценность Значение
ENLISTMENT_SUPERIOR
1
Заверять в качестве высшего диспетчера транзакций.

[in, optional] EnlistmentKey

Указатель на определяемую пользователем структуру, используемую RM, которая возвращается при отправке уведомления в TRANSACTION_NOTIFICATION структуре. Обычно это используется для связывания частной структуры с данной конкретной транзакцией.

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение является дескриптором для перечисления.

Если функция завершается ошибкой, возвращаемое значение INVALID_HANDLE_VALUE. Чтобы получить расширенные сведения об ошибке, вызовите функцию getLastError .

Следующий список определяет возможные коды ошибок:

Замечания

Windows Vista: любая попытка заручиться на этапе предварительной подготовки или более поздней версии завершится ошибкой.

Если в маске уведомлений не указано, что вы принимаете запрос фиксации на один этап, KTM всегда выполняет двухфазную операцию фиксации.

При зачислении в транзакции следует учитывать следующие правила уведомлений:

  • RM должен всегда запрашивать уведомление об откате.
  • Если уведомление о подготовке запросов RM запрашивает, он также должен запрашивать уведомление о фиксации.
  • Если RM запрашивает однофазную операцию фиксации, необходимо также указать уведомления о подготовке и фиксации.
  • Единственное время, когда RM не требуется запрашивать уведомления о фиксации, заключается в запросе по крайней мере пары уведомлений о подготовке и откате.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows Vista
минимальный поддерживаемый сервер Windows Server 2008
целевая платформа Виндоус
заголовка ktmw32.h
библиотеки KtmW32.lib
DLL KtmW32.dll

См. также

CommitComplete

CommitEnlistment

Функции диспетчера транзакций ядра

NOTIFICATION_MASK

OpenEnlistment

TRANSACTION_NOTIFICATION