interfaces.h
来自「samba最新软件」· C头文件 代码 · 共 2,736 行 · 第 1/4 页
H
2,736 行
uint32_t access_mask; uint64_t position; uint32_t mode; uint32_t alignment_requirement; struct smb_wire_string fname; } out; } all_info2; /* RAW_FILEINFO_ALT_NAME_INFO and RAW_FILEINFO_ALT_NAME_INFORMATION interfaces */ struct { enum smb_fileinfo_level level; struct { union smb_handle_or_path file; } in; struct { struct smb_wire_string fname; } out; } alt_name_info; /* RAW_FILEINFO_STREAM_INFO and RAW_FILEINFO_STREAM_INFORMATION interfaces */ struct { enum smb_fileinfo_level level; struct { union smb_handle_or_path file; } in; struct stream_information { uint_t num_streams; struct stream_struct *streams; } out; } stream_info; /* RAW_FILEINFO_COMPRESSION_INFO and RAW_FILEINFO_COMPRESSION_INFORMATION interfaces */ struct { enum smb_fileinfo_level level; struct { union smb_handle_or_path file; } in; struct { uint64_t compressed_size; uint16_t format; uint8_t unit_shift; uint8_t chunk_shift; uint8_t cluster_shift; } out; } compression_info; /* RAW_FILEINFO_UNIX_BASIC interface */ struct { enum smb_fileinfo_level level; struct { union smb_handle_or_path file; } in; struct { uint64_t end_of_file; uint64_t num_bytes; NTTIME status_change_time; NTTIME access_time; NTTIME change_time; uint64_t uid; uint64_t gid; uint32_t file_type; uint64_t dev_major; uint64_t dev_minor; uint64_t unique_id; uint64_t permissions; uint64_t nlink; } out; } unix_basic_info; /* RAW_FILEINFO_UNIX_INFO2 interface */ struct { enum smb_fileinfo_level level; struct { union smb_handle_or_path file; } in; struct { uint64_t end_of_file; uint64_t num_bytes; NTTIME status_change_time; NTTIME access_time; NTTIME change_time; uint64_t uid; uint64_t gid; uint32_t file_type; uint64_t dev_major; uint64_t dev_minor; uint64_t unique_id; uint64_t permissions; uint64_t nlink; NTTIME create_time; uint32_t file_flags; uint32_t flags_mask; } out; } unix_info2; /* RAW_FILEINFO_UNIX_LINK interface */ struct { enum smb_fileinfo_level level; struct { union smb_handle_or_path file; } in; struct { struct smb_wire_string link_dest; } out; } unix_link_info; /* RAW_FILEINFO_INTERNAL_INFORMATION interface */ struct { enum smb_fileinfo_level level; struct { union smb_handle_or_path file; } in; struct { uint64_t file_id; } out; } internal_information; /* RAW_FILEINFO_ACCESS_INFORMATION interface */ struct { enum smb_fileinfo_level level; struct { union smb_handle_or_path file; } in; struct { uint32_t access_flags; } out; } access_information; /* RAW_FILEINFO_POSITION_INFORMATION interface */ struct { enum smb_fileinfo_level level; struct { union smb_handle_or_path file; } in; struct { uint64_t position; } out; } position_information; /* RAW_FILEINFO_MODE_INFORMATION interface */ struct { enum smb_fileinfo_level level; struct { union smb_handle_or_path file; } in; struct { uint32_t mode; } out; } mode_information; /* RAW_FILEINFO_ALIGNMENT_INFORMATION interface */ struct { enum smb_fileinfo_level level; struct { union smb_handle_or_path file; } in; struct { uint32_t alignment_requirement; } out; } alignment_information; /* RAW_FILEINFO_NETWORK_OPEN_INFORMATION interface */ struct { enum smb_fileinfo_level level; struct { union smb_handle_or_path file; } in; struct { NTTIME create_time; NTTIME access_time; NTTIME write_time; NTTIME change_time; uint64_t alloc_size; uint64_t size; uint32_t attrib; } out; } network_open_information; /* RAW_FILEINFO_ATTRIBUTE_TAG_INFORMATION interface */ struct { enum smb_fileinfo_level level; struct { union smb_handle_or_path file; } in; struct { uint32_t attrib; uint32_t reparse_tag; } out; } attribute_tag_information; /* RAW_FILEINFO_SEC_DESC */ struct { enum smb_fileinfo_level level; struct { union smb_handle_or_path file; uint32_t secinfo_flags; } in; struct { struct security_descriptor *sd; } out; } query_secdesc;};enum smb_setfileinfo_level { RAW_SFILEINFO_GENERIC = 0xF000, RAW_SFILEINFO_SETATTR, /* SMBsetatr */ RAW_SFILEINFO_SETATTRE, /* SMBsetattrE */ RAW_SFILEINFO_SEC_DESC, /* NT_TRANSACT_SET_SECURITY_DESC */ RAW_SFILEINFO_STANDARD = SMB_SFILEINFO_STANDARD, RAW_SFILEINFO_EA_SET = SMB_SFILEINFO_EA_SET, RAW_SFILEINFO_BASIC_INFO = SMB_SFILEINFO_BASIC_INFO, RAW_SFILEINFO_DISPOSITION_INFO = SMB_SFILEINFO_DISPOSITION_INFO, RAW_SFILEINFO_ALLOCATION_INFO = SMB_SFILEINFO_ALLOCATION_INFO, RAW_SFILEINFO_END_OF_FILE_INFO = SMB_SFILEINFO_END_OF_FILE_INFO, RAW_SFILEINFO_UNIX_BASIC = SMB_SFILEINFO_UNIX_BASIC, RAW_SFILEINFO_UNIX_INFO2 = SMB_SFILEINFO_UNIX_INFO2, RAW_SFILEINFO_UNIX_LINK = SMB_SFILEINFO_UNIX_LINK, RAW_SFILEINFO_UNIX_HLINK = SMB_SFILEINFO_UNIX_HLINK, RAW_SFILEINFO_BASIC_INFORMATION = SMB_SFILEINFO_BASIC_INFORMATION, RAW_SFILEINFO_RENAME_INFORMATION = SMB_SFILEINFO_RENAME_INFORMATION, RAW_SFILEINFO_DISPOSITION_INFORMATION = SMB_SFILEINFO_DISPOSITION_INFORMATION, RAW_SFILEINFO_POSITION_INFORMATION = SMB_SFILEINFO_POSITION_INFORMATION, RAW_SFILEINFO_MODE_INFORMATION = SMB_SFILEINFO_MODE_INFORMATION, RAW_SFILEINFO_ALLOCATION_INFORMATION = SMB_SFILEINFO_ALLOCATION_INFORMATION, RAW_SFILEINFO_END_OF_FILE_INFORMATION = SMB_SFILEINFO_END_OF_FILE_INFORMATION, RAW_SFILEINFO_1023 = SMB_SFILEINFO_1023, RAW_SFILEINFO_1025 = SMB_SFILEINFO_1025, RAW_SFILEINFO_1029 = SMB_SFILEINFO_1029, RAW_SFILEINFO_1032 = SMB_SFILEINFO_1032, RAW_SFILEINFO_1039 = SMB_SFILEINFO_1039, RAW_SFILEINFO_1040 = SMB_SFILEINFO_1040, /* cope with breakage in SMB2 */ RAW_SFILEINFO_RENAME_INFORMATION_SMB2 = SMB_SFILEINFO_RENAME_INFORMATION|0x80000000,};/* union used in setfileinfo() and setpathinfo() calls */union smb_setfileinfo { /* generic interface */ struct { enum smb_setfileinfo_level level; struct { union smb_handle_or_path file; } in; } generic; /* RAW_SFILEINFO_SETATTR (SMBsetatr) interface - only via setpathinfo() */ struct { enum smb_setfileinfo_level level; struct { union smb_handle_or_path file; uint16_t attrib; time_t write_time; } in; } setattr; /* RAW_SFILEINFO_SETATTRE (SMBsetattrE) interface - only via setfileinfo() also RAW_SFILEINFO_STANDARD */ struct { enum smb_setfileinfo_level level; struct { union smb_handle_or_path file; time_t create_time; time_t access_time; time_t write_time; /* notice that size, alloc_size and attrib are not settable, unlike the corresponding qfileinfo level */ } in; } setattre, standard; /* RAW_SFILEINFO_EA_SET interface */ struct { enum smb_setfileinfo_level level; struct { union smb_handle_or_path file; uint_t num_eas; struct ea_struct *eas; } in; } ea_set; /* RAW_SFILEINFO_BASIC_INFO and RAW_SFILEINFO_BASIC_INFORMATION interfaces */ struct { enum smb_setfileinfo_level level; struct { union smb_handle_or_path file; NTTIME create_time; NTTIME access_time; NTTIME write_time; NTTIME change_time; uint32_t attrib; } in; } basic_info; /* RAW_SFILEINFO_DISPOSITION_INFO and RAW_SFILEINFO_DISPOSITION_INFORMATION interfaces */ struct { enum smb_setfileinfo_level level; struct { union smb_handle_or_path file; bool delete_on_close; } in; } disposition_info; /* RAW_SFILEINFO_ALLOCATION_INFO and RAW_SFILEINFO_ALLOCATION_INFORMATION interfaces */ struct { enum smb_setfileinfo_level level; struct { union smb_handle_or_path file; /* w2k3 rounds this up to nearest 4096 */ uint64_t alloc_size; } in; } allocation_info; /* RAW_SFILEINFO_END_OF_FILE_INFO and RAW_SFILEINFO_END_OF_FILE_INFORMATION interfaces */ struct { enum smb_setfileinfo_level level; struct { union smb_handle_or_path file; uint64_t size; } in; } end_of_file_info; /* RAW_SFILEINFO_RENAME_INFORMATION interface */ struct { enum smb_setfileinfo_level level; struct { union smb_handle_or_path file; uint8_t overwrite; uint64_t root_fid; const char *new_name; } in; } rename_information; /* RAW_SFILEINFO_POSITION_INFORMATION interface */ struct { enum smb_setfileinfo_level level; struct { union smb_handle_or_path file; uint64_t position; } in; } position_information; /* RAW_SFILEINFO_MODE_INFORMATION interface */ struct { enum smb_setfileinfo_level level; struct { union smb_handle_or_path file; /* valid values seem to be 0, 2, 4 and 6 */ uint32_t mode; } in; } mode_information; /* RAW_SFILEINFO_UNIX_BASIC interface */ struct { enum smb_setfileinfo_level level; struct { union smb_handle_or_path file; uint32_t mode; /* yuck - this field remains to fix compile of libcli/clifile.c */ uint64_t end_of_file; uint64_t num_bytes; NTTIME status_change_time; NTTIME access_time; NTTIME change_time; uint64_t uid; uint64_t gid; uint32_t file_type; uint64_t dev_major; uint64_t dev_minor; uint64_t unique_id; uint64_t permissions; uint64_t nlink; } in; } unix_basic; /* RAW_SFILEINFO_UNIX_INFO2 interface */ struct { enum smb_setfileinfo_level level; struct { union smb_handle_or_path file; uint64_t end_of_file; uint64_t num_bytes; NTTIME status_change_time; NTTIME access_time; NTTIME change_time; uint64_t uid; uint64_t gid; uint32_t file_type; uint64_t dev_major; uint64_t dev_minor; uint64_t unique_id; uint64_t permissions; uint64_t nlink; NTTIME create_time; uint32_t file_flags; uint32_t flags_mask; } in; } unix_info2; /* RAW_SFILEINFO_UNIX_LINK, RAW_SFILEINFO_UNIX_HLINK interface */ struct { enum smb_setfileinfo_level level; struct { union smb_handle_or_path file; const char *link_dest; } in; } unix_link, unix_hlink; /* RAW_FILEINFO_SET_SEC_DESC */ struct { enum smb_setfileinfo_level level; struct { union smb_handle_or_path file; uint32_t secinfo_flags; struct security_descriptor *sd; } in; } set_secdesc;};enum smb_fsinfo_level { RAW_QFS_GENERIC = 0xF000, RAW_QFS_DSKATTR, /* SMBdskattr */ RAW_QFS_ALLOCATION = SMB_QFS_ALLOCATION, RAW_QFS_VOLUME = SMB_QFS_VOLUME, RAW_QFS_VOLUME_INFO = SMB_QFS_VOLUME_INFO, RAW_QFS_SIZE_INFO = SMB_QFS_SIZE_INFO, RAW_QFS_DEVICE_INFO = SMB_QFS_DEVICE_INFO, RAW_QFS_ATTRIBUTE_INFO = SMB_QFS_ATTRIBUTE_INFO, RAW_QFS_UNIX_INFO = SMB_QFS_UNIX_INFO, RAW_QFS_VOLUME_INFORMATION = SMB_QFS_VOLUME_INFORMATION, RAW_QFS_SIZE_INFORMATION = SMB_QFS_SIZE_INFORMATION, RAW_QFS_DEVICE_INFORMATION = SMB_QFS_DEVICE_INFORMATION, RAW_QFS_ATTRIBUTE_INFORMATION = SMB_QFS_ATTRIBUTE_INFORMATION, RAW_QFS_QUOTA_INFORMATION = SMB_QFS_QUOTA_INFORMATION, RAW_QFS_FULL_SIZE_INFORMATION = SMB_QFS_FULL_SIZE_INFORMATION, RAW_QFS_OBJECTID_INFORMATION = SMB_QFS_OBJECTID_INFORMATION};/* union for fsinfo() backend call. Note that there are no in structures, as this call only contains out parameters */union smb_fsinfo { /* generic interface */ struct { enum smb_fsinfo_level level; struct smb2_handle handle; /* only for smb2 */ struct { uint32_t block_size; uint64_t blocks_total; uint64_t blocks_free; uint32_t fs_id; NTTIME create_time; uint32_t serial_number; uint32_t fs_attr; uint32_t max_file_component_length; uint32_t device_type; uint32_t device_characteristics; uint64_t quota_soft; uint64_t quota_hard; uint64_t quota_flags; struct GUID guid; char *volume_name; char *fs_type; } out; } generic; /* SMBdskattr interface */ struct { enum smb_fsinfo_level level; struct { uint16_t units_total; uint16_t blocks_per_unit; uint16_t block_size; uint16_t units_free; } out; } dskattr; /* trans2 RAW_QFS_ALLOCATION interface */ struct { enum smb_fsinfo_level level; struct { uint32_t fs_id; uint32_t sectors_per_unit; uint32_t total_alloc_units; uint32_t avail_alloc_units; uint16_t bytes_per_sector; } out; } allocation; /* TRANS2 RAW_QFS_VOLUME interface */ struct { enum smb_fsinfo_level level; struct { uint32_t serial_number; struct smb_wire_string volume_name; } out; } volume; /* TRANS2 RAW_QFS_VOLUME_INFO and RAW_QFS_VOLUME_INFORMATION interfaces */ struct { enum smb_fsinfo_level level; struct smb2_handle handle; /* only for smb2 */ struct { NTTIME create_time; uint32_t serial_number; struct smb_wire_string volume_name; } out; } volume_info; /* trans2 RAW_QFS_SIZE_INFO and RAW_QFS_SIZE_INFORMATION interfaces */ struct { enum smb_fsinfo_level level; struct smb2_handle handle; /* only for smb2 */ struct { uint64_t total_alloc_units; uint64_t avail_alloc_units; /* maps to call_avail_alloc_units */ uint32_t sectors_per_unit; uint32_t bytes_per_sector; } out; } size_info; /* TRANS2 RAW_QFS_DEVICE_INFO and RAW_QFS_DEVICE_INFORMATION interfaces */ struct { enum smb_fsinfo_level level; struct smb2_handle handle; /* only for smb2 */ struct { uint32_t device_type; uint32_t characteristics; } out; } device_info; /* TRANS2 RAW_QFS_ATTRIBUTE_INFO and RAW_QFS_ATTRIBUTE_INFORMATION interfaces */ struct { enum smb_fsinfo_level level; struct smb2_handle handle; /* only for smb2 */ struct { uint32_t fs_attr; uint32_t max_file_component_length; struct smb_wire_string fs_type; } out; } attribute_info; /* TRANS2 RAW_QFS_UNIX_INFO interface */ struct { enum smb_fsinfo_level level; struct { uint16_t major_version; uint16_t minor_version; uint64_t capability; } out; } unix_info; /* trans2 RAW_QFS_QUOTA_INFORMATION interface */ struct { enum smb_fsinfo_level level; struct smb2_handle handle; /* only for smb2 */ struct { uint64_t unknown[3]; uint64_t quota_soft; uint64_t quota_hard; uint64_t quota_flags; } out; } quota_information; /* trans2 RAW_QFS_FULL_SIZE_INFORMATION interface */ struct { enum smb_fsinfo_level level; struct smb2_handle handle; /* only for smb2 */ struct { uint64_t total_alloc_units; uint64_t call_avail_alloc_units; uint64_t actual_avail_alloc_units; uint32_t sectors_per_unit; uint32_t bytes_per_sector; } out; } full_size_information; /* trans2 RAW_QFS_OBJECTID_INFORMATION interface */ struct { enum smb_fsinfo_level level; struct smb2_handle handle; /* only for smb2 */ struct { struct GUID guid; uint64_t unknown[6]; } out; } objectid_information; };enum smb_open_level { RAW_OPEN_OPEN, RAW_OPEN_OPENX, RAW_OPEN_MKNEW, RAW_OPEN_CREATE, RAW_OPEN_CTEMP, RAW_OPEN_SPLOPEN, RAW_OPEN_NTCREATEX, RAW_OPEN_T2OPEN, RAW_OPEN_NTTRANS_CREATE, RAW_OPEN_OPENX_READX, RAW_OPEN_SMB2};/* the generic interface is defined to be equal to the NTCREATEX interface */#define RAW_OPEN_GENERIC RAW_OPEN_NTCREATEX/* union for open() backend call */union smb_open {/* * because the *.out.file structs are not aligned to the same offset for each level * we provide a hepler macro that should be used to find the current smb_handle structure */#define SMB_OPEN_OUT_FILE(op, file) do { \ switch (op->generic.level) { \ case RAW_OPEN_OPEN: \ file = &op->openold.out.file; \ break; \ case RAW_OPEN_OPENX: \ file = &op->openx.out.file; \ break; \ case RAW_OPEN_MKNEW: \ file = &op->mknew.out.file; \ break; \ case RAW_OPEN_CREATE: \ file = &op->create.out.file; \ break; \ case RAW_OPEN_CTEMP: \ file = &op->ctemp.out.file; \ break; \ case RAW_OPEN_SPLOPEN: \ file = &op->splopen.out.file; \ break; \ case RAW_OPEN_NTCREATEX: \ file = &op->ntcreatex.out.file; \ break; \ case RAW_OPEN_T2OPEN: \ file = &op->t2open.out.file; \ break; \ case RAW_OPEN_NTTRANS_CREATE: \ file = &op->nttrans.out.file; \ break; \ case RAW_OPEN_OPENX_READX: \ file = &op->openxreadx.out.file; \ break; \ case RAW_OPEN_SMB2: \ file = &op->smb2.out.file; \ break; \ default: \ /* this must be a programmer error */ \ file = NULL; \ break; \ } \} while (0) /* SMBNTCreateX, nttrans and generic interface */ struct { enum smb_open_level level; struct { uint32_t flags; uint32_t root_fid; uint32_t access_mask; uint64_t alloc_size; uint32_t file_attr; uint32_t share_access; uint32_t open_disposition; uint32_t create_options;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?