📄 cifs.h
字号:
// Return Value:
//
// ULONG - number of bytes requires for the FEA.
//
//--
#define SmbGetOs2SizeOfNtFullEa( NtFullEa ) \
(ULONG)( sizeof(FEA) + (NtFullEa)->EaNameLength + 1 + \
(NtFullEa)->EaValueLength )
//++
//
// ULONG
// SmbGetOs2SizeOfNtGetEa (
// IN PFILE_GET_EA_INFORMATION NtGetEa;
// )
//
// Routine Description:
//
// This macro gets the size a FILE_GET_EA_INFORMATION structure would
// require to be represented in a OS/2 1.2 style GEA.
//
// Arguments:
//
// NtGetEa - a pointer to the NT FILE_GET_EA_INFORMATION structure
// to evaluate.
//
// Return Value:
//
// ULONG - number of bytes requires for the GEA.
//
//--
//
// The zero terminator on the name is accounted for by the szName[0]
// field in the GEA definition.
//
#define SmbGetOs2SizeOfNtGetEa( NtGetEa ) \
(ULONG)( sizeof(GEA) + (NtGetEa)->EaNameLength )
/*
Inclusion of SMB request/response structures in this file is
conditionalized in the following way:
If INCLUDE_SMB_ALL is defined, all of the structures are defined.
Otherwise, the following names, if defined, cause inclusion of the
corresponding SMB categories:
INCLUDE_SMB_ADMIN Administrative requests:
PROCESS_EXIT
NEGOTIATE
SESSION_SETUP_ANDX
LOGOFF_ANDX
INCLUDE_SMB_TREE Tree connect requests:
TREE_CONNECT
TREE_DISCONNECT
TREE_CONNECT_ANDX
INCLUDE_SMB_DIRECTORY Directory-related requests:
CREATE_DIRECTORY
DELETE_DIRECTORY
CHECK_DIRECTORY
INCLUDE_SMB_OPEN_CLOSE File open and close requests:
OPEN
CREATE
CLOSE
CREATE_TEMPORARY
CREATE_NEW
OPEN_ANDX
CLOSE_AND_TREE_DISC
INCLUDE_SMB_READ_WRITE Read and write requests:
READ
WRITE
SEEK
LOCK_AND_READ
WRITE_AND_UNLOCK
WRITE_AND_CLOSE
READ_ANDX
WRITE_ANDX
INCLUDE_SMB_FILE_CONTROL File control requests:
FLUSH
DELETE
RENAME
COPY
MOVE
INCLUDE_SMB_QUERY_SET File query/set requests:
QUERY_INFORMATION
SET_INFORMATION
QUERY_INFORMATION2
SET_INFORMATION2
QUERY_PATH_INFORMATION
SET_PATH_INFORMATION
QUERY_FILE_INFORMATION
SET_FILE_INFORMATION
INCLUDE_SMB_LOCK Lock requests (not LOCK_AND_READ)
LOCK_BYTE_RANGE
UNLOCK_BYTE_RANGE
LOCKING_ANDX
INCLUDE_SMB_RAW Raw read/write requests:
READ_RAW
WRITE_RAW
INCLUDE_SMB_MPX Multiplexed requests:
READ_MPX
WRITE_MPX
INCLUDE_SMB_SEARCH Search requests:
FIND_CLOSE2
FIND_NOTIFY_CLOSE
SEARCH
FIND
FIND_UNIQUE
FIND_CLOSE
INCLUDE_SMB_TRANSACTION Transaction and IOCTL requests:
TRANSACTION
IOCTL
TRANSACTION2
NTTRANSACTION
INCLUDE_SMB_PRINT Printer requests:
OPEN_PRINT_FILE
WRITE_PRINT_FILE
CLOSE_PRINT_FILE
GET_PRINT_QUEUE
INCLUDE_SMB_MESSAGE Message requests:
SEND_MESSAGE
SEND_BROADCAST_MESSAGE
FORWARD_USER_NAME
CANCEL_FORWARD
GET_MACHINE_NAME
SEND_START_MB_MESSAGE
SEND_END_MB_MESSAGE
SEND_TEXT_MB_MESSAGE
INCLUDE_SMB_MISC Miscellaneous requests:
QUERY_INFORMATION_SRV
ECHO
QUERY_INFORMATION_DISK
*/
#ifdef INCLUDE_SMB_ALL
#define INCLUDE_SMB_ADMIN
#define INCLUDE_SMB_TREE
#define INCLUDE_SMB_DIRECTORY
#define INCLUDE_SMB_OPEN_CLOSE
#define INCLUDE_SMB_FILE_CONTROL
#define INCLUDE_SMB_READ_WRITE
#define INCLUDE_SMB_LOCK
#define INCLUDE_SMB_RAW
#define INCLUDE_SMB_MPX
#define INCLUDE_SMB_QUERY_SET
#define INCLUDE_SMB_SEARCH
#define INCLUDE_SMB_TRANSACTION
#define INCLUDE_SMB_PRINT
#define INCLUDE_SMB_MESSAGE
#define INCLUDE_SMB_MISC
#endif // def INCLUDE_SMB_ALL
//
// Force misalignment of the following structures
//
#ifndef NO_PACKING
#include <packon.h>
#endif // ndef NO_PACKING
//
// SMB servers listen on two NETBIOS addresses to facilitate connections. The
// first one is a name formulated from the computer name by padding it with
// a number of blanks ( upto NETBIOS_NAME_LEN ). This name is registered and
// resolved using the NETBIOS name registration/resolution mechanism. They also
// register under a second name *SMBSERVER which is not a valuid netbios name
// but provides a name which can be used in NETBT session setup. This eliminates
// the need for querying the remote adapter status to obtain the name.
//
#define SMBSERVER_LOCAL_ENDPOINT_NAME "*SMBSERVER "
//
// SMB Command code definitions:
//
// *** Start of SMB commands
#define SMB_COM_CREATE_DIRECTORY (UCHAR)0x00
#define SMB_COM_DELETE_DIRECTORY (UCHAR)0x01
#define SMB_COM_OPEN (UCHAR)0x02
#define SMB_COM_CREATE (UCHAR)0x03
#define SMB_COM_CLOSE (UCHAR)0x04
#define SMB_COM_FLUSH (UCHAR)0x05
#define SMB_COM_DELETE (UCHAR)0x06
#define SMB_COM_RENAME (UCHAR)0x07
#define SMB_COM_QUERY_INFORMATION (UCHAR)0x08
#define SMB_COM_SET_INFORMATION (UCHAR)0x09
#define SMB_COM_READ (UCHAR)0x0A
#define SMB_COM_WRITE (UCHAR)0x0B
#define SMB_COM_LOCK_BYTE_RANGE (UCHAR)0x0C
#define SMB_COM_UNLOCK_BYTE_RANGE (UCHAR)0x0D
#define SMB_COM_CREATE_TEMPORARY (UCHAR)0x0E
#define SMB_COM_CREATE_NEW (UCHAR)0x0F
#define SMB_COM_CHECK_DIRECTORY (UCHAR)0x10
#define SMB_COM_PROCESS_EXIT (UCHAR)0x11
#define SMB_COM_SEEK (UCHAR)0x12
#define SMB_COM_LOCK_AND_READ (UCHAR)0x13
#define SMB_COM_WRITE_AND_UNLOCK (UCHAR)0x14
#define SMB_COM_READ_RAW (UCHAR)0x1A
#define SMB_COM_READ_MPX (UCHAR)0x1B
#define SMB_COM_READ_MPX_SECONDARY (UCHAR)0x1C // server to redir only
#define SMB_COM_WRITE_RAW (UCHAR)0x1D
#define SMB_COM_WRITE_MPX (UCHAR)0x1E
#define SMB_COM_WRITE_MPX_SECONDARY (UCHAR)0x1F
#define SMB_COM_WRITE_COMPLETE (UCHAR)0x20 // server to redir only
#define SMB_COM_QUERY_INFORMATION_SRV (UCHAR)0x21
#define SMB_COM_SET_INFORMATION2 (UCHAR)0x22
#define SMB_COM_QUERY_INFORMATION2 (UCHAR)0x23
#define SMB_COM_LOCKING_ANDX (UCHAR)0x24
#define SMB_COM_TRANSACTION (UCHAR)0x25
#define SMB_COM_TRANSACTION_SECONDARY (UCHAR)0x26
#define SMB_COM_IOCTL (UCHAR)0x27
#define SMB_COM_IOCTL_SECONDARY (UCHAR)0x28
#define SMB_COM_COPY (UCHAR)0x29
#define SMB_COM_MOVE (UCHAR)0x2A
#define SMB_COM_ECHO (UCHAR)0x2B
#define SMB_COM_WRITE_AND_CLOSE (UCHAR)0x2C
#define SMB_COM_OPEN_ANDX (UCHAR)0x2D
#define SMB_COM_READ_ANDX (UCHAR)0x2E
#define SMB_COM_WRITE_ANDX (UCHAR)0x2F
#define SMB_COM_CLOSE_AND_TREE_DISC (UCHAR)0x31
#define SMB_COM_TRANSACTION2 (UCHAR)0x32
#define SMB_COM_TRANSACTION2_SECONDARY (UCHAR)0x33
#define SMB_COM_FIND_CLOSE2 (UCHAR)0x34
#define SMB_COM_FIND_NOTIFY_CLOSE (UCHAR)0x35
#define SMB_COM_TREE_CONNECT (UCHAR)0x70
#define SMB_COM_TREE_DISCONNECT (UCHAR)0x71
#define SMB_COM_NEGOTIATE (UCHAR)0x72
#define SMB_COM_SESSION_SETUP_ANDX (UCHAR)0x73
#define SMB_COM_LOGOFF_ANDX (UCHAR)0x74
#define SMB_COM_TREE_CONNECT_ANDX (UCHAR)0x75
#define SMB_COM_QUERY_INFORMATION_DISK (UCHAR)0x80
#define SMB_COM_SEARCH (UCHAR)0x81
#define SMB_COM_FIND (UCHAR)0x82
#define SMB_COM_FIND_UNIQUE (UCHAR)0x83
#define SMB_COM_FIND_CLOSE (UCHAR)0x84
#define SMB_COM_NT_TRANSACT (UCHAR)0xA0
#define SMB_COM_NT_TRANSACT_SECONDARY (UCHAR)0xA1
#define SMB_COM_NT_CREATE_ANDX (UCHAR)0xA2
#define SMB_COM_NT_CANCEL (UCHAR)0xA4
#define SMB_COM_NT_RENAME (UCHAR)0xA5
#define SMB_COM_OPEN_PRINT_FILE (UCHAR)0xC0
#define SMB_COM_WRITE_PRINT_FILE (UCHAR)0xC1
#define SMB_COM_CLOSE_PRINT_FILE (UCHAR)0xC2
#define SMB_COM_GET_PRINT_QUEUE (UCHAR)0xC3
#define SMB_COM_SEND_MESSAGE (UCHAR)0xD0
#define SMB_COM_SEND_BROADCAST_MESSAGE (UCHAR)0xD1
#define SMB_COM_FORWARD_USER_NAME (UCHAR)0xD2
#define SMB_COM_CANCEL_FORWARD (UCHAR)0xD3
#define SMB_COM_GET_MACHINE_NAME (UCHAR)0xD4
#define SMB_COM_SEND_START_MB_MESSAGE (UCHAR)0xD5
#define SMB_COM_SEND_END_MB_MESSAGE (UCHAR)0xD6
#define SMB_COM_SEND_TEXT_MB_MESSAGE (UCHAR)0xD7
// *** End of SMB commands
#define SMB_COM_NO_ANDX_COMMAND (UCHAR)0xFF
//
// Header for SMBs, see #4 page 10
//
// *** Note that we do NOT define PSMB_HEADER as SMB_UNALIGNED! This is
// done on the assumption that the SMB header, at least, will always
// be properly aligned. If you need to access an unaligned header,
// declare the pointer as SMB_UNALIGNED *SMB_HEADER.
//
#define SMB_SECURITY_SIGNATURE_LENGTH 8
typedef struct _SMB_HEADER {
UCHAR Protocol[4]; // Contains 0xFF,'SMB'
UCHAR Command; // Command code
UCHAR ErrorClass; // Error class
UCHAR Reserved; // Reserved for future use
_USHORT( Error ); // Error code
UCHAR Flags; // Flags
_USHORT( Flags2 ); // More flags
union {
_USHORT( Reserved2 )[6]; // Reserved for future use
struct {
_USHORT( PidHigh ); // High part of PID (NT Create And X)
union {
struct {
_ULONG( Key ); // Encryption key (IPX)
_USHORT( Sid ); // Session ID (IPX)
_USHORT( SequenceNumber ); // Sequence number (IPX)
_USHORT( Gid ); // Group ID (unused?)
};
UCHAR SecuritySignature[SMB_SECURITY_SIGNATURE_LENGTH];
// Client must send the correct Signature
// for this SMB to be accepted.
};
};
};
_USHORT( Tid ); // Authenticated user/group
_USHORT( Pid ); // Caller's process id
_USHORT( Uid ); // Unauthenticated user id
_USHORT( Mid ); // multiplex id
#ifdef NO_PACKING // ***
_USHORT( Kludge ); // *** make sure parameter structs
#endif // *** are longword aligned
} SMB_HEADER;
typedef SMB_HEADER *PSMB_HEADER;
typedef struct _NT_SMB_HEADER {
UCHAR Protocol[4]; // Contains 0xFF,'SMB'
UCHAR Command; // Command code
union {
struct {
UCHAR ErrorClass; // Error class
UCHAR Reserved; // Reserved for future use
_USHORT( Error ); // Error code
} DosError;
ULONG NtStatus; // NT-style 32-bit error code
} Status;
UCHAR Flags; // Flags
_USHORT( Flags2 ); // More flags
union {
_USHORT( Reserved2 )[6]; // Reserved for future use
struct {
_USHORT( PidHigh ); // High part of PID (NT Create And X)
union {
struct {
_ULONG( Key ); // Encryption key (IPX)
_USHORT( Sid ); // Session ID (IPX)
_USHORT( SequenceNumber ); // Sequence number (IPX)
_USHORT( Gid ); // Group ID (unused?)
};
UCHAR SecuritySignature[SMB_SECURITY_SIGNATURE_LENGTH];
// Client must send the correct Signature
// for this SMB to be accepted.
};
};
};
_USHORT( Tid ); // Authenticated user/group
_USHORT( Pid ); // Caller's process id
_USHORT( Uid ); // Unauthenticated user id
_USHORT( Mid ); // multiplex id
#ifdef NO_PACKING // ***
_USHORT( Kludge ); // *** make sure parameter structs
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -