/*++ 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