Freigeben über


CreateEnlistment-Funktion (ktmw32.h)

Erstellt eine Enlistung, legt den Anfangszustand fest und öffnet ein Handle für die Enlistung mit dem angegebenen Zugriff.

Syntax

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
);

Parameter

[in, optional] lpEnlistmentAttributes

Ein Zeiger auf eine SECURITY_ATTRIBUTES Struktur, die die Sicherheitsattribute für den Listenverwaltungs-Manager enthält. Geben Sie NULL- an, um die Standardattribute abzurufen.

[in] ResourceManagerHandle

Ein Handle für den Ressourcen-Manager (RM) zum Auflisten.

[in] TransactionHandle

Ein Handle für die Transaktion, in der die RM in die Liste eingeht.

[in] NotificationMask

Die Benachrichtigungen, die dieser RM für den parameter TransactionHandle anfordert. Eine Liste der gültigen Werte finden Sie unter NOTIFICATION_MASK.

[in, optional] CreateOptions

Alle optionalen Einlistungsanweisungen.

Wert Bedeutung
ENLISTMENT_SUPERIOR
1
Enlist als überlegener Transaktionsmanager.

[in, optional] EnlistmentKey

Ein Zeiger auf eine benutzerdefinierte Struktur, die von der RM verwendet wird, die zurückgegeben wird, wenn eine Benachrichtigung in der TRANSACTION_NOTIFICATION-Struktur gesendet wird. Dies wird in der Regel verwendet, um eine private Struktur mit dieser bestimmten Transaktion zu verknüpfen.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Handle für die Listenliste.

Wenn die Funktion fehlschlägt, wird der Rückgabewert INVALID_HANDLE_VALUE. Rufen Sie zum Abrufen erweiterter Fehlerinformationen die GetLastError--Funktion auf.

Die folgende Liste identifiziert die möglichen Fehlercodes:

Bemerkungen

Windows Vista: Jeder Versuch, während der Vorbereitungsphase oder höher eine Registrierung aufzustellen, schlägt fehl.

Wenn Sie in Ihrer Benachrichtigungsmaske nicht angeben, dass Sie eine Ein-Phasen-Commit-Anforderung akzeptieren, führt KTM immer einen Zwei-Phasen-Commit-Vorgang aus.

Beachten Sie beim Auflisten von Transaktionen die folgenden Benachrichtigungsregeln:

  • Der RM muss immer eine Rollbackbenachrichtigung anfordern.
  • Wenn die RM-Anforderungen eine Benachrichtigung vorbereiten, muss sie auch eine Commitbenachrichtigung anfordern.
  • Wenn der RM einen Vorgang für einen commit in einer Phase anfordert, muss er auch Vorbereitungs- und Commitbenachrichtigungen angeben.
  • Das einzige Mal, wenn ein RM nicht erforderlich ist, um Commitbenachrichtigungen anzufordern, besteht darin, mindestens ein Paar vorbereitungs- und Rollbackbenachrichtigungen anzufordern.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows Vista
mindestens unterstützte Server- Windows Server 2008
Zielplattform- Fenster
Header- ktmw32.h
Library KtmW32.lib
DLL- KtmW32.dll

Siehe auch

CommitComplete-

CommitEnlistment-

Kernel Transaction Manager Functions

NOTIFICATION_MASK

OpenEnlistment-

TRANSACTION_NOTIFICATION