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.

179 lines
4.8 KiB

  1. /*++
  2. Copyright (c) 1992 Microsoft Corporation
  3. Module Name:
  4. ReplInfo.c
  5. Abstract:
  6. This file contains functions which return info about the various levels
  7. of replicator data structures. (See LmRepl.h)
  8. Author:
  9. John Rogers (JohnRo) 07-Jan-1992
  10. Environment:
  11. Portable.
  12. Requires ANSI C extensions: slash-slash comments, long external names.
  13. Revision History:
  14. 07-Jan-1992 JohnRo
  15. Created.
  16. 24-Jan-1992 JohnRo
  17. Changed to use LPTSTR etc.
  18. 30-Jan-1992 JohnRo
  19. Fixed NetpReplDirStructureInfo()'s return code.
  20. --*/
  21. // These must be included first:
  22. #include <windef.h> // IN, VOID, LPTSTR, etc.
  23. #include <lmcons.h> // NET_API_STATUS, etc.
  24. #include <rap.h> // Needed by <strucinf.h>.
  25. // These can be in any order:
  26. #include <lmrepl.h> // REPL_INFO_0, etc.
  27. #include <netdebug.h> // NetpAssert(), etc.
  28. #include <netlib.h> // NetpSetOptionalArg() macro.
  29. #include <strucinf.h> // My prototypes.
  30. #include <winerror.h> // ERROR_ equates, NO_ERROR.
  31. #define MAX_DIR_NAME_SIZE ( (PATHLEN+1) * sizeof( TCHAR ) )
  32. #define MAX_LIST_SIZE ( 512 * sizeof( TCHAR ) ) // arbitrary
  33. #define MAX_MASTER_NAME_SIZE ( (MAX_PATH+1)* sizeof( TCHAR ) )
  34. #define MAX_PATH_SIZE ( (PATHLEN+1) * sizeof( TCHAR ) )
  35. #define MAX_USER_NAME_SIZE ( (UNLEN+1) * sizeof( TCHAR ) )
  36. #define SetSizes(fixed,variable) \
  37. { \
  38. NetpSetOptionalArg( MaxSize, (fixed) + (variable) ); \
  39. NetpSetOptionalArg( FixedSize, (fixed) ); \
  40. NetpSetOptionalArg( StringSize, (variable) ); \
  41. }
  42. NET_API_STATUS
  43. NetpReplDirStructureInfo (
  44. IN DWORD Level,
  45. IN DWORD ParmNum, // Use PARMNUM_ALL if not applicable.
  46. IN BOOL Native, // Should sizes be native or RAP?
  47. OUT LPDESC * DataDesc16 OPTIONAL,
  48. OUT LPDESC * DataDesc32 OPTIONAL,
  49. OUT LPDESC * DataDescSmb OPTIONAL,
  50. OUT LPDWORD MaxSize OPTIONAL,
  51. OUT LPDWORD FixedSize OPTIONAL,
  52. OUT LPDWORD StringSize OPTIONAL
  53. )
  54. {
  55. const DWORD StringSize0 = MAX_PATH_SIZE // export path
  56. + MAX_LIST_SIZE // export list
  57. + MAX_PATH_SIZE // import path
  58. + MAX_LIST_SIZE // import list
  59. + MAX_USER_NAME_SIZE; // logon user name
  60. if (Level != 0) {
  61. return (ERROR_INVALID_LEVEL);
  62. }
  63. NetpAssert( ParmNum == PARMNUM_ALL );
  64. NetpAssert( Native );
  65. NetpSetOptionalArg( DataDesc16, NULL );
  66. NetpSetOptionalArg( DataDesc32, NULL );
  67. NetpSetOptionalArg( DataDescSmb, NULL );
  68. SetSizes( sizeof( REPL_INFO_0 ), StringSize0 );
  69. return (NO_ERROR);
  70. } // NetpReplDirStructureInfo
  71. NET_API_STATUS
  72. NetpReplExportDirStructureInfo (
  73. IN DWORD Level,
  74. IN DWORD ParmNum, // Use PARMNUM_ALL if not applicable.
  75. IN BOOL Native, // Should sizes be native or RAP?
  76. OUT LPDESC * DataDesc16 OPTIONAL,
  77. OUT LPDESC * DataDesc32 OPTIONAL,
  78. OUT LPDESC * DataDescSmb OPTIONAL,
  79. OUT LPDWORD MaxSize OPTIONAL,
  80. OUT LPDWORD FixedSize OPTIONAL,
  81. OUT LPDWORD StringSize OPTIONAL
  82. )
  83. {
  84. NetpAssert( ParmNum == PARMNUM_ALL );
  85. NetpAssert( Native );
  86. NetpSetOptionalArg( DataDesc16, NULL );
  87. NetpSetOptionalArg( DataDesc32, NULL );
  88. NetpSetOptionalArg( DataDescSmb, NULL );
  89. switch (Level) {
  90. case 0 :
  91. SetSizes(
  92. sizeof( REPL_EDIR_INFO_0 ),
  93. MAX_DIR_NAME_SIZE );
  94. break;
  95. case 1 :
  96. SetSizes(
  97. sizeof( REPL_EDIR_INFO_1 ),
  98. MAX_DIR_NAME_SIZE );
  99. break;
  100. case 2 :
  101. SetSizes(
  102. sizeof( REPL_EDIR_INFO_2 ),
  103. MAX_DIR_NAME_SIZE );
  104. break;
  105. default :
  106. return (ERROR_INVALID_LEVEL);
  107. }
  108. return (NO_ERROR);
  109. } // NetpReplExportDirStructureInfo
  110. NET_API_STATUS
  111. NetpReplImportDirStructureInfo (
  112. IN DWORD Level,
  113. IN DWORD ParmNum, // Use PARMNUM_ALL if not applicable.
  114. IN BOOL Native, // Should sizes be native or RAP?
  115. OUT LPDESC * DataDesc16 OPTIONAL,
  116. OUT LPDESC * DataDesc32 OPTIONAL,
  117. OUT LPDESC * DataDescSmb OPTIONAL,
  118. OUT LPDWORD MaxSize OPTIONAL,
  119. OUT LPDWORD FixedSize OPTIONAL,
  120. OUT LPDWORD StringSize OPTIONAL
  121. )
  122. {
  123. NetpAssert( ParmNum == PARMNUM_ALL );
  124. NetpAssert( Native );
  125. NetpSetOptionalArg( DataDesc16, NULL );
  126. NetpSetOptionalArg( DataDesc32, NULL );
  127. NetpSetOptionalArg( DataDescSmb, NULL );
  128. switch (Level) {
  129. case 0 :
  130. SetSizes(
  131. sizeof( REPL_IDIR_INFO_0 ),
  132. MAX_DIR_NAME_SIZE );
  133. break;
  134. case 1 :
  135. SetSizes(
  136. sizeof( REPL_IDIR_INFO_1 ),
  137. MAX_DIR_NAME_SIZE + MAX_MASTER_NAME_SIZE );
  138. break;
  139. default :
  140. return (ERROR_INVALID_LEVEL);
  141. }
  142. return (NO_ERROR);
  143. } // NetpReplImportDirStructureInfo