Source code of Windows XP (NT5)
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.

156 lines
4.1 KiB

  1. /*++
  2. Copyright (c) 1998 Microsoft Corporation
  3. Module Name:
  4. perffrs.idl
  5. Abstract:
  6. This is the .idl file that defines the RPC interface between the PerformanceDLL
  7. and the ntfrs (server) application.
  8. Author:
  9. Rohan Kumar [rohank] 08-Sept-1998
  10. Environment:
  11. User Mode Service
  12. Revision History:
  13. Comments:
  14. Important version information
  15. -------------------------------
  16. Whenever this interface is updated, the version number (a few lines
  17. below) MUST be changed. This insures that a the client and server remain
  18. synchronized, and that calls will succeed only if the client and server
  19. are compatible. The version number is in the form of x.y where x is the
  20. major version number and y is the minor version number. If the changes
  21. to the interface are upwardly compatible, (i.e., a client calling
  22. through the old interface definition is allowed to connect to a server
  23. exposing the new interface definition), you should increase the minor
  24. version number (y) and maintain the same major version number. If the
  25. changes to the interface render it incompatible with the older clients,
  26. increase the major version (x) and reset the minor version number to 0.
  27. --*/
  28. //
  29. // VERSION 1.0
  30. //
  31. // Don't reorder.
  32. // Add new functions to end of idl and change version's minor number.
  33. //
  34. [
  35. uuid(a00c021c-2be2-11d2-b678-0000f87a8f8e),
  36. version(1.0),
  37. pointer_default(ref)
  38. ]
  39. interface PerfFrs // name of the interface
  40. {
  41. const unsigned long MAJORVERSION = 1; // Major version of the interface definition
  42. const unsigned long MINORVERSION = 0; // Minor version of the interface definition
  43. const unsigned long REPSET = 0; // Object Type is REPLICASET
  44. const unsigned long REPCONN = 1; // Object Type is REPLICACONN
  45. //
  46. // Data structure that defines the name of each Instance.
  47. //
  48. typedef struct s1 {
  49. long size;
  50. [size_is(size)] wchar_t *name;
  51. } inst_name;
  52. //
  53. // Data structure that defines the Indices (UniqueID) structure
  54. // for all the Instances. This is filled in by the server in the
  55. // RPC call in the Open function.
  56. //
  57. typedef struct s2 {
  58. long size;
  59. [size_is(size)] long *index;
  60. } inst_index;
  61. //
  62. // Data structure that contains the names of all Instances. This is
  63. // sent to the server in the RPC call of the Open function. The server
  64. // sets the corresponding indices (see above) and returns them to the
  65. // client.
  66. //
  67. typedef struct s3 {
  68. long size;
  69. [size_is(size)] inst_name *InstanceNames;
  70. } InstanceNames;
  71. //
  72. // Data structure containing the Counter data for all the Instances. This filled
  73. // in by the server in the RPC call of the Collect function.
  74. //
  75. typedef struct s5 {
  76. long size;
  77. [size_is(size)] byte *data;
  78. } DataBuffer;
  79. //
  80. // Data structure containing all fields (described above) used in the
  81. // RPC call of the Open function.
  82. //
  83. typedef struct o {
  84. long majorver;
  85. long minorver;
  86. long ObjectType;
  87. long numofinst; // number of instances
  88. long *ver;
  89. inst_index *indices;
  90. InstanceNames *instnames;
  91. } OpenRpcData;
  92. //
  93. // Data structure containing all fields (described above) used in the
  94. // RPC call of the Collect function.
  95. //
  96. typedef struct c {
  97. long majorver;
  98. long minorver;
  99. long ObjectType;
  100. long ver;
  101. long numofinst; // number of instances
  102. long numofcotrs; // number of counters
  103. inst_index *indices;
  104. DataBuffer *databuff;
  105. } CollectRpcData;
  106. //
  107. // Signatures that define the RPC API for the client (PerformanceDLL) follow.
  108. // These functions are implemented by the server which is the NTFRS service.
  109. //
  110. //
  111. // This function is called by the Open function(s) of the PerformanceDLL.
  112. // It is used to set the Indices of the Instance names to be used later
  113. // by the Collect function of the PerformanceDLL.
  114. //
  115. unsigned long GetIndicesOfInstancesFromServer ([in, out] OpenRpcData *packt);
  116. //
  117. // This function is called by the Collect function(s) of the PerformanceDLL.
  118. // It is used to collect the counter data for the Instances to be sent to PERFMON.
  119. //
  120. unsigned long GetCounterDataOfInstancesFromServer([in, out] CollectRpcData *packg);
  121. }
  122. // end perffrs.idl