windows-nt/Source/XPSP1/NT/inetsrv/iis/inc/lonsi.hxx
2020-09-26 16:20:57 +08:00

264 lines
4.9 KiB
C++

/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
lonsi.hxx
Abstract:
This file declares lonsi related stuff
Author:
Johnson Apacible (johnsona) 13-Nov-1996
--*/
#ifndef _LONSI_HXX_
#define _LONSI_HXX_
extern "C" {
#include <ntlsa.h>
}
typedef
BOOL
(*LOGON32_INITIALIZE_FN)(
IN PVOID hMod,
IN ULONG Reason,
IN PCONTEXT Context
);
typedef
BOOL
(WINAPI *LOGON_NET_USER_W_FN)(
PWSTR lpszUsername,
PWSTR lpszDomain,
PSTR lpszPassword,
PWSTR lpszWorkstation,
DWORD dwSubAuth,
DWORD dwLogonType,
DWORD dwLogonProvider,
HANDLE * phToken,
LARGE_INTEGER * pExpiry
);
typedef
BOOL
(WINAPI *LOGON_NET_USER_A_FN)(
PSTR lpszUsername,
PSTR lpszDomain,
PSTR lpszPassword,
PSTR lpszWorkstation,
DWORD dwSubAuth,
DWORD dwLogonType,
DWORD dwLogonProvider,
HANDLE * phToken,
LARGE_INTEGER * pExpiry
);
typedef
BOOL
(WINAPI *NET_USER_COOKIE_A_FN)(
LPSTR lpszUsername,
DWORD dwSeed,
LPSTR lpszCookieBuff,
DWORD dwBuffSize
);
typedef struct _DIGEST_LOGON_INFO
{
LPSTR pszNtUser;
LPSTR pszDomain;
LPSTR pszUser;
LPSTR pszRealm;
LPSTR pszURI;
LPSTR pszMethod;
LPSTR pszNonce;
LPSTR pszCurrentNonce;
LPSTR pszCNonce;
LPSTR pszQOP;
LPSTR pszNC;
LPSTR pszResponse;
}
DIGEST_LOGON_INFO, *PDIGEST_LOGON_INFO;
typedef
BOOL
(WINAPI *LOGON_DIGEST_USER_A_FN)(
PDIGEST_LOGON_INFO pDigestLogonInfo,
DWORD dwAlgo,
HANDLE * phToken
);
typedef
BOOL
(*GET_DEFAULT_DOMAIN_NAME_FN)(PCHAR,DWORD);
typedef
NTSTATUS
(NTAPI *LSA_OPEN_POLICY_FN)(
IN PLSA_UNICODE_STRING SystemName OPTIONAL,
IN PLSA_OBJECT_ATTRIBUTES ObjectAttributes,
IN ACCESS_MASK DesiredAccess,
IN OUT PLSA_HANDLE PolicyHandle
);
typedef
NTSTATUS
(NTAPI *LSA_RETRIEVE_PRIVATE_DATA_FN)(
IN LSA_HANDLE PolicyHandle,
IN PLSA_UNICODE_STRING KeyName,
OUT PLSA_UNICODE_STRING * PrivateData
);
typedef
NTSTATUS
(NTAPI *LSA_STORE_PRIVATE_DATA_FN)(
IN LSA_HANDLE PolicyHandle,
IN PLSA_UNICODE_STRING KeyName,
IN PLSA_UNICODE_STRING PrivateData
);
typedef
ULONG
(NTAPI *LSA_NT_STATUS_TO_WIN_ERROR_FN)(
NTSTATUS Status
);
typedef
NTSTATUS
(NTAPI *LSA_FREE_MEMORY_FN)(
IN PVOID Buffer
);
typedef
NTSTATUS
(NTAPI *LSA_CLOSE_FN)(
IN LSA_HANDLE ObjectHandle
);
//
// advapi32.dll
//
typedef
BOOL
(WINAPI *DUPLICATE_TOKEN_EX_FN)(
HANDLE hExistingToken,
DWORD dwDesiredAccess,
LPSECURITY_ATTRIBUTES lpTokenAttributes,
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
TOKEN_TYPE TokenType,
PHANDLE phNewToken
);
BOOL
GetDynamicEntryPoints(
VOID
);
VOID
FreeDynamicLibraries(
VOID
);
dllexp
BOOL
IISDuplicateTokenEx(
IN HANDLE hExistingToken,
IN DWORD dwDesiredAccess,
IN LPSECURITY_ATTRIBUTES lpTokenAttributes,
IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
IN TOKEN_TYPE TokenType,
OUT PHANDLE phNewToken
);
//
// netapi32 entry points
//
typedef
NET_API_STATUS
(NET_API_FUNCTION *NET_USER_MODALS_GET_FN)(
IN LPCWSTR servername OPTIONAL,
IN DWORD level,
OUT LPBYTE *bufptr
);
typedef
NET_API_STATUS
(NET_API_FUNCTION *NET_API_BUFFER_FREE_FN)(
IN LPVOID Buffer
);
//
// kernel32
//
typedef
LONG
(WINAPI *INTERLOCKED_EXCHANGE_ADD_FN)(
LPLONG Addend,
LONG Value
);
typedef
PVOID
(WINAPI *INTERLOCKED_COMPARE_EXCHANGE_FN)(
PVOID *Destination,
PVOID Exchange,
PVOID Comperand
);
typedef
BOOL
(WINAPI *READ_DIR_CHANGES_W_FN)(
HANDLE hDirectory,
LPVOID lpBuffer,
DWORD nBufferLength,
BOOL bWatchSubtree,
DWORD dwNotifyFilter,
LPDWORD lpBytesReturned,
LPOVERLAPPED lpOverlapped,
LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
typedef
LONG
(WINAPI *INTERLOCKED_INCREMENT_FN)(
LPLONG Addend
);
typedef
LONG
(WINAPI *INTERLOCKED_DECREMENT_FN)(
LPLONG Addend
);
extern READ_DIR_CHANGES_W_FN pfnReadDirChangesW;
extern INTERLOCKED_COMPARE_EXCHANGE_FN pfnInterlockedCompareExchange;
extern INTERLOCKED_EXCHANGE_ADD_FN pfnInterlockedExchangeAdd;
extern INTERLOCKED_INCREMENT_FN pfnInterlockedIncrement;
extern INTERLOCKED_DECREMENT_FN pfnInterlockedDecrement;
BOOL
IISGetDefaultDomainName(
CHAR * pszDomainName,
DWORD cchDomainName
);
BOOL
WINAPI
IISLogonDigestUserA(
PDIGEST_LOGON_INFO pDigestLogonInfo,
DWORD dwAlgo,
HANDLE * phToken
);
#endif // _LONSI_HXX_