Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

70 lines
3.3 KiB

// --------------------------------------------------------------------------
// 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_ */