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


Функция 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 не требуется запрашивать уведомления о фиксации, является запрос по крайней мере пары уведомлений о подготовке и откате.

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Минимальная версия сервера Windows Server 2008
Целевая платформа Windows
Header ktmw32.h
Библиотека KtmW32.lib
DLL KtmW32.dll

См. также раздел

CommitComplete

CommitEnlistment

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

NOTIFICATION_MASK

OpenEnlistment

TRANSACTION_NOTIFICATION