windows-nt/Source/XPSP1/NT/com/published/idlole/tracking/trksvr.idl
2020-09-26 16:20:57 +08:00

335 lines
8.2 KiB
Plaintext

// Copyright (c) Microsoft Corporation. All rights reserved.
//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File: trksvr.idl
//
// Contents: RPC interface to Tracking (Workstation) Service.
//
// Classes:
//
// Functions:
//
// History:
//
//--------------------------------------------------------------------------
import "trk.idl";
//
// Tracking (Server) Service data structures.
//
typedef signed long SequenceNumber;
typedef struct
{
TCHAR tszFilePath[ 257 ]; // BUGBUG: Path size
CDomainRelativeObjId droidBirth;
CDomainRelativeObjId droidLast;
HRESULT hr;
} old_TRK_FILE_TRACKING_INFORMATION;
typedef struct
{
CDomainRelativeObjId droidBirth;
CDomainRelativeObjId droidLast;
CMachineId mcidLast;
HRESULT hr;
} TRK_FILE_TRACKING_INFORMATION;
typedef struct
{
ULONG cSearch;
[size_is(cSearch)]
old_TRK_FILE_TRACKING_INFORMATION *pSearches;
} old_TRKSVR_CALL_SEARCH;
typedef struct
{
ULONG cSearch;
[size_is(cSearch)]
TRK_FILE_TRACKING_INFORMATION *pSearches;
} TRKSVR_CALL_SEARCH;
typedef struct
{
ULONG cNotifications;
ULONG cProcessed;
SequenceNumber seq;
BOOL fForceSeqNumber;
CVolumeId *pvolid;
[size_is(cNotifications)]
CObjId *rgobjidCurrent;
[size_is(cNotifications)]
CDomainRelativeObjId *rgdroidBirth;
[size_is(cNotifications)]
CDomainRelativeObjId *rgdroidNew;
} TRKSVR_CALL_MOVE_NOTIFICATION;
typedef struct
{
ULONG cSources;
[size_is(cSources)]
CDomainRelativeObjId *adroidBirth;
ULONG cVolumes;
[size_is(cVolumes)]
CVolumeId *avolid;
} TRKSVR_CALL_REFRESH;
typedef struct _DROID_LIST_ELEMENT
{
struct _DROID_LIST_ELEMENT * pNext;
CDomainRelativeObjId droid;
} DROID_LIST_ELEMENT;
typedef struct
{
ULONG cdroidBirth;
[size_is(cdroidBirth)]
CDomainRelativeObjId * adroidBirth;
ULONG cVolumes;
[size_is(cVolumes)] CVolumeId *pVolumes;
} TRKSVR_CALL_DELETE;
typedef [v1_enum] enum
{
CREATE_VOLUME, // S_OK or exception(disk full, out of memory)
QUERY_VOLUME, // VOLUME_NOT_OWNED: volume found, but not owned by this client
// VOLUME_NOT_FOUND: volume not found
// VOLUME_OK: volume found, and owned by this client
// exceptions: out of memory, disk failure etc
CLAIM_VOLUME, // VOLUME_NOT_FOUND, volume not found
// VOLUME_ACCESS_DENIED, volume found, secrets do not match
// VOLUME_OK, volume found, secrets match
// exceptions: out of memory, disk full, etc
FIND_VOLUME, // VOLUME_NOT_FOUND, VOLUME_OK
TEST_VOLUME, // S_OK
DELETE_VOLUME
} TRKSVR_SYNC_TYPE;
typedef struct
{
HRESULT hr;
TRKSVR_SYNC_TYPE SyncType; // CREATE QUERY CLAIM FIND TEST DELETE
// ------ ----- ----- ---- ---- ------
CVolumeId volume; // In In In In In In
CVolumeSecret secret; // In - In - (In) -
CVolumeSecret secretOld; // - - In - - -
SequenceNumber seq; // In Out Out - In -
FILETIME ftLastRefresh; // Out Out Out - - -
CMachineId machine; // - - - Out (In) -
} TRKSVR_SYNC_VOLUME;
typedef struct
{
ULONG cVolumes;
[size_is(cVolumes)] TRKSVR_SYNC_VOLUME * pVolumes;
#ifdef VOL_REPL
FILETIME ftFirstChange;
ULONG cChanges;
[size_is( , cChanges)] VolumeMapEntry ** ppVolumeChanges;
#endif
} TRKSVR_CALL_SYNC_VOLUMES;
typedef struct
{
// Request statistics
ULONG cSyncVolumeRequests, cSyncVolumeErrors, cSyncVolumeThreads;
ULONG cCreateVolumeRequests, cCreateVolumeErrors;
ULONG cClaimVolumeRequests, cClaimVolumeErrors;
ULONG cQueryVolumeRequests, cQueryVolumeErrors;
ULONG cFindVolumeRequests, cFindVolumeErrors;
ULONG cTestVolumeRequests, cTestVolumeErrors;
ULONG cSearchRequests, cSearchErrors, cSearchThreads;
ULONG cMoveNotifyRequests, cMoveNotifyErrors, cMoveNotifyThreads;
ULONG cRefreshRequests, cRefreshErrors, cRefreshThreads;
ULONG cDeleteNotifyRequests, cDeleteNotifyErrors, cDeleteNotifyThreads;
//ULONG cMessageTypeErrors;
ULONG ulGCIterationPeriod;
FILETIME ftLastSuccessfulRequest;
HRESULT hrLastError;
// Quota statistics
ULONG dwMoveLimit;
LONG lRefreshCounter;
ULONG dwCachedVolumeTableCount;
ULONG dwCachedMoveTableCount;
FILETIME ftCacheLastUpdated;
BOOL fIsDesignatedDc;
// Other
FILETIME ftNextGC;
FILETIME ftServiceStart;
ULONG cMaxRpcThreads, cAvailableRpcThreads, cLowestAvailableRpcThreads;
ULONG cNumThreadPoolThreads, cMostThreadPoolThreads;
//ULONG Reserved;
SHORT cEntriesToGC;
SHORT cEntriesGCed;
//ULONG SvcCtrlState;
SHORT cMaxDsWriteEvents;
SHORT cCurrentFailedWrites;
struct
{
DWORD dwMajor;
DWORD dwMinor;
DWORD dwBuildNumber;
} Version;
} TRKSVR_STATISTICS;
typedef struct
{
DWORD dwParameter;
DWORD dwNewValue;
} TRKWKS_CONFIG;
typedef [v1_enum] enum
{
old_SEARCH,
MOVE_NOTIFICATION,
REFRESH,
SYNC_VOLUMES,
DELETE_NOTIFY,
STATISTICS,
SEARCH,
// The following are hooks only used within the trkwks service
// by LnkCallSvrMessage
WKS_CONFIG,
WKS_VOLUME_REFRESH
} TRKSVR_MESSAGE_TYPE;
typedef struct
{
TRKSVR_MESSAGE_TYPE MessageType;
[switch_is(MessageType)] union
{
[case (old_SEARCH)]
old_TRKSVR_CALL_SEARCH old_Search;
[case (MOVE_NOTIFICATION)]
TRKSVR_CALL_MOVE_NOTIFICATION MoveNotification;
[case (REFRESH)]
TRKSVR_CALL_REFRESH Refresh;
[case (SYNC_VOLUMES)]
TRKSVR_CALL_SYNC_VOLUMES SyncVolumes;
[case (DELETE_NOTIFY)]
TRKSVR_CALL_DELETE Delete;
[case (SEARCH)]
TRKSVR_CALL_SEARCH Search;
};
// Must be NULL unless security is disabled.
[string] TCHAR *ptszMachineID;
} TRKSVR_MESSAGE_UNION_OLD;
typedef [v1_enum] enum
{
PRI_0=0, // highest
PRI_1=1,
PRI_2=2,
PRI_3=3,
PRI_4=4,
PRI_5=5,
PRI_6=6,
PRI_7=7,
PRI_8=8,
PRI_9=9 // lowest
} TRKSVR_MESSAGE_PRIORITY;
typedef struct
{
TRKSVR_MESSAGE_TYPE MessageType;
TRKSVR_MESSAGE_PRIORITY Priority;
[switch_is(MessageType)] union
{
[case (old_SEARCH)]
old_TRKSVR_CALL_SEARCH old_Search;
[case (MOVE_NOTIFICATION)]
TRKSVR_CALL_MOVE_NOTIFICATION MoveNotification;
[case (REFRESH)]
TRKSVR_CALL_REFRESH Refresh;
[case (SYNC_VOLUMES)]
TRKSVR_CALL_SYNC_VOLUMES SyncVolumes;
[case (DELETE_NOTIFY)]
TRKSVR_CALL_DELETE Delete;
[case (STATISTICS)]
TRKSVR_STATISTICS Statistics;
[case (SEARCH)]
TRKSVR_CALL_SEARCH Search;
[case (WKS_CONFIG)]
TRKWKS_CONFIG WksConfig;
[case (WKS_VOLUME_REFRESH)]
DWORD WksRefresh;
};
// Must be NULL unless security is disabled.
[string] TCHAR *ptszMachineID;
} TRKSVR_MESSAGE_UNION;
// --------------------
// Interface Attributes
// --------------------
[
uuid(4da1c422-943d-11d1-acae-00c04fc2aa3f),
version(1.0),
pointer_default(unique)
]
interface trksvr
{
//
// Tracking (Server) Service API-s.
//
HRESULT LnkSvrMessage([in] handle_t IDL_handle, [in, out] TRKSVR_MESSAGE_UNION * pMsg );
[callback] HRESULT LnkSvrMessageCallback( [in, out] TRKSVR_MESSAGE_UNION * pMsg );
}