windows-nt/Source/XPSP1/NT/shell/ext/gina/uihost.h
2020-09-26 16:20:57 +08:00

66 lines
2.6 KiB
C++

// --------------------------------------------------------------------------
// Module Name: UIHost.h
//
// Copyright (c) 1999-2000, Microsoft Corporation
//
// Class to handle the UI host for the logon process. This handles the IPC
// as well as the creation and monitoring of process death. The process is
// a restricted SYSTEM context process.
//
// History: 1999-09-14 vtan created
// 2000-02-01 vtan moved from Neptune to Whistler
// --------------------------------------------------------------------------
#ifndef _UIHost_
#define _UIHost_
#include "DynamicArray.h"
#include "ExternalProcess.h"
// --------------------------------------------------------------------------
// CUIHost
//
// Purpose: This class handles the starting and monitoring the termination
// of the UI host process. It actually can implement the host in
// whatever way it chooses.
//
// History: 1999-09-14 vtan created
// 2000-02-01 vtan moved from Neptune to Whistler
// --------------------------------------------------------------------------
class CUIHost : public CExternalProcess
{
private:
CUIHost (void);
CUIHost (const CUIHost& copyObject);
const CUIHost& operator = (const CUIHost& assignObject);
public:
CUIHost (const TCHAR *pszCommandLine);
~CUIHost (void);
bool WaitRequired (void) const;
NTSTATUS GetData (const void *pUIHostProcessAddress, void *pLogonProcessAddress, int iDataSize) const;
NTSTATUS PutData (void *pUIHostProcessAddress, const void *pLogonProcessAddress, int iDataSize) const;
NTSTATUS Show (void);
NTSTATUS Hide (void);
bool IsHidden (void) const;
void* GetDataAddress (void) const;
NTSTATUS PutData (const void *pvData, DWORD dwDataSize);
NTSTATUS PutString (const WCHAR *pszString);
protected:
virtual void NotifyNoProcess (void);
private:
void ExpandCommandLine (const TCHAR *pszCommandLine);
static BOOL CALLBACK EnumWindowsProc (HWND hwnd, LPARAM lParam);
private:
CDynamicArray _hwndArray;
void *_pBufferAddress;
};
#endif /* _UIHost_ */