windows-nt/Source/XPSP1/NT/public/internal/ds/inc/ginaipc.h
2020-09-26 16:20:57 +08:00

111 lines
4.1 KiB
C

// --------------------------------------------------------------------------
// Module Name: GinaIPC.h
//
// Copyright (c) 1999-2000, Microsoft Corporation
//
// Private structures that allow the CLogonIPC class hosted in an external
// process to communicate with GINA which provides the logon service within
// the Winlogon process.
//
// History: 1999-08-20 vtan created
// 2000-01-31 vtan moved from Neptune to Whistler
// 2000-05-05 vtan added GINA -> UI communications
// 2000-06-16 vtan moved to ds\published\inc
// --------------------------------------------------------------------------
#ifndef _GinaIPC_
#define _GinaIPC_
#include <lmcons.h>
// These are enumerations of valid requested functionality.
static const UINT WM_LOGONSERVICEREQUEST = WM_USER + 8517;
static const UINT WM_UISERVICEREQUEST = WM_USER + 7647;
// These are messages for UI -> GINA communications.
static const int LOGON_QUERY_LOGGED_ON = 1;
static const int LOGON_LOGON_USER = 2;
static const int LOGON_LOGOFF_USER = 3;
static const int LOGON_TEST_BLANK_PASSWORD = 4;
static const int LOGON_TEST_INTERACTIVE_LOGON_ALLOWED = 5;
static const int LOGON_TEST_EJECT_ALLOWED = 6;
static const int LOGON_TEST_SHUTDOWN_ALLOWED = 7;
static const int LOGON_TURN_OFF_COMPUTER = 10;
static const int LOGON_EJECT_COMPUTER = 11;
static const int LOGON_SIGNAL_UIHOST_FAILURE = 20;
static const int LOGON_ALLOW_EXTERNAL_CREDENTIALS = 30;
static const int LOGON_REQUEST_EXTERNAL_CREDENTIALS = 31;
// These are messages for GINA -> UI communications.
static const int UI_STATE_NONE = 0;
static const int UI_TERMINATE = 1;
static const int UI_STATE_STATUS = 2;
static const int UI_STATE_LOGON = 3;
static const int UI_STATE_LOGGEDON = 4;
static const int UI_STATE_HIDE = 5;
static const int UI_STATE_END = 6;
static const int UI_DISPLAY_STATUS = 10;
static const int UI_NOTIFY_WAIT = 20;
static const int UI_SELECT_USER = 21;
static const int UI_SET_ANIMATIONS = 22;
static const int UI_INTERACTIVE_LOGON = 30;
// These are start methods of the UI host
static const int HOST_START_NORMAL = 0;
static const int HOST_START_SHUTDOWN = 1;
static const int HOST_START_WAIT = 2;
// These are end methods of the UI host
static const int HOST_END_HIDE = 0;
static const int HOST_END_TERMINATE = 1;
static const int HOST_END_FAILURE = 2;
// This is generic to all request types.
typedef struct
{
BOOL fResult;
} LOGONIPC;
// This represents user identification.
typedef struct
{
LOGONIPC logonIPC;
WCHAR wszUsername[UNLEN + sizeof('\0')],
wszDomain[DNLEN + sizeof('\0')];
} LOGONIPC_USERID;
// This represents user credentials (identification + password).
// The password is run encoded when stored in memory.
typedef struct
{
LOGONIPC_USERID userID;
WCHAR wszPassword[PWLEN + sizeof('\0')];
int iPasswordLength;
unsigned char ucPasswordSeed;
} LOGONIPC_CREDENTIALS;
// This structure is used to return users from msgina to shgina.
typedef struct
{
LPWSTR pszName;
LPWSTR pszDomain;
LPWSTR pszFullName;
DWORD dwFlags;
} GINA_USER_INFORMATION;
// This is the status window class shared between msgina and shgina.
#define STATUS_WINDOW_CLASS_NAME (TEXT("StatusWindowClass"))
#endif /* _GinaIPC_ */