66 lines
2.6 KiB
C++
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_ */
|
|
|