windows-nt/Source/XPSP1/NT/ds/netapi/svcimgs/ntrepl/idl/perffrs.idl

157 lines
4.1 KiB
Plaintext
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
perffrs.idl
Abstract:
This is the .idl file that defines the RPC interface between the PerformanceDLL
and the ntfrs (server) application.
Author:
Rohan Kumar [rohank] 08-Sept-1998
Environment:
User Mode Service
Revision History:
Comments:
Important version information
-------------------------------
Whenever this interface is updated, the version number (a few lines
below) MUST be changed. This insures that a the client and server remain
synchronized, and that calls will succeed only if the client and server
are compatible. The version number is in the form of x.y where x is the
major version number and y is the minor version number. If the changes
to the interface are upwardly compatible, (i.e., a client calling
through the old interface definition is allowed to connect to a server
exposing the new interface definition), you should increase the minor
version number (y) and maintain the same major version number. If the
changes to the interface render it incompatible with the older clients,
increase the major version (x) and reset the minor version number to 0.
--*/
//
// VERSION 1.0
//
// Don't reorder.
// Add new functions to end of idl and change version's minor number.
//
[
uuid(a00c021c-2be2-11d2-b678-0000f87a8f8e),
version(1.0),
pointer_default(ref)
]
interface PerfFrs // name of the interface
{
const unsigned long MAJORVERSION = 1; // Major version of the interface definition
const unsigned long MINORVERSION = 0; // Minor version of the interface definition
const unsigned long REPSET = 0; // Object Type is REPLICASET
const unsigned long REPCONN = 1; // Object Type is REPLICACONN
//
// Data structure that defines the name of each Instance.
//
typedef struct s1 {
long size;
[size_is(size)] wchar_t *name;
} inst_name;
//
// Data structure that defines the Indices (UniqueID) structure
// for all the Instances. This is filled in by the server in the
// RPC call in the Open function.
//
typedef struct s2 {
long size;
[size_is(size)] long *index;
} inst_index;
//
// Data structure that contains the names of all Instances. This is
// sent to the server in the RPC call of the Open function. The server
// sets the corresponding indices (see above) and returns them to the
// client.
//
typedef struct s3 {
long size;
[size_is(size)] inst_name *InstanceNames;
} InstanceNames;
//
// Data structure containing the Counter data for all the Instances. This filled
// in by the server in the RPC call of the Collect function.
//
typedef struct s5 {
long size;
[size_is(size)] byte *data;
} DataBuffer;
//
// Data structure containing all fields (described above) used in the
// RPC call of the Open function.
//
typedef struct o {
long majorver;
long minorver;
long ObjectType;
long numofinst; // number of instances
long *ver;
inst_index *indices;
InstanceNames *instnames;
} OpenRpcData;
//
// Data structure containing all fields (described above) used in the
// RPC call of the Collect function.
//
typedef struct c {
long majorver;
long minorver;
long ObjectType;
long ver;
long numofinst; // number of instances
long numofcotrs; // number of counters
inst_index *indices;
DataBuffer *databuff;
} CollectRpcData;
//
// Signatures that define the RPC API for the client (PerformanceDLL) follow.
// These functions are implemented by the server which is the NTFRS service.
//
//
// This function is called by the Open function(s) of the PerformanceDLL.
// It is used to set the Indices of the Instance names to be used later
// by the Collect function of the PerformanceDLL.
//
unsigned long GetIndicesOfInstancesFromServer ([in, out] OpenRpcData *packt);
//
// This function is called by the Collect function(s) of the PerformanceDLL.
// It is used to collect the counter data for the Instances to be sent to PERFMON.
//
unsigned long GetCounterDataOfInstancesFromServer([in, out] CollectRpcData *packg);
}
// end perffrs.idl