Files
processhacker-phnt/usermgr.h
T
Johnny Shaw 53fbbdc5b5 sync latest
2026-03-25 18:14:46 -06:00

232 lines
3.2 KiB
C

/*
* User Manager service API definitions.
*
* This file is part of System Informer.
*/
#ifndef _USERMGR_H
#define _USERMGR_H
// private
typedef struct _SESSION_USER_CONTEXT
{
ULONGLONG ContextToken;
ULONG SessionId;
ULONG Reserved;
} SESSION_USER_CONTEXT, *PSESSION_USER_CONTEXT;
// private
typedef struct _CRED_PROV_CREDENTIAL
{
ULONG Flags;
ULONG AuthenticationPackage;
ULONG Size;
PVOID Information;
} CRED_PROV_CREDENTIAL, *PCRED_PROV_CREDENTIAL;
#define USERMGRAPI DECLSPEC_IMPORT
//
// Contexts
//
#if (PHNT_VERSION >= PHNT_WINDOWS_10)
// rev
USERMGRAPI
VOID
NTAPI
UMgrFreeSessionUsers(
_In_ _Post_invalid_ PSESSION_USER_CONTEXT SessionUsers
);
// rev
USERMGRAPI
HRESULT
NTAPI
UMgrEnumerateSessionUsers(
_Out_ PULONG Count,
_Outptr_ PSESSION_USER_CONTEXT *SessionUsers
);
// rev
USERMGRAPI
HRESULT
NTAPI
UMgrQueryUserContext(
_In_ HANDLE TokenHandle,
_Out_ PULONGLONG ContextToken
);
// rev
USERMGRAPI
HRESULT
NTAPI
UMgrQueryUserContextFromSid(
_In_ PCWSTR SidString,
_Out_ PULONGLONG ContextToken
);
// rev
USERMGRAPI
HRESULT
NTAPI
UMgrQueryUserContextFromName(
_In_ PCWSTR UserName,
_Out_ PULONGLONG ContextToken
);
#endif
//
// Tokens
//
#if (PHNT_VERSION >= PHNT_WINDOWS_10)
// rev
USERMGRAPI
HRESULT
NTAPI
UMgrQueryDefaultAccountToken(
_Out_ PHANDLE TokenHandle
);
// rev
USERMGRAPI
HRESULT
NTAPI
UMgrQuerySessionUserToken(
_In_ ULONG SessionId,
_Out_ PHANDLE TokenHandle
);
// rev
USERMGRAPI
HRESULT
NTAPI
UMgrQueryUserToken(
_In_ ULONGLONG Context,
_Out_ PHANDLE TokenHandle
);
// rev
USERMGRAPI
HRESULT
NTAPI
UMgrQueryUserTokenFromSid(
_In_ PCWSTR SidString,
_Out_ PHANDLE TokenHandle
);
// rev
USERMGRAPI
HRESULT
NTAPI
UMgrQueryUserTokenFromName(
_In_ PCWSTR UserName,
_Out_ PHANDLE TokenHandle
);
// rev
USERMGRAPI
HRESULT
NTAPI
UMgrGetConstrainedUserToken(
_In_opt_ HANDLE InputTokenHandle,
_In_ ULONGLONG Context,
_In_opt_ PSECURITY_CAPABILITIES Capabilities,
_Out_ _Ret_maybenull_ PHANDLE OutputTokenHandle
);
#endif
#if (PHNT_VERSION >= PHNT_WINDOWS_10_TH2)
// rev
USERMGRAPI
HRESULT
NTAPI
UMgrChangeSessionUserToken(
_In_ HANDLE TokenHandle
);
// rev
USERMGRAPI
HRESULT
NTAPI
UMgrGetImpersonationTokenForContext(
_In_ HANDLE InputTokenHandle,
_In_ ULONGLONG Context,
_Out_ PHANDLE OutputTokenHandle
);
#endif
#if (PHNT_VERSION >= PHNT_WINDOWS_10_RS1)
// rev
USERMGRAPI
HRESULT
NTAPI
UMgrGetSessionActiveShellUserToken(
_In_ ULONG SessionId,
_Out_ PHANDLE TokenHandle
);
#endif
//
// Single-session SKU
//
#if (PHNT_VERSION >= PHNT_WINDOWS_10)
// rev
USERMGRAPI
HRESULT
NTAPI
UMgrOpenProcessTokenForQuery(
_In_ ULONG ProcessId,
_Out_ PHANDLE TokenHandle
);
// rev
USERMGRAPI
HRESULT
NTAPI
UMgrOpenProcessHandleForAccess(
_In_ ACCESS_MASK DesiredAccess,
_In_ ULONG ProcessId,
_Out_ PHANDLE ProcessHandle
);
#endif
//
// Credentials
//
#if (PHNT_VERSION >= PHNT_WINDOWS_10)
// rev
USERMGRAPI
HRESULT
NTAPI
UMgrFreeUserCredentials(
_In_ PCRED_PROV_CREDENTIAL Credentials
);
// rev
USERMGRAPI
HRESULT
NTAPI
UMgrGetCachedCredentials(
_In_ PSID Sid,
_Outptr_ PCRED_PROV_CREDENTIAL *Credentials
);
#endif
#endif