Windows NT 4.0 source code leak
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.

260 lines
6.4 KiB

4 years ago
  1. /*****************************************************************/
  2. /** Microsoft LAN Manager **/
  3. /** Copyright(c) Microsoft Corp., 1990 **/
  4. /*****************************************************************/
  5. /* DEFS.H
  6. Revision History:
  7. P.A. Williams 06/16/89 Added i<fieldname> defines defining the
  8. item number for a field. IE DIR_FLAG
  9. is item number iDIR_FLAG.
  10. S.A.Hern 06/22/89 Added missing iSB_BSEC to superblock defines
  11. plus allocation sector offsets
  12. */
  13. #include <const.h>
  14. #include <nt.h>
  15. /*
  16. * Define CODEPAGE here to compile for new codepage disk format.
  17. */
  18. #define CODEPAGE
  19. /*
  20. * Definitions of common function return values
  21. */
  22. #define FALSE 0
  23. #ifndef TRUE
  24. #define TRUE (~ FALSE)
  25. #endif
  26. #define NOT_OK 0
  27. #define OK 1
  28. #define DELETE_ME 2
  29. /*
  30. * Definitions for exit codes
  31. */
  32. #define SUCCESS_CODE 0 /* no error occurred */
  33. #define ARG_ERROR 1 /* error in arguments */
  34. #define OPEN_ERROR 2 /* error opening disk */
  35. #define INSF_MEM_ERROR 3 /* insufficient memory */
  36. #define READ_ERROR 4 /* error reading disk */
  37. #define WRITE_ERROR 5 /* error writing disk */
  38. #define SAVE_ERROR 6 // can't open keystroke save file
  39. #define REPLAY_ERROR 7 // can't open keystroke replay file
  40. #define LOG_ERROR 8 // can't open log file
  41. #define MAX_ERROR_CODE 9 /* minimum invalid error code */
  42. /*
  43. * Definitions of various file system dimensions.
  44. */
  45. #define BYTES_PER_SECTOR 512
  46. #define SECTORS_PER_FNODE 1
  47. #define SECTORS_PER_DIRBLK 4
  48. #define SECTORS_PER_AB 1
  49. #define SECTORS_PER_BLOCK 4
  50. #define SECTORS_PER_CODEPAGE 1
  51. #define BYTES_PER_BITMAP 2044
  52. /*
  53. * Block types
  54. */
  55. #define TYPE_SUPERB 0
  56. #define TYPE_BII 1
  57. #define TYPE_BITMAP 2
  58. #define TYPE_BBL 3
  59. #define TYPE_HFSEC 4
  60. #define TYPE_FNODE 5
  61. #define TYPE_DIRBLK 6
  62. #define TYPE_ALSEC 7
  63. #define TYPE_DATA 8
  64. #define TYPE_DBBIT 9
  65. #define TYPE_CPSEC 10
  66. #define TYPE_CPDATA 11
  67. #define MAX_OBJECTS 1024
  68. /*
  69. * Valid command codes -- translated from keystrokes by get_command().
  70. */
  71. #define CMD_DISPLAY 0
  72. #define CMD_CHANGE 1
  73. #define CMD_FENCE 2
  74. #define CMD_BACKOUT 3
  75. #define CMD_NEXT 4
  76. #define CMD_PREVIOUS 5
  77. #define CMD_QUIT 6
  78. #define CMD_HELP 7
  79. #define CMD_REVERT 8
  80. #define CMD_COPY 9
  81. #define CMD_MARKBAD 10
  82. #define CMD_LOG 11
  83. #define CMD_UNMARKBAD 12
  84. #define OPEN_FLAG 0x0001U
  85. #define OPEN_MODE 0xe0c2U
  86. #define GET_RECOMM (UCHAR)0
  87. #define IOCTL_LOCK 0x00U
  88. #define IOCTL_UNLOCK 0x01U
  89. #define IOCTL_READ 0x64U
  90. #define IOCTL_WRITE 0x44U
  91. #define IOCTL_GET_PARAMS 0x63U
  92. #define MAX_SECTORS_PER_TRACK 256
  93. #ifdef V11
  94. #define IOCTL_CATEGORY 9U
  95. #else
  96. #define IOCTL_CATEGORY 8U
  97. #endif
  98. #define NEXT_ENTRY(dp) dp.p += dp.d->DIR_ELEN
  99. #define DOWN_PTR(dp) (*(ULONG *)(dp.p + dp.d->DIR_ELEN - sizeof (long)))
  100. #define DIR_START(db) &((db).DB_START)
  101. #define AB_START(b) (ULONG *)((UCHAR *)(&((b)->a.AS_ALBLK))+sizeof(struct ALBLK))
  102. #define FIELDOFFSET(type, field) ((USHORT)&(((type *)0)->field))
  103. #define FIELDSIZE(type, field) (sizeof (((type *)0)->field))
  104. #define ADD 0L // add to bad lsn list
  105. #define REMOVE 0x80000000L // remove from bad lsn list
  106. /* item number definitions */
  107. #define INC(item) (item+1)
  108. /* Superblock */
  109. #define iSB_SIG1 1
  110. #define iSB_SIG2 INC(iSB_SIG1)
  111. #define iSB_VER INC(iSB_SIG2)
  112. #define iSB_FVER INC(iSB_VER)
  113. #define iSB_ROOT INC(iSB_FVER)
  114. #define iSB_SEC INC(iSB_ROOT)
  115. #define iSB_BSEC INC(iSB_SEC)
  116. #define iSB_BII_P INC(iSB_BSEC)
  117. #define iSB_BBL_P INC(iSB_BII_P)
  118. #define iSB_CDDAT INC(iSB_BBL_P)
  119. #define iSB_DODAT INC(iSB_CDDAT)
  120. #define iSB_DBSIZE INC(iSB_DODAT)
  121. #define iSB_DBLOW INC(iSB_DBSIZE)
  122. #define iSB_DBHIGH INC(iSB_DBLOW)
  123. #define iSB_DBMAP INC(iSB_DBHIGH)
  124. #define iSpareblock INC(iSB_DBMAP)
  125. /* Spareblock */
  126. #define iSPB_SIG1 1
  127. #define iSPB_SIG2 INC(iSPB_SIG1)
  128. #define iSPB_FLAG INC(iSPB_SIG2)
  129. #define iSPB_HFSEC INC(iSPB_FLAG)
  130. #define iSPB_HFUSE INC(iSPB_HFSEC)
  131. #define iSPB_HFMAX INC(iSPB_HFUSE)
  132. #define iSPB_SDBCNT INC(iSPB_HFMAX)
  133. #define iSPB_SDBMAX INC(iSPB_SDBCNT)
  134. #define iSPB_CPSEC INC(iSPB_SDBMAX)
  135. #define iSPB_CPCNT INC(iSPB_CPSEC)
  136. #ifdef CHECKSUMS
  137. #define iSPB_SUPERBSUM INC(iSPB_CPCNT)
  138. #define iSPB_SPAREBSUM INC(iSPB_SUPERBSUM)
  139. #endif
  140. /* DIRBLK */
  141. #define iDB_SIG 1
  142. #define iDB_FREP INC(iDB_SIG)
  143. #define iDB_CCNT INC(iDB_FREP)
  144. #define iDB_PAR INC(iDB_CCNT)
  145. #define iDB_SEC INC(iDB_PAR)
  146. /* DIRENT */
  147. #define iDIR_start INC(iDB_SEC)
  148. #define iDIR_ELEN INC(iDB_SEC)
  149. #define iDIR_FLAG INC(iDIR_ELEN)
  150. #define iDIR_FN INC(iDIR_FLAG)
  151. #define iDIR_MTIM INC(iDIR_FN)
  152. #define iDIR_SIZE INC(iDIR_MTIM)
  153. #define iDIR_ATIM INC(iDIR_SIZE)
  154. #define iDIR_CTIM INC(iDIR_ATIM)
  155. #define iDIR_EALEN INC(iDIR_CTIM)
  156. #define iDIR_FLEX INC(iDIR_EALEN)
  157. #define iDIR_CPAGE INC(iDIR_FLEX)
  158. #define iDIR_NAML INC(iDIR_CPAGE)
  159. #define iDIR_NAMA INC(iDIR_NAML)
  160. #define iDIR_BTP INC(iDIR_NAMA)
  161. /* FNODE */
  162. #define iFN_SIG 1
  163. #define iFN_SRH INC(iFN_SIG)
  164. #define iFN_FRH INC(iFN_SRH)
  165. #define iFN_XXX INC(iFN_FRH)
  166. #define iFN_HCNT INC(iFN_XXX)
  167. #define iFN_CONTFN INC(iFN_HCNT)
  168. #define iFN_ACLBASE INC(iFN_CONTFN)
  169. #define iFN_ACL_AI_DAL INC(iFN_ACLBASE)
  170. #define iFN_ACL_AI_SEC INC(iFN_ACL_AI_DAL)
  171. #define iFN_ACL_AI_FNL INC(iFN_ACL_AI_SEC)
  172. #define iFN_ACL_AI_DAT INC(iFN_ACL_AI_FNL)
  173. #define iFN_EA_AI_DAL INC(iFN_ACL_AI_DAT)
  174. #define iFN_EA_AI_SEC INC(iFN_EA_AI_DAL)
  175. #define iFN_EA_AI_FNL INC(iFN_EA_AI_SEC)
  176. #define iFN_EA_AI_DAT INC(iFN_EA_AI_FNL)
  177. #define iFN_AB INC(iFN_EA_AI_DAT)
  178. #define iFN_ALREC INC(iFN_AB)
  179. #define iFN_VLEN INC(iFN_ALREC)
  180. #define iFN_NEACNT INC(iFN_VLEN)
  181. /* ALBLK */
  182. #define iAB_FLAG 1
  183. #define iAB_FCNT INC(iAB_FLAG)
  184. #define iAB_OCNT INC(iAB_FCNT)
  185. #define iAB_FREP INC(iAB_OCNT)
  186. /* Allocation sector */
  187. #define iAS_SIG 1
  188. #define iAS_SEC INC(iAS_SIG)
  189. #define iAS_RENT INC(iAS_SEC)
  190. #define iAS_ALBLK_AB_FLAG INC(iAS_RENT)
  191. #define iAS_ALBLK_AB_FCNT INC(iAS_ALBLK_AB_FLAG)
  192. #define iAS_ALBLK_AB_OCNT INC(iAS_ALBLK_AB_FCNT)
  193. #define iAS_ALBLK_AB_FREP INC(iAS_ALBLK_AB_OCNT)
  194. /* CPINFOSEC */
  195. #define iCP_SIG 1
  196. #define iCP_INFOCNT INC(iCP_SIG)
  197. #define iCP_INDEX INC(iCP_INFOCNT)
  198. #define iCP_NEXTSEC INC(iCP_INDEX)
  199. #define iCP_INFO INC(iCP_NEXTSEC)
  200. /* CPINFOENT */
  201. #define iCPI_CNTRY 1
  202. #define iCPI_CPID INC(iCPI_CNTRY)
  203. #define iCPI_CHKSUM INC(iCPI_CPID)
  204. #define iCPI_DATASEC INC(iCPI_CHKSUM)
  205. #define iCPI_INDEX INC(iCPI_DATASEC)
  206. #define iCPI_RNGECNT INC(iCPI_INDEX)
  207. /* CPDATASEC */
  208. #define iCPS_SIG 1
  209. #define iCPS_DATACNT INC(iCPS_SIG)
  210. #define iCPS_INDEX INC(iCPS_DATACNT)
  211. #define iCPS_CHKSUM INC(iCPS_INDEX)
  212. /* CPDATAENT */
  213. #define iCPD_CNTRY 1
  214. #define iCPD_CPID INC(iCPD_CNTRY)
  215. #define iCPD_RNGECNT INC(iCPD_CPID)
  216. #define iCPD_TABLE INC(iCPD_RNGECNT)
  217. #define iCPD_RNGE INC(iCPD_TABLE)