Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

662 lines
25 KiB

/**
Copyright(c) Maynard Electronics, Inc. 1984-89
Name: dle_str.h
Date Updated: $./FDT$ $./FTM$
Description: This file contains the structures for the DLE
Location: BE_PUBLIC
$Log: M:/LOGFILES/DLE_STR.H_V $
*
* Rev 1.40.1.1 04 Jan 1994 11:02:42 BARRY
* Added Unicode name feature bit
*
* Rev 1.40.1.0 18 Oct 1993 19:22:08 STEVEN
* add support for SPACE & PERIOD
*
* Rev 1.40 26 Jul 1993 17:05:56 STEVEN
* fixe restore active file with registry
*
* Rev 1.39 17 Jun 1993 11:39:12 ChuckS
* Added define of DLE_FEAT_NON_VOLUME_OBJECT
*
* Rev 1.38 11 Jun 1993 14:17:40 BARRY
* Separated special files into backup and restore special files.
*
* Rev 1.37 09 Jun 1993 19:18:58 MIKEP
* more c++ changes
*
* Rev 1.35 09 Jun 1993 10:44:24 BARRY
* Added a default security descriptor and its ACL to NTFS dle.
*
* Rev 1.34 23 Apr 1993 05:31:18 BILLB
* Fixed GRFS_MAC_AGENT define (was GRFS_MAX_AGENT. oopsy!)
*
* Rev 1.33 22 Apr 1993 10:12:14 BILLB
* Added support for GRFS Device subtypes
*
* Rev 1.32 16 Apr 1993 13:55:20 MIKEP
* add case preserving option
*
* Rev 1.31 15 Jan 1993 13:19:10 BARRY
* added support for new error messages and backup priviladge
*
* Rev 1.30 13 Jan 1993 15:04:12 DOUG
* Changed FS_RMFS to FS_GRFS
*
* Rev 1.29 07 Dec 1992 12:16:48 DON
* Changes for when to prompt for username/password
*
* Rev 1.28 11 Nov 1992 22:09:54 GREGG
* Unicodeized literals.
*
* Rev 1.27 04 Nov 1992 17:59:28 BARRY
* Added fs_name to NTFS dle.
*
* Rev 1.26 13 Oct 1992 12:27:30 STEVEN
* added case sensitive feature bit
*
* Rev 1.25 07 Oct 1992 14:50:50 STEVEN
* size should be INT
*
* Rev 1.24 05 Oct 1992 13:03:22 STEVEN
* added registry path size to NTFS DLE
*
* Rev 1.23 05 Oct 1992 11:46:42 STEVEN
* added registry path to NTFS DLE
*
* Rev 1.22 29 Jul 1992 15:34:14 STEVEN
* fix warnings
*
* Rev 1.21 23 Jul 1992 12:36:16 STEVEN
* fix mare warnings
*
* Rev 1.20 23 Jul 1992 11:27:12 STEVEN
* user_name_leng is int not char_ptr
*
* Rev 1.19 23 Jul 1992 11:03:22 BURT
* Fixed errant ')'s caused by macro error.
*
*
* Rev 1.18 23 Jul 1992 09:54:16 STEVEN
* fix warnings
*
* Rev 1.17 21 Jul 1992 14:04:32 STEVEN
* added support for DLE_GetUserName
*
* Rev 1.16 09 Jul 1992 14:46:16 STEVEN
* BE_Unicode updates
*
* Rev 1.15 02 Jul 1992 10:23:34 MIKEP
* Add feature bit for remote device.
*
* Rev 1.14 28 May 1992 09:44:16 BARRY
* Move changes on branches back to tip.
*
* Rev 1.13 21 May 1992 13:46:44 STEVEN
* more long path support
*
* Rev 1.12 07 May 1992 08:38:42 STEVEN
* moved osid and osver
*
* Rev 1.11 12 Mar 1992 17:14:08 DOUG
* Added changes for RMFS support.
*
* Rev 1.10 20 Dec 1991 09:31:30 STEVEN
* move common files to tables
*
* Rev 1.9 31 Oct 1991 19:01:56 BARRY
* Added another feature definition.
*
* Rev 1.8 31 Oct 1991 16:27:56 BARRY
* TRICYCLE: Added a field in GENERIC_DLE to hold a set of feature bits.
* Added some #defines for current "special" features.
*
* Rev 1.7 03 Oct 1991 09:39:04 BARRY
* Add new field for SMS object DLE.
*
* Rev 1.6 10 Sep 1991 18:17:10 DON
* rearranged the order of drive types
*
* Rev 1.5 10 Sep 1991 17:08:48 BARRY
* Added SMS dle structures.
*
* Rev 1.4 13 Aug 1991 16:51:46 DON
* removed server member from NLM dle types
*
* Rev 1.3 31 Jul 1991 18:41:38 DON
* added new dle types for the NLM
* NLM_DLE && NLM_AFP_DLE && NLM_SERVER_DLE
*
* Rev 1.2 30 Jun 1991 16:21:08 BARRY
* Added stuff for the Ersatz file system.
*
* Rev 1.1 23 May 1991 16:50:04 BARRY
* DLE types are no longer enumerated based on product #defines.
*
* Rev 1.0 09 May 1991 13:30:48 HUNTER
* Initial revision.
**/
#ifndef DLE_STR_H
#define DLE_STR_H
#include "queues.h"
/**
File System constants
**/
/*
text string limits
*/
#define NOV_SERV_NAM_SIZE 48 /* server name size */
#define NOV_VOL_NAM_SIZE 16 /* volume name size */
#define NOV_MAXDSIZE 512 /* current directory */
/*
File system types
*/
#define GENERIC_DATA ((UINT8)0) /* g */
#define NLM_SERVER_ONLY ((UINT8)1) /* v */
#define NLM_VOLUME ((UINT8)2) /* l */
#define NLM_AFP_VOLUME ((UINT8)3) /* p */
#define NOVELL_DRV ((UINT8)4) /* n */
#define NOVELL_AFP_DRV ((UINT8)5) /* a */
#define NOVELL_SERVER_ONLY ((UINT8)6) /* s */
#define LOCAL_DOS_DRV ((UINT8)7) /* d */
#define REMOTE_DOS_DRV ((UINT8)8) /* r */
#define LOCAL_IMAGE ((UINT8)9) /* i */
#define REMOTE_WORK_STAT ((UINT8)10) /* w */
#define LOCAL_OS2_DRV ((UINT8)11) /* o */
#define ERSATZ_DRV ((UINT8)12) /* e */
#define SMS_AGENT ((UINT8)13) /* tsa */
#define SMS_SERVICE ((UINT8)14) /* ts */
#define SMS_OBJECT ((UINT8)15) /* m */
#define LOCAL_NTFS_DRV ((UINT8)16) /* t */
#define GRFS_SERVER ((UINT8)17) /* gr */
#define FS_EMS_DRV ((UINT8)18) /* x */
#define MAX_DRV_TYPES ((UINT8)19)
/*
GRFS specific device sub types
*/
#define GRFS_GENERIC_AGENT ((UINT8)0)
#define GRFS_DOS_AGENT ((UINT8)1)
#define GRFS_OS2_AGENT ((UINT8)2)
#define GRFS_MAC_AGENT ((UINT8)3)
#define GRFS_UNIX_AGENT ((UINT8)4)
/*
EMS specific device sub types
*/
#define EMS_ENTERPRISE ((UINT8)1)
#define EMS_SITE ((UINT8)2)
#define EMS_SERVER ((UINT8)3)
#define EMS_BRICK ((UINT8)4)
#define EMS_MDB ((UINT8)5)
#define EMS_DSA ((UINT8)6)
/* Used by DLE_UpdateList to release specific DLE's */
#define DEL_NOTHING ((UINT16)BIT0)
#define SERVER_VOLUMES ((UINT16)BIT1)
#define MAP_NETWORK_DRIVES ((UINT16)BIT2)
#define UNKNOWN_NET 0xff
#define ANY_DRIVE_TYPE ((INT16)-1)
#define HAND_MADE_MASK 0x80
/* Used to ID Dynamic, Initial, or No login status */
#define NO_LOGIN 0
#define INIT_LOGIN 1
#define DYNAMIC_LOGIN 2
/* Feature bits for DLEs. (See GENERIC_DLE struct and macros in DLE.H) */
#define DLE_FEAT_REDIRECTED_RESTORE 0x0001 /* can redirect restores */
#define DLE_FEAT_SUPPORTS_CHILDREN 0x0002 /* DLE_SupportChild should go away */
#define DLE_FEAT_REMOVABLE_MEDIA 0x0004 /* Device has removable media */
#define DLE_FEAT_REMOVABLE_MEDIA 0x0004 /* Device has removable media */
#define DLE_FEAT_ACCESS_DATE 0x0008 /* Device supports access dates */
#define DLE_FEAT_BKUP_SPECIAL_FILES 0x0010 /* Device supports backup of special files */
#define DLE_FEAT_REST_SPECIAL_FILES 0x0020 /* Device supports restore of special files */
#define DLE_FEAT_DATA_SECURITY 0x0040 /* Device supports network security */
#define DLE_FEAT_REMOTE_DRIVE 0x0080 /* Device is not local */
#define DLE_FEAT_MAPPED_DRIVE 0x0100 /* Device is mapped to a drive letter */
#define DLE_FEAT_CASE_SENSITIVE 0x0200 /* Device were FRED.C != fred.c */
#define DLE_FEAT_CASE_PRESERVING 0x0400 /* Device retains case but FRED==fred */
#define DLE_FEAT_NON_VOLUME_OBJECT 0x0800 /* Device is non-volume, eg Directory services, bindery */
#define DLE_FEAT_UNICODE_NAMES 0x1000 /* Device accepts Unicode names */
#define DLE_FEAT_NON_DISPLAYABLE_CONT 0x2000 /* Device accepts Unicode names */
/**
OS specific portions of DLE
**/
/*
IMAGE Specific DLE
*/
typedef struct LOCAL_IMAGE_DLE_INFO *LOCAL_IMAGE_DLE_INFO_PTR;
typedef struct LOCAL_IMAGE_DLE_INFO {
INT8 drive_num; /* physical drive number */
INT8 partition; /* partition to backup for IMAGE */
CHAR drive_char; /* DOS drive letter for partition */
UINT16 bytes_per_sector; /* number of bytes per sector */
INT8 boot; /* boot indicator */
UINT8 bhead; /* beginning head number */
UINT8 bsect; /* beginning sector number */
UINT8 bcyl; /* beginning cylinder number */
UINT8 sysi; /* system indicator flag */
UINT8 ehead; /* ending head number */
UINT8 esect; /* ending sector number */
UINT8 ecyl; /* ending cylinder number */
UINT32 rsect; /* beginning relative sector */
UINT32 nsect; /* number of sectors in partition */
UINT16 hhead; /* highest head number on drive */
UINT16 hcyl; /* highest cylinder number on drive */
UINT16 hsect; /* highest sector number on drive */
UINT32 bytes_on_partition; /* nsect * bytes_per_sector */
} LOCAL_IMAGE_DLE_INFO ;
/*
Specific info for HAND_MADE DLE's
*/
typedef struct HAND_MADE_DLE_INFO *HAND_MADE_DLE_INFO_PTR;
typedef struct HAND_MADE_DLE_INFO {
CHAR vol_name[2] ; /* variable sized */
} HAND_MADE_DLE_INFO;
/*
DOS Specific DLE
*/
typedef struct LOCAL_DOS_DRV_DLE_INFO *LOCAL_DOS_DRV_DLE_INFO_PTR;
typedef struct LOCAL_DOS_DRV_DLE_INFO {
/* warning: This structure is shared by the FAKE_REMOTE_DOS_DRV_DLE */
CHAR drive; /* Dos Drive letter */
CHAR volume_label[13]; /* volume label */
CHAR_PTR base_path; /* points to '\0' for regular DOS, but */
/* points to some path for TDEMO fake remotes */
} LOCAL_DOS_DRV_DLE_INFO;
typedef struct LOCAL_NTFS_DRV_DLE_INFO *LOCAL_NTFS_DRV_DLE_INFO_PTR;
typedef struct LOCAL_NTFS_DRV_DLE_INFO {
CHAR drive; /* Dos Drive letter */
BOOLEAN mac_name_syntax; /* if true "\\?\" syntax valid */
CHAR_PTR volume_label; /* volume label */
CHAR_PTR registry_path; /* needed for mapped LANMAN drvs */
INT registry_path_size; /* needed for mapped LANMAN drvs */
INT16 fname_leng ; /* size of path element */
DWORD vol_flags ; /* flags from GetVolInfo() */
CHAR_PTR fs_name; /* name of file system */
VOID_PTR sd; /* sec. descriptor for create */
VOID_PTR sdacl; /* acl for sec descriptor above */
CHAR_PTR LastSysRegPath ; /* last system registry path */
CHAR_PTR LastSysRegPathNew ; /* new fnme forLastSysRegPath */
CHAR user_name[ 2 ] ; /* user name - must be last */
} LOCAL_DOS_NTFS_DLE_INFO;
typedef struct EMS_ENTERP_DLE_INFO *EMS_ENTERP_DLE_INFO_PTR;
typedef struct EMS_ENTERP_DLE_INFO {
INT type ; /* ems dle type must be first element */
CHAR_PTR enterprise_name; /* volume label */
CHAR_PTR server_name; /* volume label */
} EMS_ENTERP_DLE_INFO;
typedef struct EMS_SITE_DLE_INFO *EMS_SITE_DLE_INFO_PTR;
typedef struct EMS_SITE_DLE_INFO {
INT type ; /* ems dle type must be first element */
CHAR_PTR site_name; /* volume label */
} EMS_SITE_DLE_INFO;
typedef struct EMS_SERVER_DLE_INFO *EMS_SERVER_DLE_INFO_PTR;
typedef struct EMS_SERVER_DLE_INFO {
INT type ; /* ems dle type must be first element */
VOID_PTR mail_hand ; /* handle from logon */
CHAR_PTR server_name; /* volume label */
} EMS_SERVER_DLE_INFO;
typedef struct EMS_MDB_DSA_DLE_INFO *EMS_MDB_DSA_DLE_INFO_PTR;
typedef struct EMS_MDB_DSA_DLE_INFO {
INT type ; /* ems dle type must be first element */
CHAR_PTR server_name; /* volume label */
} EMS_MDB_DSA_DLE_INFO;
typedef struct EMS_BRICK_DLE_INFO *EMS_BRICK_DLE_INFO_PTR;
typedef struct EMS_BRICK_DLE_INFO {
INT type ; /* ems dle type must be first element */
VOID_PTR mail_hand ; /* handle from logon */
CHAR_PTR server_name; /* volume label */
} EMS_BRICK_DLE_INFO;
typedef struct LOCAL_OS2_DRV_DLE_INFO *LOCAL_OS2_DRV_DLE_INFO_PTR;
typedef struct LOCAL_OS2_DRV_DLE_INFO {
INT16 fname_fmt; /* max size of file name */
CHAR drive; /* Dos Drive letter */
CHAR volume_label[13]; /* volume label */
CHAR_PTR base_path; /* points to '\0' for regular OS2*/
} LOCAL_OS2_DRV_DLE_INFO;
/* values for fname_fmt */
#define FAT_FNAME 0
#define HPFS_FNAME 1
/*
Fake published volumes of a Fake Remote workstation
*/
typedef struct FAKE_REMOTE_DOS_DRV_DLE * FAKE_REMOTE_DOS_DRV_DLE_PTR ;
typedef struct FAKE_REMOTE_DOS_DRV_DLE {
CHAR drive; /* must start out with the */
CHAR volume_label[13]; /* entire LOCAL_DOS_DRV_DLE_INFO */
CHAR_PTR base_path;
CHAR_PTR password;
} FAKE_REMOTE_DOS_DRV_DLE ;
/*
Remote workstations
*/
typedef struct REMOTE_WORK_STAT_DLE *REMOTE_WORK_STAT_DLE_PTR;
typedef struct REMOTE_WORK_STAT_DLE {
struct CONNECTION_STRUCT *connect_ptr;
struct APPLICATION_STRUCT *application_ptr;
} REMOTE_WORK_STAT_DLE;
/*
Fake Remote workstations ( for TDEMO )
*/
typedef struct FAKE_REMOTE_WORK_STAT_DLE * FAKE_REMOTE_WORK_STAT_DLE_PTR ;
typedef struct FAKE_REMOTE_WORK_STAT_DLE {
INT16 first_alias ;
INT16 num_aliases ;
} FAKE_REMOTE_WORK_STAT_DLE ;
/*
Published volumes on remote workstations
*/
typedef struct REMOTE_DOS_DRV_DLE *REMOTE_DOS_DRV_DLE_PTR ;
typedef struct REMOTE_DOS_DRV_DLE {
CHAR pswd[9] ; /* Used to login to a remote drv */
struct CONNECTION_STRUCT *connect_ptr;
struct DEVICE_STRUCT *device_ptr;
} REMOTE_DOS_DRV_DLE;
/*
Drives for the Ersatz file system
*/
typedef struct ERSATZ_DRV_DLE *ERSATZ_DRV_DLE_PTR ;
typedef struct ERSATZ_DRV_DLE {
CHAR *volume_label ;
INT16 block_size ;
} ERSATZ_DRV_DLE;
/*
Novell Server
*/
#define USER_NAME_MAX_SIZE 48 /* User name may be 47 bytes */
#define USER_PASSWORD_MAX_SIZE 128 /* Password may be 127 bytes */
typedef struct NOVELL_SERVER_DLE *NOVELL_SERVER_DLE_PTR ;
typedef struct NOVELL_SERVER_DLE {
INT16 login_status ; /* 1 if logged in at init time, */
/* otherwise 0 */
CHAR user_name[USER_NAME_MAX_SIZE] ;
CHAR pswd [USER_PASSWORD_MAX_SIZE] ;
UINT8 server_num ; /* inited if logged in */
} NOVELL_SERVER_DLE ;
typedef struct NLM_SERVER_DLE *NLM_SERVER_DLE_PTR ;
typedef struct NLM_SERVER_DLE {
INT16 login_status ; /* 1 if logged in at init time, */
/* otherwise 0 */
CHAR user_name[USER_NAME_MAX_SIZE] ;
CHAR pswd [USER_PASSWORD_MAX_SIZE] ;
UINT8 server_num ; /* inited if logged in */
} NLM_SERVER_DLE ;
/*
NOVELL < 2.15 Specific DLE
*/
typedef struct NOV_DRV_DLE {
/* !!!!!! SEE AFP DLE below !!!!!! */
UINT8 drive_handle; /* network path num */
CHAR drive; /* Dos Drive letter */
UINT8 vol_num ; /* volume number */
UINT8 server_num ; /* server number */
UINT8 server_support ; /* TTS, etc support */
CHAR_PTR ser_name; /* Server name */
CHAR_PTR volume ; /* volume name */
CHAR_PTR base_path; /* path name, not incl final '\' */
INT8 num_bind_close; /* # of apps who closed bindery */
NOVELL_SERVER_DLE_PTR server; /* points to server data */
} *NOV_DRV_DLE_PTR;
/*
NOVELL NLM Specific DLE
*/
typedef struct NLM_DLE {
/* !!!!!! SEE NLM AFP DLE below !!!!!! */
UINT8 vol_num ; /* volume number */
UINT8 server_num ; /* server number */
UINT8 server_support ; /* TTS, etc support */
CHAR_PTR ser_name; /* Server name */
CHAR_PTR volume ; /* volume name */
INT8 num_bind_close; /* # of apps who closed bindery */
} *NLM_DLE_PTR;
/*
NOVELL NLM AFP Specific DLE
*/
typedef struct NLM_AFP_DLE {
UINT8 vol_num ; /* --------------------------- */
UINT8 server_num ; /* !!! MUST BE The SAME !!! */
UINT8 server_support ; /* as */
CHAR_PTR ser_name; /* */
CHAR_PTR volume; /* !! NLM_DLE !! */
INT8 num_bind_close; /* ---------------------------- */
UINT32 base_entry_id; /* entry ID of base directory */
} *NLM_AFP_DLE_PTR;
/*
NOVELL >= 2.15 Specific DLE
*/
typedef struct NOV_AFP_DRV_DLE {
UINT8 drive_handle; /* --------------------------- */
CHAR drive; /* */
UINT8 vol_num ; /* !!! MUST BE The SAME !!! */
UINT8 server_num ; /* */
UINT8 server_support ; /* as */
CHAR_PTR ser_name; /* */
CHAR_PTR volume; /* !! NOV_DRV_DLE !! */
CHAR_PTR base_path; /* */
INT8 num_bind_close; /* */
NOVELL_SERVER_DLE_PTR server; /* ---------------------------- */
UINT32 base_entry_id; /* entry ID of base directory */
} *NOV_AFP_DRV_DLE_PTR;
/*
Other Netowrk Specific DLE
*/
typedef struct IBM_PC_LAN_DRV_DLE{
CHAR drive; /* Dos Drive letter */
CHAR volume_label[13]; /* volume label */
} *IBM_PC_LAN_DRV_DLE_PTR;
/*
* Novell's SMS Target Service Agent DLE
*/
typedef struct SMS_TSA_DLE *SMS_TSA_DLE_PTR;
typedef struct SMS_TSA_DLE {
CHAR_PTR tsa_name; /* name of the TSA */
UINT32 connection; /* Connection established with TSA */
} SMS_TSA_DLE;
/*
* Novell's SMS Target Service DLE
*/
typedef struct SMS_TS_DLE *SMS_TS_DLE_PTR;
typedef struct SMS_TS_DLE {
CHAR_PTR ts_name; /* service's name (same as dev name) */
CHAR_PTR user_name; /* User name specified at attach time */
CHAR_PTR password; /* Password specified at attach time */
} SMS_TS_DLE;
/*
* Novell's SMS Target Service Object DLE
*/
typedef struct SMS_TSO_DLE *SMS_TSO_DLE_PTR;
typedef struct SMS_TSO_DLE {
CHAR_PTR object_name; /* object's name (same as device name) */
BOOLEAN superset_object; /* object is superset of its siblings? */
BOOLEAN objectIsVolume; /* object is a "volume" */
} SMS_TSO_DLE;
/*
GRFS workstations
*/
#define GRFS_MAX_DLE_NAME_LEN 128
typedef struct GRFS_SERVER_DLE *GRFS_SERVER_DLE_PTR;
typedef struct GRFS_SERVER_DLE {
CHAR user_name[USER_NAME_MAX_SIZE];
CHAR password[USER_PASSWORD_MAX_SIZE];
CHAR device_name[GRFS_MAX_DLE_NAME_LEN+1];
UINT16 type;
UINT32 dle_id;
VOID_PTR res_ptr;
VOID_PTR connect_ptr;
BOOLEAN obj_find_more;
BOOLEAN spec_enum_more;
CHAR_PTR spec_space;
UINT16 spec_space_size;
UINT16 spec_space_pos;
BOOLEAN shadow_attach;
} GRFS_SERVER_DLE;
typedef union {
VOID_PTR any; /* generic reference to any of the following pointers */
LOCAL_IMAGE_DLE_INFO_PTR image;
LOCAL_DOS_DRV_DLE_INFO_PTR dos;
EMS_ENTERP_DLE_INFO_PTR xenterp ;
EMS_SITE_DLE_INFO_PTR xsite;
EMS_SERVER_DLE_INFO_PTR xserv;
EMS_MDB_DSA_DLE_INFO_PTR xmono;
EMS_BRICK_DLE_INFO_PTR xbrick;
LOCAL_NTFS_DRV_DLE_INFO_PTR ntfs;
LOCAL_OS2_DRV_DLE_INFO_PTR os2;
REMOTE_WORK_STAT_DLE_PTR work_stat;
REMOTE_DOS_DRV_DLE_PTR remote;
NOV_DRV_DLE_PTR nov;
NOV_AFP_DRV_DLE_PTR afp;
NOVELL_SERVER_DLE_PTR server;
IBM_PC_LAN_DRV_DLE_PTR pclan;
HAND_MADE_DLE_INFO_PTR user ;
FAKE_REMOTE_WORK_STAT_DLE_PTR fake_work_stat ;
FAKE_REMOTE_DOS_DRV_DLE_PTR fake_remote ;
ERSATZ_DRV_DLE_PTR ersatz ;
NLM_DLE_PTR nlm ;
NLM_AFP_DLE_PTR nlm_afp ;
NLM_SERVER_DLE_PTR nlm_server ;
SMS_TSA_DLE_PTR sms_tsa ;
SMS_TS_DLE_PTR sms_ts ;
SMS_TSO_DLE_PTR sms_tso ;
GRFS_SERVER_DLE_PTR grfs ;
} DRIVE_INFO_PTR ;
/**
Generic Drive List Element
**/
typedef struct HEAD_DLE *DLE_HEAD_PTR;
typedef struct HEAD_DLE *DLE_HAND;
typedef struct GENERIC_DLE *GENERIC_DLE_PTR;
typedef struct GENERIC_DLE {
Q_ELEM q; /* Queue list element */
DLE_HEAD_PTR handle; /* pointer to the DLE queue head */
GENERIC_DLE_PTR parent ; /* pointer to parent DLE */
Q_HEADER child_q; /* queue of children DLEs */
UINT8 type; /* type of dle */
UINT8 subtype; /* a dle subtype, for those who want it*/
CHAR_PTR device_name; /* device label used in drive select */
INT16 device_name_leng ; /* length of device name */
CHAR_PTR user_name ; /* pointer to user name in specif info */
UINT16 user_name_leng ;/* length of user name in specif info */
CHAR path_delim ; /* Character used between dir names */
UINT8 pswd_required ; /* size of password required */
UINT8 name_required ; /* size of login name is required */
BOOLEAN pswd_saved ; /* TRUE if password is already saved */
BOOLEAN name_saved ; /* TRUE if name is already saved */
BOOLEAN dle_writeable; /* FALSE if drive is write protected */
UINT16 os_version ; /* verson of operating system */
INT16 attach_count ; /* number of attachments to me */
INT16 bsd_use_count; /* number of BSD's pointing to me */
BOOLEAN dynamic_info ; /* TRUE if the following pointer should be freed before freeing this structure. */
DRIVE_INFO_PTR info; /* pointer to Non Generic portion */
UINT16 feature_bits ; /* tells features/capabilities of DLE */
UINT8 os_id ;
UINT8 os_ver ;
} GENERIC_DLE;
/**
Handle for Drive List
**/
typedef struct HEAD_DLE {
Q_HEADER q_hdr ;
GENERIC_DLE_PTR default_drv ; /* used to return to default drive */
Q_HEADER fsh_queue ; /* Q of all allocated FS handles */
UINT32 file_sys_mask ;
INT16 (*crit_err)() ; /* pointer to UI critical err hand */
INT16 fs_initialized ; /* bit_mask specifies whats inited */
UINT16 remote_filter ; /* bit_mask specifies visible remote reource types */
} HEAD_DLE ;
#endif