NtCreateTransactionManager 関数 (wdm.h)
ZwCreateTransactionManager ルーチンは、新しいトランザクション マネージャー オブジェクトを作成します。
構文
__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
);
パラメーター
[out] TmHandle
新しい トランザクション マネージャー オブジェクトへのハンドルを受け取る呼び出し元によって割り当てられた変数へのポインター。
[in] DesiredAccess
トランザクション マネージャー オブジェクトへの呼び出し元の要求されたアクセスを指定するACCESS_MASK値。 呼び出し元は、すべての種類のオブジェクトに対して定義されているアクセス権 ( ACCESS_MASKを参照) に加えて、トランザクション マネージャー オブジェクトに対して次のいずれかのアクセス権フラグを指定できます。
ACCESS_MASK フラグ | 呼び出し元が |
---|---|
TRANSACTIONMANAGER_CREATE_RM | リソース マネージャーを作成します ( 「ZwCreateResourceManager」を参照)。 |
TRANSACTIONMANAGER_QUERY_INFORMATION | トランザクション マネージャーに関する情報を取得します ( 「ZwQueryInformationTransactionManager 」および「 ZwEnumerateTransactionObject」を参照)。 ZwOpenResourceManager、ZwCreateTransaction、および ZwOpenTransaction にも必要です)。 |
TRANSACTIONMANAGER_RECOVER | トランザクション マネージャーを復旧します ( ZwRecoverTransactionManager と ZwRollforwardTransactionManager を参照)。 |
TRANSACTIONMANAGER_RENAME | 使用されていません。 |
TRANSACTIONMANAGER_SET_INFORMATION | 使用されていません。 |
または、次の ACCESS_MASK ビットマップの 1 つ以上を指定することもできます。 これらのビットマップは、前の表のフラグと、ACCESS_MASK参照ページで説明されているSTANDARD_RIGHTS_XXX フラグを組み合わせます。 これらのビットマップを、前の表の追加フラグと組み合わせることもできます。 次の表は、ビットマップが特定のアクセス権にどのように対応するかを示しています。
権限ビットマップ | 特定のアクセス権のセット |
---|---|
TRANSACTIONMANAGER_GENERIC_READ | STANDARD_RIGHTS_READとTRANSACTIONMANAGER_QUERY_INFORMATION |
TRANSACTIONMANAGER_GENERIC_WRITE | STANDARD_RIGHTS_WRITE、TRANSACTIONMANAGER_SET_INFORMATION、TRANSACTIONMANAGER_RECOVER、TRANSACTIONMANAGER_RENAME、TRANSACTIONMANAGER_CREATE_RM |
TRANSACTIONMANAGER_GENERIC_EXECUTE | STANDARD_RIGHTS_EXECUTE |
TRANSACTIONMANAGER_ALL_ACCESS | STANDARD_RIGHTS_REQUIRED、TRANSACTIONMANAGER_GENERIC_READ、TRANSACTIONMANAGER_GENERIC_WRITE、TRANSACTIONMANAGER_GENERIC_EXECUTE |
[in, optional] ObjectAttributes
オブジェクト名とその他の属性を指定する OBJECT_ATTRIBUTES 構造体へのポインター。 この構造体を初期化するには、 InitializeObjectAttributes ルーチンを使用します。 呼び出し元がシステム スレッド コンテキストで実行されていない場合は、 InitializeObjectAttributes を呼び出すときにOBJ_KERNEL_HANDLE属性を設定する必要があります。 このパラメーターは省略可能であり、 NULL にすることができます。
[in, optional] LogFileName
トランザクション・マネージャー・オブジェクトに関連付ける CLFS ログ・ファイル・ストリームのパスとファイル名を含むUNICODE_STRING構造体へのポインター。 CreateOptions パラメーターがTRANSACTION_MANAGER_VOLATILE場合、このパラメーターは NULL である必要があります。 それ以外の場合、このパラメーターは NULL 以外である必要があります。 詳細については、「解説」を参照してください。
[in, optional] CreateOptions
オプションのオブジェクト作成フラグ。 次の表に、Ktmtypes.h で定義されている使用可能なフラグを示します。
オプション フラグ | 意味 |
---|---|
TRANSACTION_MANAGER_VOLATILE | トランザクション マネージャー オブジェクトは揮発性です。 そのため、ログ ファイルは使用されません。 |
TRANSACTION_MANAGER_COMMIT_DEFAULT | 内部使用専用です。 |
TRANSACTION_MANAGER_COMMIT_SYSTEM_VOLUME | 内部使用専用です。 |
TRANSACTION_MANAGER_COMMIT_SYSTEM_HIVES | 内部使用専用です。 |
TRANSACTION_MANAGER_COMMIT_LOWEST | 内部使用専用です。 |
TRANSACTION_MANAGER_CORRUPT_FOR_RECOVERY | 内部使用専用です。 |
TRANSACTION_MANAGER_CORRUPT_FOR_PROGRESS | 内部使用専用です。 |
[in, optional] CommitStrength
将来利用するために予約されています。 このパラメーターは 0 である必要があります。
戻り値
操作が成功した場合、ZwCreateTransactionManager はSTATUS_SUCCESSを返します。 それ以外の場合、このルーチンは次のいずれかの値を返す可能性があります。
リターン コード | 説明 |
---|---|
|
入力パラメーターの値が無効です。 |
|
KTM はシステム リソース (通常はメモリ) を割り当てませんでした。 |
|
ログ ファイルの作成中または開いている間に、KTM でエラーが発生しました。 |
|
セキュリティ記述子に無効なアクセス制御リスト (ACL) が含まれています。 |
|
セキュリティ記述子に無効なセキュリティ識別子 (SID) が含まれています。 |
|
ObjectAttributes パラメーターが指定するオブジェクト名は既に存在します。 |
|
オペレーティング システムで重複するオブジェクト名が検出されました。 このエラーは、ログ ストリームが既に使用されていることを示している可能性があります。 |
|
ObjectAttributes パラメーターが指定するオブジェクト名が無効です。 |
|
DesiredAccess パラメーターの値が無効です。 |
ルーチンは、他の NTSTATUS 値を返す場合があります。
注釈
LogFileName パラメーターが指定するログ ファイル ストリームが存在しない場合、KTM は CLFS を呼び出してストリームを作成します。 ストリームが既に存在する場合、KTM は CLFS を呼び出してストリームを開きます。
TPS コンポーネントは、ZwCreateTransactionManager を呼び出した後に ZwRecoverTransactionManager を呼び出す必要があります
TPS コンポーネントで CreateOptions パラメーターにTRANSACTION_MANAGER_VOLATILE フラグが指定されている場合、トランザクション マネージャー オブジェクトに関連付けられているすべてのリソース マネージャーは、 ZwCreateResourceManager を呼び出すときにRESOURCE_MANAGER_VOLATILE フラグを指定する必要があります。
ZwCreateTransactionManager を呼び出す TPS コンポーネントは、最終的に ZwClose を呼び出してオブジェクト ハンドルを閉じる必要があります。
ZwCreateTransactionManager の使用方法の詳細については、「Resource Managerの作成」を参照してください。
NtCreateTransactionManager と ZwCreateTransactionManager は、同じ Windows ネイティブ システム サービス ルーチンの 2 つのバージョンです。
カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なる場合があります。 ルーチンの NtXxx バージョンと ZwXxx バージョンの間の関係の詳細については、「ネイティブ システム サービス ルーチンの Nt バージョンと Zw バージョンの使用」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista 以降のオペレーティング システム バージョンで使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | wdm.h (Wdm.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | HwStorPortProhibitedDDIs、PowerIrpDDis |
こちらもご覧ください
Nt および Zw バージョンのネイティブ システム サービス ルーチンの使用