mirror of https://github.com/lianthony/NT4.0
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.
248 lines
5.1 KiB
248 lines
5.1 KiB
//+---------------------------------------------------------------------------
|
|
//
|
|
// File: VQRPC.idl
|
|
//
|
|
// Contents: Vulcan Query RPC interface definitions
|
|
//
|
|
// History: 19-Aug-91 KyleP Created.
|
|
//
|
|
// Notes: This is the RPC-able C version of the PVTable interface.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
[ uuid(12345678-1234-ABCD-E012-0123456789AB),
|
|
version(0.1) ]
|
|
|
|
interface PVTable
|
|
|
|
{
|
|
|
|
import "prop.idl";
|
|
|
|
//
|
|
// In C, the this pointer becomes a context handle. Context handles are
|
|
// used to keep track of state which is persistant over multiple RPC
|
|
// calls.
|
|
//
|
|
|
|
typedef [context_handle] void * HPVTable; // C Handle to a PVTable object.
|
|
|
|
//
|
|
// QStatus is used to report the status of a running query.
|
|
//
|
|
|
|
//[ QStatus_e
|
|
|
|
#define QSComplete 0 /* query complete (all rows found) */
|
|
#define QSNotInit 1 /* not initialized */
|
|
#define QSCompiling 2 /* query compiling */
|
|
#define QSRunning 3 /* query running (no results returned) */
|
|
#define QSResults 4 /* query running (one or more rows) */
|
|
|
|
//]
|
|
|
|
|
|
//
|
|
// MoveType is used by Move and Find to describe the direction in
|
|
// which the cursor should move.
|
|
//
|
|
|
|
//[ MoveType_e
|
|
|
|
#define MTFirst 0
|
|
#define MTLast 2
|
|
#define MTNext 1
|
|
#define MTPrevious -1
|
|
|
|
//]
|
|
|
|
//
|
|
// CRows contains all data for a number of objects.
|
|
//
|
|
|
|
//[ CRowSet_s
|
|
|
|
typedef struct
|
|
{
|
|
ULONG cRow;
|
|
[ size_is(cRow) ] CPropValueSet * apvs;
|
|
|
|
} CRowSet;
|
|
|
|
//]
|
|
|
|
//
|
|
// Output column expressions are strings. In Win 4.0 the only
|
|
// acceptable expression is a property name.
|
|
//
|
|
|
|
//[ ColXpr_s
|
|
|
|
typedef [ string ] WCHAR * ColXpr;
|
|
|
|
typedef struct
|
|
{
|
|
ULONG cCol;
|
|
[size_is(cCol)] ColXpr acxpr[];
|
|
|
|
} CColXprSet;
|
|
|
|
//]
|
|
|
|
//
|
|
// The sort order structure defines the set of columns upon which the
|
|
// data is sorted.
|
|
//
|
|
|
|
//[ SortOrder_s
|
|
|
|
//
|
|
// SortDirection indicates the direction of a sorted column.
|
|
//
|
|
|
|
|
|
#define SDAscending 0
|
|
#define SDDescending 1
|
|
|
|
typedef struct
|
|
{
|
|
ULONG iCol; // Index of column
|
|
ULONG dir; // Ascending or descending
|
|
|
|
} SortOrder;
|
|
|
|
typedef struct
|
|
{
|
|
ULONG cCol; // Number of sort columns
|
|
[size_is(cCol)] SortOrder * pCol;
|
|
|
|
} SortOrderSet;
|
|
|
|
//]
|
|
|
|
|
|
//
|
|
// From the caller's point of view, a position is just a handle.
|
|
//
|
|
|
|
typedef unsigned long CVTPos;
|
|
|
|
//+----------------------------------------------------------------------------
|
|
//
|
|
// Class: CScope (scp)
|
|
//
|
|
// Purpose: Encapsulates the scope of a Vulcan query.
|
|
//
|
|
// History: 16-Aug-91 KyleP Created
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
//
|
|
// BUGBUG: What should a DSI look like to RPC?
|
|
//
|
|
|
|
typedef struct
|
|
{
|
|
unsigned char pb[64];
|
|
} CDSIdentity;
|
|
|
|
//[ Scope_s
|
|
|
|
#define SDShallow 0
|
|
#define SDRecursive 1
|
|
|
|
typedef struct
|
|
{
|
|
#ifdef __cplusplus
|
|
CScope(SDepth depth, CDSIdentity * pdsi);
|
|
#endif
|
|
|
|
ULONG Depth; // shallow or recursive
|
|
CDSIdentity * dsiRoot; // Root of the scope
|
|
} CScope;
|
|
|
|
//]
|
|
|
|
//
|
|
// Function prototypes.
|
|
//
|
|
|
|
ULONG EvalQuery([in] WCString pwcsCat,
|
|
[in] CScope * pscp,
|
|
[in] PRestriction * prst,
|
|
[in] CColXprSet * pxpr,
|
|
[in] SortOrderSet * pso,
|
|
[out] HPVTable ** ppvt);
|
|
|
|
void PVTDestroy( [in] HPVTable pvt );
|
|
|
|
ULONG PVTStatus( [in] HPVTable pvt,
|
|
[out] ULONG *pStatus );
|
|
|
|
//
|
|
// Set/Get Columns take the same parameters to reduce the amount of
|
|
// RPC marshalling code.
|
|
//
|
|
|
|
ULONG PVTSetColumns( [in] HPVTable pvt,
|
|
[in, out] CColXprSet ** pxpr );
|
|
|
|
ULONG PVTGetColumns( [in] HPVTable pvt,
|
|
[in, out] CColXprSet ** pxpr );
|
|
|
|
ULONG PVTGetCol( [in] HPVTable pvt,
|
|
[in] ULONG iCol,
|
|
[in, out] ULONG *pcb,
|
|
[out, max_is(*pcb)] BYTE *p,
|
|
[out] ULONG *ppt );
|
|
|
|
ULONG PVTCount( [in] HPVTable pvt,
|
|
[in] BOOL fComplete,
|
|
[out] ULONG *pcObj );
|
|
|
|
ULONG PVTMove( [in] HPVTable pvt,
|
|
[in] ULONG cRow,
|
|
[in] ULONG mt );
|
|
|
|
ULONG PVTMoveApproximate( [in] HPVTable pvt,
|
|
[in] ULONG iNum,
|
|
[in] ULONG iDen );
|
|
|
|
ULONG PVTFind( [in] HPVTable pvt,
|
|
[in] PRestriction const * prst,
|
|
[in] ULONG mt );
|
|
|
|
ULONG PVTRestrict( [in] HPVTable pvt,
|
|
[in] PRestriction const * prst );
|
|
|
|
//
|
|
// Set/Get Position take the same parameters to reduce the amount of
|
|
// RPC marshalling code.
|
|
//
|
|
|
|
ULONG PVTSetPosition( [in] HPVTable pvt,
|
|
[in, out] CVTPos ** ppos);
|
|
|
|
ULONG PVTGetPosition( [in] HPVTable pvt,
|
|
[in, out] CVTPos ** ppos );
|
|
|
|
//
|
|
// Set/Get Order take the same parameters to reduce the amount of
|
|
// RPC marshalling code.
|
|
//
|
|
|
|
ULONG PVTSetOrder( [in] HPVTable pvt,
|
|
[in,out] SortOrderSet ** ppso );
|
|
|
|
ULONG PVTGetOrder( [in] HPVTable pvt,
|
|
[in, out] SortOrderSet ** pso );
|
|
|
|
ULONG PVTGetRows( [in] HPVTable pvt,
|
|
[in] ULONG cRow,
|
|
[in] ULONG maxSize,
|
|
[out] CRowSet rows,
|
|
[in] BOOL fAdvance);
|
|
|
|
ULONG PVTAbort( [in] HPVTable pvt );
|
|
|
|
} /* IDL Definition */
|