windows-nt/Source/XPSP1/NT/base/mvdm/inc/wowcomm.h

96 lines
3.7 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++ BUILD Version: 0002
*
* WOW v1.0
*
* Copyright (c) 1991, Microsoft Corporation
*
* WOWCOMM.H
* Constants, macros, etc common to WOW16/WOW32
*
* History:
* Created 28-Apr-1993 by Craig Jones (v-cjones)
*
--*/
#ifndef __WOWCOMM__ // has this been included before?
#define __WOWCOMM__
#ifndef UNALIGNED // this makes UNALIGNED visible only to 32-bit stuff
#define UNALIGNED // and invisible to 16-bit stuff
#endif
/* XLATOFF */
#pragma pack(1)
/* XLATON */
// COMDEB - Communications Device Equipment Block. (copied from ibmcom.inc)
//
// This is essentially a superset of the DCB used outside of this
// module. The DCB is contained within the DEB as the first fields.
// The fields which follow are data and status fields which
// are unique to this implementation.
//
// AltQInAddr and AltQOutAddr are alternate queue pointers which are used when
// in "supervisor" mode. Supervisor mode is a processor mode other than the
// one which Windows normally runs in. In standard mode Windows, supervisor
// mode is REAL mode. In enhanced mode Windows, supervisor mode is RING 0
// protected mode. For more details see comments in IBMINT.ASM.
// RS232 Data Equip Block
typedef struct _COMDEB16 { /* cdeb16 */
BYTE ComDCB; // size of this struct
WORD ComErr; // Non-zero if I/O error
WORD Port; // Base I/O Address
WORD NotifyHandle;
WORD NotifyFlags;
WORD RecvTrigger; // char count threshold for calling
WORD SendTrigger; // char count threshold for calling
// The following fields are specific to com ports only
WORD IRQhook; // ptr to IRQ_Hook_Struc
WORD NextDEB; // ptr to next DEB that is sharing IRQ
WORD XOffPoint; // Q count where XOff is sent
WORD EvtMask; // Mask of events to check for
WORD EvtWord; // Event flags
DWORD QInAddr; // Address of the queue
DWORD AltQInAddr; // Addr of queue in "supervisor" mode
WORD QInSize; // Length of queue in bytes
DWORD QOutAddr; // Address of the queue
DWORD AltQOutAddr; // Addr of queue in "supervisor" mode
WORD QOutSize; // Length of queue in bytes
WORD QInCount; // Number of bytes currently in queue
WORD QInGet; // Offset into queue to get bytes from
WORD QInPut; // Offset into queue to put bytes in
WORD QOutCount; // Number of bytes currently in queue
WORD QOutGet; // Offset into queue to get bytes from
WORD QOutPut; // Offset into queue to put bytes in
BYTE EFlags; // Extended flags
BYTE MSRShadow; // Modem Status Register Shadow
BYTE ErrorMask; // Default error-checking mask
BYTE RxMask; // Character mask
BYTE ImmedChar; // Char to be transmitted immediately
BYTE HSFlag; // Handshake flag
BYTE HHSLines; // 8250 DTR/RTS bits for handshaking
BYTE OutHHSLines; // Lines that must be high to output
BYTE MSRMask; // Mask of Modem Lines to check
BYTE MSRInfinite; // Mask of MSR lines that must be high
BYTE IntVecNum; // Interrupt vector number
BYTE LSRShadow; // Line Status Register shadow
WORD QOutMod; // Characters sent mod xOnLim ENQ/ETX [rkh]
DWORD VCD_data;
BYTE VCDflags;
BYTE MiscFlags; // still more flags
} COMDEB16;
typedef COMDEB16 UNALIGNED *PCOMDEB16;
// In 3.0 MSRShadow had this relationship to EvtWord and major COM apps all
// use this offset of 35 to get to MSRShadow so that they can determine the
// current status of the Modem Status bits. We need to maintain this offset
// so that these apps will continue to run.
/* XLATOFF */
#pragma pack()
/* XLATON */
#endif // __WOWCOMM__