📄 fmi.h
字号:
/* fmi.h */
/*
* (C) Copyright Data Connection Limited 1989-1992.
* (C) Copyright Microsoft Corporation 1991.
* All Rights Reserved.
*/
#ifndef FMIH_INCLUDED
#define FMIH_INCLUDED
#ifdef __cplusplus
extern "C" {
#endif
#ifdef WIN32_SUPPORT
#pragma pack(1)
#endif
/*****************************************************************************/
/* The following type definitions are in os2def.h so are not needed in OS/2 */
/*****************************************************************************/
#if (defined(DOS_SUPPORT) || defined(MSWIN_SUPPORT))
#define CHAR char /* ch */
typedef unsigned char UCHAR; /* uch */
typedef unsigned short USHORT; /* us */
typedef unsigned long ULONG; /* ul */
#endif
/*****************************************************************************/
/* Type definitions for message fields */
/*****************************************************************************/
typedef signed short INTEGER;
/*****************************************************************************/
/* Macro to convert integer fields other than STARTD and ENDD, SRCI */
/* and DESTI to In-line format */
/*****************************************************************************/
#ifndef WIN32_SUPPORT
#define DOFLIP(X) ((INTEGER)((((X) & 0xff) << 8) | (((X) >> 8) & 0xff)))
#else
#ifndef ROTL
#ifndef _CRTAPI1
unsigned int _rotl(unsigned int, int);
#else
unsigned int _CRTAPI1 _rotl(unsigned int, int);
#endif
#define ROTL
#endif
#pragma intrinsic(_rotl)
#define DOFLIP(X) ((INTEGER)_rotl(((unsigned short)(X))*(unsigned long)0x00010001, 8))
#endif
#define DONTFLIP(X) (X)
#ifdef NON_INTEL_BYTE_ORDER
#define PFLIPI(X) DONTFLIP(X)
#define PANTIFLIPI(X) DOFLIP(X)
#else
#define PFLIPI(X) DOFLIP(X)
#define PANTIFLIPI(X) DONTFLIP(X)
#endif
/*****************************************************************************/
/* Element offset and length definitions */
/*****************************************************************************/
#define SBCBELT1 1
#define SBCBELT3 13
#define SNANBEDA 268 /* LENGTH OF BUFFER ELEMENT */
/*****************************************************************************/
/* MESSAGE TYPE DECLARATIONS - ELEMENT OPTIONS */
/*****************************************************************************/
typedef
#define RHASENSE 0
#define DATAONLY 1
signed char ELTDATAT;
typedef CHAR SNCHARRU[SNANBEDA]; /* LENGTH OF ELT */
/*****************************************************************************/
/* MAIN DEFINITION OF MESSAGE ELEMENT */
/*****************************************************************************/
/**STRUCT+********************************************************************/
/* Structure: BUFELT */
/* */
/* Description: Main definition of SNAPS Buffer Element */
/*****************************************************************************/
#ifdef WIN32_SUPPORT
#define PTRBFELT struct bufelt *
#else
#define PTRBFELT struct bufelt far *
#endif
typedef struct bufelt{
PTRBFELT elteptr; /* Pointer to next element in buffer*/
INTEGER startd; /* Offset (from 1) of start of data */
INTEGER endd; /* Offset (from 1) of last data byte*/
CHAR trpad;
/*ELTDATAT*/union {
/*RHASENSE*/struct {unsigned char rhpad[8];
signed long BBUFF0V;
INTEGER BBUFF0W;
INTEGER BBUFF0X;}BBUFF0T;
/*DATAONLY*/struct {SNCHARRU BBUFF0Z;
}BBUFF0Y;
}BBUFF0S;}
#define rh BBUFF0S.BBUFF0T.BBUFF0V /* The RH bytes themselves */
#define sense1 BBUFF0S.BBUFF0T.BBUFF0W /* Sense data 1 in negative response*/
#define sense2 BBUFF0S.BBUFF0T.BBUFF0X /* Sense data 2 in negative response*/
#define dataru BBUFF0S.BBUFF0Y.BBUFF0Z /* The data bytes themselves */
#define lccpad BBUFF0S.BBUFF0Y.BBUFF1A /* Pad */
BUFELT;
/*****************************************************************************/
/* OPEN MESSAGE TYPE DECLARATIONS */
/*****************************************************************************/
typedef struct tpophdr{ /* OPEN MESSAGE HEADER */
CHAR openqual;
#define REQU 1
#define RSPOK 2
#define RSPERR 3
#define CONFOK 4
#define CONFERR 5
CHAR opentype;
#define SSCPSEC 1
#define LUSEC 2
#define SBPUSEC 3
CHAR appltype; /* INTERFACE ID - X'02' FOR FMI */
CHAR opluno; /* INTERFACE USER NUMBER */
INTEGER opresid; /* INTERFACE USER ID */
union {
struct {INTEGER B03;
INTEGER B04;
CHAR B05;
CHAR B06;}B02;
struct {INTEGER B08;
INTEGER B09;}B07;
}B01;}
#define icreditr B01.B02.B03
#define icredits B01.B02.B04
#define opninfo1 B01.B02.B05
#define opnpad1 B01.B02.B06
#define operr1 B01.B07.B08
#define operr2 B01.B07.B09
TPOPHDR;
/*****************************************************************************/
/* Open (SSCP) opnpad1 values */
/*****************************************************************************/
#define OPEN_TEST 0 /* DON'T FORCE A CONNECTION ACTIVE */
#define OPEN_FORCE 1 /* FORCE A CONNECTION ACTIVE */
/*****************************************************************************/
/* Constants for operr2 field in Open(SSCP) Error Responses */
/*****************************************************************************/
#define CSRENOSR 0 /* NO SERVERS FOUND */
#define CSRESERV 1 /* SERVICE NOT PRESENT AT LOCALITY */
#define CSRECNFG 2 /* CONFIGURATION MISMATCH */
#define CSRECBSH 3 /* CONTROL BLOCK/RESOURCE SHORTAGE */
#define CSREFORM 4 /* FORMAT/PROTOCOL ERROR */
/*****************************************************************************/
/* LINK TYPE DEFINITIONS FOR OPEN (SSCP) RESPONSE IN DATARU[38] */
/*****************************************************************************/
#define CESLINK 3 /* SDLC LINK */
#define CESX25 4 /* X.25 LINK */
#define CESDFT 10 /* DFT LINK */
#define CESTR 11 /* TOKEN RING LINK */
#define CESTCPIP 30 /* TCP/IP LINK */
#define CESRELAY 31 /* FRAME RELAY LINK */
#define CESCHANL 32 /* CHANNEL LINK */
#define CESISDN 33 /* ISDN LINK */
#define CESETHER 34 /* ETHERNET 802.2 LINK */
/*****************************************************************************/
/* BIND Table Index Values for the Open PLU response (in element) */
/*****************************************************************************/
#define BIND_TABLE_INDEX_PRT 1
#define BIND_TABLE_INDEX_CRT 2
/*****************************************************************************/
/* CLOSE MESSAGE TYPE DECLARATIONS */
/*****************************************************************************/
typedef struct tpclhdr{ /* CLOSE MESSAGE HEADER */
CHAR closqual; /* Same values as openqual */
CHAR clstype; /* Same values as opentype */
CHAR clsctl; /* For Close(PLU) only */
#define CLNORMAL 1
#define CLBIND 2
#define CLCFAERR 3
#define CLPUINAC 4
#define CLLUINAC 5
#define CLLNKERR 6
#define CLBFSHRT 7
#define CLRCVCHK 8
#define CLSLUTRM 9
CHAR clspad1;
INTEGER clspad2;
INTEGER clserr1;
INTEGER clserr2;
}TPCLHDR;
/*****************************************************************************/
/* STATUS-ACKNOWLEDGE MESSAGE TYPE DECLARATION */
/*****************************************************************************/
typedef struct tpstahdr{ /* STATUS ACK MESSAGE HEADER */
CHAR akstat;
#define ACK 1
CHAR akqual;
#define ACKPOS 2
#define ACKNEG1 3
#define ACKNEG2 4
INTEGER akmsgkey;
union {
INTEGER XXXXX01;
struct {
CHAR XXXXX02;
CHAR XXXXX03;
} XXXXX04;
} XXXXX05;
INTEGER aknumb1;
INTEGER aknumb2;
INTEGER akseqno;
#define akmsgtim XXXXX05.XXXXX01
#define akflags1 XXXXX05.XXXXX04.XXXXX02 /* Same values as fhflags1 below */
/* Reserved for ACKNEG2 */
#define akflags2 XXXXX05.XXXXX04.XXXXX03 /* Same values as fhflags2 below */
/* Crit/Non-Crit fail for ACKNEG2*/
}TPSTAHDR;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -