                                                  
/* semfddnt.h */

/* NT IBM SDLC Adapter Device Driver: Nt-Specific Grabbage */


/*****************************************************************************/
/* Doing I/O on NT                                                           */
/*****************************************************************************/

#define IO_DELAY(ms)             KeStallExecutionProcessor(ms)

typedef PUCHAR      IO_ADDRESS;         /* used to address a port on the I/O */
                                        /* and also use for adapter base adr */

#define IO_IN(AdAdr)             CAST(READ_PORT_UCHAR(CAST(AdAdr,IO_ADDRESS)),\
                                      UCHAR)
#define IO_OUT(AdAdr,Value)      WRITE_PORT_UCHAR(CAST( AdAdr, IO_ADDRESS),   \
                                                  CAST (Value, UCHAR))
#define WR_N_DELAY(AdAdr,Value)  { IO_OUT (AdAdr,Value);                      \
                                   IO_DELAY (1L); }

/*****************************************************************************/
/* Defines to get at Irp.  The IO_STACK_LOCATION is defined with unnamed     */
/* structs.  This requires writing things like                               */
/*   IO_STACK_LOCN->Parameters.DeviceIoControl.IoControlCode                 */
/* or using the #defines below                                               */
/*****************************************************************************/

#define IRS_CODE   Parameters.DeviceIoControl.IoControlCode
#define IRS_OUTLEN Parameters.DeviceIoControl.OutputBufferLength
#define IRS_INLEN  Parameters.DeviceIoControl.InputBufferLength

