windows-nt/Source/XPSP1/NT/ds/nw/nw16/inc/nwdos.h
2020-09-26 16:20:57 +08:00

221 lines
5.5 KiB
C

/*--
Copyright (c) 1993 Microsoft Corporation
Module Name:
NWDOS.h
Abstract:
This is the include file that defines all constants and types for
16 bit applications accessing the redirector.
Author:
Colin Watson (ColinW) 08-Jul-1993
Revision History:
--*/
#define NWDOS_INCLUDED
#define MC 8 // maximum number of connections
#define NC 8 // number of novell connections
#define MP 3 // maximum number of printers
#define MD 32 // maximum number of drives
#define PZ 64 // print buffer size
#define SERVERNAME_LENGTH 48
#define USERNAME_LENGTH 16
#define PASSWORD_LENGTH 16
#define IPXADDRESS_LENGTH 12
#define NODEADDRESS_LENGTH 6
typedef UCHAR byte;
typedef USHORT word;
typedef byte CONN_INDEX; // index into ConnectionIdTable, range 0..MC-1
typedef byte DRIVE; // index into DriveXxxTable, range 0..MD-1
/* OpenFile() Flags */
#define OF_READ_WRITE_MASK 0x0003
/*
#define OF_READ 0x0000
#define OF_WRITE 0x0001
#define OF_READWRITE 0x0002
*/
#define OF_SHARE_MASK 0x0070
/*
#define OF_SHARE_COMPAT 0x0000
#define OF_SHARE_EXCLUSIVE 0x0010
#define OF_SHARE_DENY_WRITE 0x0020
#define OF_SHARE_DENY_READ 0x0030
#define OF_SHARE_DENY_NONE 0x0040
#define OF_PARSE 0x0100
#define OF_DELETE 0x0200
#define OF_VERIFY 0x0400 */ /* Used with OF_REOPEN */
/*
#define OF_SEARCH 0x0400 */ /* Used without OF_REOPEN */
/*
#define OF_CANCEL 0x0800
#define OF_CREATE 0x1000
#define OF_PROMPT 0x2000
#define OF_EXIST 0x4000
#define OF_REOPEN 0x8000
*/
//
// Force misalignment of the following structures
//
/* XLATOFF */
#include <packon.h>
/* XLATON */
typedef struct CID { /* */
byte ci_InUse;
byte ci_OrderNo;
byte ci_ServerAddress[IPXADDRESS_LENGTH];
word ci_TimeOut;
byte ci_LocalNode[NODEADDRESS_LENGTH];
byte ci_SequenceNo;
byte ci_ConnectionNo;
byte ci_ConnectionStatus;
word ci_MaxTimeOut;
byte ci_ConnectionLo;
byte ci_ConnectionHi;
byte ci_MajorVersion;
byte ci_1;
byte ci_MinorVersion;
} CONNECTIONID;
typedef CONNECTIONID UNALIGNED *PCONNECTIONID;
#if 0 /* Already declared in nw\inc\ntddnwfs.h */
typedef char SERVERNAME[SERVERNAME_LENGTH];
#endif
typedef char USERNAME[USERNAME_LENGTH];
typedef char PASSWORD[PASSWORD_LENGTH];
typedef char IPXADDRESS[IPXADDRESS_LENGTH];
typedef char NODEADDRESS[NODEADDRESS_LENGTH];
//
// The following type collects all the structures used between the TSR
// and the 32 bit dll into one packed structure.
//
// *** ANY CHANGES TO THIS STRUCTURE MUST ALSO BE MADE TO THE ASM NWDOSTABLE_ASM
// *** STRUCTURE (below)
//
/* XLATOFF */
typedef struct {
CONNECTIONID ConnectionIdTable[MC];
SERVERNAME ServerNameTable[MC];
CONN_INDEX DriveIdTable[MD]; // Corresponding ConnectionId
UCHAR DriveFlagTable[MD];
UCHAR DriveHandleTable[MD];
UCHAR PreferredServer;
UCHAR PrimaryServer;
UCHAR TaskModeByte;
UCHAR CurrentDrive;
USHORT SavedAx;
USHORT NtHandleHi;
USHORT NtHandleLow;
USHORT NtHandleSrcHi;
USHORT NtHandleSrcLow;
USHORT hVdd;
USHORT PmSelector;
UCHAR CreatedJob;
UCHAR JobHandle;
UCHAR DeNovellBuffer[256];
UCHAR DeNovellBuffer2[256];
} NWDOSTABLE;
typedef NWDOSTABLE *PNWDOSTABLE;
/* XLATON */
//
// Turn structure packing back off
//
/* XLATOFF */
#include <packoff.h>
/* XLATON */
//
// CONNECTIONID Constants
//
#define FREE 0
#define IN_USE 0xff
//
// Values for DriveFlags
//
#define NOT_MAPPED 0
#define PERMANENT_NETWORK_DRIVE 1
#define TEMPORARY_NETWORK_DRIVE 2
#define LOCAL_DRIVE 0x80
///// Client state tables:
extern CONNECTIONID* ConnectionIdTable; // MC entries
extern SERVERNAME* ServerNameTable; // MC entries
extern byte* DriveFlagTable; // MD entries
extern byte* DriveIdTable; // MD entries
//
// this next egregious grossness is extant because MASM cannot handle anything
// other than a basic type inside a structure declaration
//
// *** ANY CHANGES TO THIS STRUCTURE MUST ALSO BE MADE TO THE C NWDOSTABLE
// *** STRUCTURE (above)
//
// NB. The leading underscores are there because we already have globals with
// the same names
//
/* ASM
NWDOSTABLE_ASM struc
_ConnectionIdTable db ((size CID) * MC) dup (?)
_ServerNameTable db (MC * SERVERNAME_LENGTH) dup (?)
_DriveIdTable db MD dup (?)
_DriveFlagTable db MD dup (?)
_DriveHandleTable db MD dup (?)
_PreferredServer db ?
_PrimaryServer db ?
_TaskModeByte db ?
_CurrentDrive db ?
_SavedAx dw ?
_NtHandleHi dw ?
_NtHandleLow dw ?
_NtHandleSrcHi dw ?
_NtHandleSrcLow dw ?
_hVdd dw ?
_PmSelector dw ?
_CreatedJob db ?
_JobHandle db ?
_DeNovellBuffer db 256 dup (?)
_DeNovellBuffer2 db 256 dup (?)
NWDOSTABLE_ASM ends
*/
/* XLATOFF */
//
// IS_ASCII_PATH_SEPARATOR - returns TRUE if ch is / or \. ch is a single
// byte (ASCII) character
//
#define IS_ASCII_PATH_SEPARATOR(ch) (((ch) == '/') || ((ch) == '\\'))
/* XLATON */