windows-nt/Source/XPSP1/NT/base/remoteboot/admin/ccomputr.h
2020-09-26 16:20:57 +08:00

122 lines
3.4 KiB
C++

//
// Copyright 1997 - Microsoft
//
//
// CComputr.H - Computer properties class
//
#ifndef _CCOMPUTR_H_
#define _CCOMPUTR_H_
#include <adsprop.h>
// QITable
BEGIN_QITABLE( CComputer )
DEFINE_QI( IID_IShellExtInit, IShellExtInit , 1 )
DEFINE_QI( IID_IShellPropSheetExt, IShellPropSheetExt , 2 )
DEFINE_QI( IID_IMAO, IMAO , 11 )
END_QITABLE
// Definitions
LPVOID
CComputer_CreateInstance( void );
LPVOID
CreateIntelliMirrorClientComputer(
IADs * pads);
// Error Codes
#define E_INVALIDSTATE TYPE_E_INVALIDSTATE
// Private IMAO Interface Definition
class
IMAO:
public IUnknown
{
public:
STDMETHOD(CommitChanges)( void ) PURE; // 1
STDMETHOD(IsAdmin)( BOOL *fAdmin ) PURE; // 2
STDMETHOD(IsServer)( BOOL *fServer ) PURE; // 3
STDMETHOD(IsClient)( BOOL *fClient ) PURE; // 4
STDMETHOD(SetServerName)( LPWSTR ppszName ) PURE; // 5
STDMETHOD(GetServerName)( LPWSTR * ppszName ) PURE; // 6
STDMETHOD(SetGUID)( LPWSTR ppGUID ) PURE; // 7
STDMETHOD(GetGUID)( LPWSTR * ppszGUID, LPBYTE uGUID ) PURE; // 8
STDMETHOD(GetSAP)( LPVOID * punk ) PURE; // 9
STDMETHOD(GetDataObject)( LPDATAOBJECT * pDataObj ) PURE; // 10
STDMETHOD(GetNotifyWindow)( HWND *phNotifyObj ) PURE; // 11
};
// CComputer
class
CComputer:
public IShellExtInit, IShellPropSheetExt, IMAO
{
private:
// Enums
enum {
MODE_SHELL = 0,
MODE_ADMIN
};
// IUnknown
ULONG _cRef;
DECLARE_QITABLE( CComputer );
UINT _uMode; // Admin or Shell mode
LPDATAOBJECT _pDataObj; // Data Object passed to ServerTab
LPWSTR _pszObjectName;// DN of the object
IADs * _pads; // ADs to MAO
VARIANT _vGUID;
VARIANT _vMachineFilepath;
VARIANT _vInitialization;
VARIANT _vSCP;
HWND _hwndNotify; // DS notify window handle
ADSPROPINITPARAMS _InitParams; // DSA init params
private: // Methods
CComputer();
~CComputer();
STDMETHOD(Init)();
STDMETHOD(Init2)( IADs * pads );
HRESULT _FixObjectPath( LPWSTR pszOldObjectPath, LPWSTR *ppszNewObjectPath );
public: // Methods
friend LPVOID CComputer_CreateInstance( void );
friend LPVOID CreateIntelliMirrorClientComputer( IADs * pads);
// IUnknown
STDMETHOD(QueryInterface)( REFIID riid, LPVOID *ppv );
STDMETHOD_(ULONG, AddRef)(void);
STDMETHOD_(ULONG, Release)(void);
// IShellExtInit
STDMETHOD(Initialize)( LPCITEMIDLIST pidlFolder, LPDATAOBJECT lpdobj, HKEY hkeyProgID);
// IShellPropSheetExt
STDMETHOD(AddPages)( LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam);
STDMETHOD(ReplacePage) ( UINT uPageID, LPFNADDPROPSHEETPAGE lpfnReplaceWith, LPARAM lParam);
// IMAO
STDMETHOD(CommitChanges)( void );
STDMETHOD(IsAdmin)( BOOL *fAdmin );
STDMETHOD(IsServer)( BOOL *fServer );
STDMETHOD(IsClient)( BOOL *fClient );
STDMETHOD(SetServerName)( LPWSTR ppszName );
STDMETHOD(GetServerName)( LPWSTR * ppszName );
STDMETHOD(SetGUID)( LPWSTR ppGUID );
STDMETHOD(GetGUID)( LPWSTR * ppszGUID, LPBYTE uGUID );
STDMETHOD(GetSAP)( LPVOID *punk );
STDMETHOD(GetDataObject)( LPDATAOBJECT * pDataObj );
STDMETHOD(GetNotifyWindow)( HWND *phNotifyObj );
};
typedef CComputer* LPCOMPUTER;
#endif // _CCOMPUTR_H_