Leaked source code of windows server 2003
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.

152 lines
4.4 KiB

  1. //+-------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1992 - 1993.
  5. //
  6. // File: scm.idl
  7. //
  8. // Contents: Definition of private RPC interface between compobj.dll
  9. // and the service controller.
  10. //
  11. // History: 21-Apr-93 Ricksa Created
  12. // 27-Dec-93 ErikGav TCHAR->WCHAR
  13. //
  14. //--------------------------------------------------------------------------
  15. [ uuid(412f241e-c12a-11ce-abff-0020af6e7a17),
  16. version(0.2),
  17. pointer_default(unique)
  18. ]
  19. interface ISCM
  20. {
  21. import "iface.idl";
  22. import "obase.idl";
  23. typedef [context_handle] void *PHPROCESS;
  24. const DWORD MAX_REGENTRIES = 0x10000; // 65536
  25. typedef struct _RegOutput
  26. {
  27. DWORD dwSize;
  28. [size_is(dwSize)]
  29. DWORD RegKeys[];
  30. } RegOutput;
  31. typedef struct _RegInputEntry
  32. {
  33. CLSID clsid;
  34. OXID oxid;
  35. IPID ipid;
  36. DWORD dwFlags;
  37. } RegInputEntry;
  38. typedef struct _RegInput
  39. {
  40. [range(1,MAX_REGENTRIES)]
  41. DWORD dwSize;
  42. [size_is(dwSize)]
  43. RegInputEntry rginent[];
  44. } RegInput;
  45. typedef struct _RevokeEntry
  46. {
  47. CLSID clsid;
  48. DWORD dwReg;
  49. } RevokeEntry;
  50. typedef struct _RevokeClasses
  51. {
  52. [range(1,MAX_REGENTRIES)]
  53. DWORD dwSize;
  54. [size_is(dwSize)]
  55. RevokeEntry revent[];
  56. } RevokeClasses;
  57. //
  58. // Server to SCM methods.
  59. //
  60. HRESULT ServerRegisterClsid(
  61. [in] handle_t hRpc,
  62. [in] PHPROCESS phProcess,
  63. [in] RegInput * pregin,
  64. [out] RegOutput ** ppregout,
  65. [out] error_status_t * prpcstat);
  66. void ServerRevokeClsid(
  67. [in] handle_t hRpc,
  68. [in] PHPROCESS phProcess,
  69. [in] RevokeClasses * prevcls,
  70. [out] error_status_t * prpcstat);
  71. //
  72. // Client/Server to SCM methods.
  73. //
  74. void GetThreadID(
  75. [in] handle_t hRpc,
  76. [in] PHPROCESS phProcess,
  77. [out] DWORD * pThreadID,
  78. [out] error_status_t *prpcstat);
  79. void UpdateActivationSettings(
  80. [in] handle_t hRpc,
  81. [in] PHPROCESS phProcess,
  82. [out] error_status_t *prpcstat);
  83. // Register Drag/Drop
  84. HRESULT RegisterWindowPropInterface(
  85. [in] handle_t hRpc,
  86. [in] PHPROCESS phProcess,
  87. [in] DWORD_PTR hWnd,
  88. [in] STDOBJREF *pStd,
  89. [in] OXID_INFO *pOxidInfo,
  90. [out] DWORD_PTR *pdwCookie,
  91. [out] error_status_t *prpcstat);
  92. HRESULT GetWindowPropInterface(
  93. [in] handle_t hRpc,
  94. [in] PHPROCESS phProcess,
  95. [in] DWORD_PTR hWnd,
  96. [in] DWORD_PTR dwCookie,
  97. [in] BOOL fRevoke,
  98. [out] STDOBJREF *pStd,
  99. [out] OXID_INFO *pOxidInfo,
  100. [out] error_status_t *prpcstat);
  101. // To support the IP cache control functionality
  102. HRESULT EnableDisableDynamicIPTracking(
  103. [in] handle_t hRpc,
  104. [in] PHPROCESS phProcess,
  105. [in] BOOL fEnable,
  106. [out] error_status_t *prpcstat);
  107. HRESULT GetCurrentAddrExclusionList(
  108. [in] handle_t hRpc,
  109. [in] PHPROCESS phProcess,
  110. [out] DWORD* pdwNumStrings,
  111. [out, size_is(,*pdwNumStrings)]LPWSTR** pppszStrings,
  112. [out] error_status_t *prpcstat);
  113. // range setting on third parameter is to mitigate DoS attacks.
  114. HRESULT SetAddrExclusionList(
  115. [in] handle_t hRpc,
  116. [in] PHPROCESS phProcess,
  117. [in, range(0,0x4000)] DWORD dwNumStrings,
  118. [in, unique, size_is(dwNumStrings)]LPWSTR* ppszStrings,
  119. [out] error_status_t *prpcstat);
  120. // To support CoInvalidateRemoteMachineBindings
  121. HRESULT FlushSCMBindings(
  122. [in] handle_t hRpc,
  123. [in] PHPROCESS phProcess,
  124. [in,string] WCHAR* pszMachineName,
  125. [out] error_status_t *prpcstat);
  126. // To help support the new COM+ process recycling feature
  127. HRESULT RetireServer(
  128. [in] handle_t hRpc,
  129. [in] PHPROCESS phProcess,
  130. [in] GUID* pguidProcessIdentifier,
  131. [out] error_status_t *prpcstat);
  132. }