/*++ Copyright (c) 2001 Microsoft Corporation All rights reserved Module Name: lsasspi.hxx Abstract: lsa sspi Author: Larry Zhu (LZhu) December 1, 2001 Created Environment: User Mode -Win32 Revision History: --*/ #ifndef LSASSPI_HXX #define LSASSPI_HXX /* include ntsecapi.h before this header file #include */ PCSTR LogonType2Str( IN ULONG LogonType ); PCSTR ImpLevel2Str( IN ULONG Level ); NTSTATUS GetLsaHandleAndPackageId( IN PCSTR pszPackageNameA, OUT HANDLE* pLsaHandle, OUT ULONG* pPackageId ); NTSTATUS GetLsaHandleAndPackageIdEx( IN PCSTR pszPackageNameA, OUT HANDLE* pLsaHandle, OUT ULONG* pPackageId, OUT BOOLEAN* pbWasTcbPrivEnabled, OUT BOOLEAN* pbIsImpersonating ); NTSTATUS GetSystemToken( OUT HANDLE* phSystemToken ); NTSTATUS FindAndOpenWinlogon( OUT HANDLE* phWinlogon ); HRESULT CreateProcessAsUserEx( IN HANDLE hToken, IN UNICODE_STRING* pApplication ); NTSTATUS Impersonate( IN OPTIONAL HANDLE hToken ); HRESULT GetProcessToken( IN HANDLE hProcess, OUT HANDLE* phProcessToken ); HRESULT GetProcessTokenByProcessId( IN ULONG ProcessID, OUT HANDLE* phToken ); HRESULT GetProcessTokenWithNullDACL( IN HANDLE hProcess, OUT HANDLE* phProcessToken ); NTSTATUS GetProcessHandleByCid( IN ULONG ProcessID, OUT HANDLE* phToken ); NTSTATUS CheckUserToken( IN HANDLE hToken ); VOID DebugPrintSidFriendlyName( IN ULONG Level, IN PCSTR pszBanner, IN PSID pSid ); typedef struct _SECURITY_LOGON_SESSION_DATA_OLD { ULONG Size; LUID LogonId; LSA_UNICODE_STRING UserName; LSA_UNICODE_STRING LogonDomain; LSA_UNICODE_STRING AuthenticationPackage; ULONG LogonType; ULONG Session; PSID Sid; LARGE_INTEGER LogonTime; } SECURITY_LOGON_SESSION_DATA_OLD, * PSECURITY_LOGON_SESSION_DATA_OLD; VOID DebugPrintLogonSessionData( IN ULONG Level, IN SECURITY_LOGON_SESSION_DATA* pLogonSessionData ); HRESULT CheckUserData( VOID ); typedef NTSTATUS (* PFuncLsaGetLogonSessionData)( IN PLUID LogonId, OUT PSECURITY_LOGON_SESSION_DATA * ppLogonSessionData ); typedef NTSTATUS (* PFuncLsaRegisterLogonProcess)( IN PLSA_STRING LogonProcessName, OUT PHANDLE LsaHandle, OUT PLSA_OPERATIONAL_MODE SecurityMode ); typedef NTSTATUS (* PFuncLsaLookupAuthenticationPackage)( IN HANDLE LsaHandle, IN PLSA_STRING PackageName, OUT PULONG AuthenticationPackage ); typedef NTSTATUS (* PFuncLsaLogonUser)( IN HANDLE LsaHandle, IN PLSA_STRING OriginName, IN SECURITY_LOGON_TYPE LogonType, IN ULONG AuthenticationPackage, IN PVOID AuthenticationInformation, IN ULONG AuthenticationInformationLength, IN PTOKEN_GROUPS LocalGroups OPTIONAL, IN PTOKEN_SOURCE SourceContext, OUT PVOID *ProfileBuffer, OUT PULONG ProfileBufferLength, OUT PLUID LogonId, OUT PHANDLE Token, OUT PQUOTA_LIMITS Quotas, OUT PNTSTATUS SubStatus ); typedef NTSTATUS (* PFuncLsaFreeReturnBuffer)( IN PVOID Buffer ); typedef NTSTATUS (* PFuncLsaConnectUntrusted)( OUT PHANDLE LsaHandle ); typedef NTSTATUS (* PFuncLsaDeregisterLogonProcess)( IN HANDLE LsaHandle ); typedef NTSTATUS (* PFuncLsaCallAuthenticationPackage)( IN HANDLE LsaHandle, IN ULONG AuthenticationPackage, IN PVOID ProtocolSubmitBuffer, IN ULONG SubmitBufferLength, OUT PVOID* ProtocolReturnBuffer, OUT PULONG ReturnBufferLength, OUT PNTSTATUS ProtocolStatus ); FARPROC WINAPI DelayLoadFailureHook( LPCSTR pszDllName, LPCSTR pszProcName ); #endif // #ifndef LSASSPI_HXX