NtOpenThreadToken 関数 (ntifs.h)

NtOpenThreadToken ルーチンは、スレッドに関連付けられているアクセス トークンを開き、そのトークンへのアクセスに使用できるハンドルを返します。

構文

__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenThreadToken(
  [in]  HANDLE      ThreadHandle,
  [in]  ACCESS_MASK DesiredAccess,
  [in]  BOOLEAN     OpenAsSelf,
  [out] PHANDLE     TokenHandle
);

パラメーター

[in] ThreadHandle

アクセス トークンを開くスレッドを処理します。 ハンドルにはTHREAD_QUERY_INFORMATIONアクセス権が必要です。 現在のスレッドを指定するには 、NtCurrentThread マクロを使用します。

[in] DesiredAccess

ACCESS_MASK アクセス トークンへのアクセスの要求された種類を指定する構造体です。 これらの要求されたアクセスの種類は、トークンの随意アクセス制御リスト (DACL) と比較して、許可または拒否されるアクセス権を決定します。

[in] OpenAsSelf

NtOpenThreadToken を呼び出すスレッドのセキュリティ コンテキストに対してアクセスチェックを行うか、呼び出し元スレッドのプロセスのセキュリティ コンテキストに対して行うかを指定するブール値。

このパラメーターが FALSE の場合、アクセス チェックは呼び出し元スレッドのセキュリティ コンテキストを使用して実行されます。 スレッドがクライアントを偽装している場合、このセキュリティ コンテキストはクライアント プロセスのものになる可能性があります。 このパラメーターが TRUE の場合、アクセス チェックは、呼び出し元スレッドのプロセスのセキュリティ コンテキストを使用して行われます。

[out] TokenHandle

新しく開かれたアクセス トークンへのハンドルを受け取る呼び出し元によって割り当てられた変数へのポインター。

戻り値

NtOpenThreadToken は、STATUS_SUCCESSまたは適切なエラー状態を返します。 考えられるエラー状態コードは次のとおりです。

リターン コード 説明
STATUS_ACCESS_DENIED
ThreadHandle にTHREAD_QUERY_INFORMATIONアクセスできませんでした。
STATUS_CANT_OPEN_ANONYMOUS クライアントは SecurityAnonymous 偽装レベルを要求しました。 ただし、匿名トークンを開くことはできません。 詳細については、「 SECURITY_IMPERSONATION_LEVEL」を参照してください。
STATUS_INVALID_HANDLE ThreadHandle が有効なハンドルではありません。
STATUS_NO_TOKEN 現在クライアントを偽装していないスレッドに関連付けられているトークンを開こうとしました。
STATUS_OBJECT_TYPE_MISMATCH ThreadHandle はスレッド ハンドルではありません。

注釈

NtOpenThreadToken は 、スレッドに関連付けられているアクセス トークンを開き、そのトークンのハンドルを返します。

OpenAsSelf パラメーターを使用すると、クライアント プロセスがSECURITY_IMPERSONATION_LEVEL列挙型の SecurityIdentification 偽装レベルを指定した場合に、サーバー プロセスでクライアント プロセスのアクセス トークンを開くことができるようになります。 このパラメーターがないと、SecurityIdentification 偽装レベルを使用してエグゼクティブ レベルのオブジェクトを開くことができないため、呼び出し元プロセスはクライアントのセキュリティ コンテキストを使用してクライアントのアクセス トークンを開くことができません。

NtOpenThreadToken を呼び出して取得したハンドルは、最終的に NtClose を呼び出して解放する必要があります。

セキュリティとアクセス制御の詳細については、 ドライバー開発者向けの Windows セキュリティ モデル と、Windows SDK のこれらのトピックに関するドキュメントを参照してください。

カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なります。 ルーチンの NtXxx バージョンと ZwXxx バージョン間の関係の詳細については、「Using Nt and Zw Versions of the Native System Services Routines」を参照してください。

要件

要件
サポートされている最小のクライアント Windows XP
Header ntifs.h
Library NtosKrnl.lib
[DLL] NtosKrnl.exe

こちらもご覧ください

ACCESS_MASK

ACL

NtOpenThreadTokenEx

PsDereferencePrimaryToken

SECURITY_IMPERSONATION_LEVEL

ZwClose

ZwOpenProcessTokenEx