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.

238 lines
7.2 KiB

  1. /**********************************************************************/
  2. /** Microsoft Windows/NT **/
  3. /** Copyright(c) Microsoft Corp., 1997 **/
  4. /**********************************************************************/
  5. /*
  6. ipxstrm.cpp
  7. FILE HISTORY:
  8. */
  9. #include "stdafx.h"
  10. #include "ipxstrm.h"
  11. #include "xstream.h"
  12. /*!--------------------------------------------------------------------------
  13. IPXAdminConfigStream::IPXAdminConfigStream
  14. -
  15. Author: KennT
  16. ---------------------------------------------------------------------------*/
  17. IPXAdminConfigStream::IPXAdminConfigStream()
  18. {
  19. m_nVersionAdmin = 0x00020000;
  20. m_nVersion = 0x00020000;
  21. }
  22. /*!--------------------------------------------------------------------------
  23. IPXAdminConfigStream::InitNew
  24. -
  25. Author: KennT
  26. ---------------------------------------------------------------------------*/
  27. HRESULT IPXAdminConfigStream::InitNew()
  28. {
  29. // Setup the appropriate defaults
  30. // m_nVersionAdmin = 0x00020000;
  31. // m_nVersion = 0x00020000;
  32. // m_stName.Empty();
  33. ConfigStream::InitNew();
  34. return hrOK;
  35. }
  36. /*!--------------------------------------------------------------------------
  37. IPXAdminConfigStream::SaveTo
  38. -
  39. Author: KennT
  40. ---------------------------------------------------------------------------*/
  41. HRESULT IPXAdminConfigStream::SaveTo(IStream *pstm)
  42. {
  43. return XferVersion0(pstm, XferStream::MODE_WRITE, NULL);
  44. }
  45. /*!--------------------------------------------------------------------------
  46. IPXAdminConfigStream::SaveAs
  47. -
  48. Author: KennT
  49. ---------------------------------------------------------------------------*/
  50. HRESULT IPXAdminConfigStream::SaveAs(UINT nVersion, IStream *pstm)
  51. {
  52. return XferVersion0(pstm, XferStream::MODE_WRITE, NULL);
  53. }
  54. /*!--------------------------------------------------------------------------
  55. IPXAdminConfigStream::LoadFrom
  56. -
  57. Author: KennT
  58. ---------------------------------------------------------------------------*/
  59. HRESULT IPXAdminConfigStream::LoadFrom(IStream *pstm)
  60. {
  61. return XferVersion0(pstm, XferStream::MODE_READ, NULL);
  62. }
  63. /*!--------------------------------------------------------------------------
  64. IPXAdminConfigStream::GetSize
  65. -
  66. Author: KennT
  67. ---------------------------------------------------------------------------*/
  68. HRESULT IPXAdminConfigStream::GetSize(ULONG *pcbSize)
  69. {
  70. return XferVersion0(NULL, XferStream::MODE_SIZE, NULL);
  71. }
  72. /*!--------------------------------------------------------------------------
  73. IPXAdminConfigStream::GetVersionInfo
  74. -
  75. Author: KennT
  76. ---------------------------------------------------------------------------*/
  77. HRESULT IPXAdminConfigStream::GetVersionInfo(DWORD *pdwVersion, DWORD *pdwAdminVersion)
  78. {
  79. if (pdwVersion)
  80. *pdwVersion = m_nVersion;
  81. if (pdwAdminVersion)
  82. *pdwAdminVersion = m_nVersionAdmin;
  83. return hrOK;
  84. }
  85. /*!--------------------------------------------------------------------------
  86. IPXAdminConfigStream::XferVersion0
  87. -
  88. Author: KennT
  89. ---------------------------------------------------------------------------*/
  90. struct _ViewInfoEntry
  91. {
  92. ULONG m_ulId;
  93. ULONG m_idSort;
  94. ULONG m_idAscending;
  95. ULONG m_idColumns;
  96. ULONG m_idPos;
  97. };
  98. static const _ViewInfoEntry s_rgIPXAdminViewInfo[] =
  99. {
  100. { IPXSTRM_STATS_IPX,
  101. IPXSTRM_TAG_STATS_IPX_SORT,
  102. IPXSTRM_TAG_STATS_IPX_ASCENDING,
  103. IPXSTRM_TAG_STATS_IPX_COLUMNS,
  104. IPXSTRM_TAG_STATS_IPX_POSITION },
  105. { IPXSTRM_STATS_ROUTING,
  106. IPXSTRM_TAG_STATS_IPXROUTING_SORT,
  107. IPXSTRM_TAG_STATS_IPXROUTING_ASCENDING,
  108. IPXSTRM_TAG_STATS_IPXROUTING_COLUMNS,
  109. IPXSTRM_TAG_STATS_IPXROUTING_POSITION },
  110. { IPXSTRM_STATS_SERVICE,
  111. IPXSTRM_TAG_STATS_IPXSERVICE_SORT,
  112. IPXSTRM_TAG_STATS_IPXSERVICE_ASCENDING,
  113. IPXSTRM_TAG_STATS_IPXSERVICE_COLUMNS,
  114. IPXSTRM_TAG_STATS_IPXSERVICE_POSITION },
  115. };
  116. HRESULT IPXAdminConfigStream::XferVersion0(IStream *pstm, XferStream::Mode mode, ULONG *pcbSize)
  117. {
  118. XferStream xstm(pstm, mode);
  119. HRESULT hr = hrOK;
  120. int i;
  121. CORg( xstm.XferDWORD( IPXSTRM_TAG_VERSION, &m_nVersion ) );
  122. CORg( xstm.XferDWORD( IPXSTRM_TAG_VERSIONADMIN, &m_nVersionAdmin ) );
  123. for ( i=0; i<DimensionOf(s_rgIPXAdminViewInfo); i++)
  124. {
  125. CORg( m_rgViewInfo[s_rgIPXAdminViewInfo[i].m_ulId].Xfer(&xstm,
  126. s_rgIPXAdminViewInfo[i].m_idSort,
  127. s_rgIPXAdminViewInfo[i].m_idAscending,
  128. s_rgIPXAdminViewInfo[i].m_idColumns) );
  129. CORg( xstm.XferRect( s_rgIPXAdminViewInfo[i].m_idPos,
  130. &m_prgrc[s_rgIPXAdminViewInfo[i].m_ulId]) );
  131. }
  132. if (pcbSize)
  133. *pcbSize = xstm.GetSize();
  134. Error:
  135. return hr;
  136. }
  137. /*---------------------------------------------------------------------------
  138. IPXComponentConfigStream implementation
  139. ---------------------------------------------------------------------------*/
  140. enum IPXCOMPSTRM_TAG
  141. {
  142. IPXCOMPSTRM_TAG_VERSION = XFER_TAG(1, XFER_DWORD),
  143. IPXCOMPSTRM_TAG_VERSIONADMIN = XFER_TAG(2, XFER_DWORD),
  144. IPXCOMPSTRM_TAG_SUMMARY_COLUMNS = XFER_TAG(3, XFER_COLUMNDATA_ARRAY),
  145. IPXCOMPSTRM_TAG_SUMMARY_SORT_COLUMN = XFER_TAG(4, XFER_DWORD),
  146. IPXCOMPSTRM_TAG_SUMMARY_SORT_ASCENDING = XFER_TAG(5, XFER_DWORD),
  147. IPXCOMPSTRM_TAG_NB_COLUMNS = XFER_TAG(6, XFER_COLUMNDATA_ARRAY),
  148. IPXCOMPSTRM_TAG_NB_SORT_COLUMN = XFER_TAG(7, XFER_DWORD),
  149. IPXCOMPSTRM_TAG_NB_SORT_ASCENDING = XFER_TAG(8, XFER_DWORD),
  150. IPXCOMPSTRM_TAG_SR_COLUMNS = XFER_TAG(9, XFER_COLUMNDATA_ARRAY),
  151. IPXCOMPSTRM_TAG_SR_SORT_COLUMN = XFER_TAG(10, XFER_DWORD),
  152. IPXCOMPSTRM_TAG_SR_SORT_ASCENDING = XFER_TAG(11, XFER_DWORD),
  153. IPXCOMPSTRM_TAG_SS_COLUMNS = XFER_TAG(12, XFER_COLUMNDATA_ARRAY),
  154. IPXCOMPSTRM_TAG_SS_SORT_COLUMN = XFER_TAG(13, XFER_DWORD),
  155. IPXCOMPSTRM_TAG_SS_SORT_ASCENDING = XFER_TAG(14, XFER_DWORD),
  156. IPXCOMPSTRM_TAG_SN_COLUMNS = XFER_TAG(15, XFER_COLUMNDATA_ARRAY),
  157. IPXCOMPSTRM_TAG_SN_SORT_COLUMN = XFER_TAG(16, XFER_DWORD),
  158. IPXCOMPSTRM_TAG_SN_SORT_ASCENDING = XFER_TAG(17, XFER_DWORD),
  159. };
  160. HRESULT IPXComponentConfigStream::XferVersion0(IStream *pstm, XferStream::Mode mode, ULONG *pcbSize)
  161. {
  162. XferStream xstm(pstm, mode);
  163. HRESULT hr = hrOK;
  164. CORg( xstm.XferDWORD( IPXCOMPSTRM_TAG_VERSION, &m_nVersion ) );
  165. CORg( xstm.XferDWORD( IPXCOMPSTRM_TAG_VERSIONADMIN, &m_nVersionAdmin ) );
  166. CORg( m_rgViewInfo[COLUMNS_SUMMARY].Xfer(&xstm,
  167. IPXCOMPSTRM_TAG_SUMMARY_SORT_COLUMN,
  168. IPXCOMPSTRM_TAG_SUMMARY_SORT_ASCENDING,
  169. IPXCOMPSTRM_TAG_SUMMARY_COLUMNS) );
  170. CORg( m_rgViewInfo[COLUMNS_NBBROADCASTS].Xfer(&xstm,
  171. IPXCOMPSTRM_TAG_NB_SORT_COLUMN,
  172. IPXCOMPSTRM_TAG_NB_SORT_ASCENDING,
  173. IPXCOMPSTRM_TAG_NB_COLUMNS) );
  174. CORg( m_rgViewInfo[COLUMNS_STATICROUTES].Xfer(&xstm,
  175. IPXCOMPSTRM_TAG_SR_SORT_COLUMN,
  176. IPXCOMPSTRM_TAG_SR_SORT_ASCENDING,
  177. IPXCOMPSTRM_TAG_SR_COLUMNS) );
  178. CORg( m_rgViewInfo[COLUMNS_STATICSERVICES].Xfer(&xstm,
  179. IPXCOMPSTRM_TAG_SS_SORT_COLUMN,
  180. IPXCOMPSTRM_TAG_SS_SORT_ASCENDING,
  181. IPXCOMPSTRM_TAG_SS_COLUMNS) );
  182. CORg( m_rgViewInfo[COLUMNS_STATICNETBIOSNAMES].Xfer(&xstm,
  183. IPXCOMPSTRM_TAG_SN_SORT_COLUMN,
  184. IPXCOMPSTRM_TAG_SN_SORT_ASCENDING,
  185. IPXCOMPSTRM_TAG_SN_COLUMNS) );
  186. if (pcbSize)
  187. *pcbSize = xstm.GetSize();
  188. Error:
  189. return hr;
  190. }