162 lines
3.8 KiB
C
162 lines
3.8 KiB
C
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1993.
|
|
//
|
|
// File: msgina.c
|
|
//
|
|
// Contents: Microsoft Logon GUI DLL
|
|
//
|
|
// History: 7-14-94 RichardW Created
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#include <windows.h>
|
|
#include <npapi.h>
|
|
#include <ntsecapi.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
BOOL
|
|
WINAPI
|
|
DllMain(
|
|
HINSTANCE hInstance,
|
|
DWORD dwReason,
|
|
LPVOID lpReserved)
|
|
{
|
|
switch (dwReason)
|
|
{
|
|
case DLL_PROCESS_ATTACH:
|
|
DisableThreadLibraryCalls ( hInstance );
|
|
|
|
case DLL_PROCESS_DETACH:
|
|
default:
|
|
return(TRUE);
|
|
}
|
|
}
|
|
|
|
VOID
|
|
DebugOut(
|
|
PSTR Format,
|
|
...
|
|
)
|
|
{
|
|
va_list ArgList;
|
|
CHAR Buffer[ 256 ];
|
|
|
|
va_start( ArgList, Format );
|
|
_vsnprintf( Buffer, 256, Format, ArgList );
|
|
OutputDebugString( Buffer );
|
|
}
|
|
|
|
DWORD
|
|
WINAPI
|
|
NPGetCaps(
|
|
DWORD nIndex
|
|
)
|
|
{
|
|
DWORD dwRes;
|
|
|
|
switch (nIndex)
|
|
{
|
|
|
|
case WNNC_NET_TYPE:
|
|
dwRes = 0xffff0000; // credential manager
|
|
break;
|
|
|
|
case WNNC_SPEC_VERSION:
|
|
dwRes = WNNC_SPEC_VERSION51; // We are using version 5.1 of the spec.
|
|
break;
|
|
|
|
case WNNC_DRIVER_VERSION:
|
|
dwRes = 1; // This driver is version 1.
|
|
break;
|
|
|
|
case WNNC_START:
|
|
dwRes = 1; // We are already "started"
|
|
break;
|
|
|
|
default:
|
|
dwRes = 0; // We don't support anything else
|
|
break;
|
|
}
|
|
|
|
return dwRes;
|
|
|
|
}
|
|
|
|
|
|
/****************************************************************************
|
|
FUNCTION: NPLogonNotify
|
|
|
|
PURPOSE: This entry point is called when a user logs on. If the user
|
|
authentication fails here, the user will still be logged on
|
|
to the local machine.
|
|
|
|
*******************************************************************************/
|
|
DWORD
|
|
WINAPI
|
|
NPLogonNotify (
|
|
PLUID lpLogonId,
|
|
LPCWSTR lpAuthentInfoType,
|
|
LPVOID lpAuthentInfo,
|
|
LPCWSTR lpPreviousAuthentInfoType,
|
|
LPVOID lpPreviousAuthentInfo,
|
|
LPWSTR lpStationName,
|
|
LPVOID StationHandle,
|
|
LPWSTR *lpLogonScript
|
|
)
|
|
{
|
|
PMSV1_0_INTERACTIVE_LOGON pAuthInfo;
|
|
|
|
|
|
//
|
|
// Write out some information about the logon attempt
|
|
//
|
|
|
|
DebugOut( "NPLogonNotify\n" );
|
|
|
|
DebugOut( "lpAuthentInfoType=%ws lpStationName=%ws\r\n",
|
|
lpAuthentInfoType, lpStationName);
|
|
|
|
|
|
|
|
// Do something with the authentication information
|
|
//
|
|
pAuthInfo = (PMSV1_0_INTERACTIVE_LOGON) lpAuthentInfo;
|
|
|
|
DebugOut( "LogonDomain=%ws User=%ws\r\n",
|
|
pAuthInfo->LogonDomainName.Buffer,
|
|
pAuthInfo->UserName.Buffer);
|
|
|
|
|
|
return NO_ERROR;
|
|
}
|
|
|
|
|
|
/****************************************************************************
|
|
FUNCTION: NPPasswordChangeNotify
|
|
|
|
PURPOSE: This function is used to notify a credential manager provider
|
|
of a password change (or, more accurately, an authentication
|
|
information change) for an account.
|
|
|
|
*******************************************************************************/
|
|
DWORD
|
|
WINAPI
|
|
NPPasswordChangeNotify (
|
|
LPCWSTR lpAuthentInfoType,
|
|
LPVOID lpAuthentInfo,
|
|
LPCWSTR lpPreviousAuthentInfoType,
|
|
LPVOID lpPreviousAuthentInfo,
|
|
LPWSTR lpStationName,
|
|
LPVOID StationHandle,
|
|
DWORD dwChangeInfo
|
|
)
|
|
{
|
|
DebugOut( "NPPasswordChangeNotify\n" );
|
|
|
|
return NO_ERROR;
|
|
}
|
|
|