NtCreateResourceManager 関数 (wdm.h)
ZwCreateResourceManager ルーチンは、リソース マネージャー オブジェクトを作成します。
構文
__kernel_entry NTSYSCALLAPI NTSTATUS NtCreateResourceManager(
[out] PHANDLE ResourceManagerHandle,
[in] ACCESS_MASK DesiredAccess,
[in] HANDLE TmHandle,
[in] LPGUID RmGuid,
[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 フラグを 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を する前のすべてのユーザーによって取得された、トランザクション マネージャー オブジェクト へのハンドル。
[in] RmGuid
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 以降のオペレーティング システム バージョンで使用できます。 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 を する | HwStorPortProhibitedDIs、PowerIrpDDis |
関連項目
InitializeObjectAttributes の
ZwGetNotificationResourceManager