📄 smb.h
字号:
#define SMBtconX 0x75 /* tree connect and X*/#define SMBtdis 0x71 /* tree disconnect */#define SMBnegprot 0x72 /* negotiate protocol */#define SMBdskattr 0x80 /* get disk attributes */#define SMBsearch 0x81 /* search directory */#define SMBsplopen 0xC0 /* open print spool file */#define SMBsplwr 0xC1 /* write to print spool file */#define SMBsplclose 0xC2 /* close print spool file */#define SMBsplretq 0xC3 /* return print queue */#define SMBsends 0xD0 /* send single block message */#define SMBsendb 0xD1 /* send broadcast message */#define SMBfwdname 0xD2 /* forward user name */#define SMBcancelf 0xD3 /* cancel forward */#define SMBgetmac 0xD4 /* get machine name */#define SMBsendstrt 0xD5 /* send start of multi-block message */#define SMBsendend 0xD6 /* send end of multi-block message */#define SMBsendtxt 0xD7 /* send text of multi-block message *//* Core+ protocol */#define SMBlockread 0x13 /* Lock a range and read */#define SMBwriteunlock 0x14 /* Unlock a range then write */#define SMBreadbraw 0x1a /* read a block of data with no smb header */#define SMBwritebraw 0x1d /* write a block of data with no smb header */#define SMBwritec 0x20 /* secondary write request */#define SMBwriteclose 0x2c /* write a file then close it *//* dos extended protocol */#define SMBreadBraw 0x1A /* read block raw */#define SMBreadBmpx 0x1B /* read block multiplexed */#define SMBreadBs 0x1C /* read block (secondary response) */#define SMBwriteBraw 0x1D /* write block raw */#define SMBwriteBmpx 0x1E /* write block multiplexed */#define SMBwriteBs 0x1F /* write block (secondary request) */#define SMBwriteC 0x20 /* write complete response */#define SMBsetattrE 0x22 /* set file attributes expanded */#define SMBgetattrE 0x23 /* get file attributes expanded */#define SMBlockingX 0x24 /* lock/unlock byte ranges and X */#define SMBtrans 0x25 /* transaction - name, bytes in/out */#define SMBtranss 0x26 /* transaction (secondary request/response) */#define SMBioctl 0x27 /* IOCTL */#define SMBioctls 0x28 /* IOCTL (secondary request/response) */#define SMBcopy 0x29 /* copy */#define SMBmove 0x2A /* move */#define SMBecho 0x2B /* echo */#define SMBopenX 0x2D /* open and X */#define SMBreadX 0x2E /* read and X */#define SMBwriteX 0x2F /* write and X */#define SMBsesssetupX 0x73 /* Session Set Up & X (including User Logon) */#define SMBffirst 0x82 /* find first */#define SMBfunique 0x83 /* find unique */#define SMBfclose 0x84 /* find close */#define SMBkeepalive 0x85 /* keepalive */#define SMBinvalid 0xFE /* invalid command *//* Extended 2.0 protocol */#define SMBtrans2 0x32 /* TRANS2 protocol set */#define SMBtranss2 0x33 /* TRANS2 protocol set, secondary command */#define SMBfindclose 0x34 /* Terminate a TRANSACT2_FINDFIRST */#define SMBfindnclose 0x35 /* Terminate a TRANSACT2_FINDNOTIFYFIRST */#define SMBulogoffX 0x74 /* user logoff *//* NT SMB extensions. */#define SMBnttrans 0xA0 /* NT transact */#define SMBnttranss 0xA1 /* NT transact secondary */#define SMBntcreateX 0xA2 /* NT create and X */#define SMBntcancel 0xA4 /* NT cancel */#define SMBntrename 0xA5 /* NT rename *//* These are the trans subcommands */#define TRANSACT_SETNAMEDPIPEHANDLESTATE 0x01 #define TRANSACT_DCERPCCMD 0x26#define TRANSACT_WAITNAMEDPIPEHANDLESTATE 0x53/* These are the TRANS2 sub commands */#define TRANSACT2_OPEN 0x00#define TRANSACT2_FINDFIRST 0x01#define TRANSACT2_FINDNEXT 0x02#define TRANSACT2_QFSINFO 0x03#define TRANSACT2_SETFSINFO 0x04#define TRANSACT2_QPATHINFO 0x05#define TRANSACT2_SETPATHINFO 0x06#define TRANSACT2_QFILEINFO 0x07#define TRANSACT2_SETFILEINFO 0x08#define TRANSACT2_FSCTL 0x09#define TRANSACT2_IOCTL 0x0A#define TRANSACT2_FINDNOTIFYFIRST 0x0B#define TRANSACT2_FINDNOTIFYNEXT 0x0C#define TRANSACT2_MKDIR 0x0D#define TRANSACT2_SESSION_SETUP 0x0E#define TRANSACT2_GET_DFS_REFERRAL 0x10#define TRANSACT2_REPORT_DFS_INCONSISTANCY 0x11/* These are the NT transact sub commands. */#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_GET_USER_QUOTA 7#define NT_TRANSACT_SET_USER_QUOTA 8/* These are the NT transact_get_user_quota sub commands */#define TRANSACT_GET_USER_QUOTA_LIST_CONTINUE 0x0000#define TRANSACT_GET_USER_QUOTA_LIST_START 0x0100#define TRANSACT_GET_USER_QUOTA_FOR_SID 0x0101/* Relevant IOCTL codes */#define IOCTL_QUERY_JOB_INFO 0x530060/* these are the trans2 sub fields for primary requests */#define smb_tpscnt smb_vwv0#define smb_tdscnt smb_vwv1#define smb_mprcnt smb_vwv2#define smb_mdrcnt smb_vwv3#define smb_msrcnt smb_vwv4#define smb_flags smb_vwv5#define smb_timeout smb_vwv6#define smb_pscnt smb_vwv9#define smb_psoff smb_vwv10#define smb_dscnt smb_vwv11#define smb_dsoff smb_vwv12#define smb_suwcnt smb_vwv13#define smb_setup smb_vwv14#define smb_setup0 smb_setup#define smb_setup1 (smb_setup+2)#define smb_setup2 (smb_setup+4)/* these are for the secondary requests */#define smb_spscnt smb_vwv2#define smb_spsoff smb_vwv3#define smb_spsdisp smb_vwv4#define smb_sdscnt smb_vwv5#define smb_sdsoff smb_vwv6#define smb_sdsdisp smb_vwv7#define smb_sfid smb_vwv8/* and these for responses */#define smb_tprcnt smb_vwv0#define smb_tdrcnt smb_vwv1#define smb_prcnt smb_vwv3#define smb_proff smb_vwv4#define smb_prdisp smb_vwv5#define smb_drcnt smb_vwv6#define smb_droff smb_vwv7#define smb_drdisp smb_vwv8/* these are for the NT trans primary request. */#define smb_nt_MaxSetupCount smb_vwv0#define smb_nt_Flags (smb_vwv0 + 1)#define smb_nt_TotalParameterCount (smb_vwv0 + 3)#define smb_nt_TotalDataCount (smb_vwv0 + 7)#define smb_nt_MaxParameterCount (smb_vwv0 + 11)#define smb_nt_MaxDataCount (smb_vwv0 + 15)#define smb_nt_ParameterCount (smb_vwv0 + 19)#define smb_nt_ParameterOffset (smb_vwv0 + 23)#define smb_nt_DataCount (smb_vwv0 + 27)#define smb_nt_DataOffset (smb_vwv0 + 31)#define smb_nt_SetupCount (smb_vwv0 + 35)#define smb_nt_Function (smb_vwv0 + 36)#define smb_nt_SetupStart (smb_vwv0 + 38)/* these are for the NT trans secondary request. */#define smb_nts_TotalParameterCount (smb_vwv0 + 3)#define smb_nts_TotalDataCount (smb_vwv0 + 7)#define smb_nts_ParameterCount (smb_vwv0 + 11)#define smb_nts_ParameterOffset (smb_vwv0 + 15)#define smb_nts_ParameterDisplacement (smb_vwv0 + 19)#define smb_nts_DataCount (smb_vwv0 + 23)#define smb_nts_DataOffset (smb_vwv0 + 27)#define smb_nts_DataDisplacement (smb_vwv0 + 31)/* these are for the NT trans reply. */#define smb_ntr_TotalParameterCount (smb_vwv0 + 3)#define smb_ntr_TotalDataCount (smb_vwv0 + 7)#define smb_ntr_ParameterCount (smb_vwv0 + 11)#define smb_ntr_ParameterOffset (smb_vwv0 + 15)#define smb_ntr_ParameterDisplacement (smb_vwv0 + 19)#define smb_ntr_DataCount (smb_vwv0 + 23)#define smb_ntr_DataOffset (smb_vwv0 + 27)#define smb_ntr_DataDisplacement (smb_vwv0 + 31)/* these are for the NT create_and_X */#define smb_ntcreate_NameLength (smb_vwv0 + 5)#define smb_ntcreate_Flags (smb_vwv0 + 7)#define smb_ntcreate_RootDirectoryFid (smb_vwv0 + 11)#define smb_ntcreate_DesiredAccess (smb_vwv0 + 15)#define smb_ntcreate_AllocationSize (smb_vwv0 + 19)#define smb_ntcreate_FileAttributes (smb_vwv0 + 27)#define smb_ntcreate_ShareAccess (smb_vwv0 + 31)#define smb_ntcreate_CreateDisposition (smb_vwv0 + 35)#define smb_ntcreate_CreateOptions (smb_vwv0 + 39)#define smb_ntcreate_ImpersonationLevel (smb_vwv0 + 43)#define smb_ntcreate_SecurityFlags (smb_vwv0 + 47)/* this is used on a TConX. I'm not sure the name is very helpful though */#define SMB_SUPPORT_SEARCH_BITS 0x0001#define SMB_SHARE_IN_DFS 0x0002/* Named pipe write mode flags. Used in writeX calls. */#define PIPE_RAW_MODE 0x4#define PIPE_START_MESSAGE 0x8/* File Specific access rights */#define FILE_READ_DATA 0x00000001#define FILE_WRITE_DATA 0x00000002#define FILE_APPEND_DATA 0x00000004#define FILE_READ_EA 0x00000008 /* File and directory */#define FILE_WRITE_EA 0x00000010 /* File and directory */#define FILE_EXECUTE 0x00000020#define FILE_DELETE_CHILD 0x00000040#define FILE_READ_ATTRIBUTES 0x00000080#define FILE_WRITE_ATTRIBUTES 0x00000100#define FILE_ALL_ACCESS 0x000001FF/* Directory specific access rights */#define FILE_LIST_DIRECTORY 0x00000001#define FILE_ADD_FILE 0x00000002#define FILE_ADD_SUBDIRECTORY 0x00000004#define FILE_TRAVERSE 0x00000020#define FILE_DELETE_CHILD 0x00000040/* the desired access to use when opening a pipe */#define DESIRED_ACCESS_PIPE 0x2019f /* Generic access masks & rights. */#define DELETE_ACCESS 0x00010000 /* (1L<<16) */#define READ_CONTROL_ACCESS 0x00020000 /* (1L<<17) */#define WRITE_DAC_ACCESS 0x00040000 /* (1L<<18) */#define WRITE_OWNER_ACCESS 0x00080000 /* (1L<<19) */#define SYNCHRONIZE_ACCESS 0x00100000 /* (1L<<20) */#define SYSTEM_SECURITY_ACCESS 0x01000000 /* (1L<<24) */#define MAXIMUM_ALLOWED_ACCESS 0x02000000 /* (1L<<25) */#define GENERIC_ALL_ACCESS 0x10000000 /* (1<<28) */#define GENERIC_EXECUTE_ACCESS 0x20000000 /* (1<<29) */#define GENERIC_WRITE_ACCESS 0x40000000 /* (1<<30) */#define GENERIC_READ_ACCESS ((unsigned)0x80000000) /* (((unsigned)1)<<31) *//* Mapping of generic access rights for files to specific rights. */#define FILE_GENERIC_ALL (STANDARD_RIGHTS_REQUIRED_ACCESS| SYNCHRONIZE_ACCESS|FILE_ALL_ACCESS)#define FILE_GENERIC_READ (STANDARD_RIGHTS_READ_ACCESS|FILE_READ_DATA|FILE_READ_ATTRIBUTES|\ FILE_READ_EA|SYNCHRONIZE_ACCESS)#define FILE_GENERIC_WRITE (STD_RIGHT_READ_CONTROL_ACCESS|FILE_WRITE_DATA|FILE_WRITE_ATTRIBUTES|\ FILE_WRITE_EA|FILE_APPEND_DATA|SYNCHRONIZE_ACCESS)#define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE_ACCESS|\ FILE_EXECUTE|SYNCHRONIZE_ACCESS)/* Mapping of access rights to UNIX perms. */#define UNIX_ACCESS_RWX FILE_GENERIC_ALL#define UNIX_ACCESS_R FILE_GENERIC_READ#define UNIX_ACCESS_W FILE_GENERIC_WRITE#define UNIX_ACCESS_X FILE_GENERIC_EXECUTE/* Mapping of access rights to UNIX perms. for a UNIX directory. */#define UNIX_DIRECTORY_ACCESS_RWX FILE_GENERIC_ALL#define UNIX_DIRECTORY_ACCESS_R FILE_GENERIC_READ#define UNIX_DIRECTORY_ACCESS_W FILE_GENERIC_WRITE#define UNIX_DIRECTORY_ACCESS_X FILE_GENERIC_EXECUTE#if 0/* * This is the old mapping we used to use. To get W2KSP2 profiles * working we need to map to the canonical file perms. */#define UNIX_ACCESS_RWX (UNIX_ACCESS_R|UNIX_ACCESS_W|UNIX_ACCESS_X)#define UNIX_ACCESS_R (READ_CONTROL_ACCESS|SYNCHRONIZE_ACCESS|\ FILE_READ_ATTRIBUTES|FILE_READ_EA|FILE_READ_DATA)#define UNIX_ACCESS_W (READ_CONTROL_ACCESS|SYNCHRONIZE_ACCESS|\ FILE_WRITE_ATTRIBUTES|FILE_WRITE_EA|\ FILE_APPEND_DATA|FILE_WRITE_DATA)#define UNIX_ACCESS_X (READ_CONTROL_ACCESS|SYNCHRONIZE_ACCESS|\ FILE_EXECUTE|FILE_READ_ATTRIBUTES)#endif#define UNIX_ACCESS_NONE (WRITE_OWNER_ACCESS)/* Flags field. */#define REQUEST_OPLOCK 2#define REQUEST_BATCH_OPLOCK 4#define OPEN_DIRECTORY 8#define EXTENDED_RESPONSE_REQUIRED 0x10/* ShareAccess field. */#define FILE_SHARE_NONE 0 /* Cannot be used in bitmask. */#define FILE_SHARE_READ 1#define FILE_SHARE_WRITE 2#define FILE_SHARE_DELETE 4/* FileAttributesField */#define FILE_ATTRIBUTE_READONLY 0x001L#define FILE_ATTRIBUTE_HIDDEN 0x002L#define FILE_ATTRIBUTE_SYSTEM 0x004L#define FILE_ATTRIBUTE_DIRECTORY 0x010L#define FILE_ATTRIBUTE_ARCHIVE 0x020L#define FILE_ATTRIBUTE_NORMAL 0x080L#define FILE_ATTRIBUTE_TEMPORARY 0x100L#define FILE_ATTRIBUTE_SPARSE 0x200L#define FILE_ATTRIBUTE_REPARSE_POINT 0x400L#define FILE_ATTRIBUTE_COMPRESSED 0x800L#define FILE_ATTRIBUTE_OFFLINE 0x1000L#define FILE_ATTRIBUTE_NONINDEXED 0x2000L#define FILE_ATTRIBUTE_ENCRYPTED 0x4000L#define SAMBA_ATTRIBUTES_MASK 0x7F/* Flags - combined with attributes. */#define FILE_FLAG_WRITE_THROUGH 0x80000000L#define FILE_FLAG_NO_BUFFERING 0x20000000L#define FILE_FLAG_RANDOM_ACCESS 0x10000000L#define FILE_FLAG_SEQUENTIAL_SCAN 0x08000000L#define FILE_FLAG_DELETE_ON_CLOSE 0x04000000L#define FILE_FLAG_BACKUP_SEMANTICS 0x02000000L#define FILE_FLAG_POSIX_SEMANTICS 0x01000000L/* CreateDisposition field. */#define FILE_SUPERSEDE 0 /* File exists overwrite/supersede. File not exist create. */#define FILE_OPEN 1 /* File exists open. File not exist fail. */#define FILE_CREATE 2 /* File exists fail. File not exist create. */#define FILE_OPEN_IF 3 /* File exists open. File not exist create. */#define FILE_OVERWRITE 4 /* File exists overwrite. File not exist fail. */#define FILE_OVERWRITE_IF 5 /* File exists overwrite. File not exist create. *//* CreateOptions field. */#define FILE_DIRECTORY_FILE 0x0001#define FILE_WRITE_THROUGH 0x0002#define FILE_SEQUENTIAL_ONLY 0x0004#define FILE_NON_DIRECTORY_FILE 0x0040#define FILE_NO_EA_KNOWLEDGE 0x0200#define FILE_EIGHT_DOT_THREE_ONLY 0x0400#define FILE_RANDOM_ACCESS 0x0800#define FILE_DELETE_ON_CLOSE 0x1000#define FILE_OPEN_BY_FILE_ID 0x2000/* Private create options used by the ntcreatex processing code. From Samba4. */#define NTCREATEX_OPTIONS_PRIVATE_DENY_DOS 0x01000000#define NTCREATEX_OPTIONS_PRIVATE_DENY_FCB 0x02000000/* Responses when opening a file. */#define FILE_WAS_SUPERSEDED 0#define FILE_WAS_OPENED 1#define FILE_WAS_CREATED 2#define FILE_WAS_OVERWRITTEN 3/* File type flags */#define FILE_TYPE_DISK 0#define FILE_TYPE_BYTE_MODE_PIPE 1#define FILE_TYPE_MESSAGE_MODE_PIPE 2#define FILE_TYPE_PRINTER 3#define FILE_TYPE_COMM_DEVICE 4#define FILE_TYPE_UNKNOWN 0xFFFF/* Flag for NT transact rename call. */#define RENAME_REPLACE_IF_EXISTS 1/* flags for SMBntrename call (from Samba4) */#define RENAME_FLAG_MOVE_CLUSTER_INFORMATION 0x102 /* ???? */#define RENAME_FLAG_HARD_LINK 0x103#define RENAME_FLAG_RENAME 0x104#define RENAME_FLAG_COPY 0x105/* Filesystem Attributes. */#define FILE_CASE_SENSITIVE_SEARCH 0x00000001#define FILE_CASE_PRESERVED_NAMES 0x00000002#define FILE_UNICODE_ON_DISK 0x00000004/* According to cifs9f, this is 4, not 8 *//* Acconding to testing, this actually sets the security attribute! */#define FILE_PERSISTENT_ACLS 0x00000008#define FILE_FILE_COMPRESSION 0x00000010#define FILE_VOLUME_QUOTAS 0x00000020#define FILE_SUPPORTS_SPARSE_FILES 0x00000040#define FILE_SUPPORTS_REPARSE_POINTS 0x00000080#define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100#define FS_LFN_APIS 0x00004000#define FILE_VOLUME_IS_COMPRESSED 0x00008000#define FILE_SUPPORTS_OBJECT_IDS 0x00010000#define FILE_SUPPORTS_ENCRYPTION 0x00020000#define FILE_NAMED_STREAMS 0x00040000#define FILE_READ_ONLY_VOLUME 0x00080000/* ChangeNotify flags. */#define FILE_NOTIFY_CHANGE_FILE 0x001#define FILE_NOTIFY_CHANGE_DIR_NAME 0x002#define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x004#define FILE_NOTIFY_CHANGE_SIZE 0x008#define FILE_NOTIFY_CHANGE_LAST_WRITE 0x010#define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x020#define FILE_NOTIFY_CHANGE_CREATION 0x040#define FILE_NOTIFY_CHANGE_EA 0x080#define FILE_NOTIFY_CHANGE_SECURITY 0x100#define FILE_NOTIFY_CHANGE_FILE_NAME 0x200/* where to find the base of the SMB packet proper */#define smb_base(buf) (((char *)(buf))+4)/* we don't allow server strings to be longer than 48 characters as otherwise NT will not honour the announce packets */#define MAX_SERVER_STRING_LENGTH 48#define SMB_SUCCESS 0 /* The request was successful. */#ifdef WITH_DFSvoid dfs_unlogin(void);extern int dcelogin_atmost_once;#endif#ifdef NOSTRDUPchar *strdup(char *s);#endif#ifndef SIGNAL_CAST#define SIGNAL_CAST (RETSIGTYPE (*)(int))#endif#ifndef SELECT_CAST#define SELECT_CAST#endif/* these are used in NetServerEnum to choose what to receive */#define SV_TYPE_WORKSTATION 0x00000001#define SV_TYPE_SERVER 0x00000002#define SV_TYPE_SQLSERVER 0x00000004#define SV_TYPE_DOMAIN_CTRL 0x00000008#define SV_TYPE_DOMAIN_BAKCTRL 0x00000010#define SV_TYPE_TIME_SOURCE 0x00000020#define SV_TYPE_AFP 0x00000040#define SV_TYPE_NOVELL 0x00000080#define SV_TYPE_DOMAIN_MEMBER 0x00000100#define SV_TYPE_PRINTQ_SERVER 0x00000200#define SV_TYPE_DIALIN_SERVER 0x00000400#define SV_TYPE_SERVER_UNIX 0x00000800#define SV_TYPE_NT 0x00001000#define SV_TYPE_WFW 0x00002000#define SV_TYPE_SERVER_MFPN 0x00004000#define SV_TYPE_SERVER_NT 0x00008000#define SV_TYPE_POTENTIAL_BROWSER 0x00010000#define SV_TYPE_BACKUP_BROWSER 0x00020000#define SV_TYPE_MASTER_BROWSER 0x00040000#define SV_TYPE_DOMAIN_MASTER 0x00080000#define SV_TYPE_SERVER_OSF 0x00100000#define SV_TYPE_SERVER_VMS 0x00200000#define SV_TYPE_WIN95_PLUS 0x00400000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -