ZwCreateResourceManager 関数 (wdm.h)
ZwCreateResourceManager ルーチンは、リソース マネージャー オブジェクトを作成します。
構文
NTSYSCALLAPI NTSTATUS ZwCreateResourceManager(
[out] PHANDLE ResourceManagerHandle,
[in] ACCESS_MASK DesiredAccess,
[in] HANDLE TmHandle,
[in, optional] LPGUID ResourceManagerGuid,
[in, optional] POBJECT_ATTRIBUTES ObjectAttributes,
[in, optional] ULONG CreateOptions,
[in, optional] PUNICODE_STRING Description
);
パラメーター
[out] ResourceManagerHandle
ZwCreateResourceManager の呼び出しが成功した場合に、新しいリソース マネージャー オブジェクトへのハンドルを受け取る呼び出し元割り当て変数へのポインター。
[in] DesiredAccess
リソース マネージャー オブジェクトへの呼び出し元の要求されたアクセス権を指定する ACCESS_MASK 値。 呼び出し元は、すべての種類のオブジェクトに対して定義されているアクセス権 ( ACCESS_MASKを参照) に加えて、リソース マネージャー オブジェクトに対して次のいずれかのアクセス権限フラグを指定できます。
ACCESS_MASK フラグ | 呼び出し元が |
---|---|
RESOURCEMANAGER_ENLIST | トランザクションに参加します ( ZwCreateEnlistment を参照)。 |
RESOURCEMANAGER_GET_NOTIFICATION | このリソース マネージャーに関連付けられているトランザクションに関する通知を受け取ります ( 「ZwGetNotificationResourceManager」を参照)。 |
RESOURCEMANAGER_REGISTER_PROTOCOL | 使用されていません。 |
RESOURCEMANAGER_QUERY_INFORMATION | リソース マネージャーに関するクエリ情報 ( 「ZwQueryInformationResourceManager」を参照)。 |
RESOURCEMANAGER_SET_INFORMATION | 使用されていません。 |
RESOURCEMANAGER_RECOVER | リソース マネージャーを復旧します ( ZwRecoverResourceManager を参照)。 |
RESOURCEMANAGER_COMPLETE_PROPAGATION | 使用されていません。 |
または、次の汎用ACCESS_MASK フラグの 1 つ以上 を 指定することもできます。 (STANDARD_RIGHTS_Xxx フラグは、システム オブジェクトにセキュリティを適用するために使用される定義済みのシステム値です)。これらの汎用フラグを、前の表の追加フラグと組み合わせることもできます。 次の表は、一般的なアクセス権が特定のアクセス権にどのように対応するかを示しています。
汎用アクセス権 | 特定のアクセス権のセット |
---|---|
RESOURCEMANAGER_GENERIC_READ | STANDARD_RIGHTS_READ、RESOURCEMANAGER_QUERY_INFORMATION、SYNCHRONIZE |
RESOURCEMANAGER_GENERIC_WRITE | STANDARD_RIGHTS_WRITE、RESOURCEMANAGER_SET_INFORMATION、RESOURCEMANAGER_RECOVER、RESOURCEMANAGER_ENLIST、RESOURCEMANAGER_GET_NOTIFICATION、RESOURCEMANAGER_REGISTER_PROTOCOL、RESOURCEMANAGER_COMPLETE_PROPAGATION、SYNCHRONIZE |
RESOURCEMANAGER_GENERIC_EXECUTE | STANDARD_RIGHTS_EXECUTE、RESOURCEMANAGER_RECOVER、RESOURCEMANAGER_ENLIST、RESOURCEMANAGER_GET_NOTIFICATION、RESOURCEMANAGER_COMPLETE_PROPAGATION、SYNCHRONIZE |
RESOURCEMANAGER_ALL_ACCESS | STANDARD_RIGHTS_REQUIRED、RESOURCEMANAGER_GENERIC_READ、RESOURCEMANAGER_GENERIC_WRITE、RESOURCEMANAGER_GENERIC_EXECUTE |
[in] TmHandle
ZwCreateTransactionManager または ZwOpenTransactionManager の前の all によって取得されたトランザクション マネージャー オブジェクトへのハンドル。
[in, optional] ResourceManagerGuid
KTM がリソース マネージャーを識別するために使用する GUID へのポインター。 このポインターが NULL の場合、KTM は GUID を生成します。
[in, optional] ObjectAttributes
オブジェクト名とその他の属性を指定する OBJECT_ATTRIBUTES 構造体へのポインター。 InitializeObjectAttributes ルーチンを使用して、この構造体を初期化します。 呼び出し元がシステム スレッド コンテキストで実行されていない場合は、 InitializeObjectAttributes を呼び出すときにOBJ_KERNEL_HANDLE属性を設定する必要があります。 このパラメーターは省略可能であり、 NULL にすることができます。
[in, optional] CreateOptions
省略可能なオブジェクト作成フラグ。 次の表に、Ktmtypes.h で定義されている使用可能なフラグを示します。
CreateOptions フラグ | 意味 |
---|---|
RESOURCE_MANAGER_COMMUNICATION | 内部使用専用です。 |
RESOURCE_MANAGER_VOLATILE | 呼び出し元は揮発性リソースを管理します。 非永続的であり、復旧は実行されません。 |
このパラメーターは省略可能であり、0 にすることができます。
[in, optional] Description
NULL で終わる文字列を含む呼び出し元から提供される UNICODE_STRING 構造体へのポインター。 文字列は、リソース マネージャーの説明を提供します。 KTM は、文字列のコピーを格納し、ログ ストリームに書き込むメッセージに文字列を含めます。 文字列の最大長はMAX_RESOURCEMANAGER_DESCRIPTION_LENGTH。 このパラメーターは省略可能であり、 NULL にすることができます。
戻り値
操作が成功した場合、ZwCreateResourceManager はSTATUS_SUCCESSを返します。 それ以外の場合、このルーチンは次のいずれかの値を返す可能性があります。
リターン コード | 説明 |
---|---|
|
TmHandle が指定するハンドルは、トランザクション オブジェクトへのハンドルではありません。 |
|
TmHandle が指定するハンドルが無効です。 |
|
呼び出し元には、指定されたトランザクション マネージャー オブジェクトへの適切なアクセス権がありません。 |
|
TmHandle が指定するハンドルが閉じられます。 |
|
CreateOptions パラメーターの値が無効であるか、Description パラメーターの文字列が長すぎます。 |
|
CreateOptions パラメーターはRESOURCE_MANAGER_VOLATILEを指定しませんが、TmHandle で指定されるトランザクション マネージャーは揮発性です。 |
|
ResourceManagerGuid で指定されている GUID は既に存在します。 |
|
DesiredAccess パラメーターの値が無効です。 |
ルーチンは、他の NTSTATUS 値を返す場合があります。
注釈
ZwCreateResourceManager を呼び出すリソース マネージャーは、オブジェクト ハンドルを閉じるには、最終的に ZwClose を呼び出す必要があります。
ZwCreateResourceManager の詳細については、「Resource Managerの作成」を参照してください。
カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なる場合があります。 ルーチンの NtXxx バージョンと ZwXxx バージョンの間の関係の詳細については、「ネイティブ システム サービス ルーチンの Nt バージョンと Zw バージョンの使用」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista 以降のオペレーティング システム バージョンで使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |
こちらもご覧ください
ZwGetNotificationResourceManager