⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smb.h

📁 Sanos Operating System Kernel ----------------------------- Sanos is an OS kernel for use in PC base
💻 H
📖 第 1 页 / 共 3 页
字号:
#define ERRnowrite		19      // Read only media
#define ERRbadunit		20      // Unknown device
#define ERRnotready		21      // Drive not ready
#define ERRbadcmd		22      // Unknown command
#define ERRdata			23      // Data (CRC) error
#define ERRbadreq		24      // Bad request structure length
#define ERRseek			25
#define ERRbadmedia		26
#define ERRbadsector		27
#define ERRnopaper		28
#define ERRwrite		29      // Write fault
#define ERRread			30      // Read fault
#define ERRgeneral		31      // General hardware failure
#define ERRwrongdisk		34
#define ERRFCBunavail		35
#define ERRsharebufexc		36      // Share buffer exceeded
#define ERRdiskfull		39


#pragma pack(push)
#pragma pack(1)

typedef __int64 smb_size;
typedef __int64 smb_time;

//
// SMB ANDX structure
//

struct smb_andx
{
  unsigned char cmd;			// Secondary (X) command; 0xFF = none
  unsigned char reserved;		// Reserved (must be 0)
  unsigned short offset;		// Offset to next command WordCount
};

//
// SMB NEGOTIATE response parameters
//

struct smb_negotiate_response
{
  unsigned short dialect_index;		// Index of selected dialect
  unsigned char security_mode;		// Security mode:
					//   bit 0: 0 = share, 1 = user
					//   bit 1: 1 = encrypt passwords
					//   bit 2: 1 = Security Signatures (SMB sequence numbers) enabled
					//   bit 3: 1 = Security Signatures (SMB sequence numbers) required
  unsigned short max_mpx_count;		// Max pending multiplexed requests
  unsigned short max_number_vcs;	// Max VCs between client and server
  unsigned long max_buffer_size;	// Max transmit buffer size
  unsigned long max_raw_size;	        // Maximum raw buffer size
  unsigned long session_key;	        // Unique token identifying this session
  unsigned long capabilities;	        // Server capabilities
  unsigned long systemtime_low;	        // System (UTC) time of the server (low).
  unsigned long systemtime_high;	// System (UTC) time of the server (high).
  short server_timezone;		// Time zone of server (min from UTC)
  unsigned char encryption_key_length;	// Length of encryption key.
};

//
// SMB SESSION SETUP request parameters
//

struct smb_session_setup_request
{
  struct smb_andx andx;
  unsigned short max_buffer_size;	  // Client maximum buffer size
  unsigned short max_mpx_count;		  // Actual maximum multiplexed pending requests
  unsigned short vc_number;		  // 0 = first (only), nonzero=additional VC number
  unsigned long session_key;		  // Session key (valid iff VcNumber != 0)
  unsigned short ansi_password_length;	  // Account password size (ansi, case insensitive)
  unsigned short unicode_password_length; // Account password size (unicode, case sensitive)
  unsigned long reserved;		  // Must be 0
  unsigned long capabilities;		  // Client capabilities
};

//
// SMB SESSION SETUP response parameters
//

struct smb_session_setup_response
{
  struct smb_andx andx;
  unsigned short action;		  // Request mode: bit0 = logged in as client
};

//
// SMB TREE CONNECT request parameters
//

struct smb_tree_connect_request
{
  struct smb_andx andx;
  unsigned short flags;			  // Additional information; bit 0 set = disconnect tid
  unsigned short password_length;	  // Length of password[]
};

//
// SMB TREE CONNECT response parameters
//

struct smb_tree_connect_response
{
  struct smb_andx andx;
  unsigned short optional_support;	  // Optional support bits
};

//
// SMB CREATE FILE request parameters
//

struct smb_create_file_request
{
  struct smb_andx andx;
  unsigned char reserved;		// Reserved (must be 0)
  unsigned short name_length;		// Length of name[] in bytes
  unsigned long flags;			// Create bit set:
                                        //   0x02 - Request an oplock
                                        //   0x04 - Request a batch oplock
                                        //   0x08 - Target of open must be directory
  unsigned long root_directory_fid;	// If non-zero, open is relative to this directory
  unsigned long desired_access;		// Access desired
  smb_size allocation_size;		// Initial allocation size
  unsigned long ext_file_attributes;	// File attributes
  unsigned long share_access;		// Type of share access
  unsigned long create_disposition;	// Action to take if file exists or not
  unsigned long create_options;		// Options to use if creating a file
  unsigned long impersonation_level;	// Security QOS information
  unsigned char security_flags;		// Security tracking mode flags:
                                        //   0x1 - SECURITY_CONTEXT_TRACKING
                                        //   0x2 - SECURITY_EFFECTIVE_ONLY
};

//
// SMB CREATE FILE response parameters
//

struct smb_create_file_response
{
  struct smb_andx andx;
  unsigned char oplock_level;		// The oplock level granted
                                        //   0 - No oplock granted
                                        //   1 - Exclusive oplock granted
                                        //   2 - Batch oplock granted
                                        //   3 - Level II oplock granted
  unsigned short fid;			// The file ID
  unsigned long create_action;		// The action taken
  smb_time creation_time;		// The time the file was created
  smb_time last_access_time;		// The time the file was accessed
  smb_time last_write_time;		// The time the file was last written
  smb_time change_time;			// The time the file was last changed
  unsigned long ext_file_attributes;	// The file attributes
  smb_size allocation_size;		// The number of byes allocated
  smb_size end_of_file;			// The end of file offset
  unsigned short file_type;	
  unsigned short device_state;		// State of IPC device (e.g. pipe)
  unsigned char directory;		// TRUE if this is a directory
};

//
// SMB CLOSE FILE request parameters
//

struct smb_close_file_request
{
  unsigned short fid;			  // File handle
  smb_time last_write_time; 		  // Time of last write
};

//
// SMB FLUSH FILE request parameters
//

struct smb_flush_file_request
{
  unsigned short fid;			  // File handle
};

//
// SMB READ FILE request parameters
//

struct smb_read_file_request
{
  struct smb_andx andx;
  unsigned short fid;			// File handle
  unsigned long offset;			// Offset in file to begin read
  unsigned short max_count;		// Max number of bytes to return
  unsigned short min_count;		// Reserved
  unsigned long reserved;		// Must be 0
  unsigned short remaining;		// Reserved
  unsigned long offset_high;		// Upper 32 bits of offset (only if wordcount is 12)
};

//
// SMB READ FILE response parameters
//

struct smb_read_file_response
{
  struct smb_andx andx;
  unsigned short remaining;		// Reserved -- must be -1
  unsigned short data_compaction_mode;	
  unsigned short reserved1;		// Reserved (must be 0)
  unsigned short data_length;		// Number of data bytes (min = 0)
  unsigned short data_offset;		// Offset (from header start) to data
  unsigned short reserved2[5];		// Reserved (must be 0)
};

//
// SMB READ FILE RAW request parameters
//

struct smb_read_raw_request
{
  unsigned short fid;			// File handle
  unsigned long offset;			// Offset in file to begin read
  unsigned short max_count;		// Max number of bytes to return
  unsigned short min_count;		// Reserved
  unsigned long timeout;		// Wait timeout if named pipe
  unsigned short reserved;		// Reserved
};


//
// SMB WRITE FILE request parameters
//

struct smb_write_file_request
{
  struct smb_andx andx;
  unsigned short fid;			// File handle
  unsigned long offset;			// Offset in file to begin read
  unsigned long reserved1;		// Must be 0
  unsigned short write_mode;		// Write mode bits: 0 - write through
  unsigned short remaining;		// Reserved
  unsigned short reserved2;		// Must be 0
  unsigned short data_length;		// Number of data bytes in buffer (>= 0)
  unsigned short data_offset;		// Offset to data bytes
  unsigned long offset_high;		// Upper 32 bits of offset (Only if wordcount is 14)
};

//
// SMB WRITE FILE response parameters
//

struct smb_write_file_response
{
  struct smb_andx andx;
  unsigned short count;			// Number of bytes written
  unsigned short remaining;		// Reserved -- must be -1
  unsigned short reserved;		// Reserved (must be 0)
};

//
// SMB RENAME request parameters
//

struct smb_rename_request
{
  unsigned short search_attributes;     // Target file attributes
};

//
// SMB DELETE request parameters
//

struct smb_delete_request
{
  unsigned short search_attributes;     // Target file attributes
};

//
// SMB COPY request parameters
//

struct smb_copy_request
{
  unsigned short tid2;			// Second (target) path TID
  unsigned short open_function;		// What to do if target file exists
  unsigned short flags;			// Flags to control copy operation:
					//   bit 0 - target must be a file
					//   bit 1 - target must be a dir.
					//   bit 2 - copy target mode: 0 = binary, 1 = ASCII
					//   bit 3 - copy source mode: 0 = binary, 1 = ASCII
					//   bit 4 - verify all writes
					//   bit 5 - tree copy
};

//
// SMB COPY response parameters
//

struct smb_copy_response
{
  unsigned short count;			// Number of files copied
};

//
// SMB FINDCLOSE2 request parameters
//

struct smb_findclose_request
{
  unsigned short sid;			// Search handle
};

//
// SMB TRANSACTION request parameters
//

struct smb_trans_request
{
  unsigned short total_parameter_count;	// Total parameter bytes being sent
  unsigned short total_data_count;	// Total data bytes being sent
  unsigned short max_parameter_count;	// Max parameter bytes to return
  unsigned short max_data_count;	// Max data bytes to return
  unsigned char max_setup_count;        // Max setup words to return
  unsigned char reserved;
  unsigned short flags;	                // Additional information: bit 0 - also disconnect TID in Tid
  unsigned long timeout;
  unsigned short reserved2;
  unsigned short parameter_count;	// Parameter bytes sent this buffer
  unsigned short parameter_offset;	// Offset (from header start) to Parameters
  unsigned short data_count;	        // Data bytes sent this buffer
  unsigned short data_offset;	        // Offset (from header start) to data
  unsigned char setup_count;	        // Count of setup words
  unsigned char reserved3;	        // Reserved (pad above to word)
  unsigned short setup[1];	        // Setup words (# = SetupWordCount)
};

//
// SMB TRANSACTION response parameters
//

struct smb_trans_response
{
  unsigned short total_parameter_count;	// Total parameter bytes being sent
  unsigned short total_data_count;	// Total data bytes being sent
  unsigned short reserved;		
  unsigned short parameter_count;	// Parameter bytes sent this buffer
  unsigned short parameter_offset;	// Offset (from header start) to Parameters
  unsigned short parameter_displacement;// Displacement of these Parameter bytes
  unsigned short data_count;		// Data bytes sent this buffer

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -