netbios2.h
上传用户:xiaoan1112
上传日期:2013-04-11
资源大小:19621k
文件大小:12k
源码类别:

操作系统开发

开发平台:

Visual C++

  1. #define TRUE   1
  2. #define FALSE  0
  3. #define SUCCESS 1
  4. #define FAILURE 0
  5. #ifndef USGC
  6. #define USGC  unsigned char
  7. #endif
  8. #ifndef USGI
  9. #define USGI  unsigned
  10. #endif
  11. #ifndef USGL
  12. #define USGL  unsigned long
  13. #endif
  14. #define NetbiosInt21FunctionCode   ((USGC) 0x2A)
  15. #define NetbiosInt5C               ((USGC) 0x5C)
  16. #define COMMAND_PENDING            ((USGC) 0xFF)
  17. #define Mcb Ncb
  18. #define MAX_ADAPTER_NUMBER           1
  19. #define MAX_SESSION_COUNT          254
  20. #define MAX_NAMES                  254
  21. #define MAX_COMMAND_COUNT          255
  22. #define NO_WAIT                   ((USGC) 0x80)
  23. #define NETBIOS_RESET_WAIT_ONLY   ((USGC) 0x32)
  24. #define NETBIOS_CANCEL_WAIT_ONLY  ((USGC) 0x35)
  25. #define NETBIOS_ADAPTER_STATUS    ((USGC) 0x33)
  26. #define NETBIOS_UNLINK_WAIT_ONLY  ((USGC) 0x70)
  27. #define NETBIOS_TRACE             ((USGC) 0x79)
  28. #define NETBIOS_ADD_NAME          ((USGC) 0x30)
  29. #define NETBIOS_ADD_GROUP_NAME    ((USGC) 0x36)
  30. #define NETBIOS_DELETE_NAME       ((USGC) 0x31)
  31. #define NETBIOS_FIND_NAME         ((USGC) 0x78)
  32. #define NETBIOS_CALL              ((USGC) 0x10)
  33. #define NETBIOS_LISTEN            ((USGC) 0x11)
  34. #define NETBIOS_HANG_UP           ((USGC) 0x12)
  35. #define NETBIOS_SEND              ((USGC) 0x14)
  36. #define NETBIOS_SEND_NO_ACK       ((USGC) 0x71)
  37. #define NETBIOS_CHAIN_SEND        ((USGC) 0x17)
  38. #define NETBIOS_CHAIN_SEND_NO_ACK ((USGC) 0x72)
  39. #define NETBIOS_RECEIVE           ((USGC) 0x15)
  40. #define NETBIOS_RECEIVE_ANY       ((USGC) 0x16)
  41. #define NETBIOS_SESSION_STATUS    ((USGC) 0x34)
  42. #define NETBIOS_SEND_DATAGRAM     ((USGC) 0x20)
  43. #define NETBIOS_RECEIVE_DATAGRAM  ((USGC) 0x21)
  44. #define NETBIOS_SEND_BDATAGRAM    ((USGC) 0x22)
  45. #define NETBIOS_RECEIVE_BDATAGRAM ((USGC) 0x23)
  46. #define NETBIOS_INVALID_COMMAND   ((USGC) 0x7F)
  47. /* LAN Adapter Types */
  48. #define TOKEN_RING_ADAPTER ((USGC) 0xFF)
  49. #define PC_NETWORK_ADAPTER ((USGC) 0xFE)
  50. /* NETBIOS Version Numbers */
  51. #define VERSION_MASK ((USGC) 0x0F)
  52. #define PARM_MASK ((USGC) 0xF0)
  53. #define OLD_PARMS ((USGC) 0x10)
  54. #define NEW_PARMS ((USGC) 0x20)
  55. #define MIN_NAME_NUM       2
  56. #define MAX_NAME_NUM     254
  57. #define ILLEGAL_NAME_NUM   0
  58. #define MIN_LSN       1
  59. #define MAX_LSN     254
  60. #define ILLEGAL_LSN   0
  61. struct NameTableEntry {
  62.                char EntryName[16];     /* symbolic network name     */
  63.                USGC EntryNameNum;      /* associated name number    */
  64.                USGC EntryNameStatus;   /* & with 0x0087 for status  */
  65.                };
  66. struct DlcStatus {
  67.     /* +00 */   USGC PermanentNodeName[6];
  68.     /* +06 */   USGC MajorVersionNumber;  /* low-order nibble only */
  69.     /* +07 */   USGC AlwaysZero;
  70.     /* +08 */   USGC LanAdapterType;
  71.     /* +09 */   USGC MinorVersionNumber;
  72.     /* +10 */   USGI ReportingPeriodMinutes;
  73.     /* +12 */   USGI FrameRejectedReceiveCount;
  74.     /* +14 */   USGI FrameRejectedXmitCount;
  75.     /* +16 */   USGI I_FrameReceiveErrorCount;
  76.     /* +18 */   USGI XmitAbortCount;
  77.     /* +20 */   USGL SuccessfulFrameXmitCount;
  78.     /* +24 */   USGL SuccessfulFrameRcvCount;
  79.     /* +28 */   USGI I_FrameXmitErrorCount;
  80.     /* +30 */   USGI RmtRqstBufferDepletionCount;
  81.     /* +32 */   USGI ExpiredT1TimerCount;
  82.     /* +34 */   USGI ExpiredTiTimerCount;
  83.     /* +36 */   struct LocalTrAdapterStatus far * LocalExtStatPtr;
  84.     /* +40 */   USGI FreeCommandBlocks;
  85.     /* +42 */   USGI CurrentMaxNcbs;
  86.     /* +44 */   USGI MaximumCommands;
  87.     /* +46 */   USGI TransmitBufferDepletionCount;
  88.     /* +48 */   USGI MaximumDatagramPacketSize;
  89.     /* +50 */   USGI PendingSessionCount;
  90.     /* +52 */   USGI MaxPendingSessionCount;
  91.     /* +54 */   USGI MaximumSessions;
  92.     /* +56 */   USGI MaximumSessionPacketSize;
  93.     /* +58 */   USGI NameTableEntryCount;
  94.     /* +60 */   struct NameTableEntry TableEntry[MAX_NAMES];
  95.               } ;
  96. struct LocalTrAdapterStatus {
  97.     /* +00 */   USGI DirInitBringUpErrorCode;
  98.     /* +02 */   USGI DirOpenAdapterErrorCode;
  99.     /* +04 */   USGI LatestRingStatus;
  100.     /* +06 */   USGI LatestAdapterCheckReasonCode;
  101.     /* +08 */   USGI LatestPcDetectedErrorCode;
  102.     /* +10 */   USGC LatestOperationalErrorCode;
  103.     /* +11 */   USGC LatestImplicitCcbReturnCode;
  104.     /* +12 */   USGI AdapterLineErrors;
  105.     /* +14 */   USGI AdapterInternalErrors;
  106.     /* +16 */   USGI AdapterBurstErrors;
  107.     /* +18 */   USGI AdapterAcError;
  108.     /* +20 */   USGI AdapterAbortDelimiter;
  109.     /* +22 */   USGI AdapterReserved1;
  110.     /* +24 */   USGI AdapterLostFrame;
  111.     /* +26 */   USGI AdapterReceiveCongestion;
  112.     /* +28 */   USGI AdapterFrameCopiedErrors;
  113.     /* +30 */   USGI AdapterFrequencyErrors;
  114.     /* +32 */   USGI AdapterTokenErrors;
  115.     /* +34 */   USGI AdapterReserved2;
  116.     /* +36 */   USGI AdapterReserved3;
  117.     /* +38 */   USGI AdapterReserved4;
  118.               };
  119. struct LanaStatus {
  120.     /* +00 */   USGC PermanentNodeName[6];
  121.     /* +06 */   USGC ExternalJumperSetting;
  122.     /* +07 */   USGC SelfTestResults;
  123.     /* +08 */   USGC SoftwareVersionMajor;
  124.     /* +09 */   USGC SoftwareVersionMinor;
  125.     /* +10 */   USGI ReportingPeriodMinutes;
  126.     /* +12 */   USGI CrcErrorCount;
  127.     /* +14 */   USGI AlignmentErrors;
  128.     /* +16 */   USGI CollisionCount;
  129.     /* +18 */   USGI XmitAbortCount;
  130.     /* +20 */   USGL SuccessfulXmits;
  131.     /* +24 */   USGL SuccessfulRcvs;
  132.     /* +28 */   USGI RetransmitCount;
  133.     /* +30 */   USGI ResourceDepletionCount;
  134.     /* +32 */   char ReservedArea1[8];
  135.     /* +40 */   USGI FreeCommandBlocks;
  136.     /* +42 */   USGI CurrentMaxNcbs;
  137.     /* +44 */   USGI HwMaxCommandBlocks;
  138.     /* +46 */   char ReservedArea2[4];
  139.     /* +50 */   USGI PendingSessionCount;
  140.     /* +52 */   USGI CurrentMaxPendingSessions;
  141.     /* +54 */   USGI HwMaxSessionCount;
  142.     /* +56 */   USGI MaximumPacketSize;
  143.     /* +58 */   USGI NameTableEntryCount;
  144.     /* +60 */   struct NameTableEntry TableEntry[16];
  145.               } ;
  146. /*
  147.  * ADAPTER STATUS
  148.  */
  149. struct as_name_s {     /* Name entries     */
  150.     char as_name[16]; /* Name     */
  151.     unsigned char as_number;     /* Name number     */
  152.     unsigned char as_status;     /* Name status     */
  153. }; /* as_name_s */
  154. struct astat {
  155.     unsigned char   as_uid[6];     /* Unit identification number     */
  156.     unsigned char   as_ejs;     /* External jumper status     */
  157.     unsigned char   as_lst;     /* Results of last self-test     */
  158.     unsigned char   as_ver;     /* Software version number     */
  159.     unsigned char   as_rev;     /* Software revision number      */
  160.     unsigned short  as_dur;     /* Duration of reporting period     */
  161.     unsigned short  as_crc;     /* Number of CRC errors     */
  162.     unsigned short  as_align;     /* Number of alignment errors     */
  163.     unsigned short  as_coll;     /* Number of collisions     */
  164.     unsigned short  as_abort;     /* Number of aborted transmissions     */
  165.     unsigned long   as_spkt;     /* Number of successful packets sent    */
  166.     unsigned long   as_rpkt;     /* No. of successful packets rec'd      */
  167.     unsigned short  as_retry;     /* Number of retransmissions     */
  168.     unsigned short  as_exhst;     /* Number of times exhausted     */
  169.     char     as_res0[8];     /* Reserved      */
  170.     unsigned short  as_ncbfree;     /* Free ncbs     */
  171.     unsigned short  as_numncb;     /* number of ncbs configured     */
  172.     unsigned short  as_maxncb;     /* max configurable ncbs     */
  173.     char     as_res1[4];     /* Reserved      */
  174.     unsigned short  as_sesinuse;    /* sessions in use     */
  175.     unsigned short  as_numses;     /* number of sessions configured     */
  176.     unsigned short  as_maxses;     /* Max configurable sessions     */
  177.     unsigned short  as_maxdat;     /* Max. data packet size     */
  178.     unsigned short  as_names;     /* No. of names in local table     */
  179.     struct as_name_s as_struct[16];
  180. }; /* astat */
  181. /*
  182.  * SESSION STATUS
  183.  */
  184. struct ss_sess {     /* Name entries:     */
  185.     unsigned char ss_lsn;      /* local session number     */
  186.     unsigned char ss_sstate;     /* State of session:     */
  187.     char ss_lname[16]; /* local name     */
  188.     char ss_rname[16]; /* remote name     */
  189.     unsigned char ss_numrec;     /* # of receives outstanding  */
  190.     unsigned char ss_numsend;     /* # of sends outstanding     */
  191. }; /* ss_sess */
  192. struct sstat {
  193.     unsigned char   ss_namenum;     /* Name number     */
  194.     unsigned char   ss_numsess;     /* # of sessions with this name     */
  195.     unsigned char   ss_numrdgm;     /* # of receive datagrams outstanding   */
  196.     unsigned char   ss_numrany;     /* # of receive anys outstanding     */
  197.     struct ss_sess ss_struct[16];
  198. }; /* sstat */
  199. struct Ncb {
  200.     unsigned char   ncb_command;     /* command code     */
  201.     unsigned char   ncb_retcode;     /* return code     */
  202.     unsigned char   ncb_lsn;     /* local session number     */
  203.     unsigned char   ncb_num;     /* number of our network name   */
  204.     char far *     ncb_buffer;      /* address of message buffer    */
  205.     unsigned short  ncb_length;      /* size of message buffer     */
  206.     char     ncb_callname[16]; /* blank-padded name of remote  */
  207.     char     ncb_name[16];     /* our blank-padded netname     */
  208.     unsigned char   ncb_rto;     /* rcv timeout/retry count     */
  209.     unsigned char   ncb_sto;     /* send timeout/sys timeout     */
  210.     unsigned long   ncb_post;     /* Async notification handle    */
  211.     unsigned char   ncb_lana_num;     /* lana (adapter) number     */
  212.     unsigned char   ncb_cmd_cplt;     /* 0xff => commmand pending     */
  213.     char     ncb_cmdx;     /* smb cmd to process */
  214.     char     ncb_chardevix;     /* = 0xFF if this nb did not come */
  215.     /* from a char dev queue else is */
  216.     /* index to char dev to open     */
  217.     unsigned char   ncb_serialnum;     /* session serial number */
  218.     unsigned char   ncb_seqnum;      /* session sequence number */
  219.     unsigned short  ncb_smbmid;      /* smb_mid value for TRANS2 */
  220.     unsigned short  ncb_smbtid;     /* the TID for this NB */
  221.     unsigned short  ncb_smbparams;     /* offset of ptr to params of next */
  222.     /* smb to process in buffer */
  223.     long     ncb_timestamp;     /* time we began processing this nb */
  224. }ZeroNcb; /* ncb */
  225. struct DateTimeStruct { USGI DateCX;
  226.                         USGI DateDX;
  227.                         USGI TimeCX;
  228.                         USGI TimeDX;
  229.                       };
  230. #define NB_ILLEGAL_BUFFER_LENGTH       0x01
  231. #define NB_INVALID_COMMAND             0x03
  232. #define NB_COMMAND_TIMED_OUT           0x05
  233. #define NB_MESSAGE_INCOMPLETE          0x06
  234. #define NB_ILLEGAL_LSN                 0x08
  235. #define NB_NO_RESOURCE_AVAILABLE       0x09
  236. #define NB_SESSION_CLOSED              0x0A
  237. #define NB_COMMAND_CANCELED            0x0B
  238. #define NB_DUPLICATE_LOCAL_NAME        0x0D
  239. #define NB_NAME_TABLE_FULL             0x0E
  240. #define NB_NAME_HAS_ACTIVE_SESSIONS    0x0F
  241. #define NB_LOCAL_SESSION_TABLE_FULL    0x11
  242. #define NB_SESSION_OPEN_REJECTED       0x12
  243. #define NB_ILLEGAL_NAME_NUMBER         0x13
  244. #define NB_CANNOT_FIND_CALLED_NAME     0x14
  245. #define NB_NAME_NOT_FOUND_OR_ILLEGAL   0x15
  246. #define NB_NAME_USED_ON_RMT_ADAPTER    0x16
  247. #define NB_NAME_DELETED                0x17
  248. #define NB_SESSION_ENDED_ABNORMALLY    0x18
  249. #define NB_NAME_CONFLICT_DETECTED      0x19
  250. #define NB_INCOMPATIBLE_RMT_DEVICE     0x1A
  251. #define NB_INTERFACE_BUSY              0x21
  252. #define NB_TOO_MANY_COMMANDS_PENDING   0x22
  253. #define NB_INVALID_ADAPTER_NUMBER      0x23
  254. #define NB_CMD_COMPLETED_DURING_CANCEL 0x24
  255. #define NB_RESERVED_NAME_SPECIFIED     0x25
  256. #define NB_CMD_NOT_VALID_TO_CANCEL     0x26
  257. #define NB_LANA_SYSTEM_ERROR           0x40
  258. #define NB_LANA_REMOTE_HOT_CARRIER     0x41
  259. #define NB_LANA_LOCAL_HOT_CARRIER      0x42
  260. #define NB_LANA_NO_CARRIER_DETECTED    0x43
  261. #define NB_UNUSUAL_NETWORK_CONDITION   0x44
  262. #define NB_ADAPTER_MALFUNCTION         0x50
  263. #define NB_COMMAND_PENDING             0xFF
  264. #define MAX_SESSION_BUFFER_SIZE        8192
  265. struct SessionMsg { USGL TextLength;
  266.                     char Text[MAX_SESSION_BUFFER_SIZE];
  267.                   };
  268. /*--------------------------- END OF FILE ------------------------------*/