1528 lines
41 KiB
C++
1528 lines
41 KiB
C++
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1996 - 2000.
|
|
//
|
|
// File: proxymsg.hxx
|
|
//
|
|
// Contents: Defines messages and related constants for communication over
|
|
// a named pipe between query clients and servers.
|
|
//
|
|
// Classes: CProxyMessage
|
|
// CPM*
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
// 24-Aug-99 klam CI Win64 version info
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
#define CI_PIPE_NAME L"ci_skads"
|
|
#define CI_SERVER_PIPE_NAME L"\\\\.\\pipe\\ci_skads"
|
|
|
|
#define IsCi64(x) ((x) & 0x10000)
|
|
#define pmCiVersion(x) ((x) & ~0x10000)
|
|
|
|
#ifdef _WIN64
|
|
// Low bit on upper word indicates 64 bit machine
|
|
const int pmClientVersion = 0x10008;
|
|
const int pmServerVersion = 0x10007;
|
|
#else
|
|
const int pmClientVersion = 8;
|
|
const int pmServerVersion = 7;
|
|
#endif
|
|
|
|
// This alignment function is useful for asserts
|
|
|
|
inline BOOL isQWordAligned( void const * p )
|
|
{ return 0 == ( ( (ULONG_PTR) p ) & 0x7 ); }
|
|
|
|
inline BOOL isDWordAligned( ULONG ul )
|
|
{ return 0 == ( ul & 0x3 ); }
|
|
|
|
// note: pipe writes are limited to 64k in Win32. Also, these buffers are
|
|
// allocated from non-paged-pool on the server.
|
|
|
|
const ULONG cbMaxProxyBuffer = 0x4000; //16384
|
|
|
|
const int pmConnect = 200; // 0xc8
|
|
const int pmDisconnect = 201; // 0xc9
|
|
const int pmCreateQuery = 202; // 0xca
|
|
const int pmFreeCursor = 203; // 0xcb
|
|
const int pmGetRows = 204; // 0xcc
|
|
const int pmRatioFinished = 205; // 0xcd
|
|
const int pmCompareBmk = 206; // 0xce
|
|
const int pmGetApproximatePosition = 207; // 0xcf
|
|
const int pmSetBindings = 208; // 0xd0
|
|
const int pmGetNotify = 209; // 0xd1
|
|
const int pmSendNotify = 210; // 0xd2
|
|
const int pmSetWatchMode = 211; // 0xd3
|
|
const int pmGetWatchInfo = 212; // 0xd4
|
|
const int pmShrinkWatchRegion = 213; // 0xd5
|
|
const int pmRefresh = 214; // 0xd6
|
|
const int pmGetQueryStatus = 215; // 0xd7
|
|
const int pmWidToPath = 216; // 0xd8
|
|
const int pmCiState = 217; // 0xd9
|
|
const int pmBeginCacheTransaction = 218; // 0xda
|
|
const int pmSetupCache = 219; // 0xdb
|
|
const int pmEndCacheTransaction = 220; // 0xdc
|
|
const int pmAddScope = 221; // 0xdd
|
|
const int pmRemoveScope = 222; // 0xde
|
|
const int pmAddVirtualScope = 223; // 0xdf
|
|
const int pmRemoveVirtualScope = 224; // 0xe0
|
|
const int pmForceMerge = 225; // 0xe1
|
|
const int pmAbortMerge = 226; // 0xe2
|
|
const int pmSetPartition = 227; // 0xe3
|
|
const int pmFetchValue = 228; // 0xe4
|
|
const int pmWorkIdToPath = 229; // 0xe5
|
|
const int pmUpdateDocuments = 230; // 0xe6
|
|
const int pmGetQueryStatusEx = 231; // 0xe7
|
|
const int pmRestartPosition = 232; // 0xe8
|
|
const int pmStopAsynch = 233; // 0xe9
|
|
const int pmStartWatching = 234; // 0xea
|
|
const int pmStopWatching = 235; // 0xeb
|
|
const int pmSetCatState = 236; // 0xec
|
|
|
|
const int cProxyMessages = 37;
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CProxyMessage
|
|
//
|
|
// Synopsis: All proxy messages derive from this message
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CProxyMessage
|
|
{
|
|
public:
|
|
void * operator new( size_t size, void *pv ) { return pv; }
|
|
|
|
#if _MSC_VER >= 1200
|
|
void operator delete( void * pv, void * ppv ) {}
|
|
#else
|
|
void operator delete( void * pv ) {}
|
|
#endif
|
|
|
|
CProxyMessage( int msg ) :
|
|
_msg( msg ),
|
|
_status( S_OK ),
|
|
_ulReserved1( 0 ),
|
|
_ulReserved2( 0 ) {}
|
|
|
|
CProxyMessage() {}
|
|
|
|
int GetMessage() { return _msg; }
|
|
void SetMessage( int msg ) { _msg = msg; }
|
|
|
|
void SetStatus( HRESULT hr ) { _status = hr; }
|
|
HRESULT GetStatus() { return _status; }
|
|
|
|
BYTE * Data() { return (BYTE *) ( this + 1 ); }
|
|
|
|
static ULONG ProxyCheckSum( BYTE const * pb, ULONG cb )
|
|
{
|
|
Win4Assert( isQWordAligned( pb ) );
|
|
Win4Assert( isDWordAligned( cb ) );
|
|
|
|
ULONG x = 0;
|
|
ULONG * pul = (ULONG *) pb;
|
|
ULONG cul = cb / sizeof ULONG;
|
|
|
|
for ( ULONG i = 0; i < cul; i++ )
|
|
x += pul[i];
|
|
|
|
return x ^ 0x59533959; // mask that we're using simple checksum
|
|
}
|
|
|
|
void SetCheckSum( ULONG cb )
|
|
{
|
|
_ulCheckSum = ComputeCheckSum( cb );
|
|
}
|
|
|
|
void ValidateCheckSum( int iClientVersion, ULONG cb )
|
|
{
|
|
// if it's a recent client or they passed a checksum, validate it
|
|
|
|
if ( iClientVersion >= 8 || 0 != _ulCheckSum )
|
|
{
|
|
if ( ComputeCheckSum( cb ) != _ulCheckSum )
|
|
THROW( CException( STATUS_INVALID_PARAMETER ) );
|
|
}
|
|
}
|
|
|
|
protected:
|
|
|
|
ULONG GetReserved1() { return _ulReserved1; }
|
|
void SetReserved1( ULONG ul ) { _ulReserved1 = ul; }
|
|
|
|
ULONG GetReserved2() { return _ulReserved2; }
|
|
void SetReserved2( ULONG ul ) { _ulReserved2 = ul; }
|
|
|
|
//
|
|
// We know that there are 2 reserved fields that together are guaranteed
|
|
// to hold a full ULONG_PTR even on Win64 systems. Users of reserved
|
|
// space have to know what they are doing.
|
|
//
|
|
|
|
ULONG_PTR * GetReservedSpace() { return (ULONG_PTR *) &_ulReserved1; }
|
|
|
|
private:
|
|
|
|
// make sure the standard operator new isn't called
|
|
|
|
void * operator new ( size_t size )
|
|
{ Win4Assert( !"don't call me!" ); return 0; }
|
|
|
|
ULONG ComputeCheckSum( ULONG cb )
|
|
{
|
|
// Don't include the base class in the checksum, only the _msg,
|
|
// since _ulCheckSum will change when we set it
|
|
|
|
Win4Assert( cb >= sizeof CProxyMessage );
|
|
cb -= sizeof CProxyMessage;
|
|
|
|
return ProxyCheckSum( Data(), cb ) - _msg;
|
|
}
|
|
|
|
int _msg; // one of the pm* constants.
|
|
HRESULT _status; // sent from server to client, client sets to 0
|
|
|
|
union
|
|
{
|
|
// Some messages use this as the checksum for client to server, but
|
|
// it's still available for server to client
|
|
|
|
ULONG _ulReserved1; // guaranteed to be 0 from v1-v2 client
|
|
ULONG _ulCheckSum; // set for >= v8 clients
|
|
};
|
|
|
|
ULONG _ulReserved2; // guaranteed to be 0 from v1-v2 client
|
|
// for Win64 this holds the upper half of a pointer
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMConnectIn
|
|
//
|
|
// Synopsis: Establishes a connection between the client and the server.
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMConnectIn : public CProxyMessage
|
|
{
|
|
public:
|
|
|
|
static ULONG_PTR Align8Byte( ULONG_PTR cb )
|
|
{
|
|
return (cb + 0x7) & (~0x7);
|
|
}
|
|
|
|
static unsigned SizeOf( WCHAR const * pwcClientMachineName,
|
|
WCHAR const * pwcClientUserName,
|
|
ULONG cbBlob = 0,
|
|
ULONG cbBlob2 = 0 )
|
|
{
|
|
unsigned cb = sizeof CPMConnectIn;
|
|
|
|
cb += sizeof WCHAR * ( 1 + wcslen( pwcClientMachineName ) );
|
|
cb += sizeof WCHAR * ( 1 + wcslen( pwcClientUserName ) );
|
|
|
|
//
|
|
// Align 8 for the blobs
|
|
//
|
|
if ( 0 != cbBlob )
|
|
{
|
|
cb = (unsigned)Align8Byte(cb);
|
|
cb += (unsigned)Align8Byte(cbBlob);
|
|
}
|
|
if ( 0 != cbBlob2 )
|
|
{
|
|
cb = (unsigned)Align8Byte(cb);
|
|
cb += (unsigned)Align8Byte(cbBlob2);
|
|
}
|
|
|
|
return cb;
|
|
}
|
|
|
|
CPMConnectIn( WCHAR const * pwcClientMachineName,
|
|
WCHAR const * pwcClientUserName,
|
|
BOOL fClientIsRemote,
|
|
ULONG cbBlob,
|
|
ULONG cbBlob2,
|
|
int iClientVersion = pmClientVersion ) :
|
|
CProxyMessage( pmConnect ),
|
|
_fClientIsRemote( fClientIsRemote ),
|
|
_iClientVersion( iClientVersion ),
|
|
_cbBlob( cbBlob ),
|
|
_cbBlob2( cbBlob2 )
|
|
{
|
|
wcscpy( GetClientMachineName(), pwcClientMachineName );
|
|
wcscpy( GetClientUserName(), pwcClientUserName );
|
|
}
|
|
|
|
BYTE * GetBlobStartAddr() const
|
|
{
|
|
BYTE * pbAddr = 0;
|
|
|
|
if ( 0 != _cbBlob )
|
|
{
|
|
WCHAR * pwcsClientUserName = GetClientUserName();
|
|
|
|
pbAddr = (BYTE *) (pwcsClientUserName + wcslen(pwcsClientUserName)+1);
|
|
pbAddr = (BYTE *) Align8Byte( (ULONG_PTR) pbAddr );
|
|
}
|
|
|
|
return pbAddr;
|
|
}
|
|
|
|
BYTE * GetBlob2StartAddr() const
|
|
{
|
|
return GetBlobStartAddr() + Align8Byte(GetBlobSize());
|
|
}
|
|
|
|
ULONG GetBlobSize() const { return _cbBlob; }
|
|
|
|
ULONG GetBlob2Size() const { return _cbBlob2; }
|
|
|
|
BOOL IsClientRemote() { return _fClientIsRemote; }
|
|
|
|
WCHAR * GetClientMachineName() const
|
|
{
|
|
return (WCHAR *) ( this + 1 );
|
|
}
|
|
|
|
WCHAR * GetClientUserName() const
|
|
{
|
|
WCHAR *pwcMach = GetClientMachineName();
|
|
return pwcMach + 1 + wcslen( pwcMach );
|
|
}
|
|
|
|
int GetClientVersion() { return _iClientVersion; }
|
|
|
|
private:
|
|
|
|
int _iClientVersion;
|
|
BOOL _fClientIsRemote;
|
|
ULONG _cbBlob;
|
|
union
|
|
{
|
|
// version 5 clients have a blob1, but no blob2. version
|
|
// 6 clients have both a blob1 and a blob2 directly after
|
|
// blob1.
|
|
// The rest of the reserved area is still unused.
|
|
|
|
LONGLONG _reserved[2];
|
|
struct
|
|
{
|
|
ULONG _cbBlob2;
|
|
};
|
|
};
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMConnectOut
|
|
//
|
|
// Synopsis: A reply from the server to a connect message
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMConnectOut : public CProxyMessage
|
|
{
|
|
public:
|
|
int & ServerVersion() { return _ServerVersion; }
|
|
|
|
private:
|
|
int _ServerVersion;
|
|
LONGLONG _reserved[2];
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMCreateQueryIn
|
|
//
|
|
// Synopsis: Message reply for a create query, returns an array of cursors
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMCreateQueryIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMCreateQueryIn() : CProxyMessage( pmCreateQuery ) {}
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMCreateQueryOut
|
|
//
|
|
// Synopsis: Message reply for a create query, returns an array of cursors
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMCreateQueryOut : public CProxyMessage
|
|
{
|
|
public:
|
|
ULONG * GetCursors() { return (ULONG *) ( this + 1 ); }
|
|
|
|
BOOL & IsTrueSequential() { return _fTrueSequential; }
|
|
BOOL & IsWorkIdUnique() { return _fWorkIdUnique; }
|
|
|
|
ULONG_PTR GetServerCookie() { return *GetReservedSpace(); }
|
|
void SetServerCookie( ULONG_PTR ul ) { *GetReservedSpace() = ul; }
|
|
|
|
private:
|
|
BOOL _fTrueSequential;
|
|
BOOL _fWorkIdUnique;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMFreeCursorIn
|
|
//
|
|
// Synopsis: Message to free a cursor
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMFreeCursorIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMFreeCursorIn( ULONG hCursor ) :
|
|
CProxyMessage( pmFreeCursor ), _hCursor( hCursor ) {}
|
|
ULONG GetCursor() { return _hCursor; }
|
|
|
|
private:
|
|
ULONG _hCursor;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMFreeCursorOut
|
|
//
|
|
// Synopsis: Message reply to freeing a cursor, returns # of cursors left
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMFreeCursorOut : public CProxyMessage
|
|
{
|
|
public:
|
|
unsigned & CursorsRemaining() { return _cCursorsRemaining; }
|
|
|
|
private:
|
|
unsigned _cCursorsRemaining;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMGetRowsIn
|
|
//
|
|
// Synopsis: Message for getting rows
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
// 30-Aug-99 KLam 64 bit changes
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMGetRowsIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMGetRowsIn( ULONG hCursor,
|
|
unsigned cRowsToTransfer,
|
|
ULONG fFwdFetch,
|
|
size_t cbRowWidth,
|
|
unsigned cbSeek,
|
|
unsigned cbReserved ) :
|
|
CProxyMessage( pmGetRows ),
|
|
_hCursor( hCursor ),
|
|
_cRowsToTransfer( cRowsToTransfer ),
|
|
_fBwdFetch( !fFwdFetch ),
|
|
_cbRowWidth( (unsigned) cbRowWidth ),
|
|
_cbSeek( cbSeek ),
|
|
_cbReserved( cbReserved ),
|
|
_cbReadBuffer( 0 ),
|
|
_ulClientBase( 0 ) {}
|
|
|
|
void SetClientBase( ULONG_PTR ul )
|
|
{
|
|
// On Win64 this will store the lower part into _ulClientBase
|
|
_ulClientBase = (ULONG) ul;
|
|
|
|
#ifdef _WIN64
|
|
// Store the upper part into the reserved area.
|
|
SetReserved2 ((ULONG) (ul >> 32) );
|
|
#endif
|
|
}
|
|
|
|
ULONG GetCursor() { return _hCursor; }
|
|
unsigned GetRowsToTransfer() { return _cRowsToTransfer; }
|
|
size_t GetRowWidth() { return _cbRowWidth; }
|
|
unsigned GetSeekSize() { return _cbSeek; }
|
|
unsigned GetReservedSize() { return _cbReserved; }
|
|
unsigned GetReadBufferSize() { return _cbReadBuffer; }
|
|
void SetReadBufferSize( unsigned cb ) { _cbReadBuffer = cb; }
|
|
ULONG_PTR GetClientBase()
|
|
{
|
|
#ifdef _WIN64
|
|
return ( ( (ULONG_PTR) _ulClientBase ) |
|
|
( ( (ULONG_PTR) GetReserved2() ) << 32 ) );
|
|
#else
|
|
return _ulClientBase;
|
|
#endif
|
|
}
|
|
BOOL GetFwdFetch() { return !_fBwdFetch; }
|
|
|
|
BYTE * GetDesc() { return (BYTE *) ( this + 1 ); }
|
|
|
|
private:
|
|
ULONG _hCursor;
|
|
unsigned _cRowsToTransfer;
|
|
unsigned _cbRowWidth; // was size_t but breaks 64-bit, residual parameters above
|
|
unsigned _cbSeek;
|
|
unsigned _cbReserved;
|
|
unsigned _cbReadBuffer;
|
|
|
|
ULONG _ulClientBase; // On Win64 this value is broken into
|
|
// 2 ULONGS and top half is stored in the
|
|
// reserved area.
|
|
|
|
ULONG _fBwdFetch; // fBwdFetch is used instead of fFwdFetch
|
|
// because the value of this field is 0
|
|
// for old clients and we want the default
|
|
// to be forward fetch, which is what a 0 value
|
|
// of fBwdFetch implies.
|
|
|
|
// don't add data here -- marshalled version of rowseek follows data
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMGetRowsOut
|
|
//
|
|
// Synopsis: Message reply containing rows retrieved
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMGetRowsOut : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMGetRowsOut() : CProxyMessage( pmGetRows ) {}
|
|
unsigned & RowsReturned() { return _cRowsReturned; }
|
|
BYTE * GetSeekDesc() { return (BYTE *) ( this + 1 ); }
|
|
|
|
private:
|
|
unsigned _cRowsReturned;
|
|
};
|
|
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMRestartPositionIn
|
|
//
|
|
// Synopsis: Message for setting fetch position at start for chapter
|
|
//
|
|
// History: 17-Apr-97 emilyb created
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMRestartPositionIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMRestartPositionIn( ULONG hCursor,
|
|
CI_TBL_CHAPT chapt ) :
|
|
CProxyMessage( pmRestartPosition ),
|
|
_hCursor( hCursor ),
|
|
_chapt( chapt ) {}
|
|
|
|
CI_TBL_CHAPT GetChapter() { return _chapt; }
|
|
ULONG GetCursor() { return _hCursor; }
|
|
|
|
private:
|
|
ULONG _hCursor;
|
|
CI_TBL_CHAPT _chapt;
|
|
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMStopAsynchIn
|
|
//
|
|
// Synopsis: Message for stopping processing async rowset
|
|
//
|
|
// History: 17-Apr-97 emilyb created
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMStopAsynchIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMStopAsynchIn( ULONG hCursor ) :
|
|
CProxyMessage( pmStopAsynch ),
|
|
_hCursor( hCursor ) {}
|
|
|
|
ULONG GetCursor() { return _hCursor; }
|
|
|
|
private:
|
|
ULONG _hCursor;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMStartWatchingIn
|
|
//
|
|
// Synopsis: Message for starting watch all behavior
|
|
//
|
|
// History: 17-Apr-97 emilyb created
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMStartWatchingIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMStartWatchingIn( ULONG hCursor ) :
|
|
CProxyMessage( pmStartWatching ),
|
|
_hCursor( hCursor ) {}
|
|
|
|
ULONG GetCursor() { return _hCursor; }
|
|
|
|
private:
|
|
ULONG _hCursor;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMStopWatchingIn
|
|
//
|
|
// Synopsis: Message for stopping watch all behavior
|
|
//
|
|
// History: 17-Apr-97 emilyb created
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMStopWatchingIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMStopWatchingIn( ULONG hCursor ) :
|
|
CProxyMessage( pmStopWatching ),
|
|
_hCursor( hCursor ) {}
|
|
|
|
ULONG GetCursor() { return _hCursor; }
|
|
|
|
private:
|
|
ULONG _hCursor;
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMRatioFinishedIn
|
|
//
|
|
// Synopsis: Message for getting ratio finished
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMRatioFinishedIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMRatioFinishedIn( ULONG hCursor,
|
|
BOOL fQuick ) :
|
|
CProxyMessage( pmRatioFinished ),
|
|
_hCursor( hCursor ),
|
|
_fQuick( fQuick ) {}
|
|
ULONG GetCursor() { return _hCursor; }
|
|
ULONG GetQuick() { return _fQuick; }
|
|
|
|
private:
|
|
ULONG _hCursor;
|
|
BOOL _fQuick;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMRatioFinishedOut
|
|
//
|
|
// Synopsis: Message reply for ratio finished
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMRatioFinishedOut : public CProxyMessage
|
|
{
|
|
public:
|
|
ULONG & Numerator() { return _ulNumerator; }
|
|
ULONG & Denominator() { return _ulDenominator; }
|
|
ULONG & RowCount() { return _cRows; }
|
|
BOOL & NewRows() { return _fNewRows; }
|
|
|
|
private:
|
|
ULONG _ulNumerator;
|
|
ULONG _ulDenominator;
|
|
ULONG _cRows;
|
|
BOOL _fNewRows;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMCompareBmkIn
|
|
//
|
|
// Synopsis: Message to compare bookmarks
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMCompareBmkIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMCompareBmkIn( ULONG hCursor,
|
|
CI_TBL_CHAPT chapt,
|
|
CI_TBL_BMK bmkFirst,
|
|
CI_TBL_BMK bmkSecond ) :
|
|
CProxyMessage( pmCompareBmk ),
|
|
_hCursor( hCursor ),
|
|
_chapt( chapt ),
|
|
_bmkFirst( bmkFirst ),
|
|
_bmkSecond( bmkSecond ) {}
|
|
|
|
ULONG GetCursor() { return _hCursor; }
|
|
CI_TBL_CHAPT GetChapter() { return _chapt; }
|
|
CI_TBL_BMK GetBmkFirst() { return _bmkFirst; }
|
|
CI_TBL_BMK GetBmkSecond() { return _bmkSecond; }
|
|
|
|
private:
|
|
ULONG _hCursor;
|
|
CI_TBL_CHAPT _chapt;
|
|
CI_TBL_BMK _bmkFirst;
|
|
CI_TBL_BMK _bmkSecond;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMCompareBmkOut
|
|
//
|
|
// Synopsis: Message reply for compare bookmarks
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMCompareBmkOut : public CProxyMessage
|
|
{
|
|
public:
|
|
DWORD & Comparison() { return _dwComparison; }
|
|
|
|
private:
|
|
DWORD _dwComparison;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMGetApproximatePositionIn
|
|
//
|
|
// Synopsis: Message request for getting approximate position
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMGetApproximatePositionIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMGetApproximatePositionIn( ULONG hCursor,
|
|
CI_TBL_CHAPT chapt,
|
|
CI_TBL_BMK bmk ) :
|
|
CProxyMessage( pmGetApproximatePosition ),
|
|
_hCursor( hCursor ),
|
|
_chapt( chapt ),
|
|
_bmk( bmk ) {}
|
|
|
|
ULONG GetCursor() { return _hCursor; }
|
|
CI_TBL_CHAPT GetChapter() { return _chapt; }
|
|
CI_TBL_BMK GetBmk() { return _bmk; }
|
|
|
|
private:
|
|
ULONG _hCursor;
|
|
CI_TBL_CHAPT _chapt;
|
|
CI_TBL_BMK _bmk;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMGetApproximatePositionOut
|
|
//
|
|
// Synopsis: Message reply for getting approximate position
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMGetApproximatePositionOut : public CProxyMessage
|
|
{
|
|
public:
|
|
ULONG & Numerator() { return _numerator; }
|
|
ULONG & Denominator() { return _denominator; }
|
|
|
|
private:
|
|
ULONG _numerator;
|
|
ULONG _denominator;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMSetBindingsIn
|
|
//
|
|
// Synopsis: Message request to set bindings
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMSetBindingsIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMSetBindingsIn( ULONG hCursor,
|
|
ULONG cbRow,
|
|
ULONG cbBindingDesc ) :
|
|
CProxyMessage( pmSetBindings ),
|
|
_hCursor( hCursor ),
|
|
_cbRow( cbRow ),
|
|
_cbBindingDesc( cbBindingDesc ) {}
|
|
|
|
ULONG GetCursor() { return _hCursor; }
|
|
ULONG GetRowLength() { return _cbRow; }
|
|
ULONG GetBindingDescLength() { return _cbBindingDesc; }
|
|
BYTE * GetDescription() { return (BYTE *) ( this + 1 ); }
|
|
|
|
private:
|
|
ULONG _hCursor;
|
|
ULONG _cbRow;
|
|
ULONG _cbBindingDesc;
|
|
ULONG _dummy; // force 8-byte alignment of description
|
|
|
|
// don't add data here -- marshalled version of bindings follows data
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMSendNotifyOut
|
|
//
|
|
// Synopsis: Message reply for notifications
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMSendNotifyOut : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMSendNotifyOut( DBWATCHNOTIFY wn ) :
|
|
CProxyMessage( pmSendNotify ),
|
|
_watchNotify( wn ) {}
|
|
|
|
DBWATCHNOTIFY & WatchNotify() { return _watchNotify; }
|
|
|
|
private:
|
|
DBWATCHNOTIFY _watchNotify;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMSetWatchModeIn
|
|
//
|
|
// Synopsis: Message to set watch mode
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMSetWatchModeIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMSetWatchModeIn( HWATCHREGION hRegion, ULONG mode ) :
|
|
CProxyMessage( pmSetWatchMode ),
|
|
_hRegion( hRegion ),
|
|
_mode( mode ) {}
|
|
|
|
HWATCHREGION GetRegion() { return _hRegion; }
|
|
ULONG GetMode() { return _mode; }
|
|
|
|
private:
|
|
HWATCHREGION _hRegion;
|
|
ULONG _mode;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMSetWatchModeOut
|
|
//
|
|
// Synopsis: Message reply for setting watch mode
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMSetWatchModeOut : public CProxyMessage
|
|
{
|
|
public:
|
|
HWATCHREGION & Region() { return _hRegion; }
|
|
|
|
private:
|
|
HWATCHREGION _hRegion;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMGetWatchInfoIn
|
|
//
|
|
// Synopsis: Message for getting watch info
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMGetWatchInfoIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMGetWatchInfoIn( HWATCHREGION hRegion ) :
|
|
CProxyMessage( pmGetWatchInfo ),
|
|
_hRegion( hRegion ) {}
|
|
|
|
HWATCHREGION GetRegion() { return _hRegion; }
|
|
|
|
private:
|
|
HWATCHREGION _hRegion;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMGetWatchInfoOut
|
|
//
|
|
// Synopsis: Message reply for getting watch info
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMGetWatchInfoOut : public CProxyMessage
|
|
{
|
|
public:
|
|
ULONG & Mode() { return _mode; }
|
|
CI_TBL_CHAPT & Chapter() { return _chapt; }
|
|
CI_TBL_BMK & Bookmark() { return _bmk; }
|
|
ULONG & RowCount() { return _cRows; }
|
|
|
|
private:
|
|
ULONG _mode;
|
|
CI_TBL_CHAPT _chapt;
|
|
CI_TBL_BMK _bmk;
|
|
ULONG _cRows;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMShrinkWatchRegionIn
|
|
//
|
|
// Synopsis: Message for shrinking watch region
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMShrinkWatchRegionIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMShrinkWatchRegionIn( HWATCHREGION hRegion,
|
|
CI_TBL_CHAPT chapter,
|
|
CI_TBL_BMK bookmark,
|
|
ULONG cRows ) :
|
|
CProxyMessage( pmShrinkWatchRegion ),
|
|
_hRegion( hRegion ),
|
|
_chapter( chapter ),
|
|
_bookmark( bookmark ),
|
|
_cRows( cRows ) {}
|
|
|
|
HWATCHREGION GetRegion() { return _hRegion; }
|
|
CI_TBL_CHAPT GetChapter() { return _chapter; }
|
|
CI_TBL_BMK GetBookmark() { return _bookmark; }
|
|
LONG GetRowCount() { return _cRows; }
|
|
|
|
private:
|
|
HWATCHREGION _hRegion;
|
|
CI_TBL_CHAPT _chapter;
|
|
CI_TBL_BMK _bookmark;
|
|
LONG _cRows;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMGetQueryStatusIn
|
|
//
|
|
// Synopsis: Message for getting query status
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMGetQueryStatusIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMGetQueryStatusIn( ULONG hCursor ) :
|
|
CProxyMessage( pmGetQueryStatus ),
|
|
_hCursor( hCursor ) {}
|
|
|
|
ULONG GetCursor() { return _hCursor; }
|
|
|
|
private:
|
|
ULONG _hCursor;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMGetQueryStatusOut
|
|
//
|
|
// Synopsis: Message reply for getting query status
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMGetQueryStatusOut : public CProxyMessage
|
|
{
|
|
public:
|
|
DWORD & QueryStatus() { return _status; }
|
|
|
|
private:
|
|
DWORD _status;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMGetQueryStatusExIn
|
|
//
|
|
// Synopsis: Message for getting query status Ex
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMGetQueryStatusExIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMGetQueryStatusExIn( ULONG hCursor, ULONG bmk ) :
|
|
CProxyMessage( pmGetQueryStatusEx ),
|
|
_hCursor( hCursor ),
|
|
_bmk( bmk ) {}
|
|
|
|
ULONG GetCursor() { return _hCursor; }
|
|
ULONG GetBookmark() { return _bmk; }
|
|
|
|
private:
|
|
ULONG _hCursor;
|
|
ULONG _bmk;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMGetQueryStatusExOut
|
|
//
|
|
// Synopsis: Message reply for getting query status
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMGetQueryStatusExOut : public CProxyMessage
|
|
{
|
|
public:
|
|
DWORD & QueryStatus() { return _status; }
|
|
DWORD & FilteredDocuments() { return _cFilteredDocuments; }
|
|
DWORD & DocumentsToFilter() { return _cDocumentsToFilter; }
|
|
ULONG & RatioFinishedDenominator() { return _dwRatioFinishedDenominator; }
|
|
ULONG & RatioFinishedNumerator() { return _dwRatioFinishedNumerator; }
|
|
ULONG & RowBmk() { return _iRowBmk; }
|
|
ULONG & RowsTotal() { return _cRowsTotal; }
|
|
|
|
private:
|
|
DWORD _status;
|
|
DWORD _cFilteredDocuments;
|
|
DWORD _cDocumentsToFilter;
|
|
ULONG _dwRatioFinishedDenominator;
|
|
ULONG _dwRatioFinishedNumerator;
|
|
ULONG _iRowBmk;
|
|
ULONG _cRowsTotal;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMCiStateInOut
|
|
//
|
|
// Synopsis: Message request/reply for ci state
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMCiStateInOut : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMCiStateInOut( DWORD cbStruct ) :
|
|
CProxyMessage( pmCiState )
|
|
{
|
|
RtlZeroMemory( &_state, sizeof _state );
|
|
if (cbStruct <= sizeof _state)
|
|
_state.cbStruct = cbStruct;
|
|
else
|
|
_state.cbStruct = sizeof _state;
|
|
}
|
|
|
|
CPMCiStateInOut()
|
|
{
|
|
// Setting this to 0 here, cause we have added a new
|
|
// member to CI_STATE, which older servers don't have
|
|
|
|
RtlZeroMemory( &_state, sizeof _state );
|
|
_state.cbStruct = sizeof _state;
|
|
}
|
|
|
|
CI_STATE & GetState() { return _state; }
|
|
|
|
private:
|
|
CI_STATE _state;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMForceMergeIn
|
|
//
|
|
// Synopsis: Message to force a merge
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMForceMergeIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMForceMergeIn( PARTITIONID partID ) :
|
|
CProxyMessage( pmForceMerge ),
|
|
_partID( partID ) {}
|
|
|
|
PARTITIONID GetPartID() { return _partID; }
|
|
|
|
private:
|
|
PARTITIONID _partID;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMAbortMergeIn
|
|
//
|
|
// Synopsis: Message to abort a merge
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMAbortMergeIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMAbortMergeIn( PARTITIONID partID ) :
|
|
CProxyMessage( pmForceMerge ),
|
|
_partID( partID ) {}
|
|
|
|
PARTITIONID GetPartID() { return _partID; }
|
|
|
|
private:
|
|
PARTITIONID _partID;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMBeginCacheTransactionOut
|
|
//
|
|
// Synopsis: Message reply to begin a cache transaction
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMBeginCacheTransactionOut : public CProxyMessage
|
|
{
|
|
public:
|
|
ULONG_PTR & GetToken() { return _token; }
|
|
|
|
private:
|
|
ULONG_PTR _token;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMSetupCacheIn
|
|
//
|
|
// Synopsis: Message to setup the property cache
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMSetupCacheIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMSetupCacheIn( ULONG cbPS,
|
|
ULONG_PTR ulToken,
|
|
ULONG vt,
|
|
ULONG cbMaxLen,
|
|
BOOL fCanBeModified,
|
|
DWORD dwStoreLevel ) :
|
|
CProxyMessage( pmSetupCache ),
|
|
_ulToken( ulToken ),
|
|
_vt( vt ),
|
|
_cbMaxLen( cbMaxLen ),
|
|
_cbPS( cbPS )
|
|
{
|
|
// primary and secondary are 0 and 1
|
|
// can't include fsciexps.hxx here
|
|
|
|
Win4Assert( dwStoreLevel <= 0xffff );
|
|
USHORT usf = ( 0 != fCanBeModified );
|
|
USHORT usl = (USHORT) dwStoreLevel;
|
|
SetReserved2( MAKELONG( usf, usl ) );
|
|
}
|
|
|
|
ULONG_PTR GetToken() { return _ulToken; }
|
|
ULONG GetVT() { return _vt; }
|
|
ULONG GetMaxLen() { return _cbMaxLen; }
|
|
ULONG GetPSSize() { return _cbPS; }
|
|
BOOL IsModifiable() { return (BOOL) LOWORD( GetReserved2() ); }
|
|
DWORD GetStoreLevel() { return (DWORD) HIWORD( GetReserved2() ); }
|
|
BYTE * GetPS() { return (BYTE *) (this + 1); }
|
|
|
|
private:
|
|
ULONG_PTR _ulToken;
|
|
ULONG _vt;
|
|
ULONG _cbMaxLen;
|
|
ULONG _cbPS;
|
|
|
|
// don't add data here -- marshalled version of propspec follows data
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMEndCacheTransactionIn
|
|
//
|
|
// Synopsis: Message request to end a cache transaction
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMEndCacheTransactionIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMEndCacheTransactionIn( ULONG_PTR ulToken, BOOL fCommit ) :
|
|
CProxyMessage( pmEndCacheTransaction ),
|
|
_ulToken( ulToken ),
|
|
_fCommit( fCommit ) {}
|
|
|
|
ULONG_PTR GetToken() { return _ulToken; }
|
|
BOOL GetCommit() { return _fCommit; }
|
|
|
|
private:
|
|
ULONG_PTR _ulToken;
|
|
BOOL _fCommit;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMAddScopeIn
|
|
//
|
|
// Synopsis: Message to add a scope for filtering
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMAddScopeIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMAddScopeIn( WCHAR const * pRoot ) :
|
|
CProxyMessage( pmAddScope )
|
|
{
|
|
wcscpy( GetRoot(), pRoot );
|
|
}
|
|
|
|
static unsigned SizeOf( WCHAR const *pwc )
|
|
{
|
|
return sizeof CPMAddScopeIn +
|
|
( ( wcslen( pwc ) + 1 ) * sizeof WCHAR );
|
|
}
|
|
|
|
WCHAR * GetRoot() { return (WCHAR *) (this + 1); }
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMRemoveScopeIn
|
|
//
|
|
// Synopsis: Message to remove a scope from filtering
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMRemoveScopeIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMRemoveScopeIn( WCHAR const * pRoot ) :
|
|
CProxyMessage( pmRemoveScope )
|
|
{
|
|
wcscpy( GetRoot(), pRoot );
|
|
}
|
|
|
|
static unsigned SizeOf( WCHAR const *pwc )
|
|
{
|
|
return sizeof CPMRemoveScopeIn +
|
|
( ( wcslen( pwc ) + 1 ) * sizeof WCHAR );
|
|
}
|
|
|
|
WCHAR * GetRoot() { return (WCHAR *) (this + 1); }
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMFetchValueIn
|
|
//
|
|
// Synopsis: Message fetch all or part of a property value
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMFetchValueIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMFetchValueIn( WORKID wid,
|
|
DWORD cbSoFar,
|
|
DWORD cbPropSpec,
|
|
DWORD cbChunk ) :
|
|
CProxyMessage( pmFetchValue ),
|
|
_wid( wid ),
|
|
_cbSoFar( cbSoFar ),
|
|
_cbPropSpec( cbPropSpec ),
|
|
_cbChunk( cbChunk ) {}
|
|
|
|
WORKID GetWID() { return _wid; }
|
|
DWORD GetSoFar() { return _cbSoFar; }
|
|
DWORD GetPSSize() { return _cbPropSpec; }
|
|
DWORD GetChunkSize() { return _cbChunk; }
|
|
BYTE * GetPS() { return (BYTE *) (this + 1); }
|
|
|
|
private:
|
|
WORKID _wid; // WORKID if file with property value
|
|
DWORD _cbSoFar; // # of bytes transferred so far
|
|
DWORD _cbPropSpec; // # of bytes taken by propspec
|
|
DWORD _cbChunk; // # of bytes max that can be written
|
|
|
|
// don't add data here -- marshalled version of propspec follows data
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMFetchValueOut
|
|
//
|
|
// Synopsis: Message reply containing all or part of a property value
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMFetchValueOut : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMFetchValueOut() : CProxyMessage( pmFetchValue ) {}
|
|
|
|
DWORD & ValueSize() { return _cbValue; }
|
|
BOOL & ValueExists() { return _fValueExists; }
|
|
BOOL & MoreExists() { return _fMoreExists; }
|
|
void * Value() { return (void *) (this+1); }
|
|
|
|
private:
|
|
DWORD _cbValue; // # of bytes transferred in this chunk
|
|
BOOL _fMoreExists; // TRUE if more chunks exist
|
|
BOOL _fValueExists; // TRUE if there was a value, FALSE otherwise
|
|
|
|
// don't add data here -- marshalled version of property val follows data
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMWorkIdToPathIn
|
|
//
|
|
// Synopsis: Message to translate a workid to a path
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMWorkIdToPathIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMWorkIdToPathIn( WORKID wid ) :
|
|
CProxyMessage( pmWorkIdToPath ),
|
|
_wid( wid ) {}
|
|
WORKID GetWorkId() { return _wid; }
|
|
|
|
private:
|
|
WORKID _wid;
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMWorkIdToPathOut
|
|
//
|
|
// Synopsis: Message reply containing a path for a workid
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMWorkIdToPathOut : public CProxyMessage
|
|
{
|
|
public:
|
|
WCHAR * Path() { return (WCHAR *) (this + 1); }
|
|
BOOL & Any() { return _fAny; }
|
|
|
|
private:
|
|
BOOL _fAny;
|
|
|
|
// don't add data here -- marshalled version of path follows data
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMUpdateDocumentsIn
|
|
//
|
|
// Synopsis: Message to force scans
|
|
//
|
|
// History: 16-Sep-96 dlee Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMUpdateDocumentsIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMUpdateDocumentsIn( WCHAR const * pwcRootPath, ULONG flag ) :
|
|
CProxyMessage( pmUpdateDocuments ),
|
|
_flag( flag ),
|
|
_fRootPath( 0 != pwcRootPath )
|
|
{
|
|
if ( _fRootPath )
|
|
wcscpy( GetRootPath(), pwcRootPath );
|
|
}
|
|
|
|
static unsigned SizeOf( WCHAR const * pwcRootPath )
|
|
{
|
|
unsigned cb = sizeof CPMUpdateDocumentsIn;
|
|
if ( 0 != pwcRootPath )
|
|
cb += sizeof WCHAR * ( 1 + wcslen( pwcRootPath ) );
|
|
return cb;
|
|
}
|
|
|
|
ULONG GetFlag() { return _flag; }
|
|
WCHAR *GetRootPath() { return _fRootPath ? (WCHAR *) (this + 1) : 0; }
|
|
|
|
private:
|
|
ULONG _flag;
|
|
BOOL _fRootPath;
|
|
|
|
// don't add data here -- marshalled version of path follows data
|
|
};
|
|
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMSetCatStateIn
|
|
//
|
|
// Synopsis: Message to Set the catalog in a specified state
|
|
//
|
|
// History: 08-Apr-98 kitmanh Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMSetCatStateIn : public CProxyMessage
|
|
{
|
|
public:
|
|
CPMSetCatStateIn( PARTITIONID partID,
|
|
WCHAR const * pwcsCatalog,
|
|
DWORD dwNewState ) :
|
|
CProxyMessage( pmSetCatState ),
|
|
_partID( partID ),
|
|
_dwNewState( dwNewState )
|
|
{
|
|
if ( 0 != pwcsCatalog )
|
|
wcscpy( GetCatName(), pwcsCatalog );
|
|
}
|
|
|
|
static unsigned SizeOf( WCHAR const * pwcsCatalog )
|
|
{
|
|
unsigned cb = sizeof CPMSetCatStateIn;
|
|
if ( 0 != pwcsCatalog )
|
|
cb += sizeof WCHAR * ( 1 + wcslen( pwcsCatalog ) );
|
|
return cb;
|
|
}
|
|
|
|
PARTITIONID GetPartID() { return _partID; }
|
|
DWORD GetNewState() { return _dwNewState; }
|
|
WCHAR * GetCatName()
|
|
{
|
|
return (WCHAR *) (this + 1);
|
|
}
|
|
|
|
private:
|
|
PARTITIONID _partID;
|
|
DWORD _dwNewState;
|
|
|
|
};
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPMSetCatStateOut
|
|
//
|
|
// Synopsis: Message reply for SetCatState
|
|
//
|
|
// History: 08-Apr-98 kitmanh Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPMSetCatStateOut : public CProxyMessage
|
|
{
|
|
public:
|
|
DWORD & GetOldState() { return _dwOldState; }
|
|
|
|
private:
|
|
DWORD _dwOldState;
|
|
};
|
|
|