71 lines
3.3 KiB
C++
71 lines
3.3 KiB
C++
// --------------------------------------------------------------------------
|
|
// Module Name: RestoreApplication.h
|
|
//
|
|
// Copyright (c) 2000, Microsoft Corporation
|
|
//
|
|
// Class to implement holding information required to restore an application
|
|
// and to actually restore it.
|
|
//
|
|
// History: 2000-10-26 vtan created
|
|
// 2000-11-04 vtan split into separate file
|
|
// --------------------------------------------------------------------------
|
|
|
|
#ifndef _RestoreApplication_
|
|
#define _RestoreApplication_
|
|
|
|
#include "CountedObject.h"
|
|
|
|
// --------------------------------------------------------------------------
|
|
// CRestoreApplication
|
|
//
|
|
// Purpose: Class to manage information required to restore an application
|
|
// that was terminated because of a different user switch.
|
|
//
|
|
// History: 2000-10-26 vtan created
|
|
// 2000-11-04 vtan split into separate file
|
|
// --------------------------------------------------------------------------
|
|
|
|
class CRestoreApplication : public CCountedObject
|
|
{
|
|
public:
|
|
CRestoreApplication (void);
|
|
~CRestoreApplication (void);
|
|
|
|
NTSTATUS GetInformation (HANDLE hProcess);
|
|
|
|
bool IsEqualSessionID (DWORD dwSessionID) const;
|
|
const WCHAR* GetCommandLine (void) const;
|
|
NTSTATUS Restore (HANDLE *phProcess) const;
|
|
private:
|
|
NTSTATUS GetProcessParameters (HANDLE hProcess, RTL_USER_PROCESS_PARAMETERS *pProcessParameters);
|
|
NTSTATUS GetUnicodeString (HANDLE hProcess, const UNICODE_STRING& string, WCHAR** ppsz);
|
|
|
|
NTSTATUS GetToken (HANDLE hProcess);
|
|
NTSTATUS GetSessionID (HANDLE hProcess);
|
|
NTSTATUS GetCommandLine (HANDLE hProcess, const RTL_USER_PROCESS_PARAMETERS& processParameters);
|
|
NTSTATUS GetEnvironment (HANDLE hProcess, const RTL_USER_PROCESS_PARAMETERS& processParameters);
|
|
NTSTATUS GetCurrentDirectory (HANDLE hProcess, const RTL_USER_PROCESS_PARAMETERS& processParameters);
|
|
NTSTATUS GetDesktop (HANDLE hProcess, const RTL_USER_PROCESS_PARAMETERS& processParameters);
|
|
NTSTATUS GetTitle (HANDLE hProcess, const RTL_USER_PROCESS_PARAMETERS& processParameters);
|
|
NTSTATUS GetFlags (HANDLE hProcess, const RTL_USER_PROCESS_PARAMETERS& processParameters);
|
|
NTSTATUS GetStdHandles (HANDLE hProcess, const RTL_USER_PROCESS_PARAMETERS& processParameters);
|
|
private:
|
|
HANDLE _hToken;
|
|
DWORD _dwSessionID;
|
|
WCHAR *_pszCommandLine;
|
|
void *_pEnvironment;
|
|
WCHAR *_pszCurrentDirectory;
|
|
WCHAR *_pszDesktop;
|
|
WCHAR *_pszTitle;
|
|
DWORD _dwFlags;
|
|
WORD _wShowWindow;
|
|
HANDLE _hStdInput;
|
|
HANDLE _hStdOutput;
|
|
HANDLE _hStdError;
|
|
|
|
static const WCHAR s_szDefaultDesktop[];
|
|
};
|
|
|
|
#endif /* _RestoreApplication_ */
|
|
|