#ifndef _SMBSRV_SMB_H
#define _SMBSRV_SMB_H
#include <sys/types.h>
#include <smbsrv/string.h>
#include <smbsrv/msgbuf.h>
#include <smb/ntstatus.h>
#include <smb/nterror.h>
#include <smb/lmerr.h>
#include <smb/doserror.h>
#include <smb/ntaccess.h>
#include <smbsrv/mac_cifs.h>
#include <smbsrv/ntifs.h>
#ifdef __cplusplus
extern "C" {
#endif
#define SMB_HEADER_DOS_FMT "Mbbbwbww10.wwww"
#define SMB_HEADER_NT_FMT "Mblbww#c2.wwww"
#define SMB_HEADER_LEN 32
#define SMB_SIG_SIZE 8
#define SMB_HEADER_ED_FMT "Mbbbwbww8c2.wwww"
#define SMB_HEADER_ED_LEN (4+1+1+1+2+1+2+12+2+2+2+2)
#define SMB_TRANSHDR_ED_FMT "wwwwb.wl2.wwwwb."
#define SMB_TRANSHDR_ED_LEN (2+2+2+2+1+1+2+4+2+2+2+2+2+1+1)
#define SMB_TRANSSHDR_ED_FMT "wwwwwwwww"
#define SMB_TRANSSHDR_ED_LEN (2+2+2+2+2+2+2+2)
#define SMB_TRANS2SHDR_ED_FMT "wwwwwwwww"
#define SMB_TRANS2SHDR_ED_LEN (2+2+2+2+2+2+2+2+2)
#define SMB_NT_TRANSHDR_ED_FMT "b2.llllllllbw"
#define SMB_NT_TRANSHDR_ED_LEN (1+2+4+4+4+4+4+4+4+4+1+2)
typedef struct smb_hdr {
uint8_t protocol[4];
uint8_t command;
union {
struct {
uint8_t error_class;
uint8_t reserved;
uint16_t error;
} dos_error;
uint32_t ntstatus;
} status;
uint8_t flags;
uint16_t flags2;
uint16_t pid_high;
union {
uint16_t pad[5];
struct {
uint16_t reserved;
uint8_t security_sig[SMB_SIG_SIZE];
} extra;
} extra;
uint16_t tid;
uint16_t pid;
uint16_t uid;
uint16_t mid;
} smb_hdr_t;
typedef struct smb_hdrbuf {
uint8_t hdr[SMB_HEADER_LEN];
} smb_hdrbuf_t;
#define SMB_PROTOCOL_MAGIC 0x424d53ff
#define SMB2_PROTOCOL_MAGIC 0x424d53fe
typedef struct smb_date {
uint16_t day : 5;
uint16_t month : 4;
uint16_t year : 7;
} smb_date_t;
typedef struct smb_time {
uint16_t two_sec : 5;
uint16_t minutes : 6;
uint16_t hours : 5;
} smb_time_t;
typedef struct smb_time2 {
uint32_t low_time;
int32_t high_time;
} smb_time2_t;
typedef uint32_t smb_utime_t;
#define SMB_LM_NEGOTIATE_WORDCNT 13
#define SMB_NT_NEGOTIATE_WORDCNT 17
#define SMB_NAME83_EXTLEN 3
#define SMB_NAME83_BASELEN 8
#define SMB_NAME83_LEN 12
#ifndef _SHARE_TYPES_DEFINED_
#define _SHARE_TYPES_DEFINED_
#define STYPE_DISKTREE 0x00000000
#define STYPE_PRINTQ 0x00000001
#define STYPE_DEVICE 0x00000002
#define STYPE_IPC 0x00000003
#define STYPE_MASK 0x0000000F
#define STYPE_DFS 0x00000064
#define STYPE_HIDDEN 0x80000000
#define STYPE_SPECIAL 0x80000000
#endif
#define STYPE_ISDSK(S) (((S) & STYPE_MASK) == STYPE_DISKTREE)
#define STYPE_ISPRN(S) (((S) & STYPE_MASK) == STYPE_PRINTQ)
#define STYPE_ISDEV(S) (((S) & STYPE_MASK) == STYPE_DEVICE)
#define STYPE_ISIPC(S) (((S) & STYPE_MASK) == STYPE_IPC)
#define NT_CREATE_FLAG_REQUEST_OPLOCK 0x02
#define NT_CREATE_FLAG_REQUEST_OPBATCH 0x04
#define NT_CREATE_FLAG_OPEN_TARGET_DIR 0x08
#define NT_CREATE_FLAG_EXTENDED_RESPONSE 0x10
#define SMB_NTCREATE_VALID_OPTIONS (FILE_VALID_OPTION_FLAGS & ~( \
FILE_SYNCHRONOUS_IO_ALERT | FILE_SYNCHRONOUS_IO_NONALERT |\
FILE_RESERVE_OPFILTER))
#define SMB_OPLOCK_NONE 0
#define SMB_OPLOCK_EXCLUSIVE 1
#define SMB_OPLOCK_BATCH 2
#define SMB_OPLOCK_LEVEL_II 3
#define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001
#define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002
#define FILE_NOTIFY_CHANGE_NAME 0x00000003
#define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004
#define FILE_NOTIFY_CHANGE_SIZE 0x00000008
#define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010
#define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020
#define FILE_NOTIFY_CHANGE_CREATION 0x00000040
#define FILE_NOTIFY_CHANGE_EA 0x00000080
#define FILE_NOTIFY_CHANGE_SECURITY 0x00000100
#define FILE_NOTIFY_CHANGE_STREAM_NAME 0x00000200
#define FILE_NOTIFY_CHANGE_STREAM_SIZE 0x00000400
#define FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800
#define FILE_NOTIFY_VALID_MASK 0x00000fff
#define FILE_ACTION_ADDED 0x00000001
#define FILE_ACTION_REMOVED 0x00000002
#define FILE_ACTION_MODIFIED 0x00000003
#define FILE_ACTION_RENAMED_OLD_NAME 0x00000004
#define FILE_ACTION_RENAMED_NEW_NAME 0x00000005
#define FILE_ACTION_ADDED_STREAM 0x00000006
#define FILE_ACTION_REMOVED_STREAM 0x00000007
#define FILE_ACTION_MODIFIED_STREAM 0x00000008
#define LOCKING_ANDX_NORMAL_LOCK 0x00
#define LOCKING_ANDX_SHARED_LOCK 0x01
#define LOCKING_ANDX_OPLOCK_RELEASE 0x02
#define LOCKING_ANDX_CHANGE_LOCK_TYPE 0x04
#define LOCKING_ANDX_CANCEL_LOCK 0x08
#define LOCKING_ANDX_LARGE_FILES 0x10
#define SMB_COM_CREATE_DIRECTORY 0x00
#define SMB_COM_DELETE_DIRECTORY 0x01
#define SMB_COM_OPEN 0x02
#define SMB_COM_CREATE 0x03
#define SMB_COM_CLOSE 0x04
#define SMB_COM_FLUSH 0x05
#define SMB_COM_DELETE 0x06
#define SMB_COM_RENAME 0x07
#define SMB_COM_QUERY_INFORMATION 0x08
#define SMB_COM_SET_INFORMATION 0x09
#define SMB_COM_READ 0x0A
#define SMB_COM_WRITE 0x0B
#define SMB_COM_LOCK_BYTE_RANGE 0x0C
#define SMB_COM_UNLOCK_BYTE_RANGE 0x0D
#define SMB_COM_CREATE_TEMPORARY 0x0E
#define SMB_COM_CREATE_NEW 0x0F
#define SMB_COM_CHECK_DIRECTORY 0x10
#define SMB_COM_PROCESS_EXIT 0x11
#define SMB_COM_SEEK 0x12
#define SMB_COM_LOCK_AND_READ 0x13
#define SMB_COM_WRITE_AND_UNLOCK 0x14
#define SMB_COM_READ_RAW 0x1A
#define SMB_COM_READ_MPX 0x1B
#define SMB_COM_READ_MPX_SECONDARY 0x1C
#define SMB_COM_WRITE_RAW 0x1D
#define SMB_COM_WRITE_MPX 0x1E
#define SMB_COM_WRITE_MPX_SECONDARY 0x1F
#define SMB_COM_WRITE_COMPLETE 0x20
#define SMB_COM_SET_INFORMATION2 0x22
#define SMB_COM_QUERY_INFORMATION2 0x23
#define SMB_COM_LOCKING_ANDX 0x24
#define SMB_COM_TRANSACTION 0x25
#define SMB_COM_TRANSACTION_SECONDARY 0x26
#define SMB_COM_IOCTL 0x27
#define SMB_COM_IOCTL_SECONDARY 0x28
#define SMB_COM_COPY 0x29
#define SMB_COM_MOVE 0x2A
#define SMB_COM_ECHO 0x2B
#define SMB_COM_WRITE_AND_CLOSE 0x2C
#define SMB_COM_OPEN_ANDX 0x2D
#define SMB_COM_READ_ANDX 0x2E
#define SMB_COM_WRITE_ANDX 0x2F
#define SMB_COM_CLOSE_AND_TREE_DISC 0x31
#define SMB_COM_TRANSACTION2 0x32
#define SMB_COM_TRANSACTION2_SECONDARY 0x33
#define SMB_COM_FIND_CLOSE2 0x34
#define SMB_COM_FIND_NOTIFY_CLOSE 0x35
#define SMB_COM_TREE_CONNECT 0x70
#define SMB_COM_TREE_DISCONNECT 0x71
#define SMB_COM_NEGOTIATE 0x72
#define SMB_COM_SESSION_SETUP_ANDX 0x73
#define SMB_COM_LOGOFF_ANDX 0x74
#define SMB_COM_TREE_CONNECT_ANDX 0x75
#define SMB_COM_QUERY_INFORMATION_DISK 0x80
#define SMB_COM_SEARCH 0x81
#define SMB_COM_FIND 0x82
#define SMB_COM_FIND_UNIQUE 0x83
#define SMB_COM_FIND_CLOSE 0x84
#define SMB_COM_NT_TRANSACT 0xA0
#define SMB_COM_NT_TRANSACT_SECONDARY 0xA1
#define SMB_COM_NT_CREATE_ANDX 0xA2
#define SMB_COM_NT_CANCEL 0xA4
#define SMB_COM_OPEN_PRINT_FILE 0xC0
#define SMB_COM_WRITE_PRINT_FILE 0xC1
#define SMB_COM_CLOSE_PRINT_FILE 0xC2
#define SMB_COM_GET_PRINT_QUEUE 0xC3
#define SMB_COM_NUM 0x100
#define SMB_FLAGS_LOCK_AND_READ_OK 0x01
#define SMB_FLAGS_SEND_NO_ACK 0x02
#define SMB_FLAGS_RESERVED 0x04
#define SMB_FLAGS_CASE_INSENSITIVE 0x08
#define SMB_FLAGS_CANONICALIZED_PATHS 0x10
#define SMB_FLAGS_OPLOCK 0x20
#define SMB_FLAGS_OPLOCK_NOTIFY_ANY 0x40
#define SMB_FLAGS_REPLY 0x80
#define SMB_FLAGS2_KNOWS_LONG_NAMES 0x0001
#define SMB_FLAGS2_KNOWS_EAS 0x0002
#define SMB_FLAGS2_SMB_SECURITY_SIGNATURE 0x0004
#define SMB_FLAGS2_IS_LONG_NAME 0x0040
#define SMB_FLAGS2_REPARSE_PATH 0x0400
#define SMB_FLAGS2_EXT_SEC 0x0800
#define SMB_FLAGS2_DFS 0x1000
#define SMB_FLAGS2_READ_IF_EXECUTE 0x2000
#define SMB_FLAGS2_NT_STATUS 0x4000
#define SMB_FLAGS2_UNICODE 0x8000
#define DIALECT_UNKNOWN 0
#define PC_NETWORK_PROGRAM_1_0 1
#define PCLAN1_0 2
#define MICROSOFT_NETWORKS_1_03 3
#define MICROSOFT_NETWORKS_3_0 4
#define LANMAN1_0 5
#define LM1_2X002 6
#define DOS_LM1_2X002 7
#define DOS_LANMAN2_1 8
#define LANMAN2_1 9
#define Windows_for_Workgroups_3_1a 10
#define NT_LM_0_12 11
#define DIALECT_SMB2002 12
#define DIALECT_SMB2XXX 13
#define SMB_TCONX_DISCONECT_TID 0x0001
#define SMB_TCONX_EXTENDED_SIGNATURES 0x0004
#define SMB_TCONX_EXTENDED_RESPONSE 0x0008
#define SMB_SUPPORT_SEARCH_BITS 0x0001
#define SMB_SHARE_IS_IN_DFS 0x0002
#define SMB_CSC_MASK 0x000C
#define SMB_UNIQUE_FILE_NAME 0x0010
#define SMB_EXTENDED_SIGNATURES 0x0020
#define SMB_CSC_CACHE_MANUAL_REINT 0x0000
#define SMB_CSC_CACHE_AUTO_REINT 0x0004
#define SMB_CSC_CACHE_VDO 0x0008
#define SMB_CSC_CACHE_NONE 0x000C
#define SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM 0x0800
#define SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING 0x0400
#define CallNamedPipe 0x54
#define WaitNamedPipe 0x53
#define PeekNmPipe 0x23
#define QNmPHandState 0x21
#define SetNmPHandState 0x01
#define QNmPipeInfo 0x22
#define TransactNmPipe 0x26
#define RawReadNmPipe 0x11
#define RawWriteNmPipe 0x31
#define TRANS2_OPEN2 0x00
#define TRANS2_FIND_FIRST2 0x01
#define TRANS2_FIND_NEXT2 0x02
#define TRANS2_QUERY_FS_INFORMATION 0x03
#define TRANS2_SET_FS_INFORMATION 0x04
#define TRANS2_QUERY_PATH_INFORMATION 0x05
#define TRANS2_SET_PATH_INFORMATION 0x06
#define TRANS2_QUERY_FILE_INFORMATION 0x07
#define TRANS2_SET_FILE_INFORMATION 0x08
#define TRANS2_FSCTL 0x09
#define TRANS2_IOCTL2 0x0A
#define TRANS2_FIND_NOTIFY_FIRST 0x0B
#define TRANS2_FIND_NOTIFY_NEXT 0x0C
#define TRANS2_CREATE_DIRECTORY 0x0D
#define TRANS2_SESSION_SETUP 0x0E
#define TRANS2_GET_DFS_REFERRAL 0x10
#define TRANS2_REPORT_DFS_INCONSISTENCY 0x11
#define SMB_DA_SHARE_MASK 0x70
#define SMB_DA_ACCESS_MASK 0x07
#define SMB_DA_FCB_MASK (UCHAR)0xFF
#define SMB_DA_ACCESS_READ 0x00
#define SMB_DA_ACCESS_WRITE 0x01
#define SMB_DA_ACCESS_READ_WRITE 0x02
#define SMB_DA_ACCESS_EXECUTE 0x03
#define SMB_DA_SHARE_COMPATIBILITY 0x00
#define SMB_DA_SHARE_EXCLUSIVE 0x10
#define SMB_DA_SHARE_DENY_WRITE 0x20
#define SMB_DA_SHARE_DENY_READ 0x30
#define SMB_DA_SHARE_DENY_NONE 0x40
#define SMB_DA_FCB (UCHAR)0xFF
#define SMB_CACHE_NORMAL 0x0000
#define SMB_DO_NOT_CACHE 0x1000
#define SMB_LR_UNKNOWN 0x0000
#define SMB_LR_SEQUENTIAL 0x0100
#define SMB_LR_RANDOM 0x0200
#define SMB_LR_RANDOM_WITH_LOCALITY 0x0300
#define SMB_LR_MASK 0x0F00
#define SMB_DA_WRITE_THROUGH 0x4000
#define SMB_DENY_READ(share_access) ((share_access & FILE_SHARE_READ) == 0)
#define SMB_DENY_WRITE(share_access) ((share_access & FILE_SHARE_WRITE) == 0)
#define SMB_DENY_DELETE(share_access) ((share_access & FILE_SHARE_DELETE) == 0)
#define SMB_DENY_RW(share_access) \
((share_access & (FILE_SHARE_READ | FILE_SHARE_WRITE)) == 0)
#define SMB_DENY_ALL(share_access) (share_access == 0)
#define SMB_DENY_NONE(share_access) (share_access == FILE_SHARE_ALL)
#define SMB_OFUN_OPEN_MASK 0x3
#define SMB_OFUN_CREATE_MASK 0x10
#define SMB_OFUN_OPEN_FAIL 0
#define SMB_OFUN_OPEN_APPEND 1
#define SMB_OFUN_OPEN_OPEN 1
#define SMB_OFUN_OPEN_TRUNCATE 2
#define SMB_OFUN_CREATE_FAIL 0x00
#define SMB_OFUN_CREATE_CREATE 0x10
#define SMB_OACT_OPENED 0x01
#define SMB_OACT_CREATED 0x02
#define SMB_OACT_TRUNCATED 0x03
#define SMB_OACT_OPLOCK 0x8000
#define SMB_FTYPE_DISK 0
#define SMB_FTYPE_BYTE_PIPE 1
#define SMB_FTYPE_MESG_PIPE 2
#define SMB_FTYPE_PRINTER 3
#define SMB_FTYPE_UNKNOWN 0xFFFF
#define SMB_DEVST_BLOCKING 0x8000
#define SMB_DEVST_ENDPOINT 0x4000
#define SMB_DEVST_TYPE_MASK 0x0C00
#define SMB_DEVST_TYPE_BYTE_PIPE 0x0000
#define SMB_DEVST_TYPE_MESG_PIPE 0x0400
#define SMB_DEVST_RMODE_MASK 0x0300
#define SMB_DEVST_RMODE_BYTES 0x0000
#define SMB_DEVST_RMODE_MESGS 0x0100
#define SMB_DEVST_ICOUNT_MASK 0x00FF
#define SMB_FTYPE_IS_DISK(F) ((F) == SMB_FTYPE_DISK)
#define SMB_FTYPE_IS_PIPE(F) \
(((F) == SMB_FTYPE_BYTE_PIPE) || ((F) == SMB_FTYPE_MESG_PIPE))
#define SMB_FTYPE_IS_PRINTER(F) ((F) == SMB_FTYPE_PRINTER)
#define SMB_FIND_FILE_DIRECTORY_INFO 0x101
#define SMB_FIND_FILE_FULL_DIRECTORY_INFO 0x102
#define SMB_FIND_FILE_NAMES_INFO 0x103
#define SMB_FIND_FILE_BOTH_DIRECTORY_INFO 0x104
#define SMB_FIND_FILE_ID_FULL_DIRECTORY_INFO 0x105
#define SMB_FIND_FILE_ID_BOTH_DIRECTORY_INFO 0x106
#define SMB_MAC_FIND_BOTH_HFS_INFO MAC_FIND_BOTH_HFS_INFO
#define SMB_FIND_CLOSE_AFTER_REQUEST 0x01
#define SMB_FIND_CLOSE_AT_EOS 0x02
#define SMB_FIND_RETURN_RESUME_KEYS 0x04
#define SMB_FIND_CONTINUE_FROM_LAST 0x08
#define SMB_FIND_WITH_BACKUP_INTENT 0x10
#define SMB_INFO_ALLOCATION 1
#define SMB_INFO_VOLUME 2
#define SMB_QUERY_FS_LABEL_INFO 0x101
#define SMB_QUERY_FS_VOLUME_INFO 0x102
#define SMB_QUERY_FS_SIZE_INFO 0x103
#define SMB_QUERY_FS_DEVICE_INFO 0x104
#define SMB_QUERY_FS_ATTRIBUTE_INFO 0x105
#define SMB_QUERY_FS_QUOTA_INFO 0x106
#define SMB_QUERY_FS_CONTROL_INFO 0x107
#define SMB_MAC_QUERY_FS_INFO MAC_QUERY_FS_INFO
#define SMB_QUERY_INFORMATION 0x3001
#define SMB_QUERY_INFORMATION2 0x3002
#define SMB_SET_INFORMATION 0x3001
#define SMB_SET_INFORMATION2 0x3002
#define SMB_INFO_STANDARD 1
#define SMB_INFO_QUERY_EA_SIZE 2
#define SMB_INFO_SET_EAS 2
#define SMB_INFO_QUERY_EAS_FROM_LIST 3
#define SMB_INFO_QUERY_ALL_EAS 4
#define SMB_INFO_QUERY_FULL_NAME 5
#define SMB_INFO_IS_NAME_VALID 6
#define SMB_QUERY_FILE_BASIC_INFO 0x101
#define SMB_QUERY_FILE_STANDARD_INFO 0x102
#define SMB_QUERY_FILE_EA_INFO 0x103
#define SMB_QUERY_FILE_NAME_INFO 0x104
#define SMB_QUERY_FILE_ALLOCATION_INFO 0x105
#define SMB_QUERY_FILE_END_OF_FILE_INFO 0x106
#define SMB_QUERY_FILE_ALL_INFO 0x107
#define SMB_QUERY_FILE_ALT_NAME_INFO 0x108
#define SMB_QUERY_FILE_STREAM_INFO 0x109
#define SMB_QUERY_FILE_COMPRESSION_INFO 0x10B
#define SMB_MAC_SET_FINDER_INFO MAC_SET_FINDER_INFO
#define SMB_MAC_DT_ADD_APPL MAC_DT_ADD_APPL
#define SMB_MAC_DT_REMOVE_APPL MAC_DT_REMOVE_APPL
#define SMB_MAC_DT_GET_APPL MAC_DT_GET_APPL
#define SMB_MAC_DT_GET_ICON MAC_DT_GET_ICON
#define SMB_MAC_DT_GET_ICON_INFO MAC_DT_GET_ICON_INFO
#define SMB_MAC_DT_ADD_ICON MAC_DT_ADD_ICON
#define SMB_SET_FILE_BASIC_INFO 0x101
#define SMB_SET_FILE_DISPOSITION_INFO 0x102
#define SMB_SET_FILE_ALLOCATION_INFO 0x103
#define SMB_SET_FILE_END_OF_FILE_INFO 0x104
#define SMB_FILE_BASIC_INFORMATION 1004
#define SMB_FILE_STANDARD_INFORMATION 1005
#define SMB_FILE_INTERNAL_INFORMATION 1006
#define SMB_FILE_EA_INFORMATION 1007
#define SMB_FILE_ACCESS_INFORMATION 1008
#define SMB_FILE_NAME_INFORMATION 1009
#define SMB_FILE_RENAME_INFORMATION 1010
#define SMB_FILE_LINK_INFORMATION 1011
#define SMB_FILE_DISPOSITION_INFORMATION 1013
#define SMB_FILE_ALL_INFORMATION 1018
#define SMB_FILE_ALLOCATION_INFORMATION 1019
#define SMB_FILE_END_OF_FILE_INFORMATION 1020
#define SMB_FILE_ALT_NAME_INFORMATION 1021
#define SMB_FILE_STREAM_INFORMATION 1022
#define SMB_FILE_COMPRESSION_INFORMATION 1028
#define SMB_FILE_NETWORK_OPEN_INFORMATION 1034
#define SMB_FILE_ATTR_TAG_INFORMATION 1035
#define SMB_FILE_FS_VOLUME_INFORMATION 1001
#define SMB_FILE_FS_LABEL_INFORMATION 1002
#define SMB_FILE_FS_SIZE_INFORMATION 1003
#define SMB_FILE_FS_DEVICE_INFORMATION 1004
#define SMB_FILE_FS_ATTRIBUTE_INFORMATION 1005
#define SMB_FILE_FS_CONTROL_INFORMATION 1006
#define SMB_FILE_FS_FULLSIZE_INFORMATION 1007
#define SMB_FILE_FS_OBJECTID_INFORMATION 1008
#define SMB_FILE_FS_DRIVERPATH_INFORMATION 1009
#define NEGOTIATE_USER_SECURITY 0x01
#define NEGOTIATE_ENCRYPT_PASSWORDS 0x02
#define NEGOTIATE_SECURITY_SIGNATURES_ENABLED 0x04
#define NEGOTIATE_SECURITY_SIGNATURES_REQUIRED 0x08
#define CAP_RAW_MODE 0x0001
#define CAP_MPX_MODE 0x0002
#define CAP_UNICODE 0x0004
#define CAP_LARGE_FILES 0x0008
#define CAP_NT_SMBS 0x0010
#define CAP_RPC_REMOTE_APIS 0x0020
#define CAP_STATUS32 0x0040
#define CAP_LEVEL_II_OPLOCKS 0x0080
#define CAP_LOCK_AND_READ 0x0100
#define CAP_NT_FIND 0x0200
#define CAP_BULK_TRANSFER 0x0400
#define CAP_COMPRESSED_BULK 0x0800
#define CAP_DFS 0x1000
#define CAP_INFOLEVEL_PASSTHRU 0x2000
#define CAP_LARGE_READX 0x4000
#define CAP_LARGE_WRITEX 0x8000
#define CAP_RESERVED 0x02000000
#define CAP_EXTENDED_SECURITY 0x80000000
#define FILE_DEVICE_BEEP 0x00000001
#define FILE_DEVICE_CD_ROM 0x00000002
#define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003
#define FILE_DEVICE_CONTROLLER 0x00000004
#define FILE_DEVICE_DATALINK 0x00000005
#define FILE_DEVICE_DFS 0x00000006
#define FILE_DEVICE_DISK 0x00000007
#define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008
#define FILE_DEVICE_FILE_SYSTEM 0x00000009
#define FILE_DEVICE_INPORT_PORT 0x0000000a
#define FILE_DEVICE_KEYBOARD 0x0000000b
#define FILE_DEVICE_MAILSLOT 0x0000000c
#define FILE_DEVICE_MIDI_IN 0x0000000d
#define FILE_DEVICE_MIDI_OUT 0x0000000e
#define FILE_DEVICE_MOUSE 0x0000000f
#define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010
#define FILE_DEVICE_NAMED_PIPE 0x00000011
#define FILE_DEVICE_NETWORK 0x00000012
#define FILE_DEVICE_NETWORK_BROWSER 0x00000013
#define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
#define FILE_DEVICE_NULL 0x00000015
#define FILE_DEVICE_PARALLEL_PORT 0x00000016
#define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017
#define FILE_DEVICE_PRINTER 0x00000018
#define FILE_DEVICE_SCANNER 0x00000019
#define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a
#define FILE_DEVICE_SERIAL_PORT 0x0000001b
#define FILE_DEVICE_SCREEN 0x0000001c
#define FILE_DEVICE_SOUND 0x0000001d
#define FILE_DEVICE_STREAMS 0x0000001e
#define FILE_DEVICE_TAPE 0x0000001f
#define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020
#define FILE_DEVICE_TRANSPORT 0x00000021
#define FILE_DEVICE_UNKNOWN 0x00000022
#define FILE_DEVICE_VIDEO 0x00000023
#define FILE_DEVICE_VIRTUAL_DISK 0x00000024
#define FILE_DEVICE_WAVE_IN 0x00000025
#define FILE_DEVICE_WAVE_OUT 0x00000026
#define FILE_DEVICE_8042_PORT 0x00000027
#define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028
#define FILE_DEVICE_BATTERY 0x00000029
#define FILE_DEVICE_BUS_EXTENDER 0x0000002a
#define FILE_DEVICE_MODEM 0x0000002b
#define FILE_DEVICE_VDM 0x0000002c
#define FILE_REMOVABLE_MEDIA 0x00000001
#define FILE_READ_ONLY_DEVICE 0x00000002
#define FILE_FLOPPY_DISKETTE 0x00000004
#define FILE_WRITE_ONE_MEDIA 0x00000008
#define FILE_REMOTE_DEVICE 0x00000010
#define FILE_DEVICE_IS_MOUNTED 0x00000020
#define FILE_VIRTUAL_VOLUME 0x00000040
#define FILE_VC_QUOTA_TRACK 0x00000001
#define FILE_VC_QUOTA_ENFORCE 0x00000002
#define FILE_VC_CONTENT_INDEX_DISABLED 0x00000008
#define FILE_VC_LOG_QUOTA_THRESHOLD 0x00000010
#define FILE_VC_LOG_QUOTA_LIMIT 0x00000020
#define FILE_VC_LOG_VOLUME_THRESHOLD 0x00000040
#define FILE_VC_LOG_VOLUME_LIMIT 0x00000080
#define FILE_VC_QUOTAS_INCOMPLETE 0x00000100
#define FILE_VC_QUOTAS_REBUILDING 0x00000200
#define FILE_SHARE_NONE 0x00000000
#define FILE_SHARE_READ 0x00000001
#define FILE_SHARE_WRITE 0x00000002
#define FILE_SHARE_DELETE 0x00000004
#define FILE_SHARE_ALL 0x00000007
#define FILE_SHARE_VALID_FLAGS 0x00000007
#define FILE_SUPERSEDE 0x00000000
#define FILE_OPEN 0x00000001
#define FILE_CREATE 0x00000002
#define FILE_OPEN_IF 0x00000003
#define FILE_OVERWRITE 0x00000004
#define FILE_OVERWRITE_IF 0x00000005
#define FILE_MAXIMUM_DISPOSITION 0x00000005
#define SECURITY_ANONYMOUS 0x00000001
#define SECURITY_IDENTIFICATION 0x00000002
#define SECURITY_IMPERSONATION 0x00000003
#define SECURITY_DELEGATION 0x00000004
#define SECURITY_CONTEXT_TRACKING 0x00000001
#define SECURITY_EFFECTIVE_ONLY 0x00000002
#define SV_WORKSTATION 0x00000001
#define SV_SERVER 0x00000002
#define SV_SQLSERVER 0x00000004
#define SV_DOMAIN_CTRL 0x00000008
#define SV_DOMAIN_BAKCTRL 0x00000010
#define SV_TIME_SOURCE 0x00000020
#define SV_AFP 0x00000040
#define SV_NOVELL 0x00000080
#define SV_DOMAIN_MEMBER 0x00000100
#define SV_PRINTQ_SERVER 0x00000200
#define SV_DIALIN_SERVER 0x00000400
#define SV_XENIX_SERVER 0x00000800
#define SV_NT 0x00001000
#define SV_WFW 0x00002000
#define SV_SERVER_NT 0x00008000
#define SV_POTENTIAL_BROWSER 0x00010000
#define SV_BACKUP_BROWSER 0x00020000
#define SV_MASTER_BROWSER 0x00040000
#define SV_DOMAIN_MASTER 0x00080000
#define SV_OSF 0x00100000
#define SV_VMS 0x00200000
#define SV_WINDOWS_95_PLUS 0x00400000
#define SV_LOCAL_LIST_ONLY 0x40000000
#define SV_TYPE_DOMAIN_ENUM 0x80000000
#define MY_SERVER_TYPE (SV_SERVER | SV_NT | SV_SERVER_NT)
#define PRQ_ACTIVE 0
#define PRQ_PAUSE 1
#define PRQ_ERROR 2
#define PRQ_PENDING 3
#define PRJ_QS_QUEUED 0
#define PRJ_QS_PAUSED 1
#define PRJ_QS_SPOOLING 2
#define PRJ_QS_PRINTING 3
#define SHARE_ACCESS_READ 0x01
#define SHARE_ACCESS_WRITE 0x02
#define SHARE_ACCESS_CREATE 0x04
#define SHARE_ACCESS_EXEC 0x08
#define SHARE_ACCESS_DELETE 0x10
#define SHARE_ACCESS_ATTRIB 0x20
#define SHARE_ACCESS_PERM 0x40
#define SHARE_ACCESS_ALL 0x7F
#define NT_TRANSACT_MIN_FUNCTION 1
#define NT_TRANSACT_CREATE 1
#define NT_TRANSACT_IOCTL 2
#define NT_TRANSACT_SET_SECURITY_DESC 3
#define NT_TRANSACT_NOTIFY_CHANGE 4
#define NT_TRANSACT_RENAME 5
#define NT_TRANSACT_QUERY_SECURITY_DESC 6
#define NT_TRANSACT_QUERY_QUOTA 7
#define NT_TRANSACT_SET_QUOTA 8
#define NT_TRANSACT_MAX_FUNCTION 8
#define SMB_PIPE_READMODE_BYTE 0x0000
#define SMB_PIPE_READMODE_MESSAGE 0x0100
#define SMB_PIPE_TYPE_BYTE 0x0000
#define SMB_PIPE_TYPE_MESSAGE 0x0400
#define SMB_PIPE_END_CLIENT 0x0000
#define SMB_PIPE_END_SERVER 0x4000
#define SMB_PIPE_WAIT 0x0000
#define SMB_PIPE_NOWAIT 0x8000
#define SMB_PIPE_UNLIMITED_INSTANCES 0x00FF
#define SMB_SEEK_SET 0
#define SMB_SEEK_CUR 1
#define SMB_SEEK_END 2
#define API_WshareEnum 0
#define API_WshareGetInfo 1
#define API_WshareSetInfo 2
#define API_WshareAdd 3
#define API_WshareDel 4
#define API_NetShareCheck 5
#define API_WsessionEnum 6
#define API_WsessionGetInfo 7
#define API_WsessionDel 8
#define API_WconnectionEnum 9
#define API_WfileEnum 10
#define API_WfileGetInfo 11
#define API_WfileClose 12
#define API_WserverGetInfo 13
#define API_WserverSetInfo 14
#define API_WserverDiskEnum 15
#define API_WserverAdminCommand 16
#define API_NetAuditOpen 17
#define API_WauditClear 18
#define API_NetErrorLogOpen 19
#define API_WerrorLogClear 20
#define API_NetCharDevEnum 21
#define API_NetCharDevGetInfo 22
#define API_WCharDevControl 23
#define API_NetCharDevQEnum 24
#define API_NetCharDevQGetInfo 25
#define API_WCharDevQSetInfo 26
#define API_WCharDevQPurge 27
#define API_WCharDevQPurgeSelf 28
#define API_WMessageNameEnum 29
#define API_WMessageNameGetInfo 30
#define API_WMessageNameAdd 31
#define API_WMessageNameDel 32
#define API_WMessageNameFwd 33
#define API_WMessageNameUnFwd 34
#define API_WMessageBufferSend 35
#define API_WMessageFileSend 36
#define API_WMessageLogFileSet 37
#define API_WMessageLogFileGet 38
#define API_WServiceEnum 39
#define API_WServiceInstall 40
#define API_WServiceControl 41
#define API_WAccessEnum 42
#define API_WAccessGetInfo 43
#define API_WAccessSetInfo 44
#define API_WAccessAdd 45
#define API_WAccessDel 46
#define API_WGroupEnum 47
#define API_WGroupAdd 48
#define API_WGroupDel 49
#define API_WGroupAddUser 50
#define API_WGroupDelUser 51
#define API_WGroupGetUsers 52
#define API_WUserEnum 53
#define API_WUserAdd 54
#define API_WUserDel 55
#define API_WUserGetInfo 56
#define API_WUserSetInfo 57
#define API_WUserPasswordSet 58
#define API_WUserGetGroups 59
#define API_DeadTableEntry 60
#define API_WWkstaSetUID 62
#define API_WWkstaGetInfo 63
#define API_WWkstaSetInfo 64
#define API_WUseEnum 65
#define API_WUseAdd 66
#define API_WUseDel 67
#define API_WUseGetInfo 68
#define API_WPrintQEnum 69
#define API_WPrintQGetInfo 70
#define API_WPrintQSetInfo 71
#define API_WPrintQAdd 72
#define API_WPrintQDel 73
#define API_WPrintQPause 74
#define API_WPrintQContinue 75
#define API_WPrintJobEnum 76
#define API_WPrintJobGetInfo 77
#define API_WPrintJobSetInfo_OLD 78
#define API_WPrintJobDel 81
#define API_WPrintJobPause 82
#define API_WPrintJobContinue 83
#define API_WPrintDestEnum 84
#define API_WPrintDestGetInfo 85
#define API_WPrintDestControl 86
#define API_WProfileSave 87
#define API_WProfileLoad 88
#define API_WStatisticsGet 89
#define API_WStatisticsClear 90
#define API_NetRemoteTOD 91
#define API_WNetBiosEnum 92
#define API_WNetBiosGetInfo 93
#define API_NetServerEnum 94
#define API_I_NetServerEnum 95
#define API_WServiceGetInfo 96
#define API_WPrintQPurge 103
#define API_NetServerEnum2 104
#define API_WAccessGetUserPerms 105
#define API_WGroupGetInfo 106
#define API_WGroupSetInfo 107
#define API_WGroupSetUsers 108
#define API_WUserSetGroups 109
#define API_WUserModalsGet 110
#define API_WUserModalsSet 111
#define API_WFileEnum2 112
#define API_WUserAdd2 113
#define API_WUserSetInfo2 114
#define API_WUserPasswordSet2 115
#define API_I_NetServerEnum2 116
#define API_WConfigGet2 117
#define API_WConfigGetAll2 118
#define API_WGetDCName 119
#define API_NetHandleGetInfo 120
#define API_NetHandleSetInfo 121
#define API_WStatisticsGet2 122
#define API_WBuildGetInfo 123
#define API_WFileGetInfo2 124
#define API_WFileClose2 125
#define API_WNetServerReqChallenge 126
#define API_WNetServerAuthenticate 127
#define API_WNetServerPasswordSet 128
#define API_WNetAccountDeltas 129
#define API_WNetAccountSync 130
#define API_WUserEnum2 131
#define API_WWkstaUserLogon 132
#define API_WWkstaUserLogoff 133
#define API_WLogonEnum 134
#define API_WErrorLogRead 135
#define API_WI_NetPathType 136
#define API_WI_NetPathCanonicalize 137
#define API_WI_NetPathCompare 138
#define API_WI_NetNameValidate 139
#define API_WI_NetNameCanonicalize 140
#define API_WI_NetNameCompare 141
#define API_WAuditRead 142
#define API_WPrintDestAdd 143
#define API_WPrintDestSetInfo 144
#define API_WPrintDestDel 145
#define API_WUserValidate2 146
#define API_WPrintJobSetInfo 147
#define API_TI_NetServerDiskEnum 148
#define API_TI_NetServerDiskGetInfo 149
#define API_TI_FTVerifyMirror 150
#define API_TI_FTAbortVerify 151
#define API_TI_FTGetInfo 152
#define API_TI_FTSetInfo 153
#define API_TI_FTLockDisk 154
#define API_TI_FTFixError 155
#define API_TI_FTAbortFix 156
#define API_TI_FTDiagnoseError 157
#define API_TI_FTGetDriveStats 158
#define API_TI_FTErrorGetInfo 160
#define API_NetAccessCheck 163
#define API_NetAlertRaise 164
#define API_NetAlertStart 165
#define API_NetAlertStop 166
#define API_NetAuditWrite 167
#define API_NetIRemoteAPI 168
#define API_NetServiceStatus 169
#define API_I_NetServerRegister 170
#define API_I_NetServerDeregister 171
#define API_I_NetSessionEntryMake 172
#define API_I_NetSessionEntryClear 173
#define API_I_NetSessionEntryGetInfo 174
#define API_I_NetSessionEntrySetInfo 175
#define API_I_NetConnectionEntryMake 176
#define API_I_NetConnectionEntryClear 177
#define API_I_NetConnectionEntrySetInfo 178
#define API_I_NetConnectionEntryGetInfo 179
#define API_I_NetFileEntryMake 180
#define API_I_NetFileEntryClear 181
#define API_I_NetFileEntrySetInfo 182
#define API_I_NetFileEntryGetInfo 183
#define API_AltSrvMessageBufferSend 184
#define API_AltSrvMessageFileSend 185
#define API_wI_NetRplWkstaEnum 186
#define API_wI_NetRplWkstaGetInfo 187
#define API_wI_NetRplWkstaSetInfo 188
#define API_wI_NetRplWkstaAdd 189
#define API_wI_NetRplWkstaDel 190
#define API_wI_NetRplProfileEnum 191
#define API_wI_NetRplProfileGetInfo 192
#define API_wI_NetRplProfileSetInfo 193
#define API_wI_NetRplProfileAdd 194
#define API_wI_NetRplProfileDel 195
#define API_wI_NetRplProfileClone 196
#define API_wI_NetRplBaseProfileEnum 197
#define API_WIServerSetInfo 201
#define API_WPrintDriverEnum 205
#define API_WPrintQProcessorEnum 206
#define API_WPrintPortEnum 207
#define API_WNetWriteUpdateLog 208
#define API_WNetAccountUpdate 209
#define API_WNetAccountConfirmUpdate 210
#define API_WConfigSet 211
#define API_WAccountsReplicate 212
#define API_SamOEMChgPasswordUser2_P 214
#define API_NetServerEnum3 215
#define API_WprintDriverGetInfo 250
#define API_WprintDriverSetInfo 251
#define API_WaliasAdd 252
#define API_WaliasDel 253
#define API_WaliasGetInfo 254
#define API_WaliasSetInfo 255
#define API_WaliasEnum 256
#define API_WuserGetLogonAsn 257
#define API_WuserSetLogonAsn 258
#define API_WuserGetAppSel 259
#define API_WuserSetAppSel 260
#define API_WappAdd 261
#define API_WappDel 262
#define API_WappGetInfo 263
#define API_WappSetInfo 264
#define API_WappEnum 265
#define API_WUserDCDBInit 266
#define API_WDASDAdd 267
#define API_WDASDDel 268
#define API_WDASDGetInfo 269
#define API_WDASDSetInfo 270
#define API_WDASDEnum 271
#define API_WDASDCheck 272
#define API_WDASDCtl 273
#define API_WuserRemoteLogonCheck 274
#define API_WUserPasswordSet3 275
#define API_WCreateRIPLMachine 276
#define API_WDeleteRIPLMachine 277
#define API_WGetRIPLMachineInfo 278
#define API_WSetRIPLMachineInfo 279
#define API_WEnumRIPLMachine 280
#define API_WI_ShareAdd 281
#define API_WI_AliasEnum 282
#define API_WaccessApply 283
#define API_WPrt16Query 284
#define API_WPrt16Set 285
#define API_WUserDel100 286
#define API_WUserRemoteLogonCheck2 287
#define API_WRemoteTODSet 294
#define API_WprintJobMoveAll 295
#define API_W16AppParmAdd 296
#define API_W16AppParmDel 297
#define API_W16AppParmGet 298
#define API_W16AppParmSet 299
#define API_W16RIPLMachineCreate 300
#define API_W16RIPLMachineGetInfo 301
#define API_W16RIPLMachineSetInfo 302
#define API_W16RIPLMachineEnum 303
#define API_W16RIPLMachineListParmEnum 304
#define API_W16RIPLMachClassGetInfo 305
#define API_W16RIPLMachClassEnum 306
#define API_W16RIPLMachClassCreate 307
#define API_W16RIPLMachClassSetInfo 308
#define API_W16RIPLMachClassDelete 309
#define API_W16RIPLMachClassLPEnum 310
#define API_W16RIPLMachineDelete 311
#define API_W16WSLevelGetInfo 312
#define API_WserverNameAdd 313
#define API_WserverNameDel 314
#define API_WserverNameEnum 315
#define API_I_WDASDEnum 316
#define API_I_WDASDEnumTerminate 317
#define API_I_WDASDSetInfo2 318
#define MAX_RAP_API 318
#ifdef __cplusplus
}
#endif
#endif