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.
 
 
 
 
 
 

257 lines
8.8 KiB

/**
Copyright(c) Maynard Electronics, Inc. 1984-89
Name: nw386.h
Date Updated: $./FDT$ $./FTM$
Description: This file contains prototypes and defines for the NetWare
386 specific functions. Most of the information in this file
was obtained by examining the source to the preliminary
NetWare 386 C interface functions. Each of these functions was
designed to impliment only one API. The Novell library tries to
releive the developer of some of the complexity of these functions
by combining APIs into a single function. However, this is not
desirable when trying to maximize performance.
Location:
$Log: G:/LOGFILES/NW386.H_V $
*
* Rev 1.0 09 May 1991 13:31:56 HUNTER
* Initial revision.
**/
/* $end$ */
#ifndef _nw386_h_
#define _nw386_h_
#define DOS_NAME_SPACE 0
#define MAC_NAME_SPACE 1
#define NW_MAX_NAME_SPACE_ENTRY_SIZE 127 /* @@@ ??? */
#define NW_MAX_NCP_PATH 255
#define NW_MAX_DIR_RESTRICTIONS 33
#define NW_MAX_VOL_NAME 48
#define NW_CHANGE_DOS_NAME 0x0001
#define NW_CHANGE_DOS_ATTRIBUTES 0x0002
#define NW_CHANGE_DOS_CREATE_DATE 0x0004
#define NW_CHANGE_DOS_CREATE_TIME 0x0008
#define NW_CHANGE_DOS_OWNER 0x0010
#define NW_CHANGE_DOS_ARCHIVE_DATE 0x0020
#define NW_CHANGE_DOS_ARCHIVE_TIME 0x0040
#define NW_CHANGE_DOS_ARCHIVER_ID 0x0080
#define NW_CHANGE_DOS_MODIFY_DATE 0x0100
#define NW_CHANGE_DOS_MODIFY_TIME 0x0200
#define NW_CHANGE_DOS_MODIFIER_ID 0x0400 /* for files only */
#define NW_CHANGE_DOS_NEXT_TRUSTEE 0x0400 /* for directories only */
#define NW_CHANGE_DOS_ACCESS_DATE 0x0800 /* for files only */
#define NW_CHANGE_DOS_INHERITED_RIGHTS 0x1000
#define NW_CHANGE_DOS_MAXIMUM_SPACE 0x2000 /* for dirs only */
#define NW_CHANGE_MAC_NAME 0x0001
#define NW_CHANGE_MAC_FINDER_INFO 0x0002
#define NW_CHANGE_MAC_PRODOS_INFO 0x0004
#define NW_CHANGE_EVERYTHING 0xFFFFFFFF
#define NW_NORMAL_ATTR 0x00000000L
#define NW_READ_ONLY_ATTR 0x00000001L
#define NW_HIDDEN_ATTR 0x00000002L
#define NW_SYSTEM_ATTR 0x00000004L
#define NW_EXECUTE_ONLY_ATTR 0x00000008L
#define NW_DIRECTORY_ATTR 0x00000010L
#define NW_NEEDS_ARCHIVED_ATTR 0x00000020L
#define NW_EXECUTE_CONFIRM_ATTR 0X00000040L
#define NW_SHAREABLE_ATTR 0x00000080L
#define NW_LOW_SEARCH_ATTR 0x00000100L
#define NW_MID_SEARCH_ATTR 0x00000200L
#define NW_HI_SEARCH_ATTR 0x00000400L
#define NW_PRIVATE_ATTR 0x00000800L
#define NW_TRANSACTIONAL_ATTR 0x00001000L
#define NW_INDEXED_ATTR 0x00002000L
#define NW_READ_AUDIT_ATTR 0x00004000L
#define NW_WRITE_AUDIT_ATTR 0x00008000L
#define NW_PURGE_ATTR 0x000010000L
#define NW_RENAME_INHIBIT_ATTR 0x000020000L
#define NW_DELETE_INHIBIT_ATTR 0x000040000L
#define NW_COPY_INHIBIT_ATTR 0x000080000L
typedef struct DOS_NAME_SPACE_FILE_INFO {
UINT32 last_modifier_id ; /* 57 */
UINT32 data_fork_size ; /* 61 */
UINT8 reserved1[44]; /* 65 */
UINT16 inherited_rights_mask; /* 109 */
UINT16 last_access_date ; /* 111 */
UINT8 reserved2[20]; /* 113 */
UINT32 primary_entry; /* 133 */
UINT32 name_list ; /* 137 */
} DOS_NAME_SPACE_FILE_INFO ;
typedef struct DOS_NAME_SPACE_DIR_INFO {
UINT32 next_trustee_entry; /* 57 */
UINT8 reserved1[48]; /* 61 */
UINT32 maximum_space; /* 109 */
UINT16 inherited_rights_mask; /* 113 */
} DOS_NAME_SPACE_DIR_INFO ;
typedef struct DOS_NAME_SPACE_INFO {
UINT8 name_length;
CHAR name[12]; /* no '\0' */
UINT16 creation_time;
UINT16 creation_date;
UINT32 owner_id;
UINT16 archive_time;
UINT16 archive_date;
UINT32 archiver_id;
UINT16 modify_time;
UINT16 modify_date;
union {
DOS_NAME_SPACE_DIR_INFO dir ;
DOS_NAME_SPACE_FILE_INFO file ;
} info ;
} DOS_NAME_SPACE_INFO ;
typedef struct MAC_NAME_SPACE_INFO {
UINT8 name_length;
CHAR name[32];
UINT32 resource_fork;
UINT32 resource_fork_size;
UINT8 finder_info[32];
UINT8 pro_dos_info[6];
} MAC_NAME_SPACE_INFO ;
typedef struct UNKNOWN_NAME_SPACE_INFO {
UINT8 unknown[ NW_MAX_NAME_SPACE_ENTRY_SIZE ];
} UNKNOWN_NAME_SPACE_INFO ;
typedef struct NAME_SPACE_ENTRY * NAME_SPACE_ENTRY_PTR ;
typedef struct NAME_SPACE_ENTRY {
UINT8 unknown1[1];
UINT32 sub_directory;
UINT32 attributes;
INT32 entry_id; /* This field is dynamically created each time the file */
/* server is brought up. Do NOT back up this field. */
UINT8 flags;
UINT8 name_space_type;
union {
DOS_NAME_SPACE_INFO dos;
MAC_NAME_SPACE_INFO mac;
UNKNOWN_NAME_SPACE_INFO unknown;
} info;
} NAME_SPACE_ENTRY ;
typedef struct TRUSTEE_REPLY * TRUSTEE_REPLY_PTR ;
typedef struct TRUSTEE_REPLY {
UINT8 num_trustees_returned ;
UINT32 trustee_id[ 20 ];
UINT16 trustee_rights[ 20 ];
} TRUSTEE_REPLY ;
typedef struct DIR_RESTRICTION {
UINT8 level;
UINT32 max;
UINT32 current;
} DIR_RESTRICTION ;
typedef struct DIR_RESTRICTION_LIST * DIR_RESTRICTION_LIST_PTR ;
typedef struct DIR_RESTRICTION_LIST {
UINT8 num_restrictions;
DIR_RESTRICTION restriction[ NW_MAX_DIR_RESTRICTIONS ] ; /* array of restrictions */
} DIR_RESTRICTION_LIST ;
typedef struct DIR_INFO_REPLY * DIR_INFO_REPLY_PTR ;
typedef struct DIR_INFO_REPLY {
UINT32 total_blocks;
UINT32 avail_blocks;
UINT32 total_dir_entries;
UINT32 avail_dir_entries;
UINT32 flags;
UINT8 sectors_per_block;
UINT8 vol_name_length;
CHAR vol_name[ NW_MAX_VOL_NAME ];
} DIR_INFO_REPLY;
typedef struct DIR_ENTRY * DIR_ENTRY_PTR ;
typedef struct DIR_ENTRY {
UINT32 sub_directory;
UINT32 attributes;
UINT8 unique_id;
UINT8 flags;
UINT8 name_space_type;
DOS_NAME_SPACE_INFO dinfo ;
} DIR_ENTRY ;
typedef struct DIR_ENTRY_SCAN * DIR_ENTRY_SCAN_PTR ;
typedef struct DIR_ENTRY_SCAN {
INT32 entry_id; /* This field is dynamically created each time the file */
/* server is brought up. Do NOT back up this field. */
DIR_ENTRY entry;
} DIR_ENTRY_SCAN ;
INT16 GetNameSpaceEntry( UINT8 volume_number, INT32 sequence, UINT8 name_space_type,
NAME_SPACE_ENTRY_PTR entry_info_ptr ) ;
INT16 FillNameSpaceBuffer( UINT8 volumeNum, NAME_SPACE_ENTRY_PTR ns_buf_ptr ) ;
INT16 ScanEntryForTrustees386( UINT8 directory_handle, CHAR_PTR directory_path,
UINT8 seq_number, TRUSTEE_REPLY_PTR trustee_reply_buf ) ;
INT16 GetDirRestrictions386( UINT8 dir_handle, DIR_RESTRICTION_LIST_PTR res_list ) ;
INT16 GetDirInfo386( UINT8 dir_handle, DIR_INFO_REPLY_PTR dir_info_buf ) ;
INT16 SetTrustee386( UINT8 directory_handle, CHAR_PTR directory_path,
UINT32 trustee_object_id, UINT16 trustee_rights_mask ) ;
INT16 SetDirRestriction386( UINT8 dir_handle, INT32 restriction ) ;
UINT16 ScanDirEntry386( UINT8 directory_handle, CHAR_PTR search_path,
UINT8 search_attributes, UINT32 prev_entry_id,
DIR_ENTRY_SCAN_PTR dir_entry_buf ) ;
INT16 GetDirEntry386( UINT8 dir_handle, DIR_ENTRY_PTR dir_entry_ptr ) ;
INT16 SetDirEntry386( UINT8 dir_handle, UINT8 search_attribute,
UINT32 entry_id, UINT32 change_bits,
DIR_ENTRY_PTR dir_entry_ptr ) ;
#endif