NtCreateTransactionManager-Funktion (wdm.h)
Die ZwCreateTransactionManager-Routine erstellt ein neues Transaktions-Manager-Objekt.
Syntax
__kernel_entry NTSYSCALLAPI NTSTATUS NtCreateTransactionManager(
[out] PHANDLE TmHandle,
[in] ACCESS_MASK DesiredAccess,
[in, optional] POBJECT_ATTRIBUTES ObjectAttributes,
[in, optional] PUNICODE_STRING LogFileName,
[in, optional] ULONG CreateOptions,
[in, optional] ULONG CommitStrength
);
Parameter
[out] TmHandle
Ein Zeiger auf eine vom Aufrufer zugeordnete Variable, die ein Handle für das neue Transaktions-Manager-Objekt empfängt.
[in] DesiredAccess
Ein ACCESS_MASK Wert, der den vom Aufrufer angeforderten Zugriff auf das Transaktions-Manager-Objekt angibt. Zusätzlich zu den Zugriffsrechten, die für alle Arten von Objekten definiert sind (siehe ACCESS_MASK), kann der Aufrufer jedes der folgenden Zugriffsberechtigungsflags für Transaktions-Manager-Objekte angeben.
ACCESS_MASK-Flag | Ermöglicht dem Aufrufer, |
---|---|
TRANSACTIONMANAGER_CREATE_RM | Erstellen Sie einen Ressourcen-Manager (siehe ZwCreateResourceManager). |
TRANSACTIONMANAGER_QUERY_INFORMATION | Rufen Sie Informationen zum Transaktions-Manager ab (siehe ZwQueryInformationTransactionManager und ZwEnumerateTransactionObject). Erforderlich auch für ZwOpenResourceManager, ZwCreateTransaction und ZwOpenTransaction.) |
TRANSACTIONMANAGER_RECOVER | Wiederherstellen des Transaktions-Managers (siehe ZwRecoverTransactionManager und ZwRollforwardTransactionManager). |
TRANSACTIONMANAGER_RENAME | Wird nicht verwendet. |
TRANSACTIONMANAGER_SET_INFORMATION | Wird nicht verwendet. |
Alternativ können Sie eine oder mehrere der folgenden ACCESS_MASK Bitmaps angeben. Diese Bitmaps kombinieren die Flags aus der vorherigen Tabelle mit den STANDARD_RIGHTS_XXX-Flags , die auf der ACCESS_MASK Referenzseite beschrieben werden. Sie können diese Bitmaps auch mit zusätzlichen Flags aus der vorherigen Tabelle kombinieren. Die folgende Tabelle zeigt, wie die Bitmaps bestimmten Zugriffsrechten entsprechen.
Bitmap "Rechte" | Satz von spezifischen Zugriffsrechten |
---|---|
TRANSACTIONMANAGER_GENERIC_READ | STANDARD_RIGHTS_READ und TRANSACTIONMANAGER_QUERY_INFORMATION |
TRANSACTIONMANAGER_GENERIC_WRITE | STANDARD_RIGHTS_WRITE, TRANSACTIONMANAGER_SET_INFORMATION, TRANSACTIONMANAGER_RECOVER, TRANSACTIONMANAGER_RENAME und TRANSACTIONMANAGER_CREATE_RM |
TRANSACTIONMANAGER_GENERIC_EXECUTE | STANDARD_RIGHTS_EXECUTE |
TRANSACTIONMANAGER_ALL_ACCESS | STANDARD_RIGHTS_REQUIRED, TRANSACTIONMANAGER_GENERIC_READ, TRANSACTIONMANAGER_GENERIC_WRITE und TRANSACTIONMANAGER_GENERIC_EXECUTE |
[in, optional] ObjectAttributes
Ein Zeiger auf eine OBJECT_ATTRIBUTES-Struktur , die den Objektnamen und andere Attribute angibt. Verwenden Sie die InitializeObjectAttributes-Routine , um diese Struktur zu initialisieren. Wenn der Aufrufer nicht in einem Systemthreadkontext ausgeführt wird, muss er das attribut OBJ_KERNEL_HANDLE festlegen, wenn initializeObjectAttributes aufgerufen wird. Dieser Parameter ist optional und kann NULL sein.
[in, optional] LogFileName
Ein Zeiger auf eine UNICODE_STRING-Struktur , die den Pfad und Dateinamen eines CLFS-Protokolldateidatenstroms enthält, der dem Transaktions-Manager-Objekt zugeordnet werden soll. Dieser Parameter muss NULL sein, wenn der CreateOptions-Parameter TRANSACTION_MANAGER_VOLATILE ist. Andernfalls muss dieser Parameter nicht NULL sein. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".
[in, optional] CreateOptions
Optionale Objekterstellungsflags. Die folgende Tabelle enthält die verfügbaren Flags, die in "Ktmtypes.h" definiert sind.
Optionsflag | Bedeutung |
---|---|
TRANSACTION_MANAGER_VOLATILE | Das Transaktions-Manager-Objekt ist flüchtig. Daher wird keine Protokolldatei verwendet. |
TRANSACTION_MANAGER_COMMIT_DEFAULT | Nur zur internen Verwendung. |
TRANSACTION_MANAGER_COMMIT_SYSTEM_VOLUME | Nur zur internen Verwendung. |
TRANSACTION_MANAGER_COMMIT_SYSTEM_HIVES | Nur zur internen Verwendung. |
TRANSACTION_MANAGER_COMMIT_LOWEST | Nur zur internen Verwendung. |
TRANSACTION_MANAGER_CORRUPT_FOR_RECOVERY | Nur zur internen Verwendung. |
TRANSACTION_MANAGER_CORRUPT_FOR_PROGRESS | Nur zur internen Verwendung. |
[in, optional] CommitStrength
Für die zukünftige Verwendung reserviert. Dieser Parameter muss null sein.
Rückgabewert
ZwCreateTransactionManager gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt diese Routine möglicherweise einen der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
|
Der Wert eines Eingabeparameters ist ungültig. |
|
KTM konnte keine Systemressourcen (in der Regel Arbeitsspeicher) zuordnen. |
|
BEI KTM ist beim Erstellen oder Öffnen der Protokolldatei ein Fehler aufgetreten. |
|
Ein Sicherheitsdeskriptor enthält eine ungültige Zugriffssteuerungsliste (Access Control List, ACL). |
|
Ein Sicherheitsdeskriptor enthält eine ungültige Sicherheits-ID (SID). |
|
Der Objektname, den der ObjectAttributes-Parameter angibt, ist bereits vorhanden. |
|
Das Betriebssystem hat einen doppelten Objektnamen erkannt. Der Fehler kann darauf hinweisen, dass der Protokolldatenstrom bereits verwendet wird. |
|
Der Objektname, den der ObjectAttributes-Parameter angibt, ist ungültig. |
|
Der Wert des DesiredAccess-Parameters ist ungültig. |
Die Routine gibt möglicherweise andere NTSTATUS-Werte zurück.
Hinweise
Wenn der Protokolldateidatenstrom, den der LogFileName-Parameter angibt, nicht vorhanden ist, ruft KTM CLFS auf, um den Stream zu erstellen. Wenn der Stream bereits vorhanden ist, ruft KTM CLFS auf, um den Stream zu öffnen.
Ihre TPS-Komponente muss ZwRecoverTransactionManager aufrufen, nachdem sie ZwCreateTransactionManager aufgerufen hat.
Wenn Ihre TPS-Komponente das flag TRANSACTION_MANAGER_VOLATILE im CreateOptions-Parameter angibt, müssen alle Ressourcen-Manager, die dem Transaktions-Manager-Objekt zugeordnet sind, das RESOURCE_MANAGER_VOLATILE-Flag angeben, wenn sie ZwCreateResourceManager aufrufen.
Eine TPS-Komponente, die ZwCreateTransactionManager aufruft, muss schließlich ZwClose aufrufen, um das Objekthandle zu schließen.
Weitere Informationen zur Verwendung von ZwCreateTransactionManager finden Sie unter Erstellen eines Resource Manager.
NtCreateTransactionManager und ZwCreateTransactionManager sind zwei Versionen derselben Windows Native System Services-Routine.
Bei Aufrufen von Kernelmodustreibern können sich die NtXxx - und ZwXxx-Versionen einer Windows Native System Services-Routine anders verhalten, da sie Eingabeparameter verarbeiten und interpretieren. Weitere Informationen zur Beziehung zwischen den Nt Xxx- und ZwXxx-Versionen einer Routine finden Sie unter Verwenden von Nt- und Zw-Versionen der Systemdienstroutinen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar in Windows Vista und höheren Betriebssystemversionen. |
Zielplattform | Universell |
Header | wdm.h (include Wdm.h, Ntifs.h) |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI-Complianceregeln | HwStorPortProhibitedDIs, PowerIrpDDis |
Weitere Informationen
Verwenden von Nt- und Zw-Versionen der Systemdienstroutinen