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.
249 lines
4.8 KiB
249 lines
4.8 KiB
/*++
|
|
|
|
Copyright (c) 1999 Microsoft Corporation
|
|
|
|
Abstract:
|
|
|
|
@doc
|
|
@module vssadmin.cpp | header of VSS demo
|
|
@end
|
|
|
|
Author:
|
|
|
|
Adi Oltean [aoltean] 09/17/1999
|
|
|
|
TBD:
|
|
|
|
Add comments.
|
|
|
|
Revision History:
|
|
|
|
Name Date Comments
|
|
aoltean 09/17/1999 Created
|
|
|
|
--*/
|
|
|
|
|
|
#ifndef __VSS_DEMO_H_
|
|
#define __VSS_DEMO_H_
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Defines and pragmas
|
|
|
|
// C4290: C++ Exception Specification ignored
|
|
#pragma warning(disable:4290)
|
|
// warning C4511: copy constructor could not be generated
|
|
#pragma warning(disable:4511)
|
|
// warning C4127: conditional expression is constant
|
|
#pragma warning(disable:4127)
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Includes
|
|
|
|
|
|
#include <wtypes.h>
|
|
#include <stddef.h>
|
|
#include <oleauto.h>
|
|
#include <comadmin.h>
|
|
|
|
// Enabling asserts in ATL and VSS
|
|
#include "vs_assert.hxx"
|
|
|
|
// ATL
|
|
#include <atlconv.h>
|
|
#include <atlbase.h>
|
|
|
|
// Application specific
|
|
#include "vs_inc.hxx"
|
|
|
|
// Generated MIDL headers
|
|
#include "vs_idl.hxx"
|
|
|
|
#include "copy.hxx"
|
|
#include "pointer.hxx"
|
|
|
|
#include "resource.h"
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Constants
|
|
|
|
const WCHAR wszVssOptVssadmin[] = L"vssadmin";
|
|
const WCHAR wszVssOptList[] = L"list";
|
|
const WCHAR wszVssOptSnapshots[] = L"shadows";
|
|
const WCHAR wszVssOptProviders[] = L"providers";
|
|
const WCHAR wszVssOptWriters[] = L"writers";
|
|
const WCHAR wszVssOptSet[] = L"/set=";
|
|
const WCHAR wszVssFmtSpaces[] = L" \t";
|
|
const WCHAR wszVssFmtNewline[] = L"\n";
|
|
|
|
|
|
const nStringBufferSize = 1024; // Includes the zero character
|
|
|
|
const nPollingInterval = 2500; // Three seconds
|
|
|
|
const MAX_RETRIES_COUNT = 4; // Retries for polling
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// class CVssAdminCLI
|
|
|
|
|
|
class CVssAdminCLI
|
|
{
|
|
// Enums and typedefs
|
|
private:
|
|
|
|
typedef enum _CMD_TYPE
|
|
{
|
|
VSS_CMD_UNKNOWN = 0,
|
|
VSS_CMD_USAGE,
|
|
VSS_CMD_LIST,
|
|
VSS_CMD_CREATE,
|
|
VSS_CMD_DELETE,
|
|
} CMD_TYPE;
|
|
|
|
typedef enum _LIST_TYPE
|
|
{
|
|
VSS_LIST_UNKNOWN = 0,
|
|
VSS_LIST_SNAPSHOTS,
|
|
VSS_LIST_WRITERS,
|
|
VSS_LIST_PROVIDERS,
|
|
} LIST_TYPE;
|
|
|
|
enum _RETURN_VALUE
|
|
{
|
|
VSS_CMDRET_SUCCESS = 0,
|
|
VSS_CMDRET_EMPTY_RESULT = 1,
|
|
VSS_CMDRET_ERROR = 2,
|
|
};
|
|
|
|
// Constructors& destructors
|
|
private:
|
|
CVssAdminCLI(const CVssAdminCLI&);
|
|
CVssAdminCLI();
|
|
|
|
public:
|
|
CVssAdminCLI(
|
|
IN HINSTANCE hInstance
|
|
);
|
|
~CVssAdminCLI();
|
|
|
|
// Attributes
|
|
private:
|
|
|
|
LPWSTR GetCmdLine() const { return m_pwszCmdLine; };
|
|
HINSTANCE GetInstance() const { return m_hInstance; };
|
|
INT GetReturnValue() { return m_nReturnValue; };
|
|
|
|
|
|
// Operations
|
|
public:
|
|
|
|
static HRESULT Main(
|
|
IN HINSTANCE hInstance
|
|
);
|
|
|
|
private:
|
|
|
|
void Initialize(
|
|
IN CVssFunctionTracer& ft
|
|
) throw(HRESULT);
|
|
|
|
void ParseCmdLine(
|
|
IN CVssFunctionTracer& ft
|
|
) throw(HRESULT);
|
|
|
|
void DoProcessing(
|
|
IN CVssFunctionTracer& ft
|
|
) throw(HRESULT);
|
|
|
|
void Finalize();
|
|
|
|
// Processing
|
|
private:
|
|
|
|
void PrintUsage(
|
|
IN CVssFunctionTracer& ft
|
|
) throw(HRESULT);
|
|
|
|
void ListSnapshots(
|
|
IN CVssFunctionTracer& ft
|
|
) throw(HRESULT);
|
|
|
|
void ListWriters(
|
|
IN CVssFunctionTracer& ft
|
|
) throw(HRESULT);
|
|
|
|
void ListProviders(
|
|
IN CVssFunctionTracer& ft
|
|
) throw(HRESULT);
|
|
|
|
// Implementation
|
|
private:
|
|
|
|
LPCWSTR LoadString(
|
|
IN CVssFunctionTracer& ft,
|
|
IN UINT nStringId
|
|
) throw(HRESULT);
|
|
|
|
LPCWSTR GetNextCmdlineToken(
|
|
IN CVssFunctionTracer& ft,
|
|
IN bool bFirstToken = false
|
|
) throw(HRESULT);
|
|
|
|
bool Match(
|
|
IN CVssFunctionTracer& ft,
|
|
IN LPCWSTR wszString,
|
|
IN LPCWSTR wszPatternString
|
|
) throw(HRESULT);
|
|
|
|
bool ScanGuid(
|
|
IN CVssFunctionTracer& ft,
|
|
IN LPCWSTR wszString,
|
|
IN VSS_ID& Guid
|
|
) throw(HRESULT);
|
|
|
|
void Output(
|
|
IN CVssFunctionTracer& ft,
|
|
IN LPCWSTR wszFormat,
|
|
...
|
|
) throw(HRESULT);
|
|
|
|
void Output(
|
|
IN CVssFunctionTracer& ft,
|
|
IN UINT uFormatStringId,
|
|
...
|
|
) throw(HRESULT);
|
|
|
|
void OutputOnConsole(
|
|
IN LPCWSTR wszStr
|
|
);
|
|
|
|
LPCWSTR GetProviderName(
|
|
IN CVssFunctionTracer& ft,
|
|
IN VSS_ID& ProviderId
|
|
) throw(HRESULT);
|
|
|
|
// Data members
|
|
private:
|
|
|
|
HINSTANCE m_hInstance;
|
|
HANDLE m_hConsoleOutput;
|
|
CVssSimpleMap<UINT, LPCWSTR> m_mapCachedResourceStrings;
|
|
CVssSimpleMap<VSS_ID, LPCWSTR> m_mapCachedProviderNames;
|
|
LPWSTR m_pwszCmdLine;
|
|
INT m_nReturnValue;
|
|
|
|
CMD_TYPE m_eCommandType;
|
|
LIST_TYPE m_eListType;
|
|
VSS_OBJECT_TYPE m_eFilterObjectType;
|
|
VSS_OBJECT_TYPE m_eListedObjectType;
|
|
VSS_ID m_FilterSnapshotSetId;
|
|
VSS_ID m_FilterSnapshotId;
|
|
};
|
|
|
|
|
|
#endif //__VSS_DEMO_H_
|