Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'v7.0-rc-part1-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6

Pull smb client updates from Steve French:

- multichannel improvements, including making add channel async at
mount time

- fix potential double free in open path

- retry fixes

- locking improvements

- fix potential directory lease races

- cleanup patches for client headers

- patches to better split out SMB1 code

- minor cleanup of structs for gcc 14 warnings

- error handling improvements

* tag 'v7.0-rc-part1-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6: (74 commits)
cifs: Fix the copyright banner on smb1maperror.c
smb: common: add header guards to fs/smb/common/smb2status.h
smb: client: Avoid a dozen -Wflex-array-member-not-at-end warnings
smb/client: remove useless comment in mapping_table_ERRSRV
smb/client: remove some literal NT error codes from ntstatus_to_dos_map
smb/client: add NT_STATUS_VOLUME_NOT_UPGRADED
smb/client: add NT_STATUS_NO_USER_KEYS
smb/client: add NT_STATUS_WRONG_EFS
smb/client: add NT_STATUS_NO_EFS
smb/client: add NT_STATUS_NO_RECOVERY_POLICY
smb/client: add NT_STATUS_RANGE_NOT_FOUND
smb/client: add NT_STATUS_DECRYPTION_FAILED
smb/client: add NT_STATUS_ENCRYPTION_FAILED
smb/client: add NT_STATUS_DIRECTORY_IS_A_REPARSE_POINT
smb/client: add NT_STATUS_VOLUME_DISMOUNTED
smb/client: add NT_STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT
smb/client: add NT_STATUS_VARIABLE_NOT_FOUND
smb/client: rename ERRinvlevel to ERRunknownlevel
smb/client: add NT_STATUS_OS2_INVALID_LEVEL
smb/client: map NT_STATUS_INVALID_INFO_CLASS to ERRbadpipe
...

+8643 -10499
+10
fs/netfs/read_collect.c
··· 546 546 } 547 547 } 548 548 549 + /* If need retry is set, error should not matter unless we hit too many 550 + * retries. Pause the generation of new subreqs 551 + */ 552 + if (test_bit(NETFS_SREQ_NEED_RETRY, &subreq->flags)) { 553 + trace_netfs_rreq(rreq, netfs_rreq_trace_set_pause); 554 + set_bit(NETFS_RREQ_PAUSE, &rreq->flags); 555 + goto skip_error_checks; 556 + } 557 + 549 558 if (unlikely(subreq->error < 0)) { 550 559 trace_netfs_failure(rreq, subreq, subreq->error, netfs_fail_read); 551 560 if (subreq->source == NETFS_READ_FROM_CACHE) { ··· 568 559 set_bit(NETFS_RREQ_PAUSE, &rreq->flags); 569 560 } 570 561 562 + skip_error_checks: 571 563 trace_netfs_sreq(subreq, netfs_sreq_trace_terminated); 572 564 netfs_subreq_clear_in_progress(subreq); 573 565 netfs_put_subrequest(subreq, netfs_sreq_trace_put_terminated);
+2 -2
fs/netfs/read_retry.c
··· 12 12 static void netfs_reissue_read(struct netfs_io_request *rreq, 13 13 struct netfs_io_subrequest *subreq) 14 14 { 15 + subreq->error = 0; 15 16 __clear_bit(NETFS_SREQ_MADE_PROGRESS, &subreq->flags); 16 17 __set_bit(NETFS_SREQ_IN_PROGRESS, &subreq->flags); 17 18 netfs_stat(&netfs_n_rh_retry_read_subreq); ··· 243 242 subreq = list_next_entry(subreq, rreq_link); 244 243 abandon: 245 244 list_for_each_entry_from(subreq, &stream->subrequests, rreq_link) { 246 - if (!subreq->error && 247 - !test_bit(NETFS_SREQ_FAILED, &subreq->flags) && 245 + if (!test_bit(NETFS_SREQ_FAILED, &subreq->flags) && 248 246 !test_bit(NETFS_SREQ_NEED_RETRY, &subreq->flags)) 249 247 continue; 250 248 subreq->error = -ENOMEM;
+4 -4
fs/netfs/write_collect.c
··· 492 492 493 493 if (IS_ERR_VALUE(transferred_or_error)) { 494 494 subreq->error = transferred_or_error; 495 - if (subreq->error == -EAGAIN) 496 - set_bit(NETFS_SREQ_NEED_RETRY, &subreq->flags); 497 - else 495 + /* if need retry is set, error should not matter */ 496 + if (!test_bit(NETFS_SREQ_NEED_RETRY, &subreq->flags)) { 498 497 set_bit(NETFS_SREQ_FAILED, &subreq->flags); 499 - trace_netfs_failure(wreq, subreq, transferred_or_error, netfs_fail_write); 498 + trace_netfs_failure(wreq, subreq, transferred_or_error, netfs_fail_write); 499 + } 500 500 501 501 switch (subreq->source) { 502 502 case NETFS_WRITE_TO_CACHE:
+1
fs/netfs/write_issue.c
··· 250 250 iov_iter_truncate(&subreq->io_iter, size); 251 251 252 252 subreq->retry_count++; 253 + subreq->error = 0; 253 254 __clear_bit(NETFS_SREQ_MADE_PROGRESS, &subreq->flags); 254 255 __set_bit(NETFS_SREQ_IN_PROGRESS, &subreq->flags); 255 256 netfs_stat(&netfs_n_wh_retry_write_subreq);
-1
fs/netfs/write_retry.c
··· 98 98 subreq->start = start; 99 99 subreq->len = len; 100 100 __clear_bit(NETFS_SREQ_NEED_RETRY, &subreq->flags); 101 - subreq->retry_count++; 102 101 trace_netfs_sreq(subreq, netfs_sreq_trace_retry); 103 102 104 103 /* Renegotiate max_len (wsize) */
+17
fs/smb/Kconfig
··· 9 9 tristate 10 10 default y if CIFS=y || SMB_SERVER=y 11 11 default m if CIFS=m || SMB_SERVER=m 12 + 13 + config SMB_KUNIT_TESTS 14 + tristate "KUnit tests for SMB" if !KUNIT_ALL_TESTS 15 + depends on SMBFS && KUNIT 16 + default KUNIT_ALL_TESTS 17 + help 18 + This builds the SMB KUnit tests. 19 + 20 + KUnit tests run during boot and output the results to the debug log 21 + in TAP format (https://testanything.org/). Only useful for kernel devs 22 + running KUnit test harness and are not for inclusion into a production 23 + build. 24 + 25 + For more information on KUnit and unit tests in general please refer 26 + to the KUnit documentation in Documentation/dev-tools/kunit/. 27 + 28 + If unsure, say N.
+23 -1
fs/smb/client/Makefile
··· 32 32 33 33 cifs-$(CONFIG_CIFS_ROOT) += cifsroot.o 34 34 35 - cifs-$(CONFIG_CIFS_ALLOW_INSECURE_LEGACY) += smb1ops.o cifssmb.o cifstransport.o 35 + cifs-$(CONFIG_CIFS_ALLOW_INSECURE_LEGACY) += \ 36 + cifssmb.o \ 37 + smb1debug.o \ 38 + smb1encrypt.o \ 39 + smb1maperror.o \ 40 + smb1misc.o \ 41 + smb1ops.o \ 42 + smb1session.o \ 43 + smb1transport.o 36 44 37 45 cifs-$(CONFIG_CIFS_COMPRESSION) += compress.o compress/lz77.o 46 + 47 + # 48 + # Build the SMB2 error mapping table from smb2status.h 49 + # 50 + $(obj)/smb2_mapping_table.c: $(src)/../common/smb2status.h \ 51 + $(src)/gen_smb2_mapping 52 + $(call cmd,gen_smb2_mapping) 53 + 54 + $(obj)/smb2maperror.o: $(obj)/smb2_mapping_table.c 55 + 56 + quiet_cmd_gen_smb2_mapping = GEN $@ 57 + cmd_gen_smb2_mapping = perl $(src)/gen_smb2_mapping $< $@ 58 + 59 + clean-files += smb2_mapping_table.c
+7 -3
fs/smb/client/cached_dir.c
··· 154 154 struct cached_fid *cfid; 155 155 struct cached_fids *cfids; 156 156 const char *npath; 157 - int retries = 0, cur_sleep = 1; 157 + int retries = 0, cur_sleep = 0; 158 158 __le32 lease_flags = 0; 159 159 160 160 if (cifs_sb->root == NULL) ··· 304 304 smb2_set_related(&rqst[1]); 305 305 306 306 if (retries) { 307 + /* Back-off before retry */ 308 + if (cur_sleep) 309 + msleep(cur_sleep); 310 + 307 311 smb2_set_replay(server, &rqst[0]); 308 312 smb2_set_replay(server, &rqst[1]); 309 313 } ··· 792 788 cfid->dentry = NULL; 793 789 794 790 if (cfid->is_open) { 795 - spin_lock(&cifs_tcp_ses_lock); 791 + spin_lock(&cfid->tcon->tc_lock); 796 792 ++cfid->tcon->tc_count; 797 793 trace_smb3_tcon_ref(cfid->tcon->debug_id, cfid->tcon->tc_count, 798 794 netfs_trace_tcon_ref_get_cached_laundromat); 799 - spin_unlock(&cifs_tcp_ses_lock); 795 + spin_unlock(&cfid->tcon->tc_lock); 800 796 queue_work(serverclose_wq, &cfid->close_work); 801 797 } else 802 798 /*
+20 -22
fs/smb/client/cached_dir.h
··· 36 36 struct list_head entry; 37 37 struct cached_fids *cfids; 38 38 const char *path; 39 - bool has_lease:1; 40 - bool is_open:1; 41 - bool on_list:1; 42 - bool file_all_info_is_valid:1; 39 + bool has_lease; 40 + bool is_open; 41 + bool on_list; 42 + bool file_all_info_is_valid; 43 43 unsigned long time; /* jiffies of when lease was taken */ 44 44 unsigned long last_access_time; /* jiffies of when last accessed */ 45 45 struct kref refcount; ··· 48 48 struct dentry *dentry; 49 49 struct work_struct put_work; 50 50 struct work_struct close_work; 51 - struct smb2_file_all_info file_all_info; 52 51 struct cached_dirents dirents; 52 + 53 + /* Must be last as it ends in a flexible-array member. */ 54 + struct smb2_file_all_info file_all_info; 53 55 }; 54 56 55 57 /* default MAX_CACHED_FIDS is 16 */ ··· 79 77 return cfid->time && cfid->has_lease; 80 78 } 81 79 82 - extern struct cached_fids *init_cached_dirs(void); 83 - extern void free_cached_dirs(struct cached_fids *cfids); 84 - extern int open_cached_dir(unsigned int xid, struct cifs_tcon *tcon, 85 - const char *path, 86 - struct cifs_sb_info *cifs_sb, 87 - bool lookup_only, struct cached_fid **cfid); 88 - extern int open_cached_dir_by_dentry(struct cifs_tcon *tcon, 89 - struct dentry *dentry, 90 - struct cached_fid **cfid); 91 - extern void close_cached_dir(struct cached_fid *cfid); 92 - extern void drop_cached_dir_by_name(const unsigned int xid, 93 - struct cifs_tcon *tcon, 94 - const char *name, 95 - struct cifs_sb_info *cifs_sb); 96 - extern void close_all_cached_dirs(struct cifs_sb_info *cifs_sb); 97 - extern void invalidate_all_cached_dirs(struct cifs_tcon *tcon); 98 - extern bool cached_dir_lease_break(struct cifs_tcon *tcon, __u8 lease_key[16]); 80 + struct cached_fids *init_cached_dirs(void); 81 + void free_cached_dirs(struct cached_fids *cfids); 82 + int open_cached_dir(unsigned int xid, struct cifs_tcon *tcon, const char *path, 83 + struct cifs_sb_info *cifs_sb, bool lookup_only, 84 + struct cached_fid **ret_cfid); 85 + int open_cached_dir_by_dentry(struct cifs_tcon *tcon, struct dentry *dentry, 86 + struct cached_fid **ret_cfid); 87 + void close_cached_dir(struct cached_fid *cfid); 88 + void drop_cached_dir_by_name(const unsigned int xid, struct cifs_tcon *tcon, 89 + const char *name, struct cifs_sb_info *cifs_sb); 90 + void close_all_cached_dirs(struct cifs_sb_info *cifs_sb); 91 + void invalidate_all_cached_dirs(struct cifs_tcon *tcon); 92 + bool cached_dir_lease_break(struct cifs_tcon *tcon, __u8 lease_key[16]); 99 93 100 94 #endif /* _CACHED_DIR_H */
+1 -17
fs/smb/client/cifs_debug.c
··· 13 13 #include <linux/proc_fs.h> 14 14 #include <linux/uaccess.h> 15 15 #include <uapi/linux/ethtool.h> 16 - #include "cifspdu.h" 17 16 #include "cifsglob.h" 18 17 #include "cifsproto.h" 19 18 #include "cifs_debug.h" ··· 34 35 pr_debug("%s: dump of %d bytes of data at 0x%p\n", label, length, data); 35 36 print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_OFFSET, 16, 4, 36 37 data, length, true); 37 - } 38 - 39 - void cifs_dump_detail(void *buf, size_t buf_len, struct TCP_Server_Info *server) 40 - { 41 - #ifdef CONFIG_CIFS_DEBUG2 42 - struct smb_hdr *smb = buf; 43 - 44 - cifs_dbg(VFS, "Cmd: %d Err: 0x%x Flags: 0x%x Flgs2: 0x%x Mid: %d Pid: %d Wct: %d\n", 45 - smb->Command, smb->Status.CifsError, smb->Flags, 46 - smb->Flags2, smb->Mid, smb->Pid, smb->WordCount); 47 - if (!server->ops->check_message(buf, buf_len, server->total_read, server)) { 48 - cifs_dbg(VFS, "smb buf %p len %u\n", smb, 49 - server->ops->calc_smb_size(smb)); 50 - } 51 - #endif /* CONFIG_CIFS_DEBUG2 */ 52 38 } 53 39 54 40 void cifs_dump_mids(struct TCP_Server_Info *server) ··· 63 79 cifs_dbg(VFS, "IsMult: %d IsEnd: %d\n", 64 80 mid_entry->multiRsp, mid_entry->multiEnd); 65 81 if (mid_entry->resp_buf) { 66 - cifs_dump_detail(mid_entry->resp_buf, 82 + server->ops->dump_detail(mid_entry->resp_buf, 67 83 mid_entry->response_pdu_len, server); 68 84 cifs_dump_mem("existing buf: ", mid_entry->resp_buf, 62); 69 85 }
-1
fs/smb/client/cifs_debug.h
··· 15 15 #define pr_fmt(fmt) "CIFS: " fmt 16 16 17 17 void cifs_dump_mem(char *label, void *data, int length); 18 - void cifs_dump_detail(void *buf, size_t buf_len, struct TCP_Server_Info *server); 19 18 void cifs_dump_mids(struct TCP_Server_Info *server); 20 19 extern bool traceSMB; /* flag which enables the function below */ 21 20 void dump_smb(void *buf, int smb_buf_length);
+2 -2
fs/smb/client/cifs_spnego.h
··· 28 28 }; 29 29 30 30 extern struct key_type cifs_spnego_key_type; 31 - extern struct key *cifs_get_spnego_key(struct cifs_ses *sesInfo, 32 - struct TCP_Server_Info *server); 31 + struct key *cifs_get_spnego_key(struct cifs_ses *sesInfo, 32 + struct TCP_Server_Info *server); 33 33 34 34 #endif /* _CIFS_SPNEGO_H */
+5 -5
fs/smb/client/cifs_swn.h
··· 14 14 struct genl_info; 15 15 16 16 #ifdef CONFIG_CIFS_SWN_UPCALL 17 - extern int cifs_swn_register(struct cifs_tcon *tcon); 17 + int cifs_swn_register(struct cifs_tcon *tcon); 18 18 19 - extern int cifs_swn_unregister(struct cifs_tcon *tcon); 19 + int cifs_swn_unregister(struct cifs_tcon *tcon); 20 20 21 - extern int cifs_swn_notify(struct sk_buff *skb, struct genl_info *info); 21 + int cifs_swn_notify(struct sk_buff *skb, struct genl_info *info); 22 22 23 - extern void cifs_swn_dump(struct seq_file *m); 23 + void cifs_swn_dump(struct seq_file *m); 24 24 25 - extern void cifs_swn_check(void); 25 + void cifs_swn_check(void); 26 26 27 27 static inline bool cifs_swn_set_server_dstaddr(struct TCP_Server_Info *server) 28 28 {
-1
fs/smb/client/cifs_unicode.c
··· 8 8 #include <linux/slab.h> 9 9 #include "cifs_fs_sb.h" 10 10 #include "cifs_unicode.h" 11 - #include "cifspdu.h" 12 11 #include "cifsglob.h" 13 12 #include "cifs_debug.h" 14 13
+9 -8
fs/smb/client/cifs_unicode.h
··· 55 55 #define SFU_MAP_UNI_RSVD 2 56 56 57 57 int cifs_from_utf16(char *to, const __le16 *from, int tolen, int fromlen, 58 - const struct nls_table *cp, int map_type); 58 + const struct nls_table *codepage, int map_type); 59 59 int cifs_utf16_bytes(const __le16 *from, int maxbytes, 60 60 const struct nls_table *codepage); 61 - int cifs_strtoUTF16(__le16 *, const char *, int, const struct nls_table *); 61 + int cifs_strtoUTF16(__le16 *to, const char *from, int len, 62 + const struct nls_table *codepage); 62 63 char *cifs_strndup_from_utf16(const char *src, const int maxlen, 63 64 const bool is_unicode, 64 65 const struct nls_table *codepage); 65 - extern int cifsConvertToUTF16(__le16 *target, const char *source, int maxlen, 66 - const struct nls_table *cp, int mapChars); 67 - extern int cifs_remap(struct cifs_sb_info *cifs_sb); 68 - extern __le16 *cifs_strndup_to_utf16(const char *src, const int maxlen, 69 - int *utf16_len, const struct nls_table *cp, 70 - int remap); 66 + int cifsConvertToUTF16(__le16 *target, const char *source, int srclen, 67 + const struct nls_table *cp, int map_chars); 68 + int cifs_remap(struct cifs_sb_info *cifs_sb); 69 + __le16 *cifs_strndup_to_utf16(const char *src, const int maxlen, 70 + int *utf16_len, const struct nls_table *cp, 71 + int remap); 71 72 wchar_t cifs_toupper(wchar_t in); 72 73 73 74 #endif /* _CIFS_UNICODE_H */
-1
fs/smb/client/cifsacl.c
··· 17 17 #include <linux/posix_acl.h> 18 18 #include <linux/posix_acl_xattr.h> 19 19 #include <keys/user-type.h> 20 - #include "cifspdu.h" 21 20 #include "cifsglob.h" 22 21 #include "cifsacl.h" 23 22 #include "cifsproto.h"
-124
fs/smb/client/cifsencrypt.c
··· 11 11 12 12 #include <linux/fs.h> 13 13 #include <linux/slab.h> 14 - #include "cifspdu.h" 15 14 #include "cifsglob.h" 16 15 #include "cifs_debug.h" 17 16 #include "cifs_unicode.h" ··· 113 114 cifs_dbg(VFS, "%s: Could not generate hash\n", __func__); 114 115 115 116 return rc; 116 - } 117 - 118 - /* 119 - * Calculate and return the CIFS signature based on the mac key and SMB PDU. 120 - * The 16 byte signature must be allocated by the caller. Note we only use the 121 - * 1st eight bytes and that the smb header signature field on input contains 122 - * the sequence number before this function is called. Also, this function 123 - * should be called with the server->srv_mutex held. 124 - */ 125 - static int cifs_calc_signature(struct smb_rqst *rqst, 126 - struct TCP_Server_Info *server, char *signature) 127 - { 128 - struct md5_ctx ctx; 129 - 130 - if (!rqst->rq_iov || !signature || !server) 131 - return -EINVAL; 132 - if (fips_enabled) { 133 - cifs_dbg(VFS, 134 - "MD5 signature support is disabled due to FIPS\n"); 135 - return -EOPNOTSUPP; 136 - } 137 - 138 - md5_init(&ctx); 139 - md5_update(&ctx, server->session_key.response, server->session_key.len); 140 - 141 - return __cifs_calc_signature( 142 - rqst, server, signature, 143 - &(struct cifs_calc_sig_ctx){ .md5 = &ctx }); 144 - } 145 - 146 - /* must be called with server->srv_mutex held */ 147 - int cifs_sign_rqst(struct smb_rqst *rqst, struct TCP_Server_Info *server, 148 - __u32 *pexpected_response_sequence_number) 149 - { 150 - int rc = 0; 151 - char smb_signature[20]; 152 - struct smb_hdr *cifs_pdu = (struct smb_hdr *)rqst->rq_iov[0].iov_base; 153 - 154 - if ((cifs_pdu == NULL) || (server == NULL)) 155 - return -EINVAL; 156 - 157 - spin_lock(&server->srv_lock); 158 - if (!(cifs_pdu->Flags2 & SMBFLG2_SECURITY_SIGNATURE) || 159 - server->tcpStatus == CifsNeedNegotiate) { 160 - spin_unlock(&server->srv_lock); 161 - return rc; 162 - } 163 - spin_unlock(&server->srv_lock); 164 - 165 - if (!server->session_estab) { 166 - memcpy(cifs_pdu->Signature.SecuritySignature, "BSRSPYL", 8); 167 - return rc; 168 - } 169 - 170 - cifs_pdu->Signature.Sequence.SequenceNumber = 171 - cpu_to_le32(server->sequence_number); 172 - cifs_pdu->Signature.Sequence.Reserved = 0; 173 - 174 - *pexpected_response_sequence_number = ++server->sequence_number; 175 - ++server->sequence_number; 176 - 177 - rc = cifs_calc_signature(rqst, server, smb_signature); 178 - if (rc) 179 - memset(cifs_pdu->Signature.SecuritySignature, 0, 8); 180 - else 181 - memcpy(cifs_pdu->Signature.SecuritySignature, smb_signature, 8); 182 - 183 - return rc; 184 - } 185 - 186 - int cifs_verify_signature(struct smb_rqst *rqst, 187 - struct TCP_Server_Info *server, 188 - __u32 expected_sequence_number) 189 - { 190 - unsigned int rc; 191 - char server_response_sig[8]; 192 - char what_we_think_sig_should_be[20]; 193 - struct smb_hdr *cifs_pdu = (struct smb_hdr *)rqst->rq_iov[0].iov_base; 194 - 195 - if (cifs_pdu == NULL || server == NULL) 196 - return -EINVAL; 197 - 198 - if (!server->session_estab) 199 - return 0; 200 - 201 - if (cifs_pdu->Command == SMB_COM_LOCKING_ANDX) { 202 - struct smb_com_lock_req *pSMB = 203 - (struct smb_com_lock_req *)cifs_pdu; 204 - if (pSMB->LockType & LOCKING_ANDX_OPLOCK_RELEASE) 205 - return 0; 206 - } 207 - 208 - /* BB what if signatures are supposed to be on for session but 209 - server does not send one? BB */ 210 - 211 - /* Do not need to verify session setups with signature "BSRSPYL " */ 212 - if (memcmp(cifs_pdu->Signature.SecuritySignature, "BSRSPYL ", 8) == 0) 213 - cifs_dbg(FYI, "dummy signature received for smb command 0x%x\n", 214 - cifs_pdu->Command); 215 - 216 - /* save off the original signature so we can modify the smb and check 217 - its signature against what the server sent */ 218 - memcpy(server_response_sig, cifs_pdu->Signature.SecuritySignature, 8); 219 - 220 - cifs_pdu->Signature.Sequence.SequenceNumber = 221 - cpu_to_le32(expected_sequence_number); 222 - cifs_pdu->Signature.Sequence.Reserved = 0; 223 - 224 - cifs_server_lock(server); 225 - rc = cifs_calc_signature(rqst, server, what_we_think_sig_should_be); 226 - cifs_server_unlock(server); 227 - 228 - if (rc) 229 - return rc; 230 - 231 - /* cifs_dump_mem("what we think it should be: ", 232 - what_we_think_sig_should_be, 16); */ 233 - 234 - if (memcmp(server_response_sig, what_we_think_sig_should_be, 8)) 235 - return -EACCES; 236 - else 237 - return 0; 238 - 239 117 } 240 118 241 119 /* Build a proper attribute value/target info pairs blob.
+5 -1
fs/smb/client/cifsfs.c
··· 33 33 #include <uapi/linux/magic.h> 34 34 #include <net/ipv6.h> 35 35 #include "cifsfs.h" 36 - #include "cifspdu.h" 37 36 #define DECLARE_GLOBALS_HERE 38 37 #include "cifsglob.h" 39 38 #include "cifsproto.h" ··· 1903 1904 init_cifs(void) 1904 1905 { 1905 1906 int rc = 0; 1907 + 1908 + rc = smb2_init_maperror(); 1909 + if (rc) 1910 + return rc; 1911 + 1906 1912 cifs_proc_init(); 1907 1913 INIT_LIST_HEAD(&cifs_tcp_ses_list); 1908 1914 /*
+58 -56
fs/smb/client/cifsfs.h
··· 43 43 extern const struct address_space_operations cifs_addr_ops_smallbuf; 44 44 45 45 /* Functions related to super block operations */ 46 - extern void cifs_sb_active(struct super_block *sb); 47 - extern void cifs_sb_deactive(struct super_block *sb); 46 + void cifs_sb_active(struct super_block *sb); 47 + void cifs_sb_deactive(struct super_block *sb); 48 48 49 49 /* Functions related to inodes */ 50 50 extern const struct inode_operations cifs_dir_inode_ops; 51 - extern struct inode *cifs_root_iget(struct super_block *); 52 - extern int cifs_create(struct mnt_idmap *, struct inode *, 53 - struct dentry *, umode_t, bool excl); 54 - extern int cifs_atomic_open(struct inode *, struct dentry *, 55 - struct file *, unsigned, umode_t); 56 - extern struct dentry *cifs_lookup(struct inode *, struct dentry *, 57 - unsigned int); 58 - extern int cifs_unlink(struct inode *dir, struct dentry *dentry); 59 - extern int cifs_hardlink(struct dentry *, struct inode *, struct dentry *); 60 - extern int cifs_mknod(struct mnt_idmap *, struct inode *, struct dentry *, 61 - umode_t, dev_t); 62 - extern struct dentry *cifs_mkdir(struct mnt_idmap *, struct inode *, struct dentry *, 63 - umode_t); 64 - extern int cifs_rmdir(struct inode *, struct dentry *); 65 - extern int cifs_rename2(struct mnt_idmap *, struct inode *, 66 - struct dentry *, struct inode *, struct dentry *, 67 - unsigned int); 68 - extern int cifs_revalidate_file_attr(struct file *filp); 69 - extern int cifs_revalidate_dentry_attr(struct dentry *); 70 - extern int cifs_revalidate_file(struct file *filp); 71 - extern int cifs_revalidate_dentry(struct dentry *); 72 - extern int cifs_revalidate_mapping(struct inode *inode); 73 - extern int cifs_zap_mapping(struct inode *inode); 74 - extern int cifs_getattr(struct mnt_idmap *, const struct path *, 75 - struct kstat *, u32, unsigned int); 76 - extern int cifs_setattr(struct mnt_idmap *, struct dentry *, 77 - struct iattr *); 78 - extern int cifs_fiemap(struct inode *, struct fiemap_extent_info *, u64 start, 79 - u64 len); 51 + struct inode *cifs_root_iget(struct super_block *sb); 52 + int cifs_create(struct mnt_idmap *idmap, struct inode *inode, 53 + struct dentry *direntry, umode_t mode, bool excl); 54 + int cifs_atomic_open(struct inode *inode, struct dentry *direntry, 55 + struct file *file, unsigned int oflags, umode_t mode); 56 + struct dentry *cifs_lookup(struct inode *parent_dir_inode, 57 + struct dentry *direntry, unsigned int flags); 58 + int cifs_unlink(struct inode *dir, struct dentry *dentry); 59 + int cifs_hardlink(struct dentry *old_file, struct inode *inode, 60 + struct dentry *direntry); 61 + int cifs_mknod(struct mnt_idmap *idmap, struct inode *inode, 62 + struct dentry *direntry, umode_t mode, dev_t device_number); 63 + struct dentry *cifs_mkdir(struct mnt_idmap *idmap, struct inode *inode, 64 + struct dentry *direntry, umode_t mode); 65 + int cifs_rmdir(struct inode *inode, struct dentry *direntry); 66 + int cifs_rename2(struct mnt_idmap *idmap, struct inode *source_dir, 67 + struct dentry *source_dentry, struct inode *target_dir, 68 + struct dentry *target_dentry, unsigned int flags); 69 + int cifs_revalidate_file_attr(struct file *filp); 70 + int cifs_revalidate_dentry_attr(struct dentry *dentry); 71 + int cifs_revalidate_file(struct file *filp); 72 + int cifs_revalidate_dentry(struct dentry *dentry); 73 + int cifs_revalidate_mapping(struct inode *inode); 74 + int cifs_zap_mapping(struct inode *inode); 75 + int cifs_getattr(struct mnt_idmap *idmap, const struct path *path, 76 + struct kstat *stat, u32 request_mask, unsigned int flags); 77 + int cifs_setattr(struct mnt_idmap *idmap, struct dentry *direntry, 78 + struct iattr *attrs); 79 + int cifs_fiemap(struct inode *inode, struct fiemap_extent_info *fei, u64 start, 80 + u64 len); 80 81 81 82 extern const struct inode_operations cifs_file_inode_ops; 82 83 extern const struct inode_operations cifs_symlink_inode_ops; ··· 92 91 extern const struct file_operations cifs_file_nobrl_ops; /* no brlocks */ 93 92 extern const struct file_operations cifs_file_direct_nobrl_ops; 94 93 extern const struct file_operations cifs_file_strict_nobrl_ops; 95 - extern int cifs_open(struct inode *inode, struct file *file); 96 - extern int cifs_close(struct inode *inode, struct file *file); 97 - extern int cifs_closedir(struct inode *inode, struct file *file); 98 - extern ssize_t cifs_strict_readv(struct kiocb *iocb, struct iov_iter *to); 99 - extern ssize_t cifs_strict_writev(struct kiocb *iocb, struct iov_iter *from); 94 + int cifs_open(struct inode *inode, struct file *file); 95 + int cifs_close(struct inode *inode, struct file *file); 96 + int cifs_closedir(struct inode *inode, struct file *file); 97 + ssize_t cifs_strict_readv(struct kiocb *iocb, struct iov_iter *to); 98 + ssize_t cifs_strict_writev(struct kiocb *iocb, struct iov_iter *from); 100 99 ssize_t cifs_file_write_iter(struct kiocb *iocb, struct iov_iter *from); 101 100 ssize_t cifs_loose_read_iter(struct kiocb *iocb, struct iov_iter *iter); 102 - extern int cifs_flock(struct file *pfile, int cmd, struct file_lock *plock); 103 - extern int cifs_lock(struct file *, int, struct file_lock *); 104 - extern int cifs_fsync(struct file *, loff_t, loff_t, int); 105 - extern int cifs_strict_fsync(struct file *, loff_t, loff_t, int); 106 - extern int cifs_flush(struct file *, fl_owner_t id); 101 + int cifs_flock(struct file *file, int cmd, struct file_lock *fl); 102 + int cifs_lock(struct file *file, int cmd, struct file_lock *flock); 103 + int cifs_fsync(struct file *file, loff_t start, loff_t end, int datasync); 104 + int cifs_strict_fsync(struct file *file, loff_t start, loff_t end, 105 + int datasync); 106 + int cifs_flush(struct file *file, fl_owner_t id); 107 107 int cifs_file_mmap_prepare(struct vm_area_desc *desc); 108 108 int cifs_file_strict_mmap_prepare(struct vm_area_desc *desc); 109 109 extern const struct file_operations cifs_dir_ops; 110 - extern int cifs_readdir(struct file *file, struct dir_context *ctx); 110 + int cifs_readdir(struct file *file, struct dir_context *ctx); 111 111 112 112 /* Functions related to dir entries */ 113 113 extern const struct dentry_operations cifs_dentry_ops; 114 114 extern const struct dentry_operations cifs_ci_dentry_ops; 115 115 116 - extern struct vfsmount *cifs_d_automount(struct path *path); 116 + struct vfsmount *cifs_d_automount(struct path *path); 117 117 118 118 /* Functions related to symlinks */ 119 - extern const char *cifs_get_link(struct dentry *, struct inode *, 120 - struct delayed_call *); 121 - extern int cifs_symlink(struct mnt_idmap *idmap, struct inode *inode, 122 - struct dentry *direntry, const char *symname); 119 + const char *cifs_get_link(struct dentry *dentry, struct inode *inode, 120 + struct delayed_call *done); 121 + int cifs_symlink(struct mnt_idmap *idmap, struct inode *inode, 122 + struct dentry *direntry, const char *symname); 123 123 124 124 #ifdef CONFIG_CIFS_XATTR 125 125 extern const struct xattr_handler * const cifs_xattr_handlers[]; 126 - extern ssize_t cifs_listxattr(struct dentry *, char *, size_t); 126 + ssize_t cifs_listxattr(struct dentry *direntry, char *data, size_t buf_size); 127 127 #else 128 128 # define cifs_xattr_handlers NULL 129 129 # define cifs_listxattr NULL 130 130 #endif 131 131 132 - extern ssize_t cifs_file_copychunk_range(unsigned int xid, 133 - struct file *src_file, loff_t off, 134 - struct file *dst_file, loff_t destoff, 135 - size_t len, unsigned int flags); 132 + ssize_t cifs_file_copychunk_range(unsigned int xid, struct file *src_file, 133 + loff_t off, struct file *dst_file, 134 + loff_t destoff, size_t len, 135 + unsigned int flags); 136 136 137 - extern long cifs_ioctl(struct file *filep, unsigned int cmd, unsigned long arg); 138 - extern void cifs_setsize(struct inode *inode, loff_t offset); 137 + long cifs_ioctl(struct file *filep, unsigned int command, unsigned long arg); 138 + void cifs_setsize(struct inode *inode, loff_t offset); 139 139 140 140 struct smb3_fs_context; 141 - extern struct dentry *cifs_smb3_do_mount(struct file_system_type *fs_type, 142 - int flags, struct smb3_fs_context *ctx); 141 + struct dentry *cifs_smb3_do_mount(struct file_system_type *fs_type, int flags, 142 + struct smb3_fs_context *old_ctx); 143 143 144 144 #ifdef CONFIG_CIFS_NFSD_EXPORT 145 145 extern const struct export_operations cifs_export_ops;
+25 -26
fs/smb/client/cifsglob.h
··· 28 28 #include "../common/smb2pdu.h" 29 29 #include "../common/fscc.h" 30 30 #include "smb2pdu.h" 31 + #include "smb1pdu.h" 31 32 #include <linux/filelock.h> 32 33 33 34 #define SMB_PATH_MAX 260 ··· 103 102 * to reduce possibility of seeing more server credit overflow bugs. 104 103 */ 105 104 #define SMB2_MAX_CREDITS_AVAILABLE 32000 106 - 107 - #include "cifspdu.h" 108 105 109 106 #ifndef XATTR_DOS_ATTRIB 110 107 #define XATTR_DOS_ATTRIB "user.DOSATTRIB" ··· 949 950 return revert_current_mid(server, num > 0 ? num : 1); 950 951 } 951 952 952 - static inline __u16 953 - get_mid(const struct smb_hdr *smb) 954 - { 955 - return le16_to_cpu(smb->Mid); 956 - } 957 - 958 - static inline bool 959 - compare_mid(__u16 mid, const struct smb_hdr *smb) 960 - { 961 - return mid == le16_to_cpu(smb->Mid); 962 - } 963 - 964 953 /* 965 954 * When the server supports very large reads and writes via POSIX extensions, 966 955 * we can allow up to 2^24-1, minus the size of a READ/WRITE_AND_X header, not ··· 1314 1327 struct cifs_tcon *tl_tcon; 1315 1328 }; 1316 1329 1317 - extern struct tcon_link *cifs_sb_tlink(struct cifs_sb_info *cifs_sb); 1318 - extern void smb3_free_compound_rqst(int num_rqst, struct smb_rqst *rqst); 1330 + struct tcon_link *cifs_sb_tlink(struct cifs_sb_info *cifs_sb); 1331 + void smb3_free_compound_rqst(int num_rqst, struct smb_rqst *rqst); 1319 1332 1320 1333 static inline struct cifs_tcon * 1321 1334 tlink_tcon(struct tcon_link *tlink) ··· 1329 1342 return cifs_sb->master_tlink; 1330 1343 } 1331 1344 1332 - extern void cifs_put_tlink(struct tcon_link *tlink); 1345 + void cifs_put_tlink(struct tcon_link *tlink); 1333 1346 1334 1347 static inline struct tcon_link * 1335 1348 cifs_get_tlink(struct tcon_link *tlink) ··· 1340 1353 } 1341 1354 1342 1355 /* This function is always expected to succeed */ 1343 - extern struct cifs_tcon *cifs_sb_master_tcon(struct cifs_sb_info *cifs_sb); 1356 + struct cifs_tcon *cifs_sb_master_tcon(struct cifs_sb_info *cifs_sb); 1344 1357 1345 1358 #define CIFS_OPLOCK_NO_CHANGE 0xfe 1346 1359 ··· 1494 1507 int result; 1495 1508 bool have_xid; 1496 1509 bool replay; 1510 + unsigned int retries; /* number of retries so far */ 1511 + unsigned int cur_sleep; /* time to sleep before replay */ 1497 1512 struct kvec iov[2]; 1498 1513 struct TCP_Server_Info *server; 1499 1514 #ifdef CONFIG_CIFS_SMB_DIRECT ··· 1515 1526 } 1516 1527 1517 1528 struct cifsFileInfo *cifsFileInfo_get(struct cifsFileInfo *cifs_file); 1518 - void _cifsFileInfo_put(struct cifsFileInfo *cifs_file, bool wait_oplock_hdlr, 1519 - bool offload); 1529 + void _cifsFileInfo_put(struct cifsFileInfo *cifs_file, 1530 + bool wait_oplock_handler, bool offload); 1520 1531 void cifsFileInfo_put(struct cifsFileInfo *cifs_file); 1521 1532 int cifs_file_flush(const unsigned int xid, struct inode *inode, 1522 1533 struct cifsFileInfo *cfile); ··· 1785 1796 struct cifs_tcon *tcon; 1786 1797 }; 1787 1798 1799 + struct mchan_mount { 1800 + struct work_struct work; 1801 + struct cifs_ses *ses; 1802 + }; 1803 + 1788 1804 static inline void __free_dfs_info_param(struct dfs_info3_param *param) 1789 1805 { 1790 1806 kfree(param->path_name); ··· 1937 1943 */ 1938 1944 1939 1945 /**************************************************************************** 1946 + * LOCK ORDERING NOTES: 1947 + **************************************************************************** 1940 1948 * Here are all the locks (spinlock, mutex, semaphore) in cifs.ko, arranged according 1941 1949 * to the locking order. i.e. if two locks are to be held together, the lock that 1942 1950 * appears higher in this list needs to be taken before the other. ··· 1967 1971 * ===================================================================================== 1968 1972 * Lock Protects Initialization fn 1969 1973 * ===================================================================================== 1974 + * cifs_mount_mutex mount/unmount operations 1970 1975 * vol_list_lock 1971 1976 * vol_info->ctx_lock vol_info->ctx 1972 1977 * cifs_sb_info->tlink_tree_lock cifs_sb_info->tlink_tree cifs_setup_cifs_sb 1973 1978 * TCP_Server_Info-> TCP_Server_Info cifs_get_tcp_session 1974 1979 * reconnect_mutex 1975 - * TCP_Server_Info->srv_mutex TCP_Server_Info cifs_get_tcp_session 1976 1980 * cifs_ses->session_mutex cifs_ses sesInfoAlloc 1981 + * TCP_Server_Info->srv_mutex TCP_Server_Info cifs_get_tcp_session 1982 + * cifs_tcp_ses_lock cifs_tcp_ses_list sesInfoAlloc 1977 1983 * cifs_tcon->open_file_lock cifs_tcon->openFileList tconInfoAlloc 1978 1984 * cifs_tcon->pending_opens 1979 1985 * cifs_tcon->stat_lock cifs_tcon->bytes_read tconInfoAlloc 1980 1986 * cifs_tcon->bytes_written 1981 - * cifs_tcp_ses_lock cifs_tcp_ses_list sesInfoAlloc 1987 + * cifs_tcon->fscache_lock cifs_tcon->fscache tconInfoAlloc 1988 + * cifs_tcon->sb_list_lock cifs_tcon->cifs_sb_list tconInfoAlloc 1982 1989 * GlobalMid_Lock GlobalMaxActiveXid init_cifs 1983 1990 * GlobalCurrentXid 1984 1991 * GlobalTotalActiveXid ··· 2004 2005 * ->chans_in_reconnect 2005 2006 * cifs_tcon->tc_lock (anything that is not protected by another lock and can change) 2006 2007 * tcon_info_alloc 2008 + * cifs_swnreg_idr_mutex cifs_swnreg_idr cifs_swn.c 2009 + * (witness service registration, accesses tcon fields under tc_lock) 2007 2010 * inode->i_rwsem, taken by fs/netfs/locking.c e.g. should be taken before cifsInodeInfo locks 2008 2011 * cifsInodeInfo->open_file_lock cifsInodeInfo->openFileList cifs_alloc_inode 2009 2012 * cifsInodeInfo->writers_lock cifsInodeInfo->writers cifsInodeInfo_alloc ··· 2013 2012 * ->can_cache_brlcks 2014 2013 * cifsInodeInfo->deferred_lock cifsInodeInfo->deferred_closes cifsInodeInfo_alloc 2015 2014 * cached_fids->cfid_list_lock cifs_tcon->cfids->entries init_cached_dirs 2016 - * cached_fid->fid_lock (anything that is not protected by another lock and can change) 2017 - * init_cached_dir 2015 + * cached_fid->dirents.de_mutex cached_fid->dirents alloc_cached_dir 2018 2016 * cifsFileInfo->fh_mutex cifsFileInfo cifs_new_fileinfo 2019 2017 * cifsFileInfo->file_info_lock cifsFileInfo->count cifs_new_fileinfo 2020 2018 * ->invalidHandle initiate_cifs_search 2021 2019 * ->oplock_break_cancelled 2020 + * smbdirect_mr->mutex RDMA memory region management (SMBDirect only) 2022 2021 * mid_q_entry->mid_lock mid_q_entry->callback alloc_mid 2023 2022 * smb2_mid_entry_alloc 2024 2023 * (Any fields of mid_q_entry that will need protection) ··· 2116 2115 2117 2116 /* Operations for different SMB versions */ 2118 2117 #ifdef CONFIG_CIFS_ALLOW_INSECURE_LEGACY 2119 - extern struct smb_version_operations smb1_operations; 2120 - extern struct smb_version_values smb1_values; 2121 2118 extern struct smb_version_operations smb20_operations; 2122 2119 extern struct smb_version_values smb20_values; 2123 2120 #endif /* CONFIG_CIFS_ALLOW_INSECURE_LEGACY */
+1 -2376
fs/smb/client/cifspdu.h
··· 9 9 #ifndef _CIFSPDU_H 10 10 #define _CIFSPDU_H 11 11 12 - #include <net/sock.h> 13 - #include <linux/unaligned.h> 14 - #include "../common/smbfsctl.h" 15 - #include "../common/smb1pdu.h" 16 - 17 - #define CIFS_PROT 0 18 - #define POSIX_PROT (CIFS_PROT+1) 19 - #define BAD_PROT 0xFFFF 20 - 21 - /* SMB command codes: 22 - * See MS-CIFS 2.2.2.1 23 - * Note some commands have minimal (wct=0,bcc=0), or uninteresting, responses 24 - * (ie which include no useful data other than the SMB error code itself). 25 - * This can allow us to avoid response buffer allocations and copy in some cases 26 - */ 27 - #define SMB_COM_CREATE_DIRECTORY 0x00 /* trivial response */ 28 - #define SMB_COM_DELETE_DIRECTORY 0x01 /* trivial response */ 29 - #define SMB_COM_CLOSE 0x04 /* triv req/rsp, timestamp ignored */ 30 - #define SMB_COM_FLUSH 0x05 /* triv req/rsp */ 31 - #define SMB_COM_DELETE 0x06 /* trivial response */ 32 - #define SMB_COM_RENAME 0x07 /* trivial response */ 33 - #define SMB_COM_QUERY_INFORMATION 0x08 /* aka getattr */ 34 - #define SMB_COM_SETATTR 0x09 /* trivial response */ 35 - #define SMB_COM_LOCKING_ANDX 0x24 /* trivial response */ 36 - #define SMB_COM_COPY 0x29 /* trivial rsp, fail filename ignrd*/ 37 - #define SMB_COM_ECHO 0x2B /* echo request */ 38 - #define SMB_COM_OPEN_ANDX 0x2D /* Legacy open for old servers */ 39 - #define SMB_COM_READ_ANDX 0x2E 40 - #define SMB_COM_WRITE_ANDX 0x2F 41 - #define SMB_COM_TRANSACTION2 0x32 42 - #define SMB_COM_TRANSACTION2_SECONDARY 0x33 43 - #define SMB_COM_FIND_CLOSE2 0x34 /* trivial response */ 44 - #define SMB_COM_TREE_DISCONNECT 0x71 /* trivial response */ 45 - #define SMB_COM_NEGOTIATE 0x72 46 - #define SMB_COM_SESSION_SETUP_ANDX 0x73 47 - #define SMB_COM_LOGOFF_ANDX 0x74 /* trivial response */ 48 - #define SMB_COM_TREE_CONNECT_ANDX 0x75 49 - #define SMB_COM_NT_TRANSACT 0xA0 50 - #define SMB_COM_NT_TRANSACT_SECONDARY 0xA1 51 - #define SMB_COM_NT_CREATE_ANDX 0xA2 52 - #define SMB_COM_NT_CANCEL 0xA4 /* no response */ 53 - #define SMB_COM_NT_RENAME 0xA5 /* trivial response */ 54 - 55 - /* Transact2 subcommand codes */ 56 - #define TRANS2_OPEN 0x00 57 - #define TRANS2_FIND_FIRST 0x01 58 - #define TRANS2_FIND_NEXT 0x02 59 - #define TRANS2_QUERY_FS_INFORMATION 0x03 60 - #define TRANS2_SET_FS_INFORMATION 0x04 61 - #define TRANS2_QUERY_PATH_INFORMATION 0x05 62 - #define TRANS2_SET_PATH_INFORMATION 0x06 63 - #define TRANS2_QUERY_FILE_INFORMATION 0x07 64 - #define TRANS2_SET_FILE_INFORMATION 0x08 65 - #define TRANS2_GET_DFS_REFERRAL 0x10 66 - #define TRANS2_REPORT_DFS_INCOSISTENCY 0x11 67 - 68 - /* SMB Transact (Named Pipe) subcommand codes */ 69 - #define TRANS_SET_NMPIPE_STATE 0x0001 70 - #define TRANS_RAW_READ_NMPIPE 0x0011 71 - #define TRANS_QUERY_NMPIPE_STATE 0x0021 72 - #define TRANS_QUERY_NMPIPE_INFO 0x0022 73 - #define TRANS_PEEK_NMPIPE 0x0023 74 - #define TRANS_TRANSACT_NMPIPE 0x0026 75 - #define TRANS_RAW_WRITE_NMPIPE 0x0031 76 - #define TRANS_READ_NMPIPE 0x0036 77 - #define TRANS_WRITE_NMPIPE 0x0037 78 - #define TRANS_WAIT_NMPIPE 0x0053 79 - #define TRANS_CALL_NMPIPE 0x0054 80 - 81 - /* NT Transact subcommand codes */ 82 - #define NT_TRANSACT_CREATE 0x01 83 - #define NT_TRANSACT_IOCTL 0x02 84 - #define NT_TRANSACT_SET_SECURITY_DESC 0x03 85 - #define NT_TRANSACT_NOTIFY_CHANGE 0x04 86 - #define NT_TRANSACT_RENAME 0x05 87 - #define NT_TRANSACT_QUERY_SECURITY_DESC 0x06 88 - #define NT_TRANSACT_GET_USER_QUOTA 0x07 89 - #define NT_TRANSACT_SET_USER_QUOTA 0x08 90 - 91 - /* future chained NTCreateXReadX bigger, but for time being NTCreateX biggest */ 92 - /* among the requests (NTCreateX response is bigger with wct of 34) */ 93 - #define MAX_CIFS_HDR_SIZE 0x54 /* 32 hdr + (2*24 wct) + 2 bct + 2 pad */ 94 - #define CIFS_SMALL_PATH 120 /* allows for (448-88)/3 */ 95 - 96 - /* internal cifs vfs structures */ 97 - /***************************************************************** 98 - * All constants go here 99 - ***************************************************************** 100 - */ 101 - 102 - /* 103 - * Starting value for maximum SMB size negotiation 104 - */ 105 - #define CIFS_MAX_MSGSIZE (4*4096) 106 - 107 - /* 108 - * Size of encrypted user password in bytes 109 - */ 110 - #define CIFS_ENCPWD_SIZE (16) 111 - 112 - /* 113 - * Size of the crypto key returned on the negotiate SMB in bytes 114 - */ 115 - #define CIFS_CRYPTO_KEY_SIZE (8) 116 - 117 - /* 118 - * Size of the ntlm client response 119 - */ 120 - #define CIFS_AUTH_RESP_SIZE (24) 121 - 122 - /* 123 - * Size of the session key (crypto key encrypted with the password 124 - */ 125 - #define CIFS_SESS_KEY_SIZE (16) 126 - 127 - #define CIFS_SERVER_CHALLENGE_SIZE (8) 128 - #define CIFS_HMAC_MD5_HASH_SIZE (16) 129 - #define CIFS_CPHTXT_SIZE (16) 130 - #define CIFS_NTHASH_SIZE (16) 131 - 132 - /* 133 - * Maximum user name length 134 - */ 135 - #define CIFS_UNLEN (20) 136 - 137 - /* 138 - * Flags on SMB open 139 - */ 140 - #define SMBOPEN_WRITE_THROUGH 0x4000 141 - #define SMBOPEN_DENY_ALL 0x0010 142 - #define SMBOPEN_DENY_WRITE 0x0020 143 - #define SMBOPEN_DENY_READ 0x0030 144 - #define SMBOPEN_DENY_NONE 0x0040 145 - #define SMBOPEN_READ 0x0000 146 - #define SMBOPEN_WRITE 0x0001 147 - #define SMBOPEN_READWRITE 0x0002 148 - #define SMBOPEN_EXECUTE 0x0003 149 - 150 - #define SMBOPEN_OCREATE 0x0010 151 - #define SMBOPEN_OTRUNC 0x0002 152 - #define SMBOPEN_OAPPEND 0x0001 153 - 154 - /* 155 - * SMB flag definitions 156 - * See MS-CIFS 2.2.3.1 157 - */ 158 - #define SMBFLG_EXTD_LOCK 0x01 /* server supports lock-read write-unlock smb */ 159 - #define SMBFLG_RCV_POSTED 0x02 /* obsolete */ 160 - #define SMBFLG_RSVD 0x04 161 - #define SMBFLG_CASELESS 0x08 /* all pathnames treated as caseless (off 162 - implies case sensitive file handling request) */ 163 - #define SMBFLG_CANONICAL_PATH_FORMAT 0x10 /* obsolete */ 164 - #define SMBFLG_OLD_OPLOCK 0x20 /* obsolete */ 165 - #define SMBFLG_OLD_OPLOCK_NOTIFY 0x40 /* obsolete */ 166 - #define SMBFLG_RESPONSE 0x80 /* this PDU is a response from server */ 167 - 168 - /* 169 - * SMB flag2 definitions 170 - * See MS-CIFS 2.2.3.1 171 - * MS-SMB 2.2.3.1 172 - */ 173 - #define SMBFLG2_KNOWS_LONG_NAMES cpu_to_le16(1) /* can send long (non-8.3) 174 - path names in response */ 175 - #define SMBFLG2_KNOWS_EAS cpu_to_le16(2) 176 - #define SMBFLG2_SECURITY_SIGNATURE cpu_to_le16(4) 177 - #define SMBFLG2_COMPRESSED (8) 178 - #define SMBFLG2_SECURITY_SIGNATURE_REQUIRED (0x10) 179 - #define SMBFLG2_IS_LONG_NAME cpu_to_le16(0x40) 180 - #define SMBFLG2_REPARSE_PATH (0x400) 181 - #define SMBFLG2_EXT_SEC cpu_to_le16(0x800) 182 - #define SMBFLG2_DFS cpu_to_le16(0x1000) 183 - #define SMBFLG2_PAGING_IO cpu_to_le16(0x2000) 184 - #define SMBFLG2_ERR_STATUS cpu_to_le16(0x4000) 185 - #define SMBFLG2_UNICODE cpu_to_le16(0x8000) 186 - 187 - /* Combinations of file access permission bits */ 188 - #define SET_FILE_READ_RIGHTS (FILE_READ_DATA | FILE_READ_EA | FILE_WRITE_EA \ 189 - | FILE_READ_ATTRIBUTES \ 190 - | FILE_WRITE_ATTRIBUTES \ 191 - | DELETE | READ_CONTROL | WRITE_DAC \ 192 - | WRITE_OWNER | SYNCHRONIZE) 193 - #define SET_FILE_WRITE_RIGHTS (FILE_WRITE_DATA | FILE_APPEND_DATA \ 194 - | FILE_READ_EA | FILE_WRITE_EA \ 195 - | FILE_READ_ATTRIBUTES \ 196 - | FILE_WRITE_ATTRIBUTES \ 197 - | DELETE | READ_CONTROL | WRITE_DAC \ 198 - | WRITE_OWNER | SYNCHRONIZE) 199 - 200 - /* 201 - * Invalid readdir handle 202 - */ 203 - #define CIFS_NO_HANDLE 0xFFFF 204 - 205 - #define NO_CHANGE_64 0xFFFFFFFFFFFFFFFFULL 206 - 207 - /* IPC$ in ASCII */ 208 - #define CIFS_IPC_RESOURCE "\x49\x50\x43\x24" 209 - 210 - /* IPC$ in Unicode */ 211 - #define CIFS_IPC_UNICODE_RESOURCE "\x00\x49\x00\x50\x00\x43\x00\x24\x00\x00" 212 - 213 - /* Unicode Null terminate 2 bytes of 0 */ 214 - #define UNICODE_NULL "\x00\x00" 215 - #define ASCII_NULL 0x00 216 - 217 - /* 218 - * Server type values (returned on EnumServer API 219 - */ 220 - #define CIFS_SV_TYPE_DC 0x00000008 221 - #define CIFS_SV_TYPE_BACKDC 0x00000010 222 - 223 - /* 224 - * Alias type flags (From EnumAlias API call 225 - */ 226 - #define CIFS_ALIAS_TYPE_FILE 0x0001 227 - #define CIFS_SHARE_TYPE_FILE 0x0000 228 - 229 - /* 230 - * File Attribute flags 231 - */ 232 - #define ATTR_READONLY 0x0001 /* See MS-CIFS 2.2.1.2.3 */ 233 - #define ATTR_HIDDEN 0x0002 /* See MS-CIFS 2.2.1.2.3 */ 234 - #define ATTR_SYSTEM 0x0004 /* See MS-CIFS 2.2.1.2.3 */ 235 - #define ATTR_VOLUME 0x0008 236 - #define ATTR_DIRECTORY 0x0010 /* See MS-CIFS 2.2.1.2.3 */ 237 - #define ATTR_ARCHIVE 0x0020 /* See MS-CIFS 2.2.1.2.3 */ 238 - #define ATTR_DEVICE 0x0040 239 - #define ATTR_NORMAL 0x0080 /* See MS-CIFS 2.2.1.2.3 */ 240 - #define ATTR_TEMPORARY 0x0100 /* See MS-CIFS 2.2.1.2.3 */ 241 - #define ATTR_SPARSE 0x0200 /* See MS-SMB 2.2.1.2.1 */ 242 - #define ATTR_REPARSE_POINT 0x0400 /* See MS-SMB 2.2.1.2.1 */ 243 - #define ATTR_COMPRESSED 0x0800 /* See MS-CIFS 2.2.1.2.3 */ 244 - #define ATTR_OFFLINE 0x1000 /* See MS-SMB 2.2.1.2.1 245 - ie file not immediately available - 246 - on offline storage */ 247 - #define ATTR_NOT_CONTENT_INDEXED 0x2000 /* See MS-SMB 2.2.1.2.1 */ 248 - #define ATTR_ENCRYPTED 0x4000 /* See MS-SMB 2.2.1.2.1 */ 249 - #define ATTR_POSIX_SEMANTICS 0x0100000 /* See MS-CIFS 2.2.1.2.3 */ 250 - #define ATTR_BACKUP_SEMANTICS 0x0200000 /* See MS-CIFS 2.2.1.2.3 */ 251 - #define ATTR_DELETE_ON_CLOSE 0x0400000 /* See MS-CIFS 2.2.1.2.3 */ 252 - #define ATTR_SEQUENTIAL_SCAN 0x0800000 /* See MS-CIFS 2.2.1.2.3 */ 253 - #define ATTR_RANDOM_ACCESS 0x1000000 /* See MS-CIFS 2.2.1.2.3 */ 254 - #define ATTR_NO_BUFFERING 0x2000000 /* See MS-CIFS 2.2.1.2.3 */ 255 - #define ATTR_WRITE_THROUGH 0x8000000 /* See MS-CIFS 2.2.1.2.3 */ 256 - 257 - /* ShareAccess flags */ 258 - #define FILE_NO_SHARE 0x00000000 259 - #define FILE_SHARE_READ 0x00000001 260 - #define FILE_SHARE_WRITE 0x00000002 261 - #define FILE_SHARE_DELETE 0x00000004 262 - #define FILE_SHARE_ALL 0x00000007 263 - 264 - /* CreateDisposition flags, similar to CreateAction as well */ 265 - #define FILE_SUPERSEDE 0x00000000 266 - #define FILE_OPEN 0x00000001 267 - #define FILE_CREATE 0x00000002 268 - #define FILE_OPEN_IF 0x00000003 269 - #define FILE_OVERWRITE 0x00000004 270 - #define FILE_OVERWRITE_IF 0x00000005 271 - 272 - /* CreateOptions */ 273 - #define CREATE_NOT_FILE 0x00000001 /* if set must not be file */ 274 - #define CREATE_WRITE_THROUGH 0x00000002 275 - #define CREATE_SEQUENTIAL 0x00000004 276 - #define CREATE_NO_BUFFER 0x00000008 /* should not buffer on srv */ 277 - #define CREATE_SYNC_ALERT 0x00000010 /* MBZ */ 278 - #define CREATE_ASYNC_ALERT 0x00000020 /* MBZ */ 279 - #define CREATE_NOT_DIR 0x00000040 /* if set must not be directory */ 280 - #define CREATE_TREE_CONNECTION 0x00000080 /* should be zero */ 281 - #define CREATE_COMPLETE_IF_OPLK 0x00000100 /* should be zero */ 282 - #define CREATE_NO_EA_KNOWLEDGE 0x00000200 283 - #define CREATE_EIGHT_DOT_THREE 0x00000400 /* doc says this is obsolete 284 - "open for recovery" flag should 285 - be zero in any case */ 286 - #define CREATE_OPEN_FOR_RECOVERY 0x00000400 287 - #define CREATE_RANDOM_ACCESS 0x00000800 288 - #define CREATE_DELETE_ON_CLOSE 0x00001000 289 - #define CREATE_OPEN_BY_ID 0x00002000 290 - #define CREATE_OPEN_BACKUP_INTENT 0x00004000 291 - #define CREATE_NO_COMPRESSION 0x00008000 292 - #define CREATE_RESERVE_OPFILTER 0x00100000 /* should be zero */ 293 - #define OPEN_REPARSE_POINT 0x00200000 294 - #define OPEN_NO_RECALL 0x00400000 295 - #define OPEN_FREE_SPACE_QUERY 0x00800000 /* should be zero */ 296 - #define CREATE_OPTIONS_MASK 0x007FFFFF 297 - #define CREATE_OPTION_READONLY 0x10000000 298 - #define CREATE_OPTION_SPECIAL 0x20000000 /* system. NB not sent over wire */ 299 - 300 - /* ImpersonationLevel flags */ 301 - #define SECURITY_ANONYMOUS 0 302 - #define SECURITY_IDENTIFICATION 1 303 - #define SECURITY_IMPERSONATION 2 304 - #define SECURITY_DELEGATION 3 305 - 306 - /* SecurityFlags */ 307 - #define SECURITY_CONTEXT_TRACKING 0x01 308 - #define SECURITY_EFFECTIVE_ONLY 0x02 309 - 310 - /* 311 - * Default PID value, used in all SMBs where the PID is not important 312 - */ 313 - #define CIFS_DFT_PID 0x1234 314 - 315 - /* 316 - * We use the same routine for Copy and Move SMBs. This flag is used to 317 - * distinguish 318 - */ 319 - #define CIFS_COPY_OP 1 320 - #define CIFS_RENAME_OP 2 321 - 322 - #define GETU16(var) (*((__u16 *)var)) /* BB check for endian issues */ 323 - #define GETU32(var) (*((__u32 *)var)) /* BB check for endian issues */ 324 - 325 - /* given a pointer to an smb_hdr, retrieve a void pointer to the ByteCount */ 326 - static inline void * 327 - BCC(struct smb_hdr *smb) 328 - { 329 - return (void *)smb + sizeof(*smb) + 2 * smb->WordCount; 330 - } 331 - 332 - /* given a pointer to an smb_hdr retrieve the pointer to the byte area */ 333 - #define pByteArea(smb_var) (BCC(smb_var) + 2) 334 - 335 - /* get the unconverted ByteCount for a SMB packet and return it */ 336 - static inline __u16 337 - get_bcc(struct smb_hdr *hdr) 338 - { 339 - __le16 *bc_ptr = (__le16 *)BCC(hdr); 340 - 341 - return get_unaligned_le16(bc_ptr); 342 - } 343 - 344 - /* set the ByteCount for a SMB packet in little-endian */ 345 - static inline void 346 - put_bcc(__u16 count, struct smb_hdr *hdr) 347 - { 348 - __le16 *bc_ptr = (__le16 *)BCC(hdr); 349 - 350 - put_unaligned_le16(count, bc_ptr); 351 - } 352 - 353 - /* 354 - * Computer Name Length (since Netbios name was length 16 with last byte 0x20) 355 - * No longer as important, now that TCP names are more commonly used to 356 - * resolve hosts. 357 - */ 358 - #define CNLEN 15 359 - 360 - /* 361 - * Share Name Length (SNLEN) 362 - * Note: This length was limited by the SMB used to get 363 - * the Share info. NetShareEnum only returned 13 364 - * chars, including the null termination. 365 - * This was removed because it no longer is limiting. 366 - */ 367 - 368 - /* 369 - * Comment Length 370 - */ 371 - #define MAXCOMMENTLEN 40 372 - 373 - /* 374 - * The OS/2 maximum path name 375 - */ 376 - #define MAX_PATHCONF 256 377 - 378 - /* 379 - * SMB frame definitions (following must be packed structs) 380 - * See the SNIA CIFS Specification for details. 381 - * 382 - * The Naming convention is the lower case version of the 383 - * smb command code name for the struct and this is typedef to the 384 - * uppercase version of the same name with the prefix SMB_ removed 385 - * for brevity. Although typedefs are not commonly used for 386 - * structure definitions in the Linux kernel, their use in the 387 - * CIFS standards document, which this code is based on, may 388 - * make this one of the cases where typedefs for structures make 389 - * sense to improve readability for readers of the standards doc. 390 - * Typedefs can always be removed later if they are too distracting 391 - * and they are only used for the CIFSs PDUs themselves, not 392 - * internal cifs vfs structures 393 - * 394 - */ 395 - 396 - #define MIN_TZ_ADJ (15 * 60) /* minimum grid for timezones in seconds */ 397 - 398 - #define READ_RAW_ENABLE 1 399 - #define WRITE_RAW_ENABLE 2 400 - #define RAW_ENABLE (READ_RAW_ENABLE | WRITE_RAW_ENABLE) 401 - #define SMB1_CLIENT_GUID_SIZE (16) 402 - 403 - /* See MS-CIFS 2.2.4.52.2 */ 404 - typedef struct smb_negotiate_rsp { 405 - struct smb_hdr hdr; /* wct = 17 */ 406 - __le16 DialectIndex; /* 0xFFFF = no dialect acceptable */ 407 - __u8 SecurityMode; 408 - __le16 MaxMpxCount; 409 - __le16 MaxNumberVcs; 410 - __le32 MaxBufferSize; 411 - __le32 MaxRawSize; 412 - __le32 SessionKey; 413 - __le32 Capabilities; /* see below */ 414 - __le32 SystemTimeLow; 415 - __le32 SystemTimeHigh; 416 - __le16 ServerTimeZone; 417 - __u8 EncryptionKeyLength; 418 - __u16 ByteCount; 419 - union { 420 - /* cap extended security off */ 421 - DECLARE_FLEX_ARRAY(unsigned char, EncryptionKey); 422 - /* followed by Domain name - if extended security is off */ 423 - /* followed by 16 bytes of server GUID */ 424 - /* then security blob if cap_extended_security negotiated */ 425 - struct { 426 - unsigned char GUID[SMB1_CLIENT_GUID_SIZE]; 427 - unsigned char SecurityBlob[]; 428 - } __packed extended_response; 429 - } __packed u; 430 - } __packed SMB_NEGOTIATE_RSP; 431 - 432 - /* SecurityMode bits */ 433 - #define SECMODE_USER 0x01 /* off indicates share level security */ 434 - #define SECMODE_PW_ENCRYPT 0x02 435 - #define SECMODE_SIGN_ENABLED 0x04 /* SMB security signatures enabled */ 436 - #define SECMODE_SIGN_REQUIRED 0x08 /* SMB security signatures required */ 437 - 438 - /* Negotiate response Capabilities */ 439 - #define CAP_RAW_MODE 0x00000001 440 - #define CAP_MPX_MODE 0x00000002 441 - #define CAP_UNICODE 0x00000004 442 - #define CAP_LARGE_FILES 0x00000008 443 - #define CAP_NT_SMBS 0x00000010 /* implies CAP_NT_FIND */ 444 - #define CAP_RPC_REMOTE_APIS 0x00000020 445 - #define CAP_STATUS32 0x00000040 446 - #define CAP_LEVEL_II_OPLOCKS 0x00000080 447 - #define CAP_LOCK_AND_READ 0x00000100 448 - #define CAP_NT_FIND 0x00000200 449 - #define CAP_DFS 0x00001000 450 - #define CAP_INFOLEVEL_PASSTHRU 0x00002000 451 - #define CAP_LARGE_READ_X 0x00004000 452 - #define CAP_LARGE_WRITE_X 0x00008000 453 - #define CAP_LWIO 0x00010000 /* support fctl_srv_req_resume_key */ 454 - #define CAP_UNIX 0x00800000 455 - #define CAP_COMPRESSED_DATA 0x02000000 456 - #define CAP_DYNAMIC_REAUTH 0x20000000 457 - #define CAP_PERSISTENT_HANDLES 0x40000000 458 - #define CAP_EXTENDED_SECURITY 0x80000000 459 - 460 - typedef union smb_com_session_setup_andx { 461 - struct { /* request format */ 462 - struct smb_hdr hdr; /* wct = 12 */ 463 - __u8 AndXCommand; 464 - __u8 AndXReserved; 465 - __le16 AndXOffset; 466 - __le16 MaxBufferSize; 467 - __le16 MaxMpxCount; 468 - __le16 VcNumber; 469 - __le32 SessionKey; 470 - __le16 SecurityBlobLength; 471 - __u32 Reserved; 472 - __le32 Capabilities; /* see below */ 473 - __le16 ByteCount; 474 - unsigned char SecurityBlob[]; /* followed by */ 475 - /* STRING NativeOS */ 476 - /* STRING NativeLanMan */ 477 - } __packed req; /* NTLM request format (with 478 - extended security */ 479 - 480 - struct { /* request format */ 481 - struct smb_hdr hdr; /* wct = 13 */ 482 - __u8 AndXCommand; 483 - __u8 AndXReserved; 484 - __le16 AndXOffset; 485 - __le16 MaxBufferSize; 486 - __le16 MaxMpxCount; 487 - __le16 VcNumber; 488 - __le32 SessionKey; 489 - __le16 CaseInsensitivePasswordLength; /* ASCII password len */ 490 - __le16 CaseSensitivePasswordLength; /* Unicode password length*/ 491 - __u32 Reserved; /* see below */ 492 - __le32 Capabilities; 493 - __le16 ByteCount; 494 - unsigned char CaseInsensitivePassword[]; /* followed by: */ 495 - /* unsigned char * CaseSensitivePassword; */ 496 - /* STRING AccountName */ 497 - /* STRING PrimaryDomain */ 498 - /* STRING NativeOS */ 499 - /* STRING NativeLanMan */ 500 - } __packed req_no_secext; /* NTLM request format (without 501 - extended security */ 502 - 503 - struct { /* default (NTLM) response format */ 504 - struct smb_hdr hdr; /* wct = 4 */ 505 - __u8 AndXCommand; 506 - __u8 AndXReserved; 507 - __le16 AndXOffset; 508 - __le16 Action; /* see below */ 509 - __le16 SecurityBlobLength; 510 - __u16 ByteCount; 511 - unsigned char SecurityBlob[]; /* followed by */ 512 - /* unsigned char * NativeOS; */ 513 - /* unsigned char * NativeLanMan; */ 514 - /* unsigned char * PrimaryDomain; */ 515 - } __packed resp; /* NTLM response 516 - (with or without extended sec) */ 517 - 518 - struct { /* request format */ 519 - struct smb_hdr hdr; /* wct = 10 */ 520 - __u8 AndXCommand; 521 - __u8 AndXReserved; 522 - __le16 AndXOffset; 523 - __le16 MaxBufferSize; 524 - __le16 MaxMpxCount; 525 - __le16 VcNumber; 526 - __le32 SessionKey; 527 - __le16 PasswordLength; 528 - __u32 Reserved; /* encrypt key len and offset */ 529 - __le16 ByteCount; 530 - unsigned char AccountPassword[]; /* followed by */ 531 - /* STRING AccountName */ 532 - /* STRING PrimaryDomain */ 533 - /* STRING NativeOS */ 534 - /* STRING NativeLanMan */ 535 - } __packed old_req; /* pre-NTLM (LANMAN2.1) req format */ 536 - 537 - struct { /* default (NTLM) response format */ 538 - struct smb_hdr hdr; /* wct = 3 */ 539 - __u8 AndXCommand; 540 - __u8 AndXReserved; 541 - __le16 AndXOffset; 542 - __le16 Action; /* see below */ 543 - __u16 ByteCount; 544 - unsigned char NativeOS[]; /* followed by */ 545 - /* unsigned char * NativeLanMan; */ 546 - /* unsigned char * PrimaryDomain; */ 547 - } __packed old_resp; /* pre-NTLM (LANMAN2.1) response */ 548 - } __packed SESSION_SETUP_ANDX; 549 - 550 - /* format of NLTMv2 Response ie "case sensitive password" hash when NTLMv2 */ 551 - 552 - #define NTLMSSP_SERVER_TYPE 1 553 - #define NTLMSSP_DOMAIN_TYPE 2 554 - #define NTLMSSP_FQ_DOMAIN_TYPE 3 555 - #define NTLMSSP_DNS_DOMAIN_TYPE 4 556 - #define NTLMSSP_DNS_PARENT_TYPE 5 557 - 558 - struct ntlmssp2_name { 559 - __le16 type; 560 - __le16 length; 561 - __u8 data[]; 562 - } __packed; 563 - 564 - struct ntlmv2_resp { 565 - union { 566 - char ntlmv2_hash[CIFS_ENCPWD_SIZE]; 567 - struct { 568 - __u8 reserved[8]; 569 - __u8 key[CIFS_SERVER_CHALLENGE_SIZE]; 570 - } __packed challenge; 571 - } __packed; 572 - __le32 blob_signature; 573 - __u32 reserved; 574 - __le64 time; 575 - __u64 client_chal; /* random */ 576 - __u32 reserved2; 577 - /* array of name entries could follow ending in minimum 4 byte struct */ 578 - } __packed; 579 - 580 - 581 - #define CIFS_NETWORK_OPSYS "CIFS VFS Client for Linux" 582 - 583 - 584 - /* 585 - * Capabilities bits (for NTLM SessSetup request) 586 - * See MS-CIFS 2.2.4.52.2 587 - * MS-SMB 2.2.4.5.2.1 588 - */ 589 - #define CAP_UNICODE 0x00000004 590 - #define CAP_LARGE_FILES 0x00000008 591 - #define CAP_NT_SMBS 0x00000010 592 - #define CAP_STATUS32 0x00000040 593 - #define CAP_LEVEL_II_OPLOCKS 0x00000080 594 - #define CAP_NT_FIND 0x00000200 /* reserved should be zero 595 - (because NT_SMBs implies the same thing?) */ 596 - #define CAP_BULK_TRANSFER 0x00000400 597 - #define CAP_EXTENDED_SECURITY 0x80000000 598 - 599 - /* Action bits */ 600 - #define GUEST_LOGIN 1 601 - 602 - typedef struct smb_com_tconx_req { 603 - struct smb_hdr hdr; /* wct = 4 */ 604 - __u8 AndXCommand; 605 - __u8 AndXReserved; 606 - __le16 AndXOffset; 607 - __le16 Flags; /* see below */ 608 - __le16 PasswordLength; 609 - __le16 ByteCount; 610 - unsigned char Password[]; /* followed by */ 611 - /* STRING Path *//* \\server\share name */ 612 - /* STRING Service */ 613 - } __packed TCONX_REQ; 614 - 615 - typedef struct smb_com_tconx_rsp { 616 - struct smb_hdr hdr; /* wct = 3 , not extended response */ 617 - __u8 AndXCommand; 618 - __u8 AndXReserved; 619 - __le16 AndXOffset; 620 - __le16 OptionalSupport; /* see below */ 621 - __u16 ByteCount; 622 - unsigned char Service[]; /* always ASCII, not Unicode */ 623 - /* STRING NativeFileSystem */ 624 - } __packed TCONX_RSP; 625 - 626 - typedef struct smb_com_tconx_rsp_ext { 627 - struct smb_hdr hdr; /* wct = 7, extended response */ 628 - __u8 AndXCommand; 629 - __u8 AndXReserved; 630 - __le16 AndXOffset; 631 - __le16 OptionalSupport; /* see below */ 632 - __le32 MaximalShareAccessRights; 633 - __le32 GuestMaximalShareAccessRights; 634 - __u16 ByteCount; 635 - unsigned char Service[]; /* always ASCII, not Unicode */ 636 - /* STRING NativeFileSystem */ 637 - } __packed TCONX_RSP_EXT; 638 - 639 - 640 - /* tree connect Flags */ 641 - #define DISCONNECT_TID 0x0001 642 - #define TCON_EXTENDED_SIGNATURES 0x0004 643 - #define TCON_EXTENDED_SECINFO 0x0008 644 - 645 - /* OptionalSupport bits */ 646 - #define SMB_SUPPORT_SEARCH_BITS 0x0001 /* "must have" directory search bits 647 - (exclusive searches supported) */ 648 - #define SMB_SHARE_IS_IN_DFS 0x0002 649 - #define SMB_CSC_MASK 0x000C 650 - /* CSC flags defined as follows */ 651 - #define SMB_CSC_CACHE_MANUAL_REINT 0x0000 652 - #define SMB_CSC_CACHE_AUTO_REINT 0x0004 653 - #define SMB_CSC_CACHE_VDO 0x0008 654 - #define SMB_CSC_NO_CACHING 0x000C 655 - #define SMB_UNIQUE_FILE_NAME 0x0010 656 - #define SMB_EXTENDED_SIGNATURES 0x0020 657 - 658 - /* services 659 - * 660 - * A: ie disk 661 - * LPT1: ie printer 662 - * IPC ie named pipe 663 - * COMM 664 - * ????? ie any type 665 - * 666 - */ 667 - 668 - typedef struct smb_com_echo_req { 669 - struct smb_hdr hdr; 670 - __le16 EchoCount; 671 - __le16 ByteCount; 672 - char Data[]; 673 - } __packed ECHO_REQ; 674 - 675 - typedef struct smb_com_echo_rsp { 676 - struct smb_hdr hdr; 677 - __le16 SequenceNumber; 678 - __le16 ByteCount; 679 - char Data[]; 680 - } __packed ECHO_RSP; 681 - 682 - typedef struct smb_com_logoff_andx_req { 683 - struct smb_hdr hdr; /* wct = 2 */ 684 - __u8 AndXCommand; 685 - __u8 AndXReserved; 686 - __u16 AndXOffset; 687 - __u16 ByteCount; 688 - } __packed LOGOFF_ANDX_REQ; 689 - 690 - typedef struct smb_com_logoff_andx_rsp { 691 - struct smb_hdr hdr; /* wct = 2 */ 692 - __u8 AndXCommand; 693 - __u8 AndXReserved; 694 - __u16 AndXOffset; 695 - __u16 ByteCount; 696 - } __packed LOGOFF_ANDX_RSP; 697 - 698 - typedef union smb_com_tree_disconnect { /* as an alternative can use flag on 699 - tree_connect PDU to effect disconnect */ 700 - /* tdis is probably simplest SMB PDU */ 701 - struct { 702 - struct smb_hdr hdr; /* wct = 0 */ 703 - __u16 ByteCount; /* bcc = 0 */ 704 - } __packed req; 705 - struct { 706 - struct smb_hdr hdr; /* wct = 0 */ 707 - __u16 ByteCount; /* bcc = 0 */ 708 - } __packed resp; 709 - } __packed TREE_DISCONNECT; 710 - 711 - typedef struct smb_com_close_req { 712 - struct smb_hdr hdr; /* wct = 3 */ 713 - __u16 FileID; 714 - __u32 LastWriteTime; /* should be zero or -1 */ 715 - __u16 ByteCount; /* 0 */ 716 - } __packed CLOSE_REQ; 717 - 718 - typedef struct smb_com_close_rsp { 719 - struct smb_hdr hdr; /* wct = 0 */ 720 - __u16 ByteCount; /* bct = 0 */ 721 - } __packed CLOSE_RSP; 722 - 723 - typedef struct smb_com_flush_req { 724 - struct smb_hdr hdr; /* wct = 1 */ 725 - __u16 FileID; 726 - __u16 ByteCount; /* 0 */ 727 - } __packed FLUSH_REQ; 728 - 729 - typedef struct smb_com_findclose_req { 730 - struct smb_hdr hdr; /* wct = 1 */ 731 - __u16 FileID; 732 - __u16 ByteCount; /* 0 */ 733 - } __packed FINDCLOSE_REQ; 734 - 735 - /* OpenFlags */ 736 - #define REQ_MORE_INFO 0x00000001 /* legacy (OPEN_AND_X) only */ 737 - #define REQ_OPLOCK 0x00000002 738 - #define REQ_BATCHOPLOCK 0x00000004 739 - #define REQ_OPENDIRONLY 0x00000008 740 - #define REQ_EXTENDED_INFO 0x00000010 741 - 742 - /* File type */ 743 - #define DISK_TYPE 0x0000 744 - #define BYTE_PIPE_TYPE 0x0001 745 - #define MESSAGE_PIPE_TYPE 0x0002 746 - #define PRINTER_TYPE 0x0003 747 - #define COMM_DEV_TYPE 0x0004 748 - #define UNKNOWN_TYPE 0xFFFF 749 - 750 - /* Device Type or File Status Flags */ 751 - #define NO_EAS 0x0001 752 - #define NO_SUBSTREAMS 0x0002 753 - #define NO_REPARSETAG 0x0004 754 - /* following flags can apply if pipe */ 755 - #define ICOUNT_MASK 0x00FF 756 - #define PIPE_READ_MODE 0x0100 757 - #define NAMED_PIPE_TYPE 0x0400 758 - #define PIPE_END_POINT 0x4000 759 - #define BLOCKING_NAMED_PIPE 0x8000 760 - 761 - typedef struct smb_com_open_req { /* also handles create */ 762 - struct smb_hdr hdr; /* wct = 24 */ 763 - __u8 AndXCommand; 764 - __u8 AndXReserved; 765 - __le16 AndXOffset; 766 - __u8 Reserved; /* Must Be Zero */ 767 - __le16 NameLength; 768 - __le32 OpenFlags; 769 - __u32 RootDirectoryFid; 770 - __le32 DesiredAccess; 771 - __le64 AllocationSize; 772 - __le32 FileAttributes; 773 - __le32 ShareAccess; 774 - __le32 CreateDisposition; 775 - __le32 CreateOptions; 776 - __le32 ImpersonationLevel; 777 - __u8 SecurityFlags; 778 - __le16 ByteCount; 779 - char fileName[]; 780 - } __packed OPEN_REQ; 781 - 782 - /* open response: oplock levels */ 783 - #define OPLOCK_NONE 0 784 - #define OPLOCK_EXCLUSIVE 1 785 - #define OPLOCK_BATCH 2 786 - #define OPLOCK_READ 3 /* level 2 oplock */ 787 - 788 - /* open response for CreateAction shifted left */ 789 - #define CIFS_CREATE_ACTION 0x20000 /* file created */ 790 - 791 - typedef struct smb_com_open_rsp { 792 - struct smb_hdr hdr; /* wct = 34 BB */ 793 - __u8 AndXCommand; 794 - __u8 AndXReserved; 795 - __le16 AndXOffset; 796 - __u8 OplockLevel; 797 - __u16 Fid; 798 - __le32 CreateAction; 799 - struct_group_attr(common_attributes, __packed, 800 - __le64 CreationTime; 801 - __le64 LastAccessTime; 802 - __le64 LastWriteTime; 803 - __le64 ChangeTime; 804 - __le32 FileAttributes; 805 - ); 806 - __le64 AllocationSize; 807 - __le64 EndOfFile; 808 - __le16 FileType; 809 - __le16 DeviceState; 810 - __u8 DirectoryFlag; 811 - __u16 ByteCount; /* bct = 0 */ 812 - } __packed OPEN_RSP; 813 - 814 - typedef struct smb_com_open_rsp_ext { 815 - struct smb_hdr hdr; /* wct = 42 but meaningless due to MS bug? */ 816 - __u8 AndXCommand; 817 - __u8 AndXReserved; 818 - __le16 AndXOffset; 819 - __u8 OplockLevel; 820 - __u16 Fid; 821 - __le32 CreateAction; 822 - __le64 CreationTime; 823 - __le64 LastAccessTime; 824 - __le64 LastWriteTime; 825 - __le64 ChangeTime; 826 - __le32 FileAttributes; 827 - __le64 AllocationSize; 828 - __le64 EndOfFile; 829 - __le16 FileType; 830 - __le16 DeviceState; 831 - __u8 DirectoryFlag; 832 - __u8 VolumeGUID[16]; 833 - __u64 FileId; /* note no endian conversion - is opaque UniqueID */ 834 - __le32 MaximalAccessRights; 835 - __le32 GuestMaximalAccessRights; 836 - __u16 ByteCount; /* bct = 0 */ 837 - } __packed OPEN_RSP_EXT; 838 - 839 - 840 - /* format of legacy open request */ 841 - typedef struct smb_com_openx_req { 842 - struct smb_hdr hdr; /* wct = 15 */ 843 - __u8 AndXCommand; 844 - __u8 AndXReserved; 845 - __le16 AndXOffset; 846 - __le16 OpenFlags; 847 - __le16 Mode; 848 - __le16 Sattr; /* search attributes */ 849 - __le16 FileAttributes; /* dos attrs */ 850 - __le32 CreateTime; /* os2 format */ 851 - __le16 OpenFunction; 852 - __le32 EndOfFile; 853 - __le32 Timeout; 854 - __le32 Reserved; 855 - __le16 ByteCount; /* file name follows */ 856 - char fileName[]; 857 - } __packed OPENX_REQ; 858 - 859 - typedef struct smb_com_openx_rsp { 860 - struct smb_hdr hdr; /* wct = 15 */ 861 - __u8 AndXCommand; 862 - __u8 AndXReserved; 863 - __le16 AndXOffset; 864 - __u16 Fid; 865 - __le16 FileAttributes; 866 - __le32 LastWriteTime; /* os2 format */ 867 - __le32 EndOfFile; 868 - __le16 Access; 869 - __le16 FileType; 870 - __le16 IPCState; 871 - __le16 Action; 872 - __u32 FileId; 873 - __u16 Reserved; 874 - __u16 ByteCount; 875 - } __packed OPENX_RSP; 876 - 877 - /* For encoding of POSIX Open Request - see trans2 function 0x209 data struct */ 878 - 879 - /* Legacy write request for older servers */ 880 - typedef struct smb_com_writex_req { 881 - struct smb_hdr hdr; /* wct = 12 */ 882 - __u8 AndXCommand; 883 - __u8 AndXReserved; 884 - __le16 AndXOffset; 885 - __u16 Fid; 886 - __le32 OffsetLow; 887 - __u32 Reserved; /* Timeout */ 888 - __le16 WriteMode; /* 1 = write through */ 889 - __le16 Remaining; 890 - __le16 Reserved2; 891 - __le16 DataLengthLow; 892 - __le16 DataOffset; 893 - __le16 ByteCount; 894 - __u8 Pad; /* BB check for whether padded to DWORD 895 - boundary and optimum performance here */ 896 - char Data[]; 897 - } __packed WRITEX_REQ; 898 - 899 - typedef struct smb_com_write_req { 900 - struct smb_hdr hdr; /* wct = 14 */ 901 - __u8 AndXCommand; 902 - __u8 AndXReserved; 903 - __le16 AndXOffset; 904 - __u16 Fid; 905 - __le32 OffsetLow; 906 - __u32 Reserved; 907 - __le16 WriteMode; 908 - __le16 Remaining; 909 - __le16 DataLengthHigh; 910 - __le16 DataLengthLow; 911 - __le16 DataOffset; 912 - __le32 OffsetHigh; 913 - __le16 ByteCount; 914 - __u8 Pad; /* BB check for whether padded to DWORD 915 - boundary and optimum performance here */ 916 - char Data[]; 917 - } __packed WRITE_REQ; 918 - 919 - typedef struct smb_com_write_rsp { 920 - struct smb_hdr hdr; /* wct = 6 */ 921 - __u8 AndXCommand; 922 - __u8 AndXReserved; 923 - __le16 AndXOffset; 924 - __le16 Count; 925 - __le16 Remaining; 926 - __le16 CountHigh; 927 - __u16 Reserved; 928 - __u16 ByteCount; 929 - } __packed WRITE_RSP; 930 - 931 - /* legacy read request for older servers */ 932 - typedef struct smb_com_readx_req { 933 - struct smb_hdr hdr; /* wct = 10 */ 934 - __u8 AndXCommand; 935 - __u8 AndXReserved; 936 - __le16 AndXOffset; 937 - __u16 Fid; 938 - __le32 OffsetLow; 939 - __le16 MaxCount; 940 - __le16 MinCount; /* obsolete */ 941 - __le32 Reserved; 942 - __le16 Remaining; 943 - __le16 ByteCount; 944 - } __packed READX_REQ; 945 - 946 - typedef struct smb_com_read_req { 947 - struct smb_hdr hdr; /* wct = 12 */ 948 - __u8 AndXCommand; 949 - __u8 AndXReserved; 950 - __le16 AndXOffset; 951 - __u16 Fid; 952 - __le32 OffsetLow; 953 - __le16 MaxCount; 954 - __le16 MinCount; /* obsolete */ 955 - __le32 MaxCountHigh; 956 - __le16 Remaining; 957 - __le32 OffsetHigh; 958 - __le16 ByteCount; 959 - } __packed READ_REQ; 960 - 961 - typedef struct smb_com_read_rsp { 962 - struct smb_hdr hdr; /* wct = 12 */ 963 - __u8 AndXCommand; 964 - __u8 AndXReserved; 965 - __le16 AndXOffset; 966 - __le16 Remaining; 967 - __le16 DataCompactionMode; 968 - __le16 Reserved; 969 - __le16 DataLength; 970 - __le16 DataOffset; 971 - __le16 DataLengthHigh; 972 - __u64 Reserved2; 973 - __u16 ByteCount; 974 - /* read response data immediately follows */ 975 - } __packed READ_RSP; 976 - 977 - typedef struct locking_andx_range { 978 - __le16 Pid; 979 - __le16 Pad; 980 - __le32 OffsetHigh; 981 - __le32 OffsetLow; 982 - __le32 LengthHigh; 983 - __le32 LengthLow; 984 - } __packed LOCKING_ANDX_RANGE; 985 - 986 - #define LOCKING_ANDX_SHARED_LOCK 0x01 987 - #define LOCKING_ANDX_OPLOCK_RELEASE 0x02 988 - #define LOCKING_ANDX_CHANGE_LOCKTYPE 0x04 989 - #define LOCKING_ANDX_CANCEL_LOCK 0x08 990 - #define LOCKING_ANDX_LARGE_FILES 0x10 /* always on for us */ 991 - 992 - typedef struct smb_com_lock_req { 993 - struct smb_hdr hdr; /* wct = 8 */ 994 - __u8 AndXCommand; 995 - __u8 AndXReserved; 996 - __le16 AndXOffset; 997 - __u16 Fid; 998 - __u8 LockType; 999 - __u8 OplockLevel; 1000 - __le32 Timeout; 1001 - __le16 NumberOfUnlocks; 1002 - __le16 NumberOfLocks; 1003 - __le16 ByteCount; 1004 - LOCKING_ANDX_RANGE Locks[]; 1005 - } __packed LOCK_REQ; 1006 - 1007 - /* lock type */ 1008 - #define CIFS_RDLCK 0 1009 - #define CIFS_WRLCK 1 1010 - #define CIFS_UNLCK 2 1011 - typedef struct cifs_posix_lock { 1012 - __le16 lock_type; /* 0 = Read, 1 = Write, 2 = Unlock */ 1013 - __le16 lock_flags; /* 1 = Wait (only valid for setlock) */ 1014 - __le32 pid; 1015 - __le64 start; 1016 - __le64 length; 1017 - /* BB what about additional owner info to identify network client */ 1018 - } __packed CIFS_POSIX_LOCK; 1019 - 1020 - typedef struct smb_com_lock_rsp { 1021 - struct smb_hdr hdr; /* wct = 2 */ 1022 - __u8 AndXCommand; 1023 - __u8 AndXReserved; 1024 - __le16 AndXOffset; 1025 - __u16 ByteCount; 1026 - } __packed LOCK_RSP; 1027 - 1028 - typedef struct smb_com_rename_req { 1029 - struct smb_hdr hdr; /* wct = 1 */ 1030 - __le16 SearchAttributes; /* target file attributes */ 1031 - __le16 ByteCount; 1032 - __u8 BufferFormat; /* 4 = ASCII or Unicode */ 1033 - unsigned char OldFileName[]; 1034 - /* followed by __u8 BufferFormat2 */ 1035 - /* followed by NewFileName */ 1036 - } __packed RENAME_REQ; 1037 - 1038 - /* copy request flags */ 1039 - #define COPY_MUST_BE_FILE 0x0001 1040 - #define COPY_MUST_BE_DIR 0x0002 1041 - #define COPY_TARGET_MODE_ASCII 0x0004 /* if not set, binary */ 1042 - #define COPY_SOURCE_MODE_ASCII 0x0008 /* if not set, binary */ 1043 - #define COPY_VERIFY_WRITES 0x0010 1044 - #define COPY_TREE 0x0020 1045 - 1046 - typedef struct smb_com_copy_req { 1047 - struct smb_hdr hdr; /* wct = 3 */ 1048 - __u16 Tid2; 1049 - __le16 OpenFunction; 1050 - __le16 Flags; 1051 - __le16 ByteCount; 1052 - __u8 BufferFormat; /* 4 = ASCII or Unicode */ 1053 - unsigned char OldFileName[]; 1054 - /* followed by __u8 BufferFormat2 */ 1055 - /* followed by NewFileName string */ 1056 - } __packed COPY_REQ; 1057 - 1058 - typedef struct smb_com_copy_rsp { 1059 - struct smb_hdr hdr; /* wct = 1 */ 1060 - __le16 CopyCount; /* number of files copied */ 1061 - __u16 ByteCount; /* may be zero */ 1062 - __u8 BufferFormat; /* 0x04 - only present if errored file follows */ 1063 - unsigned char ErrorFileName[]; /* only present if error in copy */ 1064 - } __packed COPY_RSP; 1065 - 1066 - #define CREATE_HARD_LINK 0x103 1067 - #define MOVEFILE_COPY_ALLOWED 0x0002 1068 - #define MOVEFILE_REPLACE_EXISTING 0x0001 1069 - 1070 - typedef struct smb_com_nt_rename_req { /* A5 - also used for create hardlink */ 1071 - struct smb_hdr hdr; /* wct = 4 */ 1072 - __le16 SearchAttributes; /* target file attributes */ 1073 - __le16 Flags; /* spec says Information Level */ 1074 - __le32 ClusterCount; 1075 - __le16 ByteCount; 1076 - __u8 BufferFormat; /* 4 = ASCII or Unicode */ 1077 - unsigned char OldFileName[]; 1078 - /* followed by __u8 BufferFormat2 */ 1079 - /* followed by NewFileName */ 1080 - } __packed NT_RENAME_REQ; 1081 - 1082 - typedef struct smb_com_rename_rsp { 1083 - struct smb_hdr hdr; /* wct = 0 */ 1084 - __u16 ByteCount; /* bct = 0 */ 1085 - } __packed RENAME_RSP; 1086 - 1087 - typedef struct smb_com_delete_file_req { 1088 - struct smb_hdr hdr; /* wct = 1 */ 1089 - __le16 SearchAttributes; 1090 - __le16 ByteCount; 1091 - __u8 BufferFormat; /* 4 = ASCII */ 1092 - unsigned char fileName[]; 1093 - } __packed DELETE_FILE_REQ; 1094 - 1095 - typedef struct smb_com_delete_file_rsp { 1096 - struct smb_hdr hdr; /* wct = 0 */ 1097 - __u16 ByteCount; /* bct = 0 */ 1098 - } __packed DELETE_FILE_RSP; 1099 - 1100 - typedef struct smb_com_delete_directory_req { 1101 - struct smb_hdr hdr; /* wct = 0 */ 1102 - __le16 ByteCount; 1103 - __u8 BufferFormat; /* 4 = ASCII */ 1104 - unsigned char DirName[]; 1105 - } __packed DELETE_DIRECTORY_REQ; 1106 - 1107 - typedef struct smb_com_delete_directory_rsp { 1108 - struct smb_hdr hdr; /* wct = 0 */ 1109 - __u16 ByteCount; /* bct = 0 */ 1110 - } __packed DELETE_DIRECTORY_RSP; 1111 - 1112 - typedef struct smb_com_create_directory_req { 1113 - struct smb_hdr hdr; /* wct = 0 */ 1114 - __le16 ByteCount; 1115 - __u8 BufferFormat; /* 4 = ASCII */ 1116 - unsigned char DirName[]; 1117 - } __packed CREATE_DIRECTORY_REQ; 1118 - 1119 - typedef struct smb_com_create_directory_rsp { 1120 - struct smb_hdr hdr; /* wct = 0 */ 1121 - __u16 ByteCount; /* bct = 0 */ 1122 - } __packed CREATE_DIRECTORY_RSP; 1123 - 1124 - typedef struct smb_com_query_information_req { 1125 - struct smb_hdr hdr; /* wct = 0 */ 1126 - __le16 ByteCount; /* 1 + namelen + 1 */ 1127 - __u8 BufferFormat; /* 4 = ASCII */ 1128 - unsigned char FileName[]; 1129 - } __packed QUERY_INFORMATION_REQ; 1130 - 1131 - typedef struct smb_com_query_information_rsp { 1132 - struct smb_hdr hdr; /* wct = 10 */ 1133 - __le16 attr; 1134 - __le32 last_write_time; 1135 - __le32 size; 1136 - __u16 reserved[5]; 1137 - __le16 ByteCount; /* bcc = 0 */ 1138 - } __packed QUERY_INFORMATION_RSP; 1139 - 1140 - typedef struct smb_com_setattr_req { 1141 - struct smb_hdr hdr; /* wct = 8 */ 1142 - __le16 attr; 1143 - __le32 last_write_time; 1144 - __le16 reserved[5]; /* must be zero */ 1145 - __le16 ByteCount; 1146 - __u8 BufferFormat; /* 4 = ASCII */ 1147 - unsigned char fileName[]; 1148 - } __packed SETATTR_REQ; 1149 - 1150 - typedef struct smb_com_setattr_rsp { 1151 - struct smb_hdr hdr; /* wct = 0 */ 1152 - __u16 ByteCount; /* bct = 0 */ 1153 - } __packed SETATTR_RSP; 1154 - 1155 - /* empty wct response to setattr */ 1156 - 1157 - /*******************************************************/ 1158 - /* NT Transact structure definitions follow */ 1159 - /* Currently only ioctl, acl (get security descriptor) */ 1160 - /* and notify are implemented */ 1161 - /*******************************************************/ 1162 - typedef struct smb_com_ntransact_req { 1163 - struct smb_hdr hdr; /* wct >= 19 */ 1164 - __u8 MaxSetupCount; 1165 - __u16 Reserved; 1166 - __le32 TotalParameterCount; 1167 - __le32 TotalDataCount; 1168 - __le32 MaxParameterCount; 1169 - __le32 MaxDataCount; 1170 - __le32 ParameterCount; 1171 - __le32 ParameterOffset; 1172 - __le32 DataCount; 1173 - __le32 DataOffset; 1174 - __u8 SetupCount; /* four setup words follow subcommand */ 1175 - /* SNIA spec incorrectly included spurious pad here */ 1176 - __le16 SubCommand; /* 2 = IOCTL/FSCTL */ 1177 - /* SetupCount words follow then */ 1178 - __le16 ByteCount; 1179 - __u8 Pad[3]; 1180 - __u8 Parms[]; 1181 - } __packed NTRANSACT_REQ; 1182 - 1183 - typedef struct smb_com_ntransact_rsp { 1184 - struct smb_hdr hdr; /* wct = 18 */ 1185 - __u8 Reserved[3]; 1186 - __le32 TotalParameterCount; 1187 - __le32 TotalDataCount; 1188 - __le32 ParameterCount; 1189 - __le32 ParameterOffset; 1190 - __le32 ParameterDisplacement; 1191 - __le32 DataCount; 1192 - __le32 DataOffset; 1193 - __le32 DataDisplacement; 1194 - __u8 SetupCount; /* 0 */ 1195 - __u16 ByteCount; 1196 - /* __u8 Pad[3]; */ 1197 - /* parms and data follow */ 1198 - } __packed NTRANSACT_RSP; 1199 - 1200 - typedef struct smb_com_transaction_ioctl_req { 1201 - struct smb_hdr hdr; /* wct = 23 */ 1202 - __u8 MaxSetupCount; 1203 - __u16 Reserved; 1204 - __le32 TotalParameterCount; 1205 - __le32 TotalDataCount; 1206 - __le32 MaxParameterCount; 1207 - __le32 MaxDataCount; 1208 - __le32 ParameterCount; 1209 - __le32 ParameterOffset; 1210 - __le32 DataCount; 1211 - __le32 DataOffset; 1212 - __u8 SetupCount; /* four setup words follow subcommand */ 1213 - /* SNIA spec incorrectly included spurious pad here */ 1214 - __le16 SubCommand; /* 2 = IOCTL/FSCTL */ 1215 - __le32 FunctionCode; 1216 - __u16 Fid; 1217 - __u8 IsFsctl; /* 1 = File System Control 0 = device control (IOCTL) */ 1218 - __u8 IsRootFlag; /* 1 = apply command to root of share (must be DFS) */ 1219 - __le16 ByteCount; 1220 - __u8 Pad[3]; 1221 - __u8 Data[]; 1222 - } __packed TRANSACT_IOCTL_REQ; 1223 - 1224 - typedef struct smb_com_transaction_compr_ioctl_req { 1225 - struct smb_hdr hdr; /* wct = 23 */ 1226 - __u8 MaxSetupCount; 1227 - __u16 Reserved; 1228 - __le32 TotalParameterCount; 1229 - __le32 TotalDataCount; 1230 - __le32 MaxParameterCount; 1231 - __le32 MaxDataCount; 1232 - __le32 ParameterCount; 1233 - __le32 ParameterOffset; 1234 - __le32 DataCount; 1235 - __le32 DataOffset; 1236 - __u8 SetupCount; /* four setup words follow subcommand */ 1237 - /* SNIA spec incorrectly included spurious pad here */ 1238 - __le16 SubCommand; /* 2 = IOCTL/FSCTL */ 1239 - __le32 FunctionCode; 1240 - __u16 Fid; 1241 - __u8 IsFsctl; /* 1 = File System Control 0 = device control (IOCTL) */ 1242 - __u8 IsRootFlag; /* 1 = apply command to root of share (must be DFS) */ 1243 - __le16 ByteCount; 1244 - __u8 Pad[3]; 1245 - __le16 compression_state; /* See below for valid flags */ 1246 - } __packed TRANSACT_COMPR_IOCTL_REQ; 1247 - 1248 - /* compression state flags */ 1249 - #define COMPRESSION_FORMAT_NONE 0x0000 1250 - #define COMPRESSION_FORMAT_DEFAULT 0x0001 1251 - #define COMPRESSION_FORMAT_LZNT1 0x0002 1252 - 1253 - typedef struct smb_com_transaction_ioctl_rsp { 1254 - struct smb_hdr hdr; /* wct = 19 */ 1255 - __u8 Reserved[3]; 1256 - __le32 TotalParameterCount; 1257 - __le32 TotalDataCount; 1258 - __le32 ParameterCount; 1259 - __le32 ParameterOffset; 1260 - __le32 ParameterDisplacement; 1261 - __le32 DataCount; 1262 - __le32 DataOffset; 1263 - __le32 DataDisplacement; 1264 - __u8 SetupCount; /* 1 */ 1265 - __le16 ReturnedDataLen; 1266 - __le16 ByteCount; 1267 - } __packed TRANSACT_IOCTL_RSP; 1268 - 1269 - #define CIFS_ACL_OWNER 1 1270 - #define CIFS_ACL_GROUP 2 1271 - #define CIFS_ACL_DACL 4 1272 - #define CIFS_ACL_SACL 8 1273 - 1274 - typedef struct smb_com_transaction_qsec_req { 1275 - struct smb_hdr hdr; /* wct = 19 */ 1276 - __u8 MaxSetupCount; 1277 - __u16 Reserved; 1278 - __le32 TotalParameterCount; 1279 - __le32 TotalDataCount; 1280 - __le32 MaxParameterCount; 1281 - __le32 MaxDataCount; 1282 - __le32 ParameterCount; 1283 - __le32 ParameterOffset; 1284 - __le32 DataCount; 1285 - __le32 DataOffset; 1286 - __u8 SetupCount; /* no setup words follow subcommand */ 1287 - /* SNIA spec incorrectly included spurious pad here */ 1288 - __le16 SubCommand; /* 6 = QUERY_SECURITY_DESC */ 1289 - __le16 ByteCount; /* bcc = 3 + 8 */ 1290 - __u8 Pad[3]; 1291 - __u16 Fid; 1292 - __u16 Reserved2; 1293 - __le32 AclFlags; 1294 - } __packed QUERY_SEC_DESC_REQ; 1295 - 1296 - 1297 - typedef struct smb_com_transaction_ssec_req { 1298 - struct smb_hdr hdr; /* wct = 19 */ 1299 - __u8 MaxSetupCount; 1300 - __u16 Reserved; 1301 - __le32 TotalParameterCount; 1302 - __le32 TotalDataCount; 1303 - __le32 MaxParameterCount; 1304 - __le32 MaxDataCount; 1305 - __le32 ParameterCount; 1306 - __le32 ParameterOffset; 1307 - __le32 DataCount; 1308 - __le32 DataOffset; 1309 - __u8 SetupCount; /* no setup words follow subcommand */ 1310 - /* SNIA spec incorrectly included spurious pad here */ 1311 - __le16 SubCommand; /* 3 = SET_SECURITY_DESC */ 1312 - __le16 ByteCount; /* bcc = 3 + 8 */ 1313 - __u8 Pad[3]; 1314 - __u16 Fid; 1315 - __u16 Reserved2; 1316 - __le32 AclFlags; 1317 - } __packed SET_SEC_DESC_REQ; 1318 - 1319 - typedef struct smb_com_transaction_change_notify_req { 1320 - struct smb_hdr hdr; /* wct = 23 */ 1321 - __u8 MaxSetupCount; 1322 - __u16 Reserved; 1323 - __le32 TotalParameterCount; 1324 - __le32 TotalDataCount; 1325 - __le32 MaxParameterCount; 1326 - __le32 MaxDataCount; 1327 - __le32 ParameterCount; 1328 - __le32 ParameterOffset; 1329 - __le32 DataCount; 1330 - __le32 DataOffset; 1331 - __u8 SetupCount; /* four setup words follow subcommand */ 1332 - /* SNIA spec incorrectly included spurious pad here */ 1333 - __le16 SubCommand;/* 4 = Change Notify */ 1334 - __le32 CompletionFilter; /* operation to monitor */ 1335 - __u16 Fid; 1336 - __u8 WatchTree; /* 1 = Monitor subdirectories */ 1337 - __u8 Reserved2; 1338 - __le16 ByteCount; 1339 - /* __u8 Pad[3];*/ 1340 - /* __u8 Data[];*/ 1341 - } __packed TRANSACT_CHANGE_NOTIFY_REQ; 1342 - 1343 - /* BB eventually change to use generic ntransact rsp struct 1344 - and validation routine */ 1345 - typedef struct smb_com_transaction_change_notify_rsp { 1346 - struct smb_hdr hdr; /* wct = 18 */ 1347 - __u8 Reserved[3]; 1348 - __le32 TotalParameterCount; 1349 - __le32 TotalDataCount; 1350 - __le32 ParameterCount; 1351 - __le32 ParameterOffset; 1352 - __le32 ParameterDisplacement; 1353 - __le32 DataCount; 1354 - __le32 DataOffset; 1355 - __le32 DataDisplacement; 1356 - __u8 SetupCount; /* 0 */ 1357 - __u16 ByteCount; 1358 - /* __u8 Pad[3]; */ 1359 - } __packed TRANSACT_CHANGE_NOTIFY_RSP; 1360 - 1361 - struct cifs_quota_data { 1362 - __u32 rsrvd1; /* 0 */ 1363 - __u32 sid_size; 1364 - __u64 rsrvd2; /* 0 */ 1365 - __u64 space_used; 1366 - __u64 soft_limit; 1367 - __u64 hard_limit; 1368 - char sid[]; /* variable size? */ 1369 - } __packed; 1370 - 1371 - /* quota sub commands */ 1372 - #define QUOTA_LIST_CONTINUE 0 1373 - #define QUOTA_LIST_START 0x100 1374 - #define QUOTA_FOR_SID 0x101 1375 - 1376 - struct trans2_req { 1377 - /* struct smb_hdr hdr precedes. Set wct = 14+ */ 1378 - __le16 TotalParameterCount; 1379 - __le16 TotalDataCount; 1380 - __le16 MaxParameterCount; 1381 - __le16 MaxDataCount; 1382 - __u8 MaxSetupCount; 1383 - __u8 Reserved; 1384 - __le16 Flags; 1385 - __le32 Timeout; 1386 - __u16 Reserved2; 1387 - __le16 ParameterCount; 1388 - __le16 ParameterOffset; 1389 - __le16 DataCount; 1390 - __le16 DataOffset; 1391 - __u8 SetupCount; 1392 - __u8 Reserved3; 1393 - __le16 SubCommand; /* 1st setup word - SetupCount words follow */ 1394 - __le16 ByteCount; 1395 - } __packed; 1396 - 1397 - struct smb_t2_req { 1398 - struct smb_hdr hdr; 1399 - struct trans2_req t2_req; 1400 - } __packed; 1401 - 1402 - struct trans2_resp { 1403 - /* struct smb_hdr hdr precedes. Note wct = 10 + setup count */ 1404 - __le16 TotalParameterCount; 1405 - __le16 TotalDataCount; 1406 - __u16 Reserved; 1407 - __le16 ParameterCount; 1408 - __le16 ParameterOffset; 1409 - __le16 ParameterDisplacement; 1410 - __le16 DataCount; 1411 - __le16 DataOffset; 1412 - __le16 DataDisplacement; 1413 - __u8 SetupCount; 1414 - __u8 Reserved1; 1415 - /* SetupWords[SetupCount]; 1416 - __u16 ByteCount; 1417 - __u16 Reserved2;*/ 1418 - /* data area follows */ 1419 - } __packed; 1420 - 1421 - struct smb_t2_rsp { 1422 - struct smb_hdr hdr; 1423 - struct trans2_resp t2_rsp; 1424 - } __packed; 1425 - 1426 - /* PathInfo/FileInfo infolevels */ 1427 - #define SMB_INFO_STANDARD 1 1428 - #define SMB_SET_FILE_EA 2 1429 - #define SMB_QUERY_FILE_EA_SIZE 2 1430 - #define SMB_INFO_QUERY_EAS_FROM_LIST 3 1431 - #define SMB_INFO_QUERY_ALL_EAS 4 1432 - #define SMB_INFO_IS_NAME_VALID 6 1433 - #define SMB_QUERY_FILE_BASIC_INFO 0x101 1434 - #define SMB_QUERY_FILE_STANDARD_INFO 0x102 1435 - #define SMB_QUERY_FILE_EA_INFO 0x103 1436 - #define SMB_QUERY_FILE_NAME_INFO 0x104 1437 - #define SMB_QUERY_FILE_ALLOCATION_INFO 0x105 1438 - #define SMB_QUERY_FILE_END_OF_FILEINFO 0x106 1439 - #define SMB_QUERY_FILE_ALL_INFO 0x107 1440 - #define SMB_QUERY_ALT_NAME_INFO 0x108 1441 - #define SMB_QUERY_FILE_STREAM_INFO 0x109 1442 - #define SMB_QUERY_FILE_COMPRESSION_INFO 0x10B 1443 - #define SMB_QUERY_FILE_UNIX_BASIC 0x200 1444 - #define SMB_QUERY_FILE_UNIX_LINK 0x201 1445 - #define SMB_QUERY_POSIX_ACL 0x204 1446 - #define SMB_QUERY_XATTR 0x205 /* e.g. system EA name space */ 1447 - #define SMB_QUERY_ATTR_FLAGS 0x206 /* append,immutable etc. */ 1448 - #define SMB_QUERY_POSIX_PERMISSION 0x207 1449 - #define SMB_QUERY_POSIX_LOCK 0x208 1450 - /* #define SMB_POSIX_OPEN 0x209 */ 1451 - /* #define SMB_POSIX_UNLINK 0x20a */ 1452 - #define SMB_QUERY_FILE__UNIX_INFO2 0x20b 1453 - #define SMB_QUERY_FILE_INTERNAL_INFO 0x3ee 1454 - #define SMB_QUERY_FILE_ACCESS_INFO 0x3f0 1455 - #define SMB_QUERY_FILE_NAME_INFO2 0x3f1 /* 0x30 bytes */ 1456 - #define SMB_QUERY_FILE_POSITION_INFO 0x3f6 1457 - #define SMB_QUERY_FILE_MODE_INFO 0x3f8 1458 - #define SMB_QUERY_FILE_ALGN_INFO 0x3f9 1459 - 1460 - 1461 - #define SMB_SET_FILE_BASIC_INFO 0x101 1462 - #define SMB_SET_FILE_DISPOSITION_INFO 0x102 1463 - #define SMB_SET_FILE_ALLOCATION_INFO 0x103 1464 - #define SMB_SET_FILE_END_OF_FILE_INFO 0x104 1465 - #define SMB_SET_FILE_UNIX_BASIC 0x200 1466 - #define SMB_SET_FILE_UNIX_LINK 0x201 1467 - #define SMB_SET_FILE_UNIX_HLINK 0x203 1468 - #define SMB_SET_POSIX_ACL 0x204 1469 - #define SMB_SET_XATTR 0x205 1470 - #define SMB_SET_ATTR_FLAGS 0x206 /* append, immutable etc. */ 1471 - #define SMB_SET_POSIX_LOCK 0x208 1472 - #define SMB_POSIX_OPEN 0x209 1473 - #define SMB_POSIX_UNLINK 0x20a 1474 - #define SMB_SET_FILE_UNIX_INFO2 0x20b 1475 - #define SMB_SET_FILE_BASIC_INFO2 0x3ec 1476 - #define SMB_SET_FILE_RENAME_INFORMATION 0x3f2 /* BB check if qpathinfo too */ 1477 - #define SMB_FILE_ALL_INFO2 0x3fa 1478 - #define SMB_SET_FILE_ALLOCATION_INFO2 0x3fb 1479 - #define SMB_SET_FILE_END_OF_FILE_INFO2 0x3fc 1480 - #define SMB_FILE_MOVE_CLUSTER_INFO 0x407 1481 - #define SMB_FILE_QUOTA_INFO 0x408 1482 - #define SMB_FILE_REPARSEPOINT_INFO 0x409 1483 - #define SMB_FILE_MAXIMUM_INFO 0x40d 1484 - 1485 - /* Find File infolevels */ 1486 - #define SMB_FIND_FILE_INFO_STANDARD 0x001 1487 - #define SMB_FIND_FILE_QUERY_EA_SIZE 0x002 1488 - #define SMB_FIND_FILE_QUERY_EAS_FROM_LIST 0x003 1489 - #define SMB_FIND_FILE_DIRECTORY_INFO 0x101 1490 - #define SMB_FIND_FILE_FULL_DIRECTORY_INFO 0x102 1491 - #define SMB_FIND_FILE_NAMES_INFO 0x103 1492 - #define SMB_FIND_FILE_BOTH_DIRECTORY_INFO 0x104 1493 - #define SMB_FIND_FILE_ID_FULL_DIR_INFO 0x105 1494 - #define SMB_FIND_FILE_ID_BOTH_DIR_INFO 0x106 1495 - #define SMB_FIND_FILE_UNIX 0x202 1496 - /* #define SMB_FIND_FILE_POSIX_INFO 0x064 */ 1497 - 1498 - typedef struct smb_com_transaction2_qpi_req { 1499 - struct smb_hdr hdr; /* wct = 14+ */ 1500 - __le16 TotalParameterCount; 1501 - __le16 TotalDataCount; 1502 - __le16 MaxParameterCount; 1503 - __le16 MaxDataCount; 1504 - __u8 MaxSetupCount; 1505 - __u8 Reserved; 1506 - __le16 Flags; 1507 - __le32 Timeout; 1508 - __u16 Reserved2; 1509 - __le16 ParameterCount; 1510 - __le16 ParameterOffset; 1511 - __le16 DataCount; 1512 - __le16 DataOffset; 1513 - __u8 SetupCount; 1514 - __u8 Reserved3; 1515 - __le16 SubCommand; /* one setup word */ 1516 - __le16 ByteCount; 1517 - __u8 Pad; 1518 - __le16 InformationLevel; 1519 - __u32 Reserved4; 1520 - char FileName[]; 1521 - } __packed TRANSACTION2_QPI_REQ; 1522 - 1523 - typedef struct smb_com_transaction2_qpi_rsp { 1524 - struct smb_hdr hdr; /* wct = 10 + SetupCount */ 1525 - struct trans2_resp t2; 1526 - __u16 ByteCount; 1527 - __u16 Reserved2; /* parameter word is present for infolevels > 100 */ 1528 - } __packed TRANSACTION2_QPI_RSP; 1529 - 1530 - typedef struct smb_com_transaction2_spi_req { 1531 - struct smb_hdr hdr; /* wct = 15 */ 1532 - __le16 TotalParameterCount; 1533 - __le16 TotalDataCount; 1534 - __le16 MaxParameterCount; 1535 - __le16 MaxDataCount; 1536 - __u8 MaxSetupCount; 1537 - __u8 Reserved; 1538 - __le16 Flags; 1539 - __le32 Timeout; 1540 - __u16 Reserved2; 1541 - __le16 ParameterCount; 1542 - __le16 ParameterOffset; 1543 - __le16 DataCount; 1544 - __le16 DataOffset; 1545 - __u8 SetupCount; 1546 - __u8 Reserved3; 1547 - __le16 SubCommand; /* one setup word */ 1548 - __le16 ByteCount; 1549 - __u8 Pad; 1550 - __u16 Pad1; 1551 - __le16 InformationLevel; 1552 - __u32 Reserved4; 1553 - char FileName[]; 1554 - } __packed TRANSACTION2_SPI_REQ; 1555 - 1556 - typedef struct smb_com_transaction2_spi_rsp { 1557 - struct smb_hdr hdr; /* wct = 10 + SetupCount */ 1558 - struct trans2_resp t2; 1559 - __u16 ByteCount; 1560 - __u16 Reserved2; /* parameter word is present for infolevels > 100 */ 1561 - } __packed TRANSACTION2_SPI_RSP; 1562 - 1563 - struct set_file_rename { 1564 - __le32 overwrite; /* 1 = overwrite dest */ 1565 - __u32 root_fid; /* zero */ 1566 - __le32 target_name_len; 1567 - char target_name[]; /* Must be unicode */ 1568 - } __packed; 1569 - 1570 - struct smb_com_transaction2_sfi_req { 1571 - struct smb_hdr hdr; /* wct = 15 */ 1572 - __le16 TotalParameterCount; 1573 - __le16 TotalDataCount; 1574 - __le16 MaxParameterCount; 1575 - __le16 MaxDataCount; 1576 - __u8 MaxSetupCount; 1577 - __u8 Reserved; 1578 - __le16 Flags; 1579 - __le32 Timeout; 1580 - __u16 Reserved2; 1581 - __le16 ParameterCount; 1582 - __le16 ParameterOffset; 1583 - __le16 DataCount; 1584 - __le16 DataOffset; 1585 - __u8 SetupCount; 1586 - __u8 Reserved3; 1587 - __le16 SubCommand; /* one setup word */ 1588 - __le16 ByteCount; 1589 - __u8 Pad; 1590 - __u16 Pad1; 1591 - __u16 Fid; 1592 - __le16 InformationLevel; 1593 - __u16 Reserved4; 1594 - __u8 payload[]; 1595 - } __packed; 1596 - 1597 - struct smb_com_transaction2_sfi_rsp { 1598 - struct smb_hdr hdr; /* wct = 10 + SetupCount */ 1599 - struct trans2_resp t2; 1600 - __u16 ByteCount; 1601 - __u16 Reserved2; /* parameter word reserved - present for infolevels > 100 */ 1602 - } __packed; 1603 - 1604 - struct smb_t2_qfi_req { 1605 - struct smb_hdr hdr; 1606 - struct trans2_req t2; 1607 - __u8 Pad; 1608 - __u16 Fid; 1609 - __le16 InformationLevel; 1610 - } __packed; 1611 - 1612 - struct smb_t2_qfi_rsp { 1613 - struct smb_hdr hdr; /* wct = 10 + SetupCount */ 1614 - struct trans2_resp t2; 1615 - __u16 ByteCount; 1616 - __u16 Reserved2; /* parameter word reserved - present for infolevels > 100 */ 1617 - } __packed; 1618 - 1619 - /* 1620 - * Flags on T2 FINDFIRST and FINDNEXT 1621 - */ 1622 - #define CIFS_SEARCH_CLOSE_ALWAYS 0x0001 1623 - #define CIFS_SEARCH_CLOSE_AT_END 0x0002 1624 - #define CIFS_SEARCH_RETURN_RESUME 0x0004 1625 - #define CIFS_SEARCH_CONTINUE_FROM_LAST 0x0008 1626 - #define CIFS_SEARCH_BACKUP_SEARCH 0x0010 1627 - 1628 - /* 1629 - * Size of the resume key on FINDFIRST and FINDNEXT calls 1630 - */ 1631 - #define CIFS_SMB_RESUME_KEY_SIZE 4 1632 - 1633 - typedef struct smb_com_transaction2_ffirst_req { 1634 - struct smb_hdr hdr; /* wct = 15 */ 1635 - __le16 TotalParameterCount; 1636 - __le16 TotalDataCount; 1637 - __le16 MaxParameterCount; 1638 - __le16 MaxDataCount; 1639 - __u8 MaxSetupCount; 1640 - __u8 Reserved; 1641 - __le16 Flags; 1642 - __le32 Timeout; 1643 - __u16 Reserved2; 1644 - __le16 ParameterCount; 1645 - __le16 ParameterOffset; 1646 - __le16 DataCount; 1647 - __le16 DataOffset; 1648 - __u8 SetupCount; /* one */ 1649 - __u8 Reserved3; 1650 - __le16 SubCommand; /* TRANS2_FIND_FIRST */ 1651 - __le16 ByteCount; 1652 - __u8 Pad; 1653 - __le16 SearchAttributes; 1654 - __le16 SearchCount; 1655 - __le16 SearchFlags; 1656 - __le16 InformationLevel; 1657 - __le32 SearchStorageType; 1658 - char FileName[]; 1659 - } __packed TRANSACTION2_FFIRST_REQ; 1660 - 1661 - typedef struct smb_com_transaction2_ffirst_rsp { 1662 - struct smb_hdr hdr; /* wct = 10 */ 1663 - struct trans2_resp t2; 1664 - __u16 ByteCount; 1665 - } __packed TRANSACTION2_FFIRST_RSP; 1666 - 1667 - typedef struct smb_com_transaction2_ffirst_rsp_parms { 1668 - __u16 SearchHandle; 1669 - __le16 SearchCount; 1670 - __le16 EndofSearch; 1671 - __le16 EAErrorOffset; 1672 - __le16 LastNameOffset; 1673 - } __packed T2_FFIRST_RSP_PARMS; 1674 - 1675 - typedef struct smb_com_transaction2_fnext_req { 1676 - struct smb_hdr hdr; /* wct = 15 */ 1677 - __le16 TotalParameterCount; 1678 - __le16 TotalDataCount; 1679 - __le16 MaxParameterCount; 1680 - __le16 MaxDataCount; 1681 - __u8 MaxSetupCount; 1682 - __u8 Reserved; 1683 - __le16 Flags; 1684 - __le32 Timeout; 1685 - __u16 Reserved2; 1686 - __le16 ParameterCount; 1687 - __le16 ParameterOffset; 1688 - __le16 DataCount; 1689 - __le16 DataOffset; 1690 - __u8 SetupCount; /* one */ 1691 - __u8 Reserved3; 1692 - __le16 SubCommand; /* TRANS2_FIND_NEXT */ 1693 - __le16 ByteCount; 1694 - __u8 Pad; 1695 - __u16 SearchHandle; 1696 - __le16 SearchCount; 1697 - __le16 InformationLevel; 1698 - __u32 ResumeKey; 1699 - __le16 SearchFlags; 1700 - char ResumeFileName[]; 1701 - } __packed TRANSACTION2_FNEXT_REQ; 1702 - 1703 - typedef struct smb_com_transaction2_fnext_rsp { 1704 - struct smb_hdr hdr; /* wct = 10 */ 1705 - struct trans2_resp t2; 1706 - __u16 ByteCount; 1707 - } __packed TRANSACTION2_FNEXT_RSP; 1708 - 1709 - typedef struct smb_com_transaction2_fnext_rsp_parms { 1710 - __le16 SearchCount; 1711 - __le16 EndofSearch; 1712 - __le16 EAErrorOffset; 1713 - __le16 LastNameOffset; 1714 - } __packed T2_FNEXT_RSP_PARMS; 1715 - 1716 - /* QFSInfo Levels */ 1717 - #define SMB_INFO_ALLOCATION 1 1718 - #define SMB_INFO_VOLUME 2 1719 - #define SMB_QUERY_FS_VOLUME_INFO 0x102 1720 - #define SMB_QUERY_FS_SIZE_INFO 0x103 1721 - #define SMB_QUERY_FS_DEVICE_INFO 0x104 1722 - #define SMB_QUERY_FS_ATTRIBUTE_INFO 0x105 1723 - #define SMB_QUERY_CIFS_UNIX_INFO 0x200 1724 - #define SMB_QUERY_POSIX_FS_INFO 0x201 1725 - #define SMB_QUERY_POSIX_WHO_AM_I 0x202 1726 - #define SMB_REQUEST_TRANSPORT_ENCRYPTION 0x203 1727 - #define SMB_QUERY_FS_PROXY 0x204 /* WAFS enabled. Returns structure 1728 - FILE_SYSTEM__UNIX_INFO to tell 1729 - whether new NTIOCTL available 1730 - (0xACE) for WAN friendly SMB 1731 - operations to be carried */ 1732 - #define SMB_QUERY_LABEL_INFO 0x3ea 1733 - #define SMB_QUERY_FS_QUOTA_INFO 0x3ee 1734 - #define SMB_QUERY_FS_FULL_SIZE_INFO 0x3ef 1735 - #define SMB_QUERY_OBJECTID_INFO 0x3f0 1736 - 1737 - typedef struct smb_com_transaction2_qfsi_req { 1738 - struct smb_hdr hdr; /* wct = 14+ */ 1739 - __le16 TotalParameterCount; 1740 - __le16 TotalDataCount; 1741 - __le16 MaxParameterCount; 1742 - __le16 MaxDataCount; 1743 - __u8 MaxSetupCount; 1744 - __u8 Reserved; 1745 - __le16 Flags; 1746 - __le32 Timeout; 1747 - __u16 Reserved2; 1748 - __le16 ParameterCount; 1749 - __le16 ParameterOffset; 1750 - __le16 DataCount; 1751 - __le16 DataOffset; 1752 - __u8 SetupCount; 1753 - __u8 Reserved3; 1754 - __le16 SubCommand; /* one setup word */ 1755 - __le16 ByteCount; 1756 - __u8 Pad; 1757 - __le16 InformationLevel; 1758 - } __packed TRANSACTION2_QFSI_REQ; 1759 - 1760 - typedef struct smb_com_transaction_qfsi_rsp { 1761 - struct smb_hdr hdr; /* wct = 10 + SetupCount */ 1762 - struct trans2_resp t2; 1763 - __u16 ByteCount; 1764 - __u8 Pad; /* may be three bytes? *//* followed by data area */ 1765 - } __packed TRANSACTION2_QFSI_RSP; 1766 - 1767 - typedef struct whoami_rsp_data { /* Query level 0x202 */ 1768 - __u32 flags; /* 0 = Authenticated user 1 = GUEST */ 1769 - __u32 mask; /* which flags bits server understands ie 0x0001 */ 1770 - __u64 unix_user_id; 1771 - __u64 unix_user_gid; 1772 - __u32 number_of_supplementary_gids; /* may be zero */ 1773 - __u32 number_of_sids; /* may be zero */ 1774 - __u32 length_of_sid_array; /* in bytes - may be zero */ 1775 - __u32 pad; /* reserved - MBZ */ 1776 - /* __u64 gid_array[0]; */ /* may be empty */ 1777 - /* __u8 * psid_list */ /* may be empty */ 1778 - } __packed WHOAMI_RSP_DATA; 1779 - 1780 - /* SETFSInfo Levels */ 1781 - #define SMB_SET_CIFS_UNIX_INFO 0x200 1782 - /* level 0x203 is defined above in list of QFS info levels */ 1783 - /* #define SMB_REQUEST_TRANSPORT_ENCRYPTION 0x203 */ 1784 - 1785 - /* Level 0x200 request structure follows */ 1786 - typedef struct smb_com_transaction2_setfsi_req { 1787 - struct smb_hdr hdr; /* wct = 15 */ 1788 - __le16 TotalParameterCount; 1789 - __le16 TotalDataCount; 1790 - __le16 MaxParameterCount; 1791 - __le16 MaxDataCount; 1792 - __u8 MaxSetupCount; 1793 - __u8 Reserved; 1794 - __le16 Flags; 1795 - __le32 Timeout; 1796 - __u16 Reserved2; 1797 - __le16 ParameterCount; /* 4 */ 1798 - __le16 ParameterOffset; 1799 - __le16 DataCount; /* 12 */ 1800 - __le16 DataOffset; 1801 - __u8 SetupCount; /* one */ 1802 - __u8 Reserved3; 1803 - __le16 SubCommand; /* TRANS2_SET_FS_INFORMATION */ 1804 - __le16 ByteCount; 1805 - __u8 Pad; 1806 - __u16 FileNum; /* Parameters start. */ 1807 - __le16 InformationLevel;/* Parameters end. */ 1808 - __le16 ClientUnixMajor; /* Data start. */ 1809 - __le16 ClientUnixMinor; 1810 - __le64 ClientUnixCap; /* Data end */ 1811 - } __packed TRANSACTION2_SETFSI_REQ; 1812 - 1813 - /* level 0x203 request structure follows */ 1814 - typedef struct smb_com_transaction2_setfs_enc_req { 1815 - struct smb_hdr hdr; /* wct = 15 */ 1816 - __le16 TotalParameterCount; 1817 - __le16 TotalDataCount; 1818 - __le16 MaxParameterCount; 1819 - __le16 MaxDataCount; 1820 - __u8 MaxSetupCount; 1821 - __u8 Reserved; 1822 - __le16 Flags; 1823 - __le32 Timeout; 1824 - __u16 Reserved2; 1825 - __le16 ParameterCount; /* 4 */ 1826 - __le16 ParameterOffset; 1827 - __le16 DataCount; /* 12 */ 1828 - __le16 DataOffset; 1829 - __u8 SetupCount; /* one */ 1830 - __u8 Reserved3; 1831 - __le16 SubCommand; /* TRANS2_SET_FS_INFORMATION */ 1832 - __le16 ByteCount; 1833 - __u8 Pad; 1834 - __u16 Reserved4; /* Parameters start. */ 1835 - __le16 InformationLevel;/* Parameters end. */ 1836 - /* NTLMSSP Blob, Data start. */ 1837 - } __packed TRANSACTION2_SETFSI_ENC_REQ; 1838 - 1839 - /* response for setfsinfo levels 0x200 and 0x203 */ 1840 - typedef struct smb_com_transaction2_setfsi_rsp { 1841 - struct smb_hdr hdr; /* wct = 10 */ 1842 - struct trans2_resp t2; 1843 - __u16 ByteCount; 1844 - } __packed TRANSACTION2_SETFSI_RSP; 1845 - 1846 - typedef struct smb_com_transaction2_get_dfs_refer_req { 1847 - struct smb_hdr hdr; /* wct = 15 */ 1848 - __le16 TotalParameterCount; 1849 - __le16 TotalDataCount; 1850 - __le16 MaxParameterCount; 1851 - __le16 MaxDataCount; 1852 - __u8 MaxSetupCount; 1853 - __u8 Reserved; 1854 - __le16 Flags; 1855 - __le32 Timeout; 1856 - __u16 Reserved2; 1857 - __le16 ParameterCount; 1858 - __le16 ParameterOffset; 1859 - __le16 DataCount; 1860 - __le16 DataOffset; 1861 - __u8 SetupCount; 1862 - __u8 Reserved3; 1863 - __le16 SubCommand; /* one setup word */ 1864 - __le16 ByteCount; 1865 - __u8 Pad[3]; /* Win2K has sent 0x0F01 (max response length 1866 - perhaps?) followed by one byte pad - doesn't 1867 - seem to matter though */ 1868 - __le16 MaxReferralLevel; 1869 - char RequestFileName[]; 1870 - } __packed TRANSACTION2_GET_DFS_REFER_REQ; 1871 - 1872 - #define DFS_VERSION cpu_to_le16(0x0003) 1873 - 1874 - /* DFS server target type */ 1875 - #define DFS_TYPE_LINK 0x0000 /* also for sysvol targets */ 1876 - #define DFS_TYPE_ROOT 0x0001 1877 - 1878 - /* Referral Entry Flags */ 1879 - #define DFS_NAME_LIST_REF 0x0200 /* set for domain or DC referral responses */ 1880 - #define DFS_TARGET_SET_BOUNDARY 0x0400 /* only valid with version 4 dfs req */ 1881 - 1882 - typedef struct dfs_referral_level_3 { /* version 4 is same, + one flag bit */ 1883 - __le16 VersionNumber; /* must be 3 or 4 */ 1884 - __le16 Size; 1885 - __le16 ServerType; /* 0x0001 = root targets; 0x0000 = link targets */ 1886 - __le16 ReferralEntryFlags; 1887 - __le32 TimeToLive; 1888 - __le16 DfsPathOffset; 1889 - __le16 DfsAlternatePathOffset; 1890 - __le16 NetworkAddressOffset; /* offset of the link target */ 1891 - __u8 ServiceSiteGuid[16]; /* MBZ, ignored */ 1892 - } __packed REFERRAL3; 1893 - 1894 - struct get_dfs_referral_rsp { 1895 - __le16 PathConsumed; 1896 - __le16 NumberOfReferrals; 1897 - __le32 DFSFlags; 1898 - REFERRAL3 referrals[]; /* array of level 3 dfs_referral structures */ 1899 - /* followed by the strings pointed to by the referral structures */ 1900 - } __packed; 1901 - 1902 - typedef struct smb_com_transaction_get_dfs_refer_rsp { 1903 - struct smb_hdr hdr; /* wct = 10 */ 1904 - struct trans2_resp t2; 1905 - __u16 ByteCount; 1906 - __u8 Pad; 1907 - struct get_dfs_referral_rsp dfs_data; 1908 - } __packed TRANSACTION2_GET_DFS_REFER_RSP; 1909 - 1910 - /* DFS Flags */ 1911 - #define DFSREF_REFERRAL_SERVER 0x00000001 /* all targets are DFS roots */ 1912 - #define DFSREF_STORAGE_SERVER 0x00000002 /* no further ref requests needed */ 1913 - #define DFSREF_TARGET_FAILBACK 0x00000004 /* only for DFS referral version 4 */ 1914 - 1915 - /* 1916 - ************************************************************************ 1917 - * All structs for everything above the SMB PDUs themselves 1918 - * (such as the T2 level specific data) go here 1919 - ************************************************************************ 1920 - */ 1921 - 1922 - /* 1923 - * Information on a server 1924 - */ 1925 - 1926 - struct serverInfo { 1927 - char name[16]; 1928 - unsigned char versionMajor; 1929 - unsigned char versionMinor; 1930 - unsigned long type; 1931 - unsigned int commentOffset; 1932 - } __packed; 1933 - 1934 - /* 1935 - * The following structure is the format of the data returned on a NetShareEnum 1936 - * with level "90" (x5A) 1937 - */ 1938 - 1939 - struct shareInfo { 1940 - char shareName[13]; 1941 - char pad; 1942 - unsigned short type; 1943 - unsigned int commentOffset; 1944 - } __packed; 1945 - 1946 - struct aliasInfo { 1947 - char aliasName[9]; 1948 - char pad; 1949 - unsigned int commentOffset; 1950 - unsigned char type[2]; 1951 - } __packed; 1952 - 1953 - struct aliasInfo92 { 1954 - int aliasNameOffset; 1955 - int serverNameOffset; 1956 - int shareNameOffset; 1957 - } __packed; 1958 - 1959 - typedef struct { 1960 - __le32 fsid; 1961 - __le32 SectorsPerAllocationUnit; 1962 - __le32 TotalAllocationUnits; 1963 - __le32 FreeAllocationUnits; 1964 - __le16 BytesPerSector; 1965 - } __packed FILE_SYSTEM_ALLOC_INFO; 1966 - 1967 - typedef struct { 1968 - __le16 MajorVersionNumber; 1969 - __le16 MinorVersionNumber; 1970 - __le64 Capability; 1971 - } __packed FILE_SYSTEM_UNIX_INFO; /* Unix extension level 0x200*/ 1972 - 1973 - /* Version numbers for CIFS UNIX major and minor. */ 1974 - #define CIFS_UNIX_MAJOR_VERSION 1 1975 - #define CIFS_UNIX_MINOR_VERSION 0 1976 - 1977 - /* Linux/Unix extensions capability flags */ 1978 - #define CIFS_UNIX_FCNTL_CAP 0x00000001 /* support for fcntl locks */ 1979 - #define CIFS_UNIX_POSIX_ACL_CAP 0x00000002 /* support getfacl/setfacl */ 1980 - #define CIFS_UNIX_XATTR_CAP 0x00000004 /* support new namespace */ 1981 - #define CIFS_UNIX_EXTATTR_CAP 0x00000008 /* support chattr/chflag */ 1982 - #define CIFS_UNIX_POSIX_PATHNAMES_CAP 0x00000010 /* Allow POSIX path chars */ 1983 - #define CIFS_UNIX_POSIX_PATH_OPS_CAP 0x00000020 /* Allow new POSIX path based 1984 - calls including posix open 1985 - and posix unlink */ 1986 - #define CIFS_UNIX_LARGE_READ_CAP 0x00000040 /* support reads >128K (up to 0xFFFF00 */ 1987 - #define CIFS_UNIX_LARGE_WRITE_CAP 0x00000080 1988 - #define CIFS_UNIX_TRANSPORT_ENCRYPTION_CAP 0x00000100 /* can do SPNEGO crypt */ 1989 - #define CIFS_UNIX_TRANSPORT_ENCRYPTION_MANDATORY_CAP 0x00000200 /* must do */ 1990 - #define CIFS_UNIX_PROXY_CAP 0x00000400 /* Proxy cap: 0xACE ioctl and QFS PROXY call */ 1991 - #ifdef CONFIG_CIFS_POSIX 1992 - /* presumably don't need the 0x20 POSIX_PATH_OPS_CAP since we never send 1993 - LockingX instead of posix locking call on unix sess (and we do not expect 1994 - LockingX to use different (ie Windows) semantics than posix locking on 1995 - the same session (if WINE needs to do this later, we can add this cap 1996 - back in later */ 1997 - /* #define CIFS_UNIX_CAP_MASK 0x000000fb */ 1998 - #define CIFS_UNIX_CAP_MASK 0x000003db 1999 - #else 2000 - #define CIFS_UNIX_CAP_MASK 0x00000013 2001 - #endif /* CONFIG_CIFS_POSIX */ 2002 - 2003 - 2004 - #define CIFS_POSIX_EXTENSIONS 0x00000010 /* support for new QFSInfo */ 2005 - 2006 - /******************************************************************************/ 2007 - /* QueryFileInfo/QueryPathinfo (also for SetPath/SetFile) data buffer formats */ 2008 - /******************************************************************************/ 2009 - typedef struct { /* data block encoding of response to level 263 QPathInfo */ 2010 - struct_group_attr(common_attributes, __packed, 2011 - __le64 CreationTime; 2012 - __le64 LastAccessTime; 2013 - __le64 LastWriteTime; 2014 - __le64 ChangeTime; 2015 - __le32 Attributes; 2016 - ); 2017 - __u32 Pad1; 2018 - __le64 AllocationSize; 2019 - __le64 EndOfFile; /* size ie offset to first free byte in file */ 2020 - __le32 NumberOfLinks; /* hard links */ 2021 - __u8 DeletePending; 2022 - __u8 Directory; 2023 - __u16 Pad2; 2024 - __le32 EASize; 2025 - __le32 FileNameLength; 2026 - union { 2027 - char __pad; 2028 - DECLARE_FLEX_ARRAY(char, FileName); 2029 - }; 2030 - } __packed FILE_ALL_INFO; /* level 0x107 QPathInfo */ 2031 - 2032 - typedef struct { 2033 - __le64 AllocationSize; 2034 - __le64 EndOfFile; /* size ie offset to first free byte in file */ 2035 - __le32 NumberOfLinks; /* hard links */ 2036 - __u8 DeletePending; 2037 - __u8 Directory; 2038 - __u16 Pad; 2039 - } __packed FILE_STANDARD_INFO; /* level 0x102 QPathInfo */ 2040 - 2041 - 2042 - /* defines for enumerating possible values of the Unix type field below */ 2043 - #define UNIX_FILE 0 2044 - #define UNIX_DIR 1 2045 - #define UNIX_SYMLINK 2 2046 - #define UNIX_CHARDEV 3 2047 - #define UNIX_BLOCKDEV 4 2048 - #define UNIX_FIFO 5 2049 - #define UNIX_SOCKET 6 2050 - typedef struct { 2051 - __le64 EndOfFile; 2052 - __le64 NumOfBytes; 2053 - __le64 LastStatusChange; /*SNIA specs DCE time for the 3 time fields */ 2054 - __le64 LastAccessTime; 2055 - __le64 LastModificationTime; 2056 - __le64 Uid; 2057 - __le64 Gid; 2058 - __le32 Type; 2059 - __le64 DevMajor; 2060 - __le64 DevMinor; 2061 - __le64 UniqueId; 2062 - __le64 Permissions; 2063 - __le64 Nlinks; 2064 - } __packed FILE_UNIX_BASIC_INFO; /* level 0x200 QPathInfo */ 2065 - 2066 - typedef struct { 2067 - DECLARE_FLEX_ARRAY(char, LinkDest); 2068 - } __packed FILE_UNIX_LINK_INFO; /* level 0x201 QPathInfo */ 2069 - 2070 - /* The following three structures are needed only for 2071 - setting time to NT4 and some older servers via 2072 - the primitive DOS time format */ 2073 - typedef struct { 2074 - __u16 Day:5; 2075 - __u16 Month:4; 2076 - __u16 Year:7; 2077 - } __packed SMB_DATE; 2078 - 2079 - typedef struct { 2080 - __u16 TwoSeconds:5; 2081 - __u16 Minutes:6; 2082 - __u16 Hours:5; 2083 - } __packed SMB_TIME; 2084 - 2085 - typedef struct { 2086 - __le16 CreationDate; /* SMB Date see above */ 2087 - __le16 CreationTime; /* SMB Time */ 2088 - __le16 LastAccessDate; 2089 - __le16 LastAccessTime; 2090 - __le16 LastWriteDate; 2091 - __le16 LastWriteTime; 2092 - __le32 DataSize; /* File Size (EOF) */ 2093 - __le32 AllocationSize; 2094 - __le16 Attributes; /* verify not u32 */ 2095 - __le32 EASize; 2096 - } __packed FILE_INFO_STANDARD; /* level 1 SetPath/FileInfo */ 2097 - 2098 - typedef struct { 2099 - __le64 CreationTime; 2100 - __le64 LastAccessTime; 2101 - __le64 LastWriteTime; 2102 - __le64 ChangeTime; 2103 - __le32 Attributes; 2104 - __u32 Pad; 2105 - } __packed FILE_BASIC_INFO; /* size info, level 0x101 */ 2106 - 2107 - struct file_allocation_info { 2108 - __le64 AllocationSize; /* Note old Samba srvr rounds this up too much */ 2109 - } __packed; /* size used on disk, for level 0x103 for set, 0x105 for query */ 2110 - 2111 - struct file_end_of_file_info { 2112 - __le64 FileSize; /* offset to end of file */ 2113 - } __packed; /* size info, level 0x104 for set, 0x106 for query */ 2114 - 2115 - struct file_alt_name_info { 2116 - DECLARE_FLEX_ARRAY(__u8, alt_name); 2117 - } __packed; /* level 0x0108 */ 2118 - 2119 - struct file_stream_info { 2120 - __le32 number_of_streams; /* BB check sizes and verify location */ 2121 - /* followed by info on streams themselves 2122 - u64 size; 2123 - u64 allocation_size 2124 - stream info */ 2125 - }; /* level 0x109 */ 2126 - 2127 - struct file_compression_info { 2128 - __le64 compressed_size; 2129 - __le16 format; 2130 - __u8 unit_shift; 2131 - __u8 ch_shift; 2132 - __u8 cl_shift; 2133 - __u8 pad[3]; 2134 - } __packed; /* level 0x10b */ 2135 - 2136 - /* POSIX ACL set/query path info structures */ 2137 - #define CIFS_ACL_VERSION 1 2138 - struct cifs_posix_ace { /* access control entry (ACE) */ 2139 - __u8 cifs_e_tag; 2140 - __u8 cifs_e_perm; 2141 - __le64 cifs_uid; /* or gid */ 2142 - } __packed; 2143 - 2144 - struct cifs_posix_acl { /* access control list (ACL) */ 2145 - __le16 version; 2146 - __le16 access_entry_count; /* access ACL - count of entries */ 2147 - __le16 default_entry_count; /* default ACL - count of entries */ 2148 - struct cifs_posix_ace ace_array[]; 2149 - /* followed by struct cifs_posix_ace default_ace_array[] */ 2150 - } __packed; /* level 0x204 */ 2151 - 2152 - /* types of access control entries already defined in posix_acl.h */ 2153 - /* #define CIFS_POSIX_ACL_USER_OBJ 0x01 2154 - #define CIFS_POSIX_ACL_USER 0x02 2155 - #define CIFS_POSIX_ACL_GROUP_OBJ 0x04 2156 - #define CIFS_POSIX_ACL_GROUP 0x08 2157 - #define CIFS_POSIX_ACL_MASK 0x10 2158 - #define CIFS_POSIX_ACL_OTHER 0x20 */ 2159 - 2160 - /* types of perms */ 2161 - /* #define CIFS_POSIX_ACL_EXECUTE 0x01 2162 - #define CIFS_POSIX_ACL_WRITE 0x02 2163 - #define CIFS_POSIX_ACL_READ 0x04 */ 2164 - 2165 - /* end of POSIX ACL definitions */ 2166 - 2167 - /* POSIX Open Flags */ 2168 - #define SMB_O_RDONLY 0x1 2169 - #define SMB_O_WRONLY 0x2 2170 - #define SMB_O_RDWR 0x4 2171 - #define SMB_O_CREAT 0x10 2172 - #define SMB_O_EXCL 0x20 2173 - #define SMB_O_TRUNC 0x40 2174 - #define SMB_O_APPEND 0x80 2175 - #define SMB_O_SYNC 0x100 2176 - #define SMB_O_DIRECTORY 0x200 2177 - #define SMB_O_NOFOLLOW 0x400 2178 - #define SMB_O_DIRECT 0x800 2179 - 2180 - typedef struct { 2181 - __le32 OpenFlags; /* same as NT CreateX */ 2182 - __le32 PosixOpenFlags; 2183 - __le64 Permissions; 2184 - __le16 Level; /* reply level requested (see QPathInfo levels) */ 2185 - } __packed OPEN_PSX_REQ; /* level 0x209 SetPathInfo data */ 2186 - 2187 - typedef struct { 2188 - __le16 OplockFlags; 2189 - __u16 Fid; 2190 - __le32 CreateAction; 2191 - __le16 ReturnedLevel; 2192 - __le16 Pad; 2193 - /* struct following varies based on requested level */ 2194 - } __packed OPEN_PSX_RSP; /* level 0x209 SetPathInfo data */ 2195 - 2196 - #define SMB_POSIX_UNLINK_FILE_TARGET 0 2197 - #define SMB_POSIX_UNLINK_DIRECTORY_TARGET 1 2198 - 2199 - struct unlink_psx_rq { /* level 0x20a SetPathInfo */ 2200 - __le16 type; 2201 - } __packed; 2202 - 2203 - struct file_internal_info { 2204 - __le64 UniqueId; /* inode number */ 2205 - } __packed; /* level 0x3ee */ 2206 - 2207 - struct file_mode_info { 2208 - __le32 Mode; 2209 - } __packed; /* level 0x3f8 */ 2210 - 2211 - struct file_attrib_tag { 2212 - __le32 Attribute; 2213 - __le32 ReparseTag; 2214 - } __packed; /* level 0x40b */ 2215 - 2216 - 2217 - /********************************************************/ 2218 - /* FindFirst/FindNext transact2 data buffer formats */ 2219 - /********************************************************/ 2220 - 2221 - typedef struct { 2222 - __le32 NextEntryOffset; 2223 - __u32 ResumeKey; /* as with FileIndex - no need to convert */ 2224 - FILE_UNIX_BASIC_INFO basic; 2225 - union { 2226 - char __pad; 2227 - DECLARE_FLEX_ARRAY(char, FileName); 2228 - }; 2229 - } __packed FILE_UNIX_INFO; /* level 0x202 */ 2230 - 2231 - typedef struct { 2232 - __u32 ResumeKey; 2233 - __le16 CreationDate; /* SMB Date */ 2234 - __le16 CreationTime; /* SMB Time */ 2235 - __le16 LastAccessDate; 2236 - __le16 LastAccessTime; 2237 - __le16 LastWriteDate; 2238 - __le16 LastWriteTime; 2239 - __le32 DataSize; /* File Size (EOF) */ 2240 - __le32 AllocationSize; 2241 - __le16 Attributes; /* verify not u32 */ 2242 - __u8 FileNameLength; 2243 - char FileName[]; 2244 - } __packed FIND_FILE_STANDARD_INFO; /* level 0x1 FF resp data */ 2245 - 2246 - 2247 - struct fea { 2248 - unsigned char EA_flags; 2249 - __u8 name_len; 2250 - __le16 value_len; 2251 - char name[]; 2252 - /* optionally followed by value */ 2253 - } __packed; 2254 - /* flags for _FEA.fEA */ 2255 - #define FEA_NEEDEA 0x80 /* need EA bit */ 2256 - 2257 - struct fealist { 2258 - __le32 list_len; 2259 - struct fea list; 2260 - } __packed; 2261 - 2262 - /* used to hold an arbitrary blob of data */ 2263 - struct data_blob { 2264 - __u8 *data; 2265 - size_t length; 2266 - void (*free) (struct data_blob *data_blob); 2267 - } __packed; 2268 - 2269 - 2270 - #ifdef CONFIG_CIFS_POSIX 2271 - /* 2272 - For better POSIX semantics from Linux client, (even better 2273 - than the existing CIFS Unix Extensions) we need updated PDUs for: 2274 - 2275 - 1) PosixCreateX - to set and return the mode, inode#, device info and 2276 - perhaps add a CreateDevice - to create Pipes and other special .inodes 2277 - Also note POSIX open flags 2278 - 2) Close - to return the last write time to do cache across close 2279 - more safely 2280 - 3) FindFirst return unique inode number - what about resume key, two 2281 - forms short (matches readdir) and full (enough info to cache inodes) 2282 - 4) Mkdir - set mode 2283 - 2284 - And under consideration: 2285 - 5) FindClose2 (return nanosecond timestamp ??) 2286 - 6) Use nanosecond timestamps throughout all time fields if 2287 - corresponding attribute flag is set 2288 - 7) sendfile - handle based copy 2289 - 2290 - what about fixing 64 bit alignment 2291 - 2292 - There are also various legacy SMB/CIFS requests used as is 2293 - 2294 - From existing Lanman and NTLM dialects: 2295 - -------------------------------------- 2296 - NEGOTIATE 2297 - SESSION_SETUP_ANDX (BB which?) 2298 - TREE_CONNECT_ANDX (BB which wct?) 2299 - TREE_DISCONNECT (BB add volume timestamp on response) 2300 - LOGOFF_ANDX 2301 - DELETE (note delete open file behavior) 2302 - DELETE_DIRECTORY 2303 - READ_AND_X 2304 - WRITE_AND_X 2305 - LOCKING_AND_X (note posix lock semantics) 2306 - RENAME (note rename across dirs and open file rename posix behaviors) 2307 - NT_RENAME (for hardlinks) Is this good enough for all features? 2308 - FIND_CLOSE2 2309 - TRANSACTION2 (18 cases) 2310 - SMB_SET_FILE_END_OF_FILE_INFO2 SMB_SET_PATH_END_OF_FILE_INFO2 2311 - (BB verify that never need to set allocation size) 2312 - SMB_SET_FILE_BASIC_INFO2 (setting times - BB can it be done via 2313 - Unix ext?) 2314 - 2315 - COPY (note support for copy across directories) - FUTURE, OPTIONAL 2316 - setting/getting OS/2 EAs - FUTURE (BB can this handle 2317 - setting Linux xattrs perfectly) - OPTIONAL 2318 - dnotify - FUTURE, OPTIONAL 2319 - quota - FUTURE, OPTIONAL 2320 - 2321 - Note that various requests implemented for NT interop such as 2322 - NT_TRANSACT (IOCTL) QueryReparseInfo 2323 - are unneeded to servers compliant with the CIFS POSIX extensions 2324 - 2325 - From CIFS Unix Extensions: 2326 - ------------------------- 2327 - T2 SET_PATH_INFO (SMB_SET_FILE_UNIX_LINK) for symlinks 2328 - T2 SET_PATH_INFO (SMB_SET_FILE_BASIC_INFO2) 2329 - T2 QUERY_PATH_INFO (SMB_QUERY_FILE_UNIX_LINK) 2330 - T2 QUERY_PATH_INFO (SMB_QUERY_FILE_UNIX_BASIC) BB check for missing 2331 - inode fields 2332 - Actually a need QUERY_FILE_UNIX_INFO 2333 - since has inode num 2334 - BB what about a) blksize/blkbits/blocks 2335 - b) i_version 2336 - c) i_rdev 2337 - d) notify mask? 2338 - e) generation 2339 - f) size_seqcount 2340 - T2 FIND_FIRST/FIND_NEXT FIND_FILE_UNIX 2341 - TRANS2_GET_DFS_REFERRAL - OPTIONAL but recommended 2342 - T2_QFS_INFO QueryDevice/AttributeInfo - OPTIONAL 2343 - */ 2344 - 2345 - /* xsymlink is a symlink format (used by MacOS) that can be used 2346 - to save symlink info in a regular file when 2347 - mounted to operating systems that do not 2348 - support the cifs Unix extensions or EAs (for xattr 2349 - based symlinks). For such a file to be recognized 2350 - as containing symlink data: 2351 - 2352 - 1) file size must be 1067, 2353 - 2) signature must begin file data, 2354 - 3) length field must be set to ASCII representation 2355 - of a number which is less than or equal to 1024, 2356 - 4) md5 must match that of the path data */ 2357 - 2358 - struct xsymlink { 2359 - /* 1067 bytes */ 2360 - char signature[4]; /* XSym */ /* not null terminated */ 2361 - char cr0; /* \n */ 2362 - /* ASCII representation of length (4 bytes decimal) terminated by \n not null */ 2363 - char length[4]; 2364 - char cr1; /* \n */ 2365 - /* md5 of valid subset of path ie path[0] through path[length-1] */ 2366 - __u8 md5[32]; 2367 - char cr2; /* \n */ 2368 - /* if room left, then end with \n then 0x20s by convention but not required */ 2369 - char path[1024]; 2370 - } __packed; 2371 - 2372 - typedef struct file_xattr_info { 2373 - /* BB do we need another field for flags? BB */ 2374 - __u32 xattr_name_len; 2375 - __u32 xattr_value_len; 2376 - char xattr_name[]; 2377 - /* followed by xattr_value[xattr_value_len], no pad */ 2378 - } __packed FILE_XATTR_INFO; /* extended attribute info level 0x205 */ 2379 - 2380 - /* flags for lsattr and chflags commands removed arein uapi/linux/fs.h */ 2381 - 2382 - typedef struct file_chattr_info { 2383 - __le64 mask; /* list of all possible attribute bits */ 2384 - __le64 mode; /* list of actual attribute bits on this inode */ 2385 - } __packed FILE_CHATTR_INFO; /* ext attributes (chattr, chflags) level 0x206 */ 2386 - #endif /* POSIX */ 2387 - #endif /* _CIFSPDU_H */ 12 + #endif /* _CIFSPDU_H */
+240 -528
fs/smb/client/cifsproto.h
··· 14 14 #ifdef CONFIG_CIFS_DFS_UPCALL 15 15 #include "dfs_cache.h" 16 16 #endif 17 + #include "smb1proto.h" 17 18 18 19 struct statfs; 19 20 struct smb_rqst; ··· 26 25 ***************************************************************** 27 26 */ 28 27 29 - extern struct smb_hdr *cifs_buf_get(void); 30 - extern void cifs_buf_release(void *); 31 - extern struct smb_hdr *cifs_small_buf_get(void); 32 - extern void cifs_small_buf_release(void *); 33 - extern void free_rsp_buf(int, void *); 34 - extern int smb_send_kvec(struct TCP_Server_Info *server, 35 - struct msghdr *msg, 36 - size_t *sent); 37 - extern unsigned int _get_xid(void); 38 - extern void _free_xid(unsigned int); 28 + void *cifs_buf_get(void); 29 + void cifs_buf_release(void *buf_to_free); 30 + void *cifs_small_buf_get(void); 31 + void cifs_small_buf_release(void *buf_to_free); 32 + void free_rsp_buf(int resp_buftype, void *rsp); 33 + int smb_send_kvec(struct TCP_Server_Info *server, struct msghdr *smb_msg, 34 + size_t *sent); 35 + unsigned int _get_xid(void); 36 + void _free_xid(unsigned int xid); 39 37 #define get_xid() \ 40 38 ({ \ 41 39 unsigned int __xid = _get_xid(); \ ··· 55 55 else \ 56 56 trace_smb3_exit_done(curr_xid, __func__); \ 57 57 } while (0) 58 - extern int init_cifs_idmap(void); 59 - extern void exit_cifs_idmap(void); 60 - extern int init_cifs_spnego(void); 61 - extern void exit_cifs_spnego(void); 62 - extern const char *build_path_from_dentry(struct dentry *, void *); 63 - char *__build_path_from_dentry_optional_prefix(struct dentry *direntry, void *page, 64 - const char *tree, int tree_len, 65 - bool prefix); 66 - extern char *build_path_from_dentry_optional_prefix(struct dentry *direntry, 67 - void *page, bool prefix); 58 + int init_cifs_idmap(void); 59 + void exit_cifs_idmap(void); 60 + int init_cifs_spnego(void); 61 + void exit_cifs_spnego(void); 62 + const char *build_path_from_dentry(struct dentry *direntry, void *page); 63 + char *__build_path_from_dentry_optional_prefix(struct dentry *direntry, 64 + void *page, const char *tree, 65 + int tree_len, bool prefix); 66 + char *build_path_from_dentry_optional_prefix(struct dentry *direntry, 67 + void *page, bool prefix); 68 68 static inline void *alloc_dentry_path(void) 69 69 { 70 70 return __getname(); ··· 76 76 __putname(page); 77 77 } 78 78 79 - extern char *cifs_build_path_to_root(struct smb3_fs_context *ctx, 80 - struct cifs_sb_info *cifs_sb, 81 - struct cifs_tcon *tcon, 82 - int add_treename); 79 + char *cifs_build_path_to_root(struct smb3_fs_context *ctx, 80 + struct cifs_sb_info *cifs_sb, 81 + struct cifs_tcon *tcon, int add_treename); 83 82 char *cifs_build_devname(char *nodename, const char *prepath); 84 83 void delete_mid(struct TCP_Server_Info *server, struct mid_q_entry *mid); 85 - void __release_mid(struct TCP_Server_Info *server, struct mid_q_entry *mid); 86 - void cifs_wake_up_task(struct TCP_Server_Info *server, struct mid_q_entry *mid); 87 - extern int cifs_handle_standard(struct TCP_Server_Info *server, 88 - struct mid_q_entry *mid); 89 - extern char *smb3_fs_context_fullpath(const struct smb3_fs_context *ctx, 90 - char dirsep); 91 - extern int smb3_parse_devname(const char *devname, struct smb3_fs_context *ctx); 92 - extern int smb3_parse_opt(const char *options, const char *key, char **val); 93 - extern int cifs_ipaddr_cmp(struct sockaddr *srcaddr, struct sockaddr *rhs); 94 - extern bool cifs_match_ipaddr(struct sockaddr *srcaddr, struct sockaddr *rhs); 95 - extern int cifs_discard_remaining_data(struct TCP_Server_Info *server); 96 - extern int cifs_call_async(struct TCP_Server_Info *server, 97 - struct smb_rqst *rqst, 98 - mid_receive_t receive, mid_callback_t callback, 99 - mid_handle_t handle, void *cbdata, const int flags, 100 - const struct cifs_credits *exist_credits); 101 - extern struct TCP_Server_Info *cifs_pick_channel(struct cifs_ses *ses); 102 - extern int cifs_send_recv(const unsigned int xid, struct cifs_ses *ses, 103 - struct TCP_Server_Info *server, 104 - struct smb_rqst *rqst, int *resp_buf_type, 105 - const int flags, struct kvec *resp_iov); 106 - extern int compound_send_recv(const unsigned int xid, struct cifs_ses *ses, 107 - struct TCP_Server_Info *server, 108 - const int flags, const int num_rqst, 109 - struct smb_rqst *rqst, int *resp_buf_type, 110 - struct kvec *resp_iov); 111 - int SendReceive(const unsigned int xid, struct cifs_ses *ses, 112 - struct smb_hdr *in_buf, unsigned int in_len, 113 - struct smb_hdr *out_buf, int *pbytes_returned, const int flags); 114 - int SendReceiveNoRsp(const unsigned int xid, struct cifs_ses *ses, 115 - char *in_buf, unsigned int in_len, int flags); 116 - int cifs_sync_mid_result(struct mid_q_entry *mid, struct TCP_Server_Info *server); 117 - struct mid_q_entry *cifs_setup_request(struct cifs_ses *ses, struct TCP_Server_Info *ignored, 118 - struct smb_rqst *rqst); 119 - struct mid_q_entry *cifs_setup_async_request(struct TCP_Server_Info *server, 120 - struct smb_rqst *rqst); 84 + void __release_mid(struct TCP_Server_Info *server, 85 + struct mid_q_entry *midEntry); 86 + void cifs_wake_up_task(struct TCP_Server_Info *server, 87 + struct mid_q_entry *mid); 88 + int cifs_handle_standard(struct TCP_Server_Info *server, 89 + struct mid_q_entry *mid); 90 + char *smb3_fs_context_fullpath(const struct smb3_fs_context *ctx, char dirsep); 91 + int smb3_parse_devname(const char *devname, struct smb3_fs_context *ctx); 92 + int smb3_parse_opt(const char *options, const char *key, char **val); 93 + int cifs_ipaddr_cmp(struct sockaddr *srcaddr, struct sockaddr *rhs); 94 + bool cifs_match_ipaddr(struct sockaddr *srcaddr, struct sockaddr *rhs); 95 + int cifs_discard_remaining_data(struct TCP_Server_Info *server); 96 + int cifs_call_async(struct TCP_Server_Info *server, struct smb_rqst *rqst, 97 + mid_receive_t receive, mid_callback_t callback, 98 + mid_handle_t handle, void *cbdata, const int flags, 99 + const struct cifs_credits *exist_credits); 100 + struct TCP_Server_Info *cifs_pick_channel(struct cifs_ses *ses); 101 + int cifs_send_recv(const unsigned int xid, struct cifs_ses *ses, 102 + struct TCP_Server_Info *server, struct smb_rqst *rqst, 103 + int *resp_buf_type, const int flags, struct kvec *resp_iov); 104 + int compound_send_recv(const unsigned int xid, struct cifs_ses *ses, 105 + struct TCP_Server_Info *server, const int flags, 106 + const int num_rqst, struct smb_rqst *rqst, 107 + int *resp_buf_type, struct kvec *resp_iov); 108 + int cifs_sync_mid_result(struct mid_q_entry *mid, 109 + struct TCP_Server_Info *server); 121 110 int __smb_send_rqst(struct TCP_Server_Info *server, int num_rqst, 122 111 struct smb_rqst *rqst); 123 - extern int cifs_check_receive(struct mid_q_entry *mid, 124 - struct TCP_Server_Info *server, bool log_error); 125 112 int wait_for_free_request(struct TCP_Server_Info *server, const int flags, 126 113 unsigned int *instance); 127 - extern int cifs_wait_mtu_credits(struct TCP_Server_Info *server, 128 - size_t size, size_t *num, 129 - struct cifs_credits *credits); 114 + int cifs_wait_mtu_credits(struct TCP_Server_Info *server, size_t size, 115 + size_t *num, struct cifs_credits *credits); 130 116 131 117 static inline int 132 118 send_cancel(struct cifs_ses *ses, struct TCP_Server_Info *server, ··· 123 137 server->ops->send_cancel(ses, server, rqst, mid, xid) : 0; 124 138 } 125 139 126 - int wait_for_response(struct TCP_Server_Info *server, struct mid_q_entry *midQ); 127 - extern int SendReceive2(const unsigned int /* xid */ , struct cifs_ses *, 128 - struct kvec *, int /* nvec to send */, 129 - int * /* type of buf returned */, const int flags, 130 - struct kvec * /* resp vec */); 140 + int wait_for_response(struct TCP_Server_Info *server, struct mid_q_entry *mid); 131 141 132 142 void smb2_query_server_interfaces(struct work_struct *work); 133 - void 134 - cifs_signal_cifsd_for_reconnect(struct TCP_Server_Info *server, 135 - bool all_channels); 136 - void 137 - cifs_mark_tcp_ses_conns_for_reconnect(struct TCP_Server_Info *server, 138 - bool mark_smb_session); 139 - extern int cifs_reconnect(struct TCP_Server_Info *server, 140 - bool mark_smb_session); 141 - int checkSMB(char *buf, unsigned int pdu_len, unsigned int len, 142 - struct TCP_Server_Info *srvr); 143 - extern bool is_valid_oplock_break(char *, struct TCP_Server_Info *); 144 - extern bool backup_cred(struct cifs_sb_info *); 145 - extern bool is_size_safe_to_change(struct cifsInodeInfo *cifsInode, __u64 eof, 146 - bool from_readdir); 147 - void cifs_write_subrequest_terminated(struct cifs_io_subrequest *wdata, ssize_t result); 148 - extern struct cifsFileInfo *find_writable_file(struct cifsInodeInfo *, int); 149 - extern int cifs_get_writable_file(struct cifsInodeInfo *cifs_inode, 150 - int flags, 151 - struct cifsFileInfo **ret_file); 152 - extern int cifs_get_writable_path(struct cifs_tcon *tcon, const char *name, 153 - int flags, 154 - struct cifsFileInfo **ret_file); 155 - extern struct cifsFileInfo *find_readable_file(struct cifsInodeInfo *, bool); 156 - extern int cifs_get_readable_path(struct cifs_tcon *tcon, const char *name, 157 - struct cifsFileInfo **ret_file); 158 - extern int cifs_get_hardlink_path(struct cifs_tcon *tcon, struct inode *inode, 159 - struct file *file); 160 - extern unsigned int smbCalcSize(void *buf); 161 - extern int decode_negTokenInit(unsigned char *security_blob, int length, 143 + void cifs_signal_cifsd_for_reconnect(struct TCP_Server_Info *server, 144 + bool all_channels); 145 + void cifs_mark_tcp_ses_conns_for_reconnect(struct TCP_Server_Info *server, 146 + bool mark_smb_session); 147 + int cifs_reconnect(struct TCP_Server_Info *server, bool mark_smb_session); 148 + bool backup_cred(struct cifs_sb_info *cifs_sb); 149 + bool is_size_safe_to_change(struct cifsInodeInfo *cifsInode, __u64 end_of_file, 150 + bool from_readdir); 151 + void cifs_write_subrequest_terminated(struct cifs_io_subrequest *wdata, 152 + ssize_t result); 153 + struct cifsFileInfo *find_writable_file(struct cifsInodeInfo *cifs_inode, 154 + int flags); 155 + int cifs_get_writable_file(struct cifsInodeInfo *cifs_inode, int flags, 156 + struct cifsFileInfo **ret_file); 157 + int cifs_get_writable_path(struct cifs_tcon *tcon, const char *name, int flags, 158 + struct cifsFileInfo **ret_file); 159 + struct cifsFileInfo *find_readable_file(struct cifsInodeInfo *cifs_inode, 160 + bool fsuid_only); 161 + int cifs_get_readable_path(struct cifs_tcon *tcon, const char *name, 162 + struct cifsFileInfo **ret_file); 163 + int cifs_get_hardlink_path(struct cifs_tcon *tcon, struct inode *inode, 164 + struct file *file); 165 + int decode_negTokenInit(unsigned char *security_blob, int length, 162 166 struct TCP_Server_Info *server); 163 - extern int cifs_convert_address(struct sockaddr *dst, const char *src, int len); 164 - extern void cifs_set_port(struct sockaddr *addr, const unsigned short int port); 165 - extern int map_smb_to_linux_error(char *buf, bool logErr); 166 - extern int map_and_check_smb_error(struct TCP_Server_Info *server, 167 - struct mid_q_entry *mid, bool logErr); 168 - unsigned int header_assemble(struct smb_hdr *buffer, char smb_command, 169 - const struct cifs_tcon *treeCon, int word_count 170 - /* length of fixed section word count in two byte units */); 171 - extern int small_smb_init_no_tc(const int smb_cmd, const int wct, 172 - struct cifs_ses *ses, 173 - void **request_buf); 174 - extern int CIFS_SessSetup(const unsigned int xid, struct cifs_ses *ses, 175 - struct TCP_Server_Info *server, 176 - const struct nls_table *nls_cp); 177 - extern struct timespec64 cifs_NTtimeToUnix(__le64 utc_nanoseconds_since_1601); 178 - extern u64 cifs_UnixTimeToNT(struct timespec64); 179 - extern struct timespec64 cnvrtDosUnixTm(__le16 le_date, __le16 le_time, 180 - int offset); 181 - extern void cifs_set_oplock_level(struct cifsInodeInfo *cinode, __u32 oplock); 182 - extern int cifs_get_writer(struct cifsInodeInfo *cinode); 183 - extern void cifs_put_writer(struct cifsInodeInfo *cinode); 184 - extern void cifs_done_oplock_break(struct cifsInodeInfo *cinode); 185 - extern int cifs_unlock_range(struct cifsFileInfo *cfile, 186 - struct file_lock *flock, const unsigned int xid); 187 - extern int cifs_push_mandatory_locks(struct cifsFileInfo *cfile); 167 + int cifs_convert_address(struct sockaddr *dst, const char *src, int len); 168 + void cifs_set_port(struct sockaddr *addr, const unsigned short int port); 169 + struct timespec64 cifs_NTtimeToUnix(__le64 ntutc); 170 + u64 cifs_UnixTimeToNT(struct timespec64 t); 171 + struct timespec64 cnvrtDosUnixTm(__le16 le_date, __le16 le_time, int offset); 172 + void cifs_set_oplock_level(struct cifsInodeInfo *cinode, __u32 oplock); 173 + int cifs_get_writer(struct cifsInodeInfo *cinode); 174 + void cifs_put_writer(struct cifsInodeInfo *cinode); 175 + void cifs_done_oplock_break(struct cifsInodeInfo *cinode); 176 + int cifs_unlock_range(struct cifsFileInfo *cfile, struct file_lock *flock, 177 + unsigned int xid); 178 + int cifs_push_mandatory_locks(struct cifsFileInfo *cfile); 188 179 189 - extern void cifs_down_write(struct rw_semaphore *sem); 180 + void cifs_down_write(struct rw_semaphore *sem); 190 181 struct cifsFileInfo *cifs_new_fileinfo(struct cifs_fid *fid, struct file *file, 191 182 struct tcon_link *tlink, __u32 oplock, 192 183 const char *symlink_target); 193 - extern int cifs_posix_open(const char *full_path, struct inode **inode, 194 - struct super_block *sb, int mode, 195 - unsigned int f_flags, __u32 *oplock, __u16 *netfid, 196 - unsigned int xid); 184 + int cifs_posix_open(const char *full_path, struct inode **pinode, 185 + struct super_block *sb, int mode, unsigned int f_flags, 186 + __u32 *poplock, __u16 *pnetfid, unsigned int xid); 197 187 void cifs_fill_uniqueid(struct super_block *sb, struct cifs_fattr *fattr); 198 - extern void cifs_unix_basic_to_fattr(struct cifs_fattr *fattr, 199 - FILE_UNIX_BASIC_INFO *info, 200 - struct cifs_sb_info *cifs_sb); 201 - extern void cifs_dir_info_to_fattr(struct cifs_fattr *, FILE_DIRECTORY_INFO *, 202 - struct cifs_sb_info *); 203 - extern int cifs_fattr_to_inode(struct inode *inode, struct cifs_fattr *fattr, 204 - bool from_readdir); 205 - extern struct inode *cifs_iget(struct super_block *sb, 206 - struct cifs_fattr *fattr); 188 + void cifs_unix_basic_to_fattr(struct cifs_fattr *fattr, 189 + FILE_UNIX_BASIC_INFO *info, 190 + struct cifs_sb_info *cifs_sb); 191 + void cifs_dir_info_to_fattr(struct cifs_fattr *fattr, 192 + FILE_DIRECTORY_INFO *info, 193 + struct cifs_sb_info *cifs_sb); 194 + int cifs_fattr_to_inode(struct inode *inode, struct cifs_fattr *fattr, 195 + bool from_readdir); 196 + struct inode *cifs_iget(struct super_block *sb, struct cifs_fattr *fattr); 207 197 208 198 int cifs_get_inode_info(struct inode **inode, const char *full_path, 209 - struct cifs_open_info_data *data, struct super_block *sb, int xid, 199 + struct cifs_open_info_data *data, 200 + struct super_block *sb, int xid, 210 201 const struct cifs_fid *fid); 211 - extern int smb311_posix_get_inode_info(struct inode **inode, 212 - const char *full_path, 213 - struct cifs_open_info_data *data, 214 - struct super_block *sb, 215 - const unsigned int xid); 216 - extern int cifs_get_inode_info_unix(struct inode **pinode, 217 - const unsigned char *search_path, 218 - struct super_block *sb, unsigned int xid); 219 - extern int cifs_set_file_info(struct inode *inode, struct iattr *attrs, 220 - unsigned int xid, const char *full_path, __u32 dosattr); 221 - extern int cifs_rename_pending_delete(const char *full_path, 222 - struct dentry *dentry, 223 - const unsigned int xid); 224 - extern int sid_to_id(struct cifs_sb_info *cifs_sb, struct smb_sid *psid, 225 - struct cifs_fattr *fattr, uint sidtype); 226 - extern int cifs_acl_to_fattr(struct cifs_sb_info *cifs_sb, 227 - struct cifs_fattr *fattr, struct inode *inode, 228 - bool get_mode_from_special_sid, 229 - const char *path, const struct cifs_fid *pfid); 230 - extern int id_mode_to_cifs_acl(struct inode *inode, const char *path, __u64 *pnmode, 231 - kuid_t uid, kgid_t gid); 232 - extern struct smb_ntsd *get_cifs_acl(struct cifs_sb_info *cifssmb, struct inode *ino, 233 - const char *path, u32 *plen, u32 info); 234 - extern struct smb_ntsd *get_cifs_acl_by_fid(struct cifs_sb_info *cifssb, 235 - const struct cifs_fid *pfid, u32 *plen, u32 info); 236 - extern struct posix_acl *cifs_get_acl(struct mnt_idmap *idmap, 237 - struct dentry *dentry, int type); 238 - extern int cifs_set_acl(struct mnt_idmap *idmap, 239 - struct dentry *dentry, struct posix_acl *acl, int type); 240 - extern int set_cifs_acl(struct smb_ntsd *pntsd, __u32 len, struct inode *ino, 241 - const char *path, int flag); 242 - extern unsigned int setup_authusers_ACE(struct smb_ace *pace); 243 - extern unsigned int setup_special_mode_ACE(struct smb_ace *pace, 244 - bool posix, 245 - __u64 nmode); 246 - extern unsigned int setup_special_user_owner_ACE(struct smb_ace *pace); 202 + int smb311_posix_get_inode_info(struct inode **inode, const char *full_path, 203 + struct cifs_open_info_data *data, 204 + struct super_block *sb, 205 + const unsigned int xid); 206 + int cifs_get_inode_info_unix(struct inode **pinode, 207 + const unsigned char *full_path, 208 + struct super_block *sb, unsigned int xid); 209 + int cifs_set_file_info(struct inode *inode, struct iattr *attrs, 210 + unsigned int xid, const char *full_path, __u32 dosattr); 211 + int cifs_rename_pending_delete(const char *full_path, struct dentry *dentry, 212 + const unsigned int xid); 213 + int sid_to_id(struct cifs_sb_info *cifs_sb, struct smb_sid *psid, 214 + struct cifs_fattr *fattr, uint sidtype); 215 + int cifs_acl_to_fattr(struct cifs_sb_info *cifs_sb, struct cifs_fattr *fattr, 216 + struct inode *inode, bool mode_from_special_sid, 217 + const char *path, const struct cifs_fid *pfid); 218 + int id_mode_to_cifs_acl(struct inode *inode, const char *path, __u64 *pnmode, 219 + kuid_t uid, kgid_t gid); 220 + struct smb_ntsd *get_cifs_acl(struct cifs_sb_info *cifs_sb, 221 + struct inode *inode, const char *path, 222 + u32 *pacllen, u32 info); 223 + struct smb_ntsd *get_cifs_acl_by_fid(struct cifs_sb_info *cifs_sb, 224 + const struct cifs_fid *cifsfid, 225 + u32 *pacllen, u32 info); 226 + struct posix_acl *cifs_get_acl(struct mnt_idmap *idmap, struct dentry *dentry, 227 + int type); 228 + int cifs_set_acl(struct mnt_idmap *idmap, struct dentry *dentry, 229 + struct posix_acl *acl, int type); 230 + int set_cifs_acl(struct smb_ntsd *pnntsd, __u32 acllen, struct inode *inode, 231 + const char *path, int aclflag); 232 + unsigned int setup_authusers_ACE(struct smb_ace *pntace); 233 + unsigned int setup_special_mode_ACE(struct smb_ace *pntace, bool posix, 234 + __u64 nmode); 235 + unsigned int setup_special_user_owner_ACE(struct smb_ace *pntace); 247 236 248 - void dequeue_mid(struct TCP_Server_Info *server, struct mid_q_entry *mid, bool malformed); 249 - extern int cifs_read_from_socket(struct TCP_Server_Info *server, char *buf, 250 - unsigned int to_read); 251 - extern ssize_t cifs_discard_from_socket(struct TCP_Server_Info *server, 252 - size_t to_read); 237 + void dequeue_mid(struct TCP_Server_Info *server, struct mid_q_entry *mid, 238 + bool malformed); 239 + int cifs_read_from_socket(struct TCP_Server_Info *server, char *buf, 240 + unsigned int to_read); 241 + ssize_t cifs_discard_from_socket(struct TCP_Server_Info *server, 242 + size_t to_read); 253 243 int cifs_read_iter_from_socket(struct TCP_Server_Info *server, 254 - struct iov_iter *iter, 255 - unsigned int to_read); 256 - extern int cifs_setup_cifs_sb(struct cifs_sb_info *cifs_sb); 244 + struct iov_iter *iter, unsigned int to_read); 245 + int cifs_setup_cifs_sb(struct cifs_sb_info *cifs_sb); 257 246 void cifs_mount_put_conns(struct cifs_mount_ctx *mnt_ctx); 258 247 int cifs_mount_get_session(struct cifs_mount_ctx *mnt_ctx); 259 248 int cifs_is_path_remote(struct cifs_mount_ctx *mnt_ctx); 260 249 int cifs_mount_get_tcon(struct cifs_mount_ctx *mnt_ctx); 261 - extern int cifs_match_super(struct super_block *, void *); 262 - extern int cifs_mount(struct cifs_sb_info *cifs_sb, struct smb3_fs_context *ctx); 263 - extern void cifs_umount(struct cifs_sb_info *); 264 - extern void cifs_mark_open_files_invalid(struct cifs_tcon *tcon); 265 - extern void cifs_reopen_persistent_handles(struct cifs_tcon *tcon); 250 + int cifs_match_super(struct super_block *sb, void *data); 251 + int cifs_mount(struct cifs_sb_info *cifs_sb, struct smb3_fs_context *ctx); 252 + void cifs_umount(struct cifs_sb_info *cifs_sb); 253 + void cifs_mark_open_files_invalid(struct cifs_tcon *tcon); 254 + void cifs_reopen_persistent_handles(struct cifs_tcon *tcon); 266 255 267 - extern bool cifs_find_lock_conflict(struct cifsFileInfo *cfile, __u64 offset, 268 - __u64 length, __u8 type, __u16 flags, 269 - struct cifsLockInfo **conf_lock, 270 - int rw_check); 271 - extern void cifs_add_pending_open(struct cifs_fid *fid, 256 + bool cifs_find_lock_conflict(struct cifsFileInfo *cfile, __u64 offset, 257 + __u64 length, __u8 type, __u16 flags, 258 + struct cifsLockInfo **conf_lock, int rw_check); 259 + void cifs_add_pending_open(struct cifs_fid *fid, struct tcon_link *tlink, 260 + struct cifs_pending_open *open); 261 + void cifs_add_pending_open_locked(struct cifs_fid *fid, 272 262 struct tcon_link *tlink, 273 263 struct cifs_pending_open *open); 274 - extern void cifs_add_pending_open_locked(struct cifs_fid *fid, 275 - struct tcon_link *tlink, 276 - struct cifs_pending_open *open); 277 - extern void cifs_del_pending_open(struct cifs_pending_open *open); 264 + void cifs_del_pending_open(struct cifs_pending_open *open); 278 265 279 - extern bool cifs_is_deferred_close(struct cifsFileInfo *cfile, 280 - struct cifs_deferred_close **dclose); 266 + bool cifs_is_deferred_close(struct cifsFileInfo *cfile, 267 + struct cifs_deferred_close **pdclose); 281 268 282 - extern void cifs_add_deferred_close(struct cifsFileInfo *cfile, 283 - struct cifs_deferred_close *dclose); 269 + void cifs_add_deferred_close(struct cifsFileInfo *cfile, 270 + struct cifs_deferred_close *dclose); 284 271 285 - extern void cifs_del_deferred_close(struct cifsFileInfo *cfile); 272 + void cifs_del_deferred_close(struct cifsFileInfo *cfile); 286 273 287 - extern void cifs_close_deferred_file(struct cifsInodeInfo *cifs_inode); 274 + void cifs_close_deferred_file(struct cifsInodeInfo *cifs_inode); 288 275 289 - extern void cifs_close_all_deferred_files(struct cifs_tcon *cifs_tcon); 276 + void cifs_close_all_deferred_files(struct cifs_tcon *tcon); 290 277 291 - void cifs_close_deferred_file_under_dentry(struct cifs_tcon *cifs_tcon, 278 + void cifs_close_deferred_file_under_dentry(struct cifs_tcon *tcon, 292 279 struct dentry *dentry); 293 280 294 - extern void cifs_mark_open_handles_for_deleted_file(struct inode *inode, 295 - const char *path); 281 + void cifs_mark_open_handles_for_deleted_file(struct inode *inode, 282 + const char *path); 296 283 297 - extern struct TCP_Server_Info * 298 - cifs_get_tcp_session(struct smb3_fs_context *ctx, 299 - struct TCP_Server_Info *primary_server); 300 - extern void cifs_put_tcp_session(struct TCP_Server_Info *server, 301 - int from_reconnect); 302 - extern void cifs_put_tcon(struct cifs_tcon *tcon, enum smb3_tcon_ref_trace trace); 284 + struct TCP_Server_Info *cifs_get_tcp_session(struct smb3_fs_context *ctx, 285 + struct TCP_Server_Info *primary_server); 286 + void cifs_put_tcp_session(struct TCP_Server_Info *server, int from_reconnect); 287 + void cifs_put_tcon(struct cifs_tcon *tcon, enum smb3_tcon_ref_trace trace); 303 288 304 - extern void cifs_release_automount_timer(void); 289 + void cifs_release_automount_timer(void); 305 290 306 291 void cifs_proc_init(void); 307 292 void cifs_proc_clean(void); 308 293 309 - extern void cifs_move_llist(struct list_head *source, struct list_head *dest); 310 - extern void cifs_free_llist(struct list_head *llist); 311 - extern void cifs_del_lock_waiters(struct cifsLockInfo *lock); 294 + void cifs_move_llist(struct list_head *source, struct list_head *dest); 295 + void cifs_free_llist(struct list_head *llist); 296 + void cifs_del_lock_waiters(struct cifsLockInfo *lock); 312 297 313 298 int cifs_tree_connect(const unsigned int xid, struct cifs_tcon *tcon); 314 299 315 - extern int cifs_negotiate_protocol(const unsigned int xid, 316 - struct cifs_ses *ses, 317 - struct TCP_Server_Info *server); 318 - extern int cifs_setup_session(const unsigned int xid, struct cifs_ses *ses, 319 - struct TCP_Server_Info *server, 320 - struct nls_table *nls_info); 321 - extern int cifs_enable_signing(struct TCP_Server_Info *server, bool mnt_sign_required); 322 - extern int CIFSSMBNegotiate(const unsigned int xid, 323 - struct cifs_ses *ses, 300 + int cifs_negotiate_protocol(const unsigned int xid, struct cifs_ses *ses, 324 301 struct TCP_Server_Info *server); 302 + int cifs_setup_session(const unsigned int xid, struct cifs_ses *ses, 303 + struct TCP_Server_Info *server, 304 + struct nls_table *nls_info); 305 + int cifs_enable_signing(struct TCP_Server_Info *server, 306 + bool mnt_sign_required); 325 307 326 - extern int CIFSTCon(const unsigned int xid, struct cifs_ses *ses, 327 - const char *tree, struct cifs_tcon *tcon, 328 - const struct nls_table *); 308 + int parse_dfs_referrals(struct get_dfs_referral_rsp *rsp, u32 rsp_size, 309 + unsigned int *num_of_nodes, 310 + struct dfs_info3_param **target_nodes, 311 + const struct nls_table *nls_codepage, int remap, 312 + const char *searchName, bool is_unicode); 329 313 330 - extern int CIFSFindFirst(const unsigned int xid, struct cifs_tcon *tcon, 331 - const char *searchName, struct cifs_sb_info *cifs_sb, 332 - __u16 *searchHandle, __u16 search_flags, 333 - struct cifs_search_info *psrch_inf, 334 - bool msearch); 314 + struct cifs_ses *sesInfoAlloc(void); 315 + void sesInfoFree(struct cifs_ses *buf_to_free); 316 + struct cifs_tcon *tcon_info_alloc(bool dir_leases_enabled, 317 + enum smb3_tcon_ref_trace trace); 318 + void tconInfoFree(struct cifs_tcon *tcon, enum smb3_tcon_ref_trace trace); 335 319 336 - extern int CIFSFindNext(const unsigned int xid, struct cifs_tcon *tcon, 337 - __u16 searchHandle, __u16 search_flags, 338 - struct cifs_search_info *psrch_inf); 339 - 340 - extern int CIFSFindClose(const unsigned int xid, struct cifs_tcon *tcon, 341 - const __u16 search_handle); 342 - 343 - extern int CIFSSMBQFileInfo(const unsigned int xid, struct cifs_tcon *tcon, 344 - u16 netfid, FILE_ALL_INFO *pFindData); 345 - extern int CIFSSMBQPathInfo(const unsigned int xid, struct cifs_tcon *tcon, 346 - const char *search_Name, FILE_ALL_INFO *data, 347 - int legacy /* whether to use old info level */, 348 - const struct nls_table *nls_codepage, int remap); 349 - extern int SMBQueryInformation(const unsigned int xid, struct cifs_tcon *tcon, 350 - const char *search_name, FILE_ALL_INFO *data, 351 - const struct nls_table *nls_codepage, int remap); 352 - 353 - extern int CIFSSMBUnixQFileInfo(const unsigned int xid, struct cifs_tcon *tcon, 354 - u16 netfid, FILE_UNIX_BASIC_INFO *pFindData); 355 - extern int CIFSSMBUnixQPathInfo(const unsigned int xid, 356 - struct cifs_tcon *tcon, 357 - const unsigned char *searchName, 358 - FILE_UNIX_BASIC_INFO *pFindData, 359 - const struct nls_table *nls_codepage, int remap); 360 - 361 - extern int CIFSGetDFSRefer(const unsigned int xid, struct cifs_ses *ses, 362 - const char *search_name, 363 - struct dfs_info3_param **target_nodes, 364 - unsigned int *num_of_nodes, 365 - const struct nls_table *nls_codepage, int remap); 366 - 367 - extern int parse_dfs_referrals(struct get_dfs_referral_rsp *rsp, u32 rsp_size, 368 - unsigned int *num_of_nodes, 369 - struct dfs_info3_param **target_nodes, 370 - const struct nls_table *nls_codepage, int remap, 371 - const char *searchName, bool is_unicode); 372 - extern void reset_cifs_unix_caps(unsigned int xid, struct cifs_tcon *tcon, 373 - struct cifs_sb_info *cifs_sb, 374 - struct smb3_fs_context *ctx); 375 - extern int CIFSSMBQFSInfo(const unsigned int xid, struct cifs_tcon *tcon, 376 - struct kstatfs *FSData); 377 - extern int SMBOldQFSInfo(const unsigned int xid, struct cifs_tcon *tcon, 378 - struct kstatfs *FSData); 379 - extern int CIFSSMBSetFSUnixInfo(const unsigned int xid, struct cifs_tcon *tcon, 380 - __u64 cap); 381 - 382 - extern int CIFSSMBQFSAttributeInfo(const unsigned int xid, 383 - struct cifs_tcon *tcon); 384 - extern int CIFSSMBQFSDeviceInfo(const unsigned int xid, struct cifs_tcon *tcon); 385 - extern int CIFSSMBQFSUnixInfo(const unsigned int xid, struct cifs_tcon *tcon); 386 - extern int CIFSSMBQFSPosixInfo(const unsigned int xid, struct cifs_tcon *tcon, 387 - struct kstatfs *FSData); 388 - 389 - extern int SMBSetInformation(const unsigned int xid, struct cifs_tcon *tcon, 390 - const char *fileName, __le32 attributes, __le64 write_time, 391 - const struct nls_table *nls_codepage, 392 - struct cifs_sb_info *cifs_sb); 393 - extern int CIFSSMBSetPathInfo(const unsigned int xid, struct cifs_tcon *tcon, 394 - const char *fileName, const FILE_BASIC_INFO *data, 395 - const struct nls_table *nls_codepage, 396 - struct cifs_sb_info *cifs_sb); 397 - extern int CIFSSMBSetFileInfo(const unsigned int xid, struct cifs_tcon *tcon, 398 - const FILE_BASIC_INFO *data, __u16 fid, 399 - __u32 pid_of_opener); 400 - extern int CIFSSMBSetFileDisposition(const unsigned int xid, 401 - struct cifs_tcon *tcon, 402 - bool delete_file, __u16 fid, 403 - __u32 pid_of_opener); 404 - extern int CIFSSMBSetEOF(const unsigned int xid, struct cifs_tcon *tcon, 405 - const char *file_name, __u64 size, 406 - struct cifs_sb_info *cifs_sb, bool set_allocation, 407 - struct dentry *dentry); 408 - extern int CIFSSMBSetFileSize(const unsigned int xid, struct cifs_tcon *tcon, 409 - struct cifsFileInfo *cfile, __u64 size, 410 - bool set_allocation); 411 - 412 - struct cifs_unix_set_info_args { 413 - __u64 ctime; 414 - __u64 atime; 415 - __u64 mtime; 416 - __u64 mode; 417 - kuid_t uid; 418 - kgid_t gid; 419 - dev_t device; 420 - }; 421 - 422 - extern int CIFSSMBUnixSetFileInfo(const unsigned int xid, 423 - struct cifs_tcon *tcon, 424 - const struct cifs_unix_set_info_args *args, 425 - u16 fid, u32 pid_of_opener); 426 - 427 - extern int CIFSSMBUnixSetPathInfo(const unsigned int xid, 428 - struct cifs_tcon *tcon, const char *file_name, 429 - const struct cifs_unix_set_info_args *args, 430 - const struct nls_table *nls_codepage, 431 - int remap); 432 - 433 - extern int CIFSSMBMkDir(const unsigned int xid, struct inode *inode, 434 - umode_t mode, struct cifs_tcon *tcon, 435 - const char *name, struct cifs_sb_info *cifs_sb); 436 - extern int CIFSSMBRmDir(const unsigned int xid, struct cifs_tcon *tcon, 437 - const char *name, struct cifs_sb_info *cifs_sb); 438 - extern int CIFSPOSIXDelFile(const unsigned int xid, struct cifs_tcon *tcon, 439 - const char *name, __u16 type, 440 - const struct nls_table *nls_codepage, 441 - int remap_special_chars); 442 - extern int CIFSSMBDelFile(const unsigned int xid, struct cifs_tcon *tcon, 443 - const char *name, struct cifs_sb_info *cifs_sb, 444 - struct dentry *dentry); 445 - int CIFSSMBRename(const unsigned int xid, struct cifs_tcon *tcon, 446 - struct dentry *source_dentry, 447 - const char *from_name, const char *to_name, 448 - struct cifs_sb_info *cifs_sb); 449 - extern int CIFSSMBRenameOpenFile(const unsigned int xid, struct cifs_tcon *tcon, 450 - int netfid, const char *target_name, 451 - const struct nls_table *nls_codepage, 452 - int remap_special_chars); 453 - int CIFSCreateHardLink(const unsigned int xid, 454 - struct cifs_tcon *tcon, 455 - struct dentry *source_dentry, 456 - const char *from_name, const char *to_name, 457 - struct cifs_sb_info *cifs_sb); 458 - extern int CIFSUnixCreateHardLink(const unsigned int xid, 459 - struct cifs_tcon *tcon, 460 - const char *fromName, const char *toName, 461 - const struct nls_table *nls_codepage, 462 - int remap_special_chars); 463 - extern int CIFSUnixCreateSymLink(const unsigned int xid, 464 - struct cifs_tcon *tcon, 465 - const char *fromName, const char *toName, 466 - const struct nls_table *nls_codepage, int remap); 467 - extern int CIFSSMBUnixQuerySymLink(const unsigned int xid, 468 - struct cifs_tcon *tcon, 469 - const unsigned char *searchName, char **syminfo, 470 - const struct nls_table *nls_codepage, int remap); 471 - extern int cifs_query_reparse_point(const unsigned int xid, 472 - struct cifs_tcon *tcon, 473 - struct cifs_sb_info *cifs_sb, 474 - const char *full_path, 475 - u32 *tag, struct kvec *rsp, 476 - int *rsp_buftype); 477 - extern struct inode *cifs_create_reparse_inode(struct cifs_open_info_data *data, 478 - struct super_block *sb, 479 - const unsigned int xid, 480 - struct cifs_tcon *tcon, 481 - const char *full_path, 482 - bool directory, 483 - struct kvec *reparse_iov, 484 - struct kvec *xattr_iov); 485 - extern int CIFSSMB_set_compression(const unsigned int xid, 486 - struct cifs_tcon *tcon, __u16 fid); 487 - extern int CIFS_open(const unsigned int xid, struct cifs_open_parms *oparms, 488 - int *oplock, FILE_ALL_INFO *buf); 489 - extern int SMBLegacyOpen(const unsigned int xid, struct cifs_tcon *tcon, 490 - const char *fileName, const int disposition, 491 - const int access_flags, const int omode, 492 - __u16 *netfid, int *pOplock, FILE_ALL_INFO *, 493 - const struct nls_table *nls_codepage, int remap); 494 - extern int CIFSPOSIXCreate(const unsigned int xid, struct cifs_tcon *tcon, 495 - u32 posix_flags, __u64 mode, __u16 *netfid, 496 - FILE_UNIX_BASIC_INFO *pRetData, 497 - __u32 *pOplock, const char *name, 498 - const struct nls_table *nls_codepage, int remap); 499 - extern int CIFSSMBClose(const unsigned int xid, struct cifs_tcon *tcon, 500 - const int smb_file_id); 501 - 502 - extern int CIFSSMBFlush(const unsigned int xid, struct cifs_tcon *tcon, 503 - const int smb_file_id); 504 - 505 - extern int CIFSSMBRead(const unsigned int xid, struct cifs_io_parms *io_parms, 506 - unsigned int *nbytes, char **buf, 507 - int *return_buf_type); 508 - extern int CIFSSMBWrite(const unsigned int xid, struct cifs_io_parms *io_parms, 509 - unsigned int *nbytes, const char *buf); 510 - extern int CIFSSMBWrite2(const unsigned int xid, struct cifs_io_parms *io_parms, 511 - unsigned int *nbytes, struct kvec *iov, const int nvec); 512 - extern int CIFSGetSrvInodeNumber(const unsigned int xid, struct cifs_tcon *tcon, 513 - const char *search_name, __u64 *inode_number, 514 - const struct nls_table *nls_codepage, 515 - int remap); 516 - 517 - extern int cifs_lockv(const unsigned int xid, struct cifs_tcon *tcon, 518 - const __u16 netfid, const __u8 lock_type, 519 - const __u32 num_unlock, const __u32 num_lock, 520 - LOCKING_ANDX_RANGE *buf); 521 - extern int CIFSSMBLock(const unsigned int xid, struct cifs_tcon *tcon, 522 - const __u16 netfid, const __u32 netpid, const __u64 len, 523 - const __u64 offset, const __u32 numUnlock, 524 - const __u32 numLock, const __u8 lockType, 525 - const bool waitFlag, const __u8 oplock_level); 526 - extern int CIFSSMBPosixLock(const unsigned int xid, struct cifs_tcon *tcon, 527 - const __u16 smb_file_id, const __u32 netpid, 528 - const loff_t start_offset, const __u64 len, 529 - struct file_lock *, const __u16 lock_type, 530 - const bool waitFlag); 531 - extern int CIFSSMBTDis(const unsigned int xid, struct cifs_tcon *tcon); 532 - extern int CIFSSMBEcho(struct TCP_Server_Info *server); 533 - extern int CIFSSMBLogoff(const unsigned int xid, struct cifs_ses *ses); 534 - 535 - extern struct cifs_ses *sesInfoAlloc(void); 536 - extern void sesInfoFree(struct cifs_ses *); 537 - extern struct cifs_tcon *tcon_info_alloc(bool dir_leases_enabled, 538 - enum smb3_tcon_ref_trace trace); 539 - extern void tconInfoFree(struct cifs_tcon *tcon, enum smb3_tcon_ref_trace trace); 540 - 541 - extern int cifs_sign_rqst(struct smb_rqst *rqst, struct TCP_Server_Info *server, 542 - __u32 *pexpected_response_sequence_number); 543 - int cifs_verify_signature(struct smb_rqst *rqst, 544 - struct TCP_Server_Info *server, 545 - __u32 expected_sequence_number); 546 - extern int setup_ntlmv2_rsp(struct cifs_ses *, const struct nls_table *); 547 - extern void cifs_crypto_secmech_release(struct TCP_Server_Info *server); 548 - extern int calc_seckey(struct cifs_ses *); 549 - extern int generate_smb30signingkey(struct cifs_ses *ses, 550 - struct TCP_Server_Info *server); 551 - extern int generate_smb311signingkey(struct cifs_ses *ses, 552 - struct TCP_Server_Info *server); 320 + int setup_ntlmv2_rsp(struct cifs_ses *ses, const struct nls_table *nls_cp); 321 + void cifs_crypto_secmech_release(struct TCP_Server_Info *server); 322 + int calc_seckey(struct cifs_ses *ses); 323 + int generate_smb30signingkey(struct cifs_ses *ses, 324 + struct TCP_Server_Info *server); 325 + int generate_smb311signingkey(struct cifs_ses *ses, 326 + struct TCP_Server_Info *server); 553 327 554 328 #ifdef CONFIG_CIFS_ALLOW_INSECURE_LEGACY 555 - extern ssize_t CIFSSMBQAllEAs(const unsigned int xid, struct cifs_tcon *tcon, 556 - const unsigned char *searchName, 557 - const unsigned char *ea_name, char *EAData, 558 - size_t bufsize, struct cifs_sb_info *cifs_sb); 559 - extern int CIFSSMBSetEA(const unsigned int xid, struct cifs_tcon *tcon, 560 - const char *fileName, const char *ea_name, 561 - const void *ea_value, const __u16 ea_value_len, 562 - const struct nls_table *nls_codepage, 563 - struct cifs_sb_info *cifs_sb); 564 - extern int CIFSSMBGetCIFSACL(const unsigned int xid, struct cifs_tcon *tcon, 565 - __u16 fid, struct smb_ntsd **acl_inf, __u32 *buflen, __u32 info); 566 - extern int CIFSSMBSetCIFSACL(const unsigned int, struct cifs_tcon *, __u16, 567 - struct smb_ntsd *pntsd, __u32 len, int aclflag); 568 - extern int cifs_do_get_acl(const unsigned int xid, struct cifs_tcon *tcon, 569 - const unsigned char *searchName, 570 - struct posix_acl **acl, const int acl_type, 571 - const struct nls_table *nls_codepage, int remap); 572 - extern int cifs_do_set_acl(const unsigned int xid, struct cifs_tcon *tcon, 573 - const unsigned char *fileName, 574 - const struct posix_acl *acl, const int acl_type, 575 - const struct nls_table *nls_codepage, int remap); 576 - extern int CIFSGetExtAttr(const unsigned int xid, struct cifs_tcon *tcon, 577 - const int netfid, __u64 *pExtAttrBits, __u64 *pMask); 578 329 #endif /* CONFIG_CIFS_ALLOW_INSECURE_LEGACY */ 579 - extern void cifs_autodisable_serverino(struct cifs_sb_info *cifs_sb); 580 - extern bool couldbe_mf_symlink(const struct cifs_fattr *fattr); 581 - extern int check_mf_symlink(unsigned int xid, struct cifs_tcon *tcon, 582 - struct cifs_sb_info *cifs_sb, 583 - struct cifs_fattr *fattr, 584 - const unsigned char *path); 585 - extern int E_md4hash(const unsigned char *passwd, unsigned char *p16, 586 - const struct nls_table *codepage); 330 + void cifs_autodisable_serverino(struct cifs_sb_info *cifs_sb); 331 + bool couldbe_mf_symlink(const struct cifs_fattr *fattr); 332 + int check_mf_symlink(unsigned int xid, struct cifs_tcon *tcon, 333 + struct cifs_sb_info *cifs_sb, struct cifs_fattr *fattr, 334 + const unsigned char *path); 335 + int E_md4hash(const unsigned char *passwd, unsigned char *p16, 336 + const struct nls_table *codepage); 587 337 588 - extern struct TCP_Server_Info * 589 - cifs_find_tcp_session(struct smb3_fs_context *ctx); 338 + struct TCP_Server_Info *cifs_find_tcp_session(struct smb3_fs_context *ctx); 590 339 591 340 struct cifs_tcon *cifs_setup_ipc(struct cifs_ses *ses, bool seal); 592 341 593 342 void __cifs_put_smb_ses(struct cifs_ses *ses); 594 343 595 - extern struct cifs_ses * 596 - cifs_get_smb_ses(struct TCP_Server_Info *server, struct smb3_fs_context *ctx); 344 + struct cifs_ses *cifs_get_smb_ses(struct TCP_Server_Info *server, 345 + struct smb3_fs_context *ctx); 597 346 598 - int cifs_async_readv(struct cifs_io_subrequest *rdata); 599 - int cifs_readv_receive(struct TCP_Server_Info *server, struct mid_q_entry *mid); 347 + int cifs_readv_receive(struct TCP_Server_Info *server, 348 + struct mid_q_entry *mid); 600 349 601 - void cifs_async_writev(struct cifs_io_subrequest *wdata); 602 350 int cifs_query_mf_symlink(unsigned int xid, struct cifs_tcon *tcon, 603 351 struct cifs_sb_info *cifs_sb, 604 352 const unsigned char *path, char *pbuf, ··· 341 621 struct cifs_sb_info *cifs_sb, 342 622 const unsigned char *path, char *pbuf, 343 623 unsigned int *pbytes_written); 344 - int __cifs_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server, 345 - char *signature, struct cifs_calc_sig_ctx *ctx); 346 - enum securityEnum cifs_select_sectype(struct TCP_Server_Info *, 347 - enum securityEnum); 624 + int __cifs_calc_signature(struct smb_rqst *rqst, 625 + struct TCP_Server_Info *server, char *signature, 626 + struct cifs_calc_sig_ctx *ctx); 627 + enum securityEnum cifs_select_sectype(struct TCP_Server_Info *server, 628 + enum securityEnum requested); 348 629 349 630 int cifs_alloc_hash(const char *name, struct shash_desc **sdesc); 350 631 void cifs_free_hash(struct shash_desc **sdesc); 351 632 352 633 int cifs_try_adding_channels(struct cifs_ses *ses); 353 - int smb3_update_ses_channels(struct cifs_ses *ses, struct TCP_Server_Info *server, 354 - bool from_reconnect, bool disable_mchan); 634 + int smb3_update_ses_channels(struct cifs_ses *ses, 635 + struct TCP_Server_Info *server, 636 + bool from_reconnect, bool disable_mchan); 355 637 bool is_ses_using_iface(struct cifs_ses *ses, struct cifs_server_iface *iface); 356 638 357 - int 358 - cifs_ses_get_chan_index(struct cifs_ses *ses, 359 - struct TCP_Server_Info *server); 360 - void 361 - cifs_chan_set_in_reconnect(struct cifs_ses *ses, 362 - struct TCP_Server_Info *server); 363 - void 364 - cifs_chan_clear_in_reconnect(struct cifs_ses *ses, 639 + int cifs_ses_get_chan_index(struct cifs_ses *ses, 640 + struct TCP_Server_Info *server); 641 + void cifs_chan_set_in_reconnect(struct cifs_ses *ses, 642 + struct TCP_Server_Info *server); 643 + void cifs_chan_clear_in_reconnect(struct cifs_ses *ses, 644 + struct TCP_Server_Info *server); 645 + void cifs_chan_set_need_reconnect(struct cifs_ses *ses, 646 + struct TCP_Server_Info *server); 647 + void cifs_chan_clear_need_reconnect(struct cifs_ses *ses, 648 + struct TCP_Server_Info *server); 649 + bool cifs_chan_needs_reconnect(struct cifs_ses *ses, 365 650 struct TCP_Server_Info *server); 366 - void 367 - cifs_chan_set_need_reconnect(struct cifs_ses *ses, 368 - struct TCP_Server_Info *server); 369 - void 370 - cifs_chan_clear_need_reconnect(struct cifs_ses *ses, 651 + bool cifs_chan_is_iface_active(struct cifs_ses *ses, 371 652 struct TCP_Server_Info *server); 372 - bool 373 - cifs_chan_needs_reconnect(struct cifs_ses *ses, 374 - struct TCP_Server_Info *server); 375 - bool 376 - cifs_chan_is_iface_active(struct cifs_ses *ses, 377 - struct TCP_Server_Info *server); 378 - void 379 - cifs_decrease_secondary_channels(struct cifs_ses *ses, bool disable_mchan); 380 - void 381 - cifs_chan_update_iface(struct cifs_ses *ses, struct TCP_Server_Info *server); 382 - int 383 - SMB3_request_interfaces(const unsigned int xid, struct cifs_tcon *tcon, bool in_mount); 653 + void cifs_decrease_secondary_channels(struct cifs_ses *ses, 654 + bool disable_mchan); 655 + void cifs_chan_update_iface(struct cifs_ses *ses, 656 + struct TCP_Server_Info *server); 657 + int SMB3_request_interfaces(const unsigned int xid, struct cifs_tcon *tcon, 658 + bool in_mount); 384 659 385 660 void extract_unc_hostname(const char *unc, const char **h, size_t *len); 386 661 int copy_path_name(char *dst, const char *src); ··· 388 673 int cifs_update_super_prepath(struct cifs_sb_info *cifs_sb, char *prefix); 389 674 char *extract_hostname(const char *unc); 390 675 char *extract_sharename(const char *unc); 391 - int parse_reparse_point(struct reparse_data_buffer *buf, 392 - u32 plen, struct cifs_sb_info *cifs_sb, 393 - const char *full_path, 676 + int parse_reparse_point(struct reparse_data_buffer *buf, u32 plen, 677 + struct cifs_sb_info *cifs_sb, const char *full_path, 394 678 struct cifs_open_info_data *data); 395 679 int __cifs_sfu_make_node(unsigned int xid, struct inode *inode, 396 680 struct dentry *dentry, struct cifs_tcon *tcon, ··· 410 696 referral, NULL); 411 697 } 412 698 413 - int match_target_ip(struct TCP_Server_Info *server, 414 - const char *host, size_t hostlen, 415 - bool *result); 699 + int match_target_ip(struct TCP_Server_Info *server, const char *host, 700 + size_t hostlen, bool *result); 416 701 int cifs_inval_name_dfs_link_error(const unsigned int xid, 417 702 struct cifs_tcon *tcon, 418 703 struct cifs_sb_info *cifs_sb, 419 - const char *full_path, 420 - bool *islink); 704 + const char *full_path, bool *islink); 421 705 #else 422 706 static inline int cifs_inval_name_dfs_link_error(const unsigned int xid, 423 707 struct cifs_tcon *tcon,
+144 -3
fs/smb/client/cifssmb.c
··· 26 26 #include <linux/uaccess.h> 27 27 #include <linux/netfs.h> 28 28 #include <trace/events/netfs.h> 29 - #include "cifspdu.h" 30 - #include "cifsfs.h" 31 29 #include "cifsglob.h" 32 - #include "cifsacl.h" 33 30 #include "cifsproto.h" 31 + #include "smb1proto.h" 32 + #include "../common/smbfsctl.h" 33 + #include "cifsfs.h" 34 + #include "cifsacl.h" 34 35 #include "cifs_unicode.h" 35 36 #include "cifs_debug.h" 36 37 #include "fscache.h" ··· 531 530 cifs_buf_release(pSMB); 532 531 533 532 cifs_dbg(FYI, "negprot rc %d\n", rc); 533 + return rc; 534 + } 535 + 536 + /* 537 + * Issue a TREE_CONNECT request. 538 + */ 539 + int 540 + CIFSTCon(const unsigned int xid, struct cifs_ses *ses, 541 + const char *tree, struct cifs_tcon *tcon, 542 + const struct nls_table *nls_codepage) 543 + { 544 + struct smb_hdr *smb_buffer; 545 + struct smb_hdr *smb_buffer_response; 546 + TCONX_REQ *pSMB; 547 + TCONX_RSP *pSMBr; 548 + unsigned char *bcc_ptr; 549 + int rc = 0; 550 + int length, in_len; 551 + __u16 bytes_left, count; 552 + 553 + if (ses == NULL) 554 + return smb_EIO(smb_eio_trace_null_pointers); 555 + 556 + smb_buffer = cifs_buf_get(); 557 + if (smb_buffer == NULL) 558 + return -ENOMEM; 559 + 560 + smb_buffer_response = smb_buffer; 561 + 562 + in_len = header_assemble(smb_buffer, SMB_COM_TREE_CONNECT_ANDX, 563 + NULL /*no tid */, 4 /*wct */); 564 + 565 + smb_buffer->Mid = get_next_mid(ses->server); 566 + smb_buffer->Uid = ses->Suid; 567 + pSMB = (TCONX_REQ *) smb_buffer; 568 + pSMBr = (TCONX_RSP *) smb_buffer_response; 569 + 570 + pSMB->AndXCommand = 0xFF; 571 + pSMB->Flags = cpu_to_le16(TCON_EXTENDED_SECINFO); 572 + bcc_ptr = &pSMB->Password[0]; 573 + 574 + pSMB->PasswordLength = cpu_to_le16(1); /* minimum */ 575 + *bcc_ptr = 0; /* password is null byte */ 576 + bcc_ptr++; /* skip password */ 577 + /* already aligned so no need to do it below */ 578 + 579 + if (ses->server->sign) 580 + smb_buffer->Flags2 |= SMBFLG2_SECURITY_SIGNATURE; 581 + 582 + if (ses->capabilities & CAP_STATUS32) 583 + smb_buffer->Flags2 |= SMBFLG2_ERR_STATUS; 584 + 585 + if (ses->capabilities & CAP_DFS) 586 + smb_buffer->Flags2 |= SMBFLG2_DFS; 587 + 588 + if (ses->capabilities & CAP_UNICODE) { 589 + smb_buffer->Flags2 |= SMBFLG2_UNICODE; 590 + length = 591 + cifs_strtoUTF16((__le16 *) bcc_ptr, tree, 592 + 6 /* max utf8 char length in bytes */ * 593 + (/* server len*/ + 256 /* share len */), nls_codepage); 594 + bcc_ptr += 2 * length; /* convert num 16 bit words to bytes */ 595 + bcc_ptr += 2; /* skip trailing null */ 596 + } else { /* ASCII */ 597 + strcpy(bcc_ptr, tree); 598 + bcc_ptr += strlen(tree) + 1; 599 + } 600 + strcpy(bcc_ptr, "?????"); 601 + bcc_ptr += strlen("?????"); 602 + bcc_ptr += 1; 603 + count = bcc_ptr - &pSMB->Password[0]; 604 + in_len += count; 605 + pSMB->ByteCount = cpu_to_le16(count); 606 + 607 + rc = SendReceive(xid, ses, smb_buffer, in_len, smb_buffer_response, 608 + &length, 0); 609 + 610 + /* above now done in SendReceive */ 611 + if (rc == 0) { 612 + bool is_unicode; 613 + 614 + tcon->tid = smb_buffer_response->Tid; 615 + bcc_ptr = pByteArea(smb_buffer_response); 616 + bytes_left = get_bcc(smb_buffer_response); 617 + length = strnlen(bcc_ptr, bytes_left - 2); 618 + if (smb_buffer->Flags2 & SMBFLG2_UNICODE) 619 + is_unicode = true; 620 + else 621 + is_unicode = false; 622 + 623 + 624 + /* skip service field (NB: this field is always ASCII) */ 625 + if (length == 3) { 626 + if ((bcc_ptr[0] == 'I') && (bcc_ptr[1] == 'P') && 627 + (bcc_ptr[2] == 'C')) { 628 + cifs_dbg(FYI, "IPC connection\n"); 629 + tcon->ipc = true; 630 + tcon->pipe = true; 631 + } 632 + } else if (length == 2) { 633 + if ((bcc_ptr[0] == 'A') && (bcc_ptr[1] == ':')) { 634 + /* the most common case */ 635 + cifs_dbg(FYI, "disk share connection\n"); 636 + } 637 + } 638 + bcc_ptr += length + 1; 639 + bytes_left -= (length + 1); 640 + strscpy(tcon->tree_name, tree, sizeof(tcon->tree_name)); 641 + 642 + /* mostly informational -- no need to fail on error here */ 643 + kfree(tcon->nativeFileSystem); 644 + tcon->nativeFileSystem = cifs_strndup_from_utf16(bcc_ptr, 645 + bytes_left, is_unicode, 646 + nls_codepage); 647 + 648 + cifs_dbg(FYI, "nativeFileSystem=%s\n", tcon->nativeFileSystem); 649 + 650 + if ((smb_buffer_response->WordCount == 3) || 651 + (smb_buffer_response->WordCount == 7)) 652 + /* field is in same location */ 653 + tcon->Flags = le16_to_cpu(pSMBr->OptionalSupport); 654 + else 655 + tcon->Flags = 0; 656 + cifs_dbg(FYI, "Tcon flags: 0x%x\n", tcon->Flags); 657 + 658 + /* 659 + * reset_cifs_unix_caps calls QFSInfo which requires 660 + * need_reconnect to be false, but we would not need to call 661 + * reset_caps if this were not a reconnect case so must check 662 + * need_reconnect flag here. The caller will also clear 663 + * need_reconnect when tcon was successful but needed to be 664 + * cleared earlier in the case of unix extensions reconnect 665 + */ 666 + if (tcon->need_reconnect && tcon->unix_ext) { 667 + cifs_dbg(FYI, "resetting caps for %s\n", tcon->tree_name); 668 + tcon->need_reconnect = false; 669 + reset_cifs_unix_caps(xid, tcon, NULL, NULL); 670 + } 671 + } 672 + cifs_buf_release(smb_buffer); 534 673 return rc; 535 674 } 536 675
-265
fs/smb/client/cifstransport.c
··· 1 - // SPDX-License-Identifier: LGPL-2.1 2 - /* 3 - * 4 - * Copyright (C) International Business Machines Corp., 2002,2008 5 - * Author(s): Steve French (sfrench@us.ibm.com) 6 - * Jeremy Allison (jra@samba.org) 2006. 7 - * 8 - */ 9 - 10 - #include <linux/fs.h> 11 - #include <linux/list.h> 12 - #include <linux/gfp.h> 13 - #include <linux/wait.h> 14 - #include <linux/net.h> 15 - #include <linux/delay.h> 16 - #include <linux/freezer.h> 17 - #include <linux/tcp.h> 18 - #include <linux/bvec.h> 19 - #include <linux/highmem.h> 20 - #include <linux/uaccess.h> 21 - #include <linux/processor.h> 22 - #include <linux/mempool.h> 23 - #include <linux/sched/signal.h> 24 - #include <linux/task_io_accounting_ops.h> 25 - #include "cifspdu.h" 26 - #include "cifsglob.h" 27 - #include "cifsproto.h" 28 - #include "cifs_debug.h" 29 - #include "smb2proto.h" 30 - #include "smbdirect.h" 31 - #include "compress.h" 32 - 33 - /* Max number of iovectors we can use off the stack when sending requests. */ 34 - #define CIFS_MAX_IOV_SIZE 8 35 - 36 - static struct mid_q_entry * 37 - alloc_mid(const struct smb_hdr *smb_buffer, struct TCP_Server_Info *server) 38 - { 39 - struct mid_q_entry *temp; 40 - 41 - if (server == NULL) { 42 - cifs_dbg(VFS, "%s: null TCP session\n", __func__); 43 - return NULL; 44 - } 45 - 46 - temp = mempool_alloc(&cifs_mid_pool, GFP_NOFS); 47 - memset(temp, 0, sizeof(struct mid_q_entry)); 48 - refcount_set(&temp->refcount, 1); 49 - spin_lock_init(&temp->mid_lock); 50 - temp->mid = get_mid(smb_buffer); 51 - temp->pid = current->pid; 52 - temp->command = cpu_to_le16(smb_buffer->Command); 53 - cifs_dbg(FYI, "For smb_command %d\n", smb_buffer->Command); 54 - /* easier to use jiffies */ 55 - /* when mid allocated can be before when sent */ 56 - temp->when_alloc = jiffies; 57 - 58 - /* 59 - * The default is for the mid to be synchronous, so the 60 - * default callback just wakes up the current task. 61 - */ 62 - get_task_struct(current); 63 - temp->creator = current; 64 - temp->callback = cifs_wake_up_task; 65 - temp->callback_data = current; 66 - 67 - atomic_inc(&mid_count); 68 - temp->mid_state = MID_REQUEST_ALLOCATED; 69 - return temp; 70 - } 71 - 72 - static int allocate_mid(struct cifs_ses *ses, struct smb_hdr *in_buf, 73 - struct mid_q_entry **ppmidQ) 74 - { 75 - spin_lock(&ses->ses_lock); 76 - if (ses->ses_status == SES_NEW) { 77 - if ((in_buf->Command != SMB_COM_SESSION_SETUP_ANDX) && 78 - (in_buf->Command != SMB_COM_NEGOTIATE)) { 79 - spin_unlock(&ses->ses_lock); 80 - return -EAGAIN; 81 - } 82 - /* else ok - we are setting up session */ 83 - } 84 - 85 - if (ses->ses_status == SES_EXITING) { 86 - /* check if SMB session is bad because we are setting it up */ 87 - if (in_buf->Command != SMB_COM_LOGOFF_ANDX) { 88 - spin_unlock(&ses->ses_lock); 89 - return -EAGAIN; 90 - } 91 - /* else ok - we are shutting down session */ 92 - } 93 - spin_unlock(&ses->ses_lock); 94 - 95 - *ppmidQ = alloc_mid(in_buf, ses->server); 96 - if (*ppmidQ == NULL) 97 - return -ENOMEM; 98 - spin_lock(&ses->server->mid_queue_lock); 99 - list_add_tail(&(*ppmidQ)->qhead, &ses->server->pending_mid_q); 100 - spin_unlock(&ses->server->mid_queue_lock); 101 - return 0; 102 - } 103 - 104 - struct mid_q_entry * 105 - cifs_setup_async_request(struct TCP_Server_Info *server, struct smb_rqst *rqst) 106 - { 107 - int rc; 108 - struct smb_hdr *hdr = (struct smb_hdr *)rqst->rq_iov[0].iov_base; 109 - struct mid_q_entry *mid; 110 - 111 - /* enable signing if server requires it */ 112 - if (server->sign) 113 - hdr->Flags2 |= SMBFLG2_SECURITY_SIGNATURE; 114 - 115 - mid = alloc_mid(hdr, server); 116 - if (mid == NULL) 117 - return ERR_PTR(-ENOMEM); 118 - 119 - rc = cifs_sign_rqst(rqst, server, &mid->sequence_number); 120 - if (rc) { 121 - release_mid(server, mid); 122 - return ERR_PTR(rc); 123 - } 124 - 125 - return mid; 126 - } 127 - 128 - /* 129 - * 130 - * Send an SMB Request. No response info (other than return code) 131 - * needs to be parsed. 132 - * 133 - * flags indicate the type of request buffer and how long to wait 134 - * and whether to log NT STATUS code (error) before mapping it to POSIX error 135 - * 136 - */ 137 - int 138 - SendReceiveNoRsp(const unsigned int xid, struct cifs_ses *ses, 139 - char *in_buf, unsigned int in_len, int flags) 140 - { 141 - int rc; 142 - struct kvec iov[1]; 143 - struct kvec rsp_iov; 144 - int resp_buf_type; 145 - 146 - iov[0].iov_base = in_buf; 147 - iov[0].iov_len = in_len; 148 - flags |= CIFS_NO_RSP_BUF; 149 - rc = SendReceive2(xid, ses, iov, 1, &resp_buf_type, flags, &rsp_iov); 150 - cifs_dbg(NOISY, "SendRcvNoRsp flags %d rc %d\n", flags, rc); 151 - 152 - return rc; 153 - } 154 - 155 - int 156 - cifs_check_receive(struct mid_q_entry *mid, struct TCP_Server_Info *server, 157 - bool log_error) 158 - { 159 - unsigned int len = mid->response_pdu_len; 160 - 161 - dump_smb(mid->resp_buf, min_t(u32, 92, len)); 162 - 163 - /* convert the length into a more usable form */ 164 - if (server->sign) { 165 - struct kvec iov[1]; 166 - int rc = 0; 167 - struct smb_rqst rqst = { .rq_iov = iov, 168 - .rq_nvec = ARRAY_SIZE(iov) }; 169 - 170 - iov[0].iov_base = mid->resp_buf; 171 - iov[0].iov_len = len; 172 - /* FIXME: add code to kill session */ 173 - rc = cifs_verify_signature(&rqst, server, 174 - mid->sequence_number); 175 - if (rc) 176 - cifs_server_dbg(VFS, "SMB signature verification returned error = %d\n", 177 - rc); 178 - } 179 - 180 - /* BB special case reconnect tid and uid here? */ 181 - return map_and_check_smb_error(server, mid, log_error); 182 - } 183 - 184 - struct mid_q_entry * 185 - cifs_setup_request(struct cifs_ses *ses, struct TCP_Server_Info *server, 186 - struct smb_rqst *rqst) 187 - { 188 - int rc; 189 - struct smb_hdr *hdr = (struct smb_hdr *)rqst->rq_iov[0].iov_base; 190 - struct mid_q_entry *mid; 191 - 192 - rc = allocate_mid(ses, hdr, &mid); 193 - if (rc) 194 - return ERR_PTR(rc); 195 - rc = cifs_sign_rqst(rqst, server, &mid->sequence_number); 196 - if (rc) { 197 - delete_mid(server, mid); 198 - return ERR_PTR(rc); 199 - } 200 - return mid; 201 - } 202 - 203 - int 204 - SendReceive2(const unsigned int xid, struct cifs_ses *ses, 205 - struct kvec *iov, int n_vec, int *resp_buf_type /* ret */, 206 - const int flags, struct kvec *resp_iov) 207 - { 208 - struct smb_rqst rqst = { 209 - .rq_iov = iov, 210 - .rq_nvec = n_vec, 211 - }; 212 - 213 - return cifs_send_recv(xid, ses, ses->server, 214 - &rqst, resp_buf_type, flags, resp_iov); 215 - } 216 - 217 - int 218 - SendReceive(const unsigned int xid, struct cifs_ses *ses, 219 - struct smb_hdr *in_buf, unsigned int in_len, 220 - struct smb_hdr *out_buf, int *pbytes_returned, const int flags) 221 - { 222 - struct TCP_Server_Info *server; 223 - struct kvec resp_iov = {}; 224 - struct kvec iov = { .iov_base = in_buf, .iov_len = in_len }; 225 - struct smb_rqst rqst = { .rq_iov = &iov, .rq_nvec = 1 }; 226 - int resp_buf_type; 227 - int rc = 0; 228 - 229 - if (WARN_ON_ONCE(in_len > 0xffffff)) 230 - return smb_EIO1(smb_eio_trace_tx_too_long, in_len); 231 - if (ses == NULL) { 232 - cifs_dbg(VFS, "Null smb session\n"); 233 - return smb_EIO(smb_eio_trace_null_pointers); 234 - } 235 - server = ses->server; 236 - if (server == NULL) { 237 - cifs_dbg(VFS, "Null tcp session\n"); 238 - return smb_EIO(smb_eio_trace_null_pointers); 239 - } 240 - 241 - /* Ensure that we do not send more than 50 overlapping requests 242 - to the same server. We may make this configurable later or 243 - use ses->maxReq */ 244 - 245 - if (in_len > CIFSMaxBufSize + MAX_CIFS_HDR_SIZE) { 246 - cifs_server_dbg(VFS, "Invalid length, greater than maximum frame, %d\n", 247 - in_len); 248 - return smb_EIO1(smb_eio_trace_tx_too_long, in_len); 249 - } 250 - 251 - rc = cifs_send_recv(xid, ses, ses->server, 252 - &rqst, &resp_buf_type, flags, &resp_iov); 253 - if (rc < 0) 254 - goto out; 255 - 256 - if (out_buf) { 257 - *pbytes_returned = resp_iov.iov_len; 258 - if (resp_iov.iov_len) 259 - memcpy(out_buf, resp_iov.iov_base, resp_iov.iov_len); 260 - } 261 - 262 - out: 263 - free_rsp_buf(resp_buf_type, resp_iov.iov_base); 264 - return rc; 265 - }
+2 -1
fs/smb/client/compress.h
··· 30 30 typedef int (*compress_send_fn)(struct TCP_Server_Info *, int, struct smb_rqst *); 31 31 32 32 33 - int smb_compress(struct TCP_Server_Info *server, struct smb_rqst *rq, compress_send_fn send_fn); 33 + int smb_compress(struct TCP_Server_Info *server, struct smb_rqst *rq, 34 + compress_send_fn send_fn); 34 35 bool should_compress(const struct cifs_tcon *tcon, const struct smb_rqst *rq); 35 36 36 37 /*
+74 -255
fs/smb/client/connect.c
··· 32 32 #include <net/ipv6.h> 33 33 #include <linux/parser.h> 34 34 #include <linux/bvec.h> 35 - #include "cifspdu.h" 36 35 #include "cifsglob.h" 37 36 #include "cifsproto.h" 38 37 #include "cifs_unicode.h" ··· 62 63 static int generic_ip_connect(struct TCP_Server_Info *server); 63 64 static void tlink_rb_insert(struct rb_root *root, struct tcon_link *new_tlink); 64 65 static void cifs_prune_tlinks(struct work_struct *work); 66 + 67 + static struct mchan_mount *mchan_mount_alloc(struct cifs_ses *ses); 68 + static void mchan_mount_free(struct mchan_mount *mchan_mount); 69 + static void mchan_mount_work_fn(struct work_struct *work); 65 70 66 71 /* 67 72 * Resolve hostname and set ip addr in tcp ses. Useful for hostnames that may ··· 3466 3463 return generic_ip_connect(server); 3467 3464 } 3468 3465 3469 - #ifdef CONFIG_CIFS_ALLOW_INSECURE_LEGACY 3470 - void reset_cifs_unix_caps(unsigned int xid, struct cifs_tcon *tcon, 3471 - struct cifs_sb_info *cifs_sb, struct smb3_fs_context *ctx) 3472 - { 3473 - /* 3474 - * If we are reconnecting then should we check to see if 3475 - * any requested capabilities changed locally e.g. via 3476 - * remount but we can not do much about it here 3477 - * if they have (even if we could detect it by the following) 3478 - * Perhaps we could add a backpointer to array of sb from tcon 3479 - * or if we change to make all sb to same share the same 3480 - * sb as NFS - then we only have one backpointer to sb. 3481 - * What if we wanted to mount the server share twice once with 3482 - * and once without posixacls or posix paths? 3483 - */ 3484 - __u64 saved_cap = le64_to_cpu(tcon->fsUnixInfo.Capability); 3485 - 3486 - if (ctx && ctx->no_linux_ext) { 3487 - tcon->fsUnixInfo.Capability = 0; 3488 - tcon->unix_ext = 0; /* Unix Extensions disabled */ 3489 - cifs_dbg(FYI, "Linux protocol extensions disabled\n"); 3490 - return; 3491 - } else if (ctx) 3492 - tcon->unix_ext = 1; /* Unix Extensions supported */ 3493 - 3494 - if (!tcon->unix_ext) { 3495 - cifs_dbg(FYI, "Unix extensions disabled so not set on reconnect\n"); 3496 - return; 3497 - } 3498 - 3499 - if (!CIFSSMBQFSUnixInfo(xid, tcon)) { 3500 - __u64 cap = le64_to_cpu(tcon->fsUnixInfo.Capability); 3501 - 3502 - cifs_dbg(FYI, "unix caps which server supports %lld\n", cap); 3503 - /* 3504 - * check for reconnect case in which we do not 3505 - * want to change the mount behavior if we can avoid it 3506 - */ 3507 - if (ctx == NULL) { 3508 - /* 3509 - * turn off POSIX ACL and PATHNAMES if not set 3510 - * originally at mount time 3511 - */ 3512 - if ((saved_cap & CIFS_UNIX_POSIX_ACL_CAP) == 0) 3513 - cap &= ~CIFS_UNIX_POSIX_ACL_CAP; 3514 - if ((saved_cap & CIFS_UNIX_POSIX_PATHNAMES_CAP) == 0) { 3515 - if (cap & CIFS_UNIX_POSIX_PATHNAMES_CAP) 3516 - cifs_dbg(VFS, "POSIXPATH support change\n"); 3517 - cap &= ~CIFS_UNIX_POSIX_PATHNAMES_CAP; 3518 - } else if ((cap & CIFS_UNIX_POSIX_PATHNAMES_CAP) == 0) { 3519 - cifs_dbg(VFS, "possible reconnect error\n"); 3520 - cifs_dbg(VFS, "server disabled POSIX path support\n"); 3521 - } 3522 - } 3523 - 3524 - if (cap & CIFS_UNIX_TRANSPORT_ENCRYPTION_MANDATORY_CAP) 3525 - cifs_dbg(VFS, "per-share encryption not supported yet\n"); 3526 - 3527 - cap &= CIFS_UNIX_CAP_MASK; 3528 - if (ctx && ctx->no_psx_acl) 3529 - cap &= ~CIFS_UNIX_POSIX_ACL_CAP; 3530 - else if (CIFS_UNIX_POSIX_ACL_CAP & cap) { 3531 - cifs_dbg(FYI, "negotiated posix acl support\n"); 3532 - if (cifs_sb) 3533 - cifs_sb->mnt_cifs_flags |= 3534 - CIFS_MOUNT_POSIXACL; 3535 - } 3536 - 3537 - if (ctx && ctx->posix_paths == 0) 3538 - cap &= ~CIFS_UNIX_POSIX_PATHNAMES_CAP; 3539 - else if (cap & CIFS_UNIX_POSIX_PATHNAMES_CAP) { 3540 - cifs_dbg(FYI, "negotiate posix pathnames\n"); 3541 - if (cifs_sb) 3542 - cifs_sb->mnt_cifs_flags |= 3543 - CIFS_MOUNT_POSIX_PATHS; 3544 - } 3545 - 3546 - cifs_dbg(FYI, "Negotiate caps 0x%x\n", (int)cap); 3547 - #ifdef CONFIG_CIFS_DEBUG2 3548 - if (cap & CIFS_UNIX_FCNTL_CAP) 3549 - cifs_dbg(FYI, "FCNTL cap\n"); 3550 - if (cap & CIFS_UNIX_EXTATTR_CAP) 3551 - cifs_dbg(FYI, "EXTATTR cap\n"); 3552 - if (cap & CIFS_UNIX_POSIX_PATHNAMES_CAP) 3553 - cifs_dbg(FYI, "POSIX path cap\n"); 3554 - if (cap & CIFS_UNIX_XATTR_CAP) 3555 - cifs_dbg(FYI, "XATTR cap\n"); 3556 - if (cap & CIFS_UNIX_POSIX_ACL_CAP) 3557 - cifs_dbg(FYI, "POSIX ACL cap\n"); 3558 - if (cap & CIFS_UNIX_LARGE_READ_CAP) 3559 - cifs_dbg(FYI, "very large read cap\n"); 3560 - if (cap & CIFS_UNIX_LARGE_WRITE_CAP) 3561 - cifs_dbg(FYI, "very large write cap\n"); 3562 - if (cap & CIFS_UNIX_TRANSPORT_ENCRYPTION_CAP) 3563 - cifs_dbg(FYI, "transport encryption cap\n"); 3564 - if (cap & CIFS_UNIX_TRANSPORT_ENCRYPTION_MANDATORY_CAP) 3565 - cifs_dbg(FYI, "mandatory transport encryption cap\n"); 3566 - #endif /* CIFS_DEBUG2 */ 3567 - if (CIFSSMBSetFSUnixInfo(xid, tcon, cap)) { 3568 - if (ctx == NULL) 3569 - cifs_dbg(FYI, "resetting capabilities failed\n"); 3570 - else 3571 - cifs_dbg(VFS, "Negotiating Unix capabilities with the server failed. Consider mounting with the Unix Extensions disabled if problems are found by specifying the nounix mount option.\n"); 3572 - 3573 - } 3574 - } 3575 - } 3576 - #endif /* CONFIG_CIFS_ALLOW_INSECURE_LEGACY */ 3577 - 3578 3466 int cifs_setup_cifs_sb(struct cifs_sb_info *cifs_sb) 3579 3467 { 3580 3468 struct smb3_fs_context *ctx = cifs_sb->ctx; ··· 3793 3899 return rc; 3794 3900 } 3795 3901 3902 + static struct mchan_mount * 3903 + mchan_mount_alloc(struct cifs_ses *ses) 3904 + { 3905 + struct mchan_mount *mchan_mount; 3906 + 3907 + mchan_mount = kzalloc(sizeof(*mchan_mount), GFP_KERNEL); 3908 + if (!mchan_mount) 3909 + return ERR_PTR(-ENOMEM); 3910 + 3911 + INIT_WORK(&mchan_mount->work, mchan_mount_work_fn); 3912 + 3913 + spin_lock(&cifs_tcp_ses_lock); 3914 + cifs_smb_ses_inc_refcount(ses); 3915 + spin_unlock(&cifs_tcp_ses_lock); 3916 + mchan_mount->ses = ses; 3917 + 3918 + return mchan_mount; 3919 + } 3920 + 3921 + static void 3922 + mchan_mount_free(struct mchan_mount *mchan_mount) 3923 + { 3924 + cifs_put_smb_ses(mchan_mount->ses); 3925 + kfree(mchan_mount); 3926 + } 3927 + 3928 + static void 3929 + mchan_mount_work_fn(struct work_struct *work) 3930 + { 3931 + struct mchan_mount *mchan_mount = container_of(work, struct mchan_mount, work); 3932 + 3933 + smb3_update_ses_channels(mchan_mount->ses, 3934 + mchan_mount->ses->server, 3935 + false /* from_reconnect */, 3936 + false /* disable_mchan */); 3937 + 3938 + mchan_mount_free(mchan_mount); 3939 + } 3940 + 3796 3941 #ifdef CONFIG_CIFS_DFS_UPCALL 3797 3942 int cifs_mount(struct cifs_sb_info *cifs_sb, struct smb3_fs_context *ctx) 3798 3943 { 3799 3944 struct cifs_mount_ctx mnt_ctx = { .cifs_sb = cifs_sb, .fs_ctx = ctx, }; 3945 + struct mchan_mount *mchan_mount = NULL; 3800 3946 int rc; 3801 3947 3802 3948 rc = dfs_mount_share(&mnt_ctx); 3803 3949 if (rc) 3804 3950 goto error; 3951 + 3952 + if (ctx->multichannel) { 3953 + mchan_mount = mchan_mount_alloc(mnt_ctx.ses); 3954 + if (IS_ERR(mchan_mount)) { 3955 + rc = PTR_ERR(mchan_mount); 3956 + goto error; 3957 + } 3958 + } 3959 + 3805 3960 if (!ctx->dfs_conn) 3806 3961 goto out; 3807 3962 ··· 3869 3926 ctx->prepath = NULL; 3870 3927 3871 3928 out: 3872 - smb3_update_ses_channels(mnt_ctx.ses, mnt_ctx.server, 3873 - false /* from_reconnect */, 3874 - false /* disable_mchan */); 3875 3929 rc = mount_setup_tlink(cifs_sb, mnt_ctx.ses, mnt_ctx.tcon); 3876 3930 if (rc) 3877 3931 goto error; 3932 + 3933 + if (ctx->multichannel) 3934 + queue_work(cifsiod_wq, &mchan_mount->work); 3878 3935 3879 3936 free_xid(mnt_ctx.xid); 3880 3937 return rc; 3881 3938 3882 3939 error: 3940 + if (ctx->multichannel && !IS_ERR_OR_NULL(mchan_mount)) 3941 + mchan_mount_free(mchan_mount); 3883 3942 cifs_mount_put_conns(&mnt_ctx); 3884 3943 return rc; 3885 3944 } ··· 3890 3945 { 3891 3946 int rc = 0; 3892 3947 struct cifs_mount_ctx mnt_ctx = { .cifs_sb = cifs_sb, .fs_ctx = ctx, }; 3948 + struct mchan_mount *mchan_mount = NULL; 3893 3949 3894 3950 rc = cifs_mount_get_session(&mnt_ctx); 3895 3951 if (rc) ··· 3918 3972 if (rc) 3919 3973 goto error; 3920 3974 3975 + if (ctx->multichannel) { 3976 + mchan_mount = mchan_mount_alloc(mnt_ctx.ses); 3977 + if (IS_ERR(mchan_mount)) { 3978 + rc = PTR_ERR(mchan_mount); 3979 + goto error; 3980 + } 3981 + } 3982 + 3921 3983 rc = mount_setup_tlink(cifs_sb, mnt_ctx.ses, mnt_ctx.tcon); 3922 3984 if (rc) 3923 3985 goto error; 3986 + 3987 + if (ctx->multichannel) 3988 + queue_work(cifsiod_wq, &mchan_mount->work); 3924 3989 3925 3990 free_xid(mnt_ctx.xid); 3926 3991 return rc; 3927 3992 3928 3993 error: 3994 + if (ctx->multichannel && !IS_ERR_OR_NULL(mchan_mount)) 3995 + mchan_mount_free(mchan_mount); 3929 3996 cifs_mount_put_conns(&mnt_ctx); 3930 3997 return rc; 3931 3998 } 3932 3999 #endif 3933 - 3934 - #ifdef CONFIG_CIFS_ALLOW_INSECURE_LEGACY 3935 - /* 3936 - * Issue a TREE_CONNECT request. 3937 - */ 3938 - int 3939 - CIFSTCon(const unsigned int xid, struct cifs_ses *ses, 3940 - const char *tree, struct cifs_tcon *tcon, 3941 - const struct nls_table *nls_codepage) 3942 - { 3943 - struct smb_hdr *smb_buffer; 3944 - struct smb_hdr *smb_buffer_response; 3945 - TCONX_REQ *pSMB; 3946 - TCONX_RSP *pSMBr; 3947 - unsigned char *bcc_ptr; 3948 - int rc = 0; 3949 - int length, in_len; 3950 - __u16 bytes_left, count; 3951 - 3952 - if (ses == NULL) 3953 - return smb_EIO(smb_eio_trace_null_pointers); 3954 - 3955 - smb_buffer = cifs_buf_get(); 3956 - if (smb_buffer == NULL) 3957 - return -ENOMEM; 3958 - 3959 - smb_buffer_response = smb_buffer; 3960 - 3961 - in_len = header_assemble(smb_buffer, SMB_COM_TREE_CONNECT_ANDX, 3962 - NULL /*no tid */, 4 /*wct */); 3963 - 3964 - smb_buffer->Mid = get_next_mid(ses->server); 3965 - smb_buffer->Uid = ses->Suid; 3966 - pSMB = (TCONX_REQ *) smb_buffer; 3967 - pSMBr = (TCONX_RSP *) smb_buffer_response; 3968 - 3969 - pSMB->AndXCommand = 0xFF; 3970 - pSMB->Flags = cpu_to_le16(TCON_EXTENDED_SECINFO); 3971 - bcc_ptr = &pSMB->Password[0]; 3972 - 3973 - pSMB->PasswordLength = cpu_to_le16(1); /* minimum */ 3974 - *bcc_ptr = 0; /* password is null byte */ 3975 - bcc_ptr++; /* skip password */ 3976 - /* already aligned so no need to do it below */ 3977 - 3978 - if (ses->server->sign) 3979 - smb_buffer->Flags2 |= SMBFLG2_SECURITY_SIGNATURE; 3980 - 3981 - if (ses->capabilities & CAP_STATUS32) 3982 - smb_buffer->Flags2 |= SMBFLG2_ERR_STATUS; 3983 - 3984 - if (ses->capabilities & CAP_DFS) 3985 - smb_buffer->Flags2 |= SMBFLG2_DFS; 3986 - 3987 - if (ses->capabilities & CAP_UNICODE) { 3988 - smb_buffer->Flags2 |= SMBFLG2_UNICODE; 3989 - length = 3990 - cifs_strtoUTF16((__le16 *) bcc_ptr, tree, 3991 - 6 /* max utf8 char length in bytes */ * 3992 - (/* server len*/ + 256 /* share len */), nls_codepage); 3993 - bcc_ptr += 2 * length; /* convert num 16 bit words to bytes */ 3994 - bcc_ptr += 2; /* skip trailing null */ 3995 - } else { /* ASCII */ 3996 - strcpy(bcc_ptr, tree); 3997 - bcc_ptr += strlen(tree) + 1; 3998 - } 3999 - strcpy(bcc_ptr, "?????"); 4000 - bcc_ptr += strlen("?????"); 4001 - bcc_ptr += 1; 4002 - count = bcc_ptr - &pSMB->Password[0]; 4003 - in_len += count; 4004 - pSMB->ByteCount = cpu_to_le16(count); 4005 - 4006 - rc = SendReceive(xid, ses, smb_buffer, in_len, smb_buffer_response, 4007 - &length, 0); 4008 - 4009 - /* above now done in SendReceive */ 4010 - if (rc == 0) { 4011 - bool is_unicode; 4012 - 4013 - tcon->tid = smb_buffer_response->Tid; 4014 - bcc_ptr = pByteArea(smb_buffer_response); 4015 - bytes_left = get_bcc(smb_buffer_response); 4016 - length = strnlen(bcc_ptr, bytes_left - 2); 4017 - if (smb_buffer->Flags2 & SMBFLG2_UNICODE) 4018 - is_unicode = true; 4019 - else 4020 - is_unicode = false; 4021 - 4022 - 4023 - /* skip service field (NB: this field is always ASCII) */ 4024 - if (length == 3) { 4025 - if ((bcc_ptr[0] == 'I') && (bcc_ptr[1] == 'P') && 4026 - (bcc_ptr[2] == 'C')) { 4027 - cifs_dbg(FYI, "IPC connection\n"); 4028 - tcon->ipc = true; 4029 - tcon->pipe = true; 4030 - } 4031 - } else if (length == 2) { 4032 - if ((bcc_ptr[0] == 'A') && (bcc_ptr[1] == ':')) { 4033 - /* the most common case */ 4034 - cifs_dbg(FYI, "disk share connection\n"); 4035 - } 4036 - } 4037 - bcc_ptr += length + 1; 4038 - bytes_left -= (length + 1); 4039 - strscpy(tcon->tree_name, tree, sizeof(tcon->tree_name)); 4040 - 4041 - /* mostly informational -- no need to fail on error here */ 4042 - kfree(tcon->nativeFileSystem); 4043 - tcon->nativeFileSystem = cifs_strndup_from_utf16(bcc_ptr, 4044 - bytes_left, is_unicode, 4045 - nls_codepage); 4046 - 4047 - cifs_dbg(FYI, "nativeFileSystem=%s\n", tcon->nativeFileSystem); 4048 - 4049 - if ((smb_buffer_response->WordCount == 3) || 4050 - (smb_buffer_response->WordCount == 7)) 4051 - /* field is in same location */ 4052 - tcon->Flags = le16_to_cpu(pSMBr->OptionalSupport); 4053 - else 4054 - tcon->Flags = 0; 4055 - cifs_dbg(FYI, "Tcon flags: 0x%x\n", tcon->Flags); 4056 - 4057 - /* 4058 - * reset_cifs_unix_caps calls QFSInfo which requires 4059 - * need_reconnect to be false, but we would not need to call 4060 - * reset_caps if this were not a reconnect case so must check 4061 - * need_reconnect flag here. The caller will also clear 4062 - * need_reconnect when tcon was successful but needed to be 4063 - * cleared earlier in the case of unix extensions reconnect 4064 - */ 4065 - if (tcon->need_reconnect && tcon->unix_ext) { 4066 - cifs_dbg(FYI, "resetting caps for %s\n", tcon->tree_name); 4067 - tcon->need_reconnect = false; 4068 - reset_cifs_unix_caps(xid, tcon, NULL, NULL); 4069 - } 4070 - } 4071 - cifs_buf_release(smb_buffer); 4072 - return rc; 4073 - } 4074 - #endif /* CONFIG_CIFS_ALLOW_INSECURE_LEGACY */ 4075 4000 4076 4001 static void delayed_free(struct rcu_head *p) 4077 4002 { ··· 4087 4270 ses->ses_status = SES_IN_SETUP; 4088 4271 4089 4272 /* force iface_list refresh */ 4273 + spin_lock(&ses->iface_lock); 4090 4274 ses->iface_last_update = 0; 4275 + spin_unlock(&ses->iface_lock); 4091 4276 } 4092 4277 spin_unlock(&ses->ses_lock); 4093 4278
+2 -1
fs/smb/client/dfs.h
··· 151 151 ref->tit = ERR_PTR(-ENOENT); /* end marker */ 152 152 } 153 153 154 - int dfs_parse_target_referral(const char *full_path, const struct dfs_info3_param *ref, 154 + int dfs_parse_target_referral(const char *full_path, 155 + const struct dfs_info3_param *ref, 155 156 struct smb3_fs_context *ctx); 156 157 int dfs_mount_share(struct cifs_mount_ctx *mnt_ctx); 157 158
+12 -7
fs/smb/client/dfs_cache.h
··· 37 37 void dfs_cache_destroy(void); 38 38 extern const struct proc_ops dfscache_proc_ops; 39 39 40 - int dfs_cache_find(const unsigned int xid, struct cifs_ses *ses, const struct nls_table *cp, 41 - int remap, const char *path, struct dfs_info3_param *ref, 40 + int dfs_cache_find(const unsigned int xid, struct cifs_ses *ses, 41 + const struct nls_table *cp, int remap, const char *path, 42 + struct dfs_info3_param *ref, 42 43 struct dfs_cache_tgt_list *tgt_list); 43 44 int dfs_cache_noreq_find(const char *path, struct dfs_info3_param *ref, 44 45 struct dfs_cache_tgt_list *tgt_list); 45 - void dfs_cache_noreq_update_tgthint(const char *path, const struct dfs_cache_tgt_iterator *it); 46 - int dfs_cache_get_tgt_referral(const char *path, const struct dfs_cache_tgt_iterator *it, 46 + void dfs_cache_noreq_update_tgthint(const char *path, 47 + const struct dfs_cache_tgt_iterator *it); 48 + int dfs_cache_get_tgt_referral(const char *path, 49 + const struct dfs_cache_tgt_iterator *it, 47 50 struct dfs_info3_param *ref); 48 - int dfs_cache_get_tgt_share(char *path, const struct dfs_cache_tgt_iterator *it, char **share, 49 - char **prefix); 50 - char *dfs_cache_canonical_path(const char *path, const struct nls_table *cp, int remap); 51 + int dfs_cache_get_tgt_share(char *path, 52 + const struct dfs_cache_tgt_iterator *it, 53 + char **share, char **prefix); 54 + char *dfs_cache_canonical_path(const char *path, const struct nls_table *cp, 55 + int remap); 51 56 int dfs_cache_remount_fs(struct cifs_sb_info *cifs_sb); 52 57 void dfs_cache_refresh(struct work_struct *work); 53 58
-1
fs/smb/client/dir.c
··· 14 14 #include <linux/mount.h> 15 15 #include <linux/file.h> 16 16 #include "cifsfs.h" 17 - #include "cifspdu.h" 18 17 #include "cifsglob.h" 19 18 #include "cifsproto.h" 20 19 #include "cifs_debug.h"
+2 -2
fs/smb/client/dns_resolve.h
··· 15 15 #include "cifsglob.h" 16 16 #include "cifsproto.h" 17 17 18 - int dns_resolve_name(const char *dom, const char *name, 19 - size_t namelen, struct sockaddr *ip_addr); 18 + int dns_resolve_name(const char *dom, const char *name, size_t namelen, 19 + struct sockaddr *ip_addr); 20 20 21 21 static inline int dns_resolve_unc(const char *dom, const char *unc, 22 22 struct sockaddr *ip_addr)
-1
fs/smb/client/file.c
··· 25 25 #include <linux/mm.h> 26 26 #include <asm/div64.h> 27 27 #include "cifsfs.h" 28 - #include "cifspdu.h" 29 28 #include "cifsglob.h" 30 29 #include "cifsproto.h" 31 30 #include "smb2proto.h"
-1
fs/smb/client/fs_context.c
··· 26 26 #include <linux/parser.h> 27 27 #include <linux/utsname.h> 28 28 #include "cifsfs.h" 29 - #include "cifspdu.h" 30 29 #include "cifsglob.h" 31 30 #include "cifsproto.h" 32 31 #include "cifs_unicode.h"
+9 -7
fs/smb/client/fs_context.h
··· 361 361 return CIFS_SYMLINK_TYPE_NONE; 362 362 } 363 363 364 - extern int smb3_init_fs_context(struct fs_context *fc); 365 - extern void smb3_cleanup_fs_context_contents(struct smb3_fs_context *ctx); 366 - extern void smb3_cleanup_fs_context(struct smb3_fs_context *ctx); 364 + int smb3_init_fs_context(struct fs_context *fc); 365 + void smb3_cleanup_fs_context_contents(struct smb3_fs_context *ctx); 366 + void smb3_cleanup_fs_context(struct smb3_fs_context *ctx); 367 367 368 368 static inline struct smb3_fs_context *smb3_fc2context(const struct fs_context *fc) 369 369 { 370 370 return fc->fs_private; 371 371 } 372 372 373 - extern int smb3_fs_context_dup(struct smb3_fs_context *new_ctx, struct smb3_fs_context *ctx); 374 - extern int smb3_sync_session_ctx_passwords(struct cifs_sb_info *cifs_sb, struct cifs_ses *ses); 375 - extern void smb3_update_mnt_flags(struct cifs_sb_info *cifs_sb); 373 + int smb3_fs_context_dup(struct smb3_fs_context *new_ctx, 374 + struct smb3_fs_context *ctx); 375 + int smb3_sync_session_ctx_passwords(struct cifs_sb_info *cifs_sb, 376 + struct cifs_ses *ses); 377 + void smb3_update_mnt_flags(struct cifs_sb_info *cifs_sb); 376 378 377 379 /* 378 380 * max deferred close timeout (jiffies) - 2^30 ··· 382 380 #define SMB3_MAX_DCLOSETIMEO (1 << 30) 383 381 #define SMB3_DEF_DCLOSETIMEO (1 * HZ) /* even 1 sec enough to help eg open/write/close/open/read */ 384 382 #define MAX_CACHED_FIDS 16 385 - extern char *cifs_sanitize_prepath(char *prepath, gfp_t gfp); 383 + char *cifs_sanitize_prepath(char *prepath, gfp_t gfp); 386 384 387 385 extern struct mutex cifs_mount_mutex; 388 386
+10 -5
fs/smb/client/fscache.h
··· 38 38 /* 39 39 * fscache.c 40 40 */ 41 - extern int cifs_fscache_get_super_cookie(struct cifs_tcon *); 42 - extern void cifs_fscache_release_super_cookie(struct cifs_tcon *); 41 + int cifs_fscache_get_super_cookie(struct cifs_tcon *tcon); 42 + void cifs_fscache_release_super_cookie(struct cifs_tcon *tcon); 43 + void cifs_fscache_get_inode_cookie(struct inode *inode); 44 + void cifs_fscache_unuse_inode_cookie(struct inode *inode, bool update); 45 + void cifs_fscache_release_inode_cookie(struct inode *inode); 46 + int cifs_fscache_get_super_cookie(struct cifs_tcon *tcon); 47 + void cifs_fscache_release_super_cookie(struct cifs_tcon *tcon); 43 48 44 - extern void cifs_fscache_get_inode_cookie(struct inode *inode); 45 - extern void cifs_fscache_release_inode_cookie(struct inode *); 46 - extern void cifs_fscache_unuse_inode_cookie(struct inode *inode, bool update); 49 + void cifs_fscache_get_inode_cookie(struct inode *inode); 50 + void cifs_fscache_release_inode_cookie(struct inode *inode); 51 + void cifs_fscache_unuse_inode_cookie(struct inode *inode, bool update); 47 52 48 53 static inline 49 54 void cifs_fscache_fill_coherency(struct inode *inode,
+86
fs/smb/client/gen_smb2_mapping
··· 1 + #!/usr/bin/perl -w 2 + # SPDX-License-Identifier: GPL-2.0-or-later 3 + # 4 + # Generate an SMB2 status -> error mapping table, 5 + # sorted by NT status code (cpu-endian, ascending). 6 + # 7 + # Copyright (C) 2025 Red Hat, Inc. All Rights Reserved. 8 + # Written by David Howells (dhowells@redhat.com) 9 + # 10 + use strict; 11 + 12 + if ($#ARGV != 1) { 13 + print STDERR "Format: ", $0, " <in-h-file> <out-c-file>\n"; 14 + exit(2); 15 + } 16 + 17 + my %statuses = (); 18 + my @list = (); 19 + 20 + # 21 + # Read the file 22 + # 23 + open IN_FILE, "<$ARGV[0]" || die; 24 + while (<IN_FILE>) { 25 + chomp; 26 + 27 + if (m!^#define\s*([A-Za-z0-9_]+)\s+cpu_to_le32[(]([0-9a-fA-Fx]+)[)]\s+//\s+([-A-Z0-9_]+)!) { 28 + my $status = $1; 29 + my $code = $2; 30 + my $ncode = hex($2); 31 + my $error = $3; 32 + my $s; 33 + 34 + next if ($status =~ /^STATUS_SEVERITY/); 35 + 36 + die "Duplicate status $status" 37 + if exists($statuses{$status}); 38 + 39 + my %s = ( 40 + status => $status, 41 + code => $code, 42 + ncode => $ncode, 43 + error => $error 44 + ); 45 + $statuses{$status} = \%s; 46 + push @list, \%s; 47 + } 48 + } 49 + close IN_FILE || die; 50 + 51 + 52 + @list = sort( { $a->{ncode} <=> $b->{ncode} } @list); 53 + 54 + open OUT_FILE, ">$ARGV[1]" || die; 55 + my $list_size = scalar @list; 56 + my $full_status = ""; 57 + for (my $i = 0; $i < $list_size; $i++) { 58 + my $entry = $list[$i]; 59 + my $status = $entry->{status}; 60 + my $code = $entry->{code}; 61 + my $ncode = $entry->{ncode}; 62 + my $error = $entry->{error}; 63 + 64 + next if ($ncode == 0); 65 + 66 + $full_status .= $status; 67 + # There may be synonyms 68 + if ($i < $list_size - 1) { 69 + my $next_entry = $list[$i + 1]; 70 + my $next_ncode = $next_entry->{ncode}; 71 + if ($next_ncode == $ncode) { 72 + $full_status .= " or "; 73 + next; 74 + } 75 + } 76 + 77 + my $pad = " "; 78 + if (length($full_status) < 40) { 79 + my $n = 40 - length($full_status); 80 + $pad = "\t" x ((($n-1) / 8) + 1); 81 + } 82 + print(OUT_FILE "{ $code, $error, \"$full_status\" },\n"); 83 + 84 + $full_status = ""; 85 + } 86 + close OUT_FILE || die;
-1
fs/smb/client/inode.c
··· 16 16 #include <linux/fiemap.h> 17 17 #include <asm/div64.h> 18 18 #include "cifsfs.h" 19 - #include "cifspdu.h" 20 19 #include "cifsglob.h" 21 20 #include "cifsproto.h" 22 21 #include "smb2proto.h"
-1
fs/smb/client/ioctl.c
··· 13 13 #include <linux/mount.h> 14 14 #include <linux/mm.h> 15 15 #include <linux/pagemap.h> 16 - #include "cifspdu.h" 17 16 #include "cifsglob.h" 18 17 #include "cifsproto.h" 19 18 #include "cifs_debug.h"
-1
fs/smb/client/link.c
··· 11 11 #include <linux/slab.h> 12 12 #include <linux/namei.h> 13 13 #include "cifsfs.h" 14 - #include "cifspdu.h" 15 14 #include "cifsglob.h" 16 15 #include "cifsproto.h" 17 16 #include "cifs_debug.h"
+5 -297
fs/smb/client/misc.c
··· 10 10 #include <linux/ctype.h> 11 11 #include <linux/mempool.h> 12 12 #include <linux/vmalloc.h> 13 - #include "cifspdu.h" 14 13 #include "cifsglob.h" 15 14 #include "cifsproto.h" 16 15 #include "cifs_debug.h" ··· 18 19 #include "cifs_unicode.h" 19 20 #include "smb2pdu.h" 20 21 #include "smb2proto.h" 22 + #include "smb1proto.h" 21 23 #include "cifsfs.h" 22 24 #ifdef CONFIG_CIFS_DFS_UPCALL 23 25 #include "dns_resolve.h" ··· 178 178 kfree(tcon); 179 179 } 180 180 181 - struct smb_hdr * 181 + void * 182 182 cifs_buf_get(void) 183 183 { 184 - struct smb_hdr *ret_buf = NULL; 184 + void *ret_buf = NULL; 185 185 /* 186 186 * SMB2 header is bigger than CIFS one - no problems to clean some 187 187 * more bytes for CIFS. ··· 220 220 return; 221 221 } 222 222 223 - struct smb_hdr * 223 + void * 224 224 cifs_small_buf_get(void) 225 225 { 226 - struct smb_hdr *ret_buf = NULL; 226 + void *ret_buf = NULL; 227 227 228 228 /* We could use negotiated size instead of max_msgsize - 229 229 but it may be more efficient to always alloc same size ··· 231 231 defaults to this and can not be bigger */ 232 232 ret_buf = mempool_alloc(cifs_sm_req_poolp, GFP_NOFS); 233 233 /* No need to clear memory here, cleared in header assemble */ 234 - /* memset(ret_buf, 0, sizeof(struct smb_hdr) + 27);*/ 235 234 atomic_inc(&small_buf_alloc_count); 236 235 #ifdef CONFIG_CIFS_STATS2 237 236 atomic_inc(&total_small_buf_alloc_count); ··· 260 261 cifs_small_buf_release(rsp); 261 262 else if (resp_buftype == CIFS_LARGE_BUFFER) 262 263 cifs_buf_release(rsp); 263 - } 264 - 265 - /* NB: MID can not be set if treeCon not passed in, in that 266 - case it is responsibility of caller to set the mid */ 267 - unsigned int 268 - header_assemble(struct smb_hdr *buffer, char smb_command, 269 - const struct cifs_tcon *treeCon, int word_count 270 - /* length of fixed section (word count) in two byte units */) 271 - { 272 - unsigned int in_len; 273 - char *temp = (char *) buffer; 274 - 275 - memset(temp, 0, 256); /* bigger than MAX_CIFS_HDR_SIZE */ 276 - 277 - in_len = (2 * word_count) + sizeof(struct smb_hdr) + 278 - 2 /* for bcc field itself */; 279 - 280 - buffer->Protocol[0] = 0xFF; 281 - buffer->Protocol[1] = 'S'; 282 - buffer->Protocol[2] = 'M'; 283 - buffer->Protocol[3] = 'B'; 284 - buffer->Command = smb_command; 285 - buffer->Flags = 0x00; /* case sensitive */ 286 - buffer->Flags2 = SMBFLG2_KNOWS_LONG_NAMES; 287 - buffer->Pid = cpu_to_le16((__u16)current->tgid); 288 - buffer->PidHigh = cpu_to_le16((__u16)(current->tgid >> 16)); 289 - if (treeCon) { 290 - buffer->Tid = treeCon->tid; 291 - if (treeCon->ses) { 292 - if (treeCon->ses->capabilities & CAP_UNICODE) 293 - buffer->Flags2 |= SMBFLG2_UNICODE; 294 - if (treeCon->ses->capabilities & CAP_STATUS32) 295 - buffer->Flags2 |= SMBFLG2_ERR_STATUS; 296 - 297 - /* Uid is not converted */ 298 - buffer->Uid = treeCon->ses->Suid; 299 - if (treeCon->ses->server) 300 - buffer->Mid = get_next_mid(treeCon->ses->server); 301 - } 302 - if (treeCon->Flags & SMB_SHARE_IS_IN_DFS) 303 - buffer->Flags2 |= SMBFLG2_DFS; 304 - if (treeCon->nocase) 305 - buffer->Flags |= SMBFLG_CASELESS; 306 - if ((treeCon->ses) && (treeCon->ses->server)) 307 - if (treeCon->ses->server->sign) 308 - buffer->Flags2 |= SMBFLG2_SECURITY_SIGNATURE; 309 - } 310 - 311 - /* endian conversion of flags is now done just before sending */ 312 - buffer->WordCount = (char) word_count; 313 - return in_len; 314 - } 315 - 316 - static int 317 - check_smb_hdr(struct smb_hdr *smb) 318 - { 319 - /* does it have the right SMB "signature" ? */ 320 - if (*(__le32 *) smb->Protocol != SMB1_PROTO_NUMBER) { 321 - cifs_dbg(VFS, "Bad protocol string signature header 0x%x\n", 322 - *(unsigned int *)smb->Protocol); 323 - return 1; 324 - } 325 - 326 - /* if it's a response then accept */ 327 - if (smb->Flags & SMBFLG_RESPONSE) 328 - return 0; 329 - 330 - /* only one valid case where server sends us request */ 331 - if (smb->Command == SMB_COM_LOCKING_ANDX) 332 - return 0; 333 - 334 - /* 335 - * Windows NT server returns error resposne (e.g. STATUS_DELETE_PENDING 336 - * or STATUS_OBJECT_NAME_NOT_FOUND or ERRDOS/ERRbadfile or any other) 337 - * for some TRANS2 requests without the RESPONSE flag set in header. 338 - */ 339 - if (smb->Command == SMB_COM_TRANSACTION2 && smb->Status.CifsError != 0) 340 - return 0; 341 - 342 - cifs_dbg(VFS, "Server sent request, not response. mid=%u\n", 343 - get_mid(smb)); 344 - return 1; 345 - } 346 - 347 - int 348 - checkSMB(char *buf, unsigned int pdu_len, unsigned int total_read, 349 - struct TCP_Server_Info *server) 350 - { 351 - struct smb_hdr *smb = (struct smb_hdr *)buf; 352 - __u32 rfclen = pdu_len; 353 - __u32 clc_len; /* calculated length */ 354 - cifs_dbg(FYI, "checkSMB Length: 0x%x, smb_buf_length: 0x%x\n", 355 - total_read, rfclen); 356 - 357 - /* is this frame too small to even get to a BCC? */ 358 - if (total_read < 2 + sizeof(struct smb_hdr)) { 359 - if ((total_read >= sizeof(struct smb_hdr) - 1) 360 - && (smb->Status.CifsError != 0)) { 361 - /* it's an error return */ 362 - smb->WordCount = 0; 363 - /* some error cases do not return wct and bcc */ 364 - return 0; 365 - } else if ((total_read == sizeof(struct smb_hdr) + 1) && 366 - (smb->WordCount == 0)) { 367 - char *tmp = (char *)smb; 368 - /* Need to work around a bug in two servers here */ 369 - /* First, check if the part of bcc they sent was zero */ 370 - if (tmp[sizeof(struct smb_hdr)] == 0) { 371 - /* some servers return only half of bcc 372 - * on simple responses (wct, bcc both zero) 373 - * in particular have seen this on 374 - * ulogoffX and FindClose. This leaves 375 - * one byte of bcc potentially uninitialized 376 - */ 377 - /* zero rest of bcc */ 378 - tmp[sizeof(struct smb_hdr)+1] = 0; 379 - return 0; 380 - } 381 - cifs_dbg(VFS, "rcvd invalid byte count (bcc)\n"); 382 - return smb_EIO1(smb_eio_trace_rx_inv_bcc, tmp[sizeof(struct smb_hdr)]); 383 - } else { 384 - cifs_dbg(VFS, "Length less than smb header size\n"); 385 - return smb_EIO2(smb_eio_trace_rx_too_short, 386 - total_read, smb->WordCount); 387 - } 388 - } else if (total_read < sizeof(*smb) + 2 * smb->WordCount) { 389 - cifs_dbg(VFS, "%s: can't read BCC due to invalid WordCount(%u)\n", 390 - __func__, smb->WordCount); 391 - return smb_EIO2(smb_eio_trace_rx_check_rsp, 392 - total_read, 2 + sizeof(struct smb_hdr)); 393 - } 394 - 395 - /* otherwise, there is enough to get to the BCC */ 396 - if (check_smb_hdr(smb)) 397 - return smb_EIO1(smb_eio_trace_rx_rfc1002_magic, *(u32 *)smb->Protocol); 398 - clc_len = smbCalcSize(smb); 399 - 400 - if (rfclen != total_read) { 401 - cifs_dbg(VFS, "Length read does not match RFC1001 length %d/%d\n", 402 - rfclen, total_read); 403 - return smb_EIO2(smb_eio_trace_rx_check_rsp, 404 - total_read, rfclen); 405 - } 406 - 407 - if (rfclen != clc_len) { 408 - __u16 mid = get_mid(smb); 409 - /* check if bcc wrapped around for large read responses */ 410 - if ((rfclen > 64 * 1024) && (rfclen > clc_len)) { 411 - /* check if lengths match mod 64K */ 412 - if (((rfclen) & 0xFFFF) == (clc_len & 0xFFFF)) 413 - return 0; /* bcc wrapped */ 414 - } 415 - cifs_dbg(FYI, "Calculated size %u vs length %u mismatch for mid=%u\n", 416 - clc_len, rfclen, mid); 417 - 418 - if (rfclen < clc_len) { 419 - cifs_dbg(VFS, "RFC1001 size %u smaller than SMB for mid=%u\n", 420 - rfclen, mid); 421 - return smb_EIO2(smb_eio_trace_rx_calc_len_too_big, 422 - rfclen, clc_len); 423 - } else if (rfclen > clc_len + 512) { 424 - /* 425 - * Some servers (Windows XP in particular) send more 426 - * data than the lengths in the SMB packet would 427 - * indicate on certain calls (byte range locks and 428 - * trans2 find first calls in particular). While the 429 - * client can handle such a frame by ignoring the 430 - * trailing data, we choose limit the amount of extra 431 - * data to 512 bytes. 432 - */ 433 - cifs_dbg(VFS, "RFC1001 size %u more than 512 bytes larger than SMB for mid=%u\n", 434 - rfclen, mid); 435 - return smb_EIO2(smb_eio_trace_rx_overlong, 436 - rfclen, clc_len + 512); 437 - } 438 - } 439 - return 0; 440 - } 441 - 442 - bool 443 - is_valid_oplock_break(char *buffer, struct TCP_Server_Info *srv) 444 - { 445 - struct smb_hdr *buf = (struct smb_hdr *)buffer; 446 - struct smb_com_lock_req *pSMB = (struct smb_com_lock_req *)buf; 447 - struct TCP_Server_Info *pserver; 448 - struct cifs_ses *ses; 449 - struct cifs_tcon *tcon; 450 - struct cifsInodeInfo *pCifsInode; 451 - struct cifsFileInfo *netfile; 452 - 453 - cifs_dbg(FYI, "Checking for oplock break or dnotify response\n"); 454 - if ((pSMB->hdr.Command == SMB_COM_NT_TRANSACT) && 455 - (pSMB->hdr.Flags & SMBFLG_RESPONSE)) { 456 - struct smb_com_transaction_change_notify_rsp *pSMBr = 457 - (struct smb_com_transaction_change_notify_rsp *)buf; 458 - struct file_notify_information *pnotify; 459 - __u32 data_offset = 0; 460 - size_t len = srv->total_read - srv->pdu_size; 461 - 462 - if (get_bcc(buf) > sizeof(struct file_notify_information)) { 463 - data_offset = le32_to_cpu(pSMBr->DataOffset); 464 - 465 - if (data_offset > 466 - len - sizeof(struct file_notify_information)) { 467 - cifs_dbg(FYI, "Invalid data_offset %u\n", 468 - data_offset); 469 - return true; 470 - } 471 - pnotify = (struct file_notify_information *) 472 - ((char *)&pSMBr->hdr.Protocol + data_offset); 473 - cifs_dbg(FYI, "dnotify on %s Action: 0x%x\n", 474 - pnotify->FileName, pnotify->Action); 475 - /* cifs_dump_mem("Rcvd notify Data: ",buf, 476 - sizeof(struct smb_hdr)+60); */ 477 - return true; 478 - } 479 - if (pSMBr->hdr.Status.CifsError) { 480 - cifs_dbg(FYI, "notify err 0x%x\n", 481 - pSMBr->hdr.Status.CifsError); 482 - return true; 483 - } 484 - return false; 485 - } 486 - if (pSMB->hdr.Command != SMB_COM_LOCKING_ANDX) 487 - return false; 488 - if (pSMB->hdr.Flags & SMBFLG_RESPONSE) { 489 - /* no sense logging error on invalid handle on oplock 490 - break - harmless race between close request and oplock 491 - break response is expected from time to time writing out 492 - large dirty files cached on the client */ 493 - if ((NT_STATUS_INVALID_HANDLE) == 494 - le32_to_cpu(pSMB->hdr.Status.CifsError)) { 495 - cifs_dbg(FYI, "Invalid handle on oplock break\n"); 496 - return true; 497 - } else if (ERRbadfid == 498 - le16_to_cpu(pSMB->hdr.Status.DosError.Error)) { 499 - return true; 500 - } else { 501 - return false; /* on valid oplock brk we get "request" */ 502 - } 503 - } 504 - if (pSMB->hdr.WordCount != 8) 505 - return false; 506 - 507 - cifs_dbg(FYI, "oplock type 0x%x level 0x%x\n", 508 - pSMB->LockType, pSMB->OplockLevel); 509 - if (!(pSMB->LockType & LOCKING_ANDX_OPLOCK_RELEASE)) 510 - return false; 511 - 512 - /* If server is a channel, select the primary channel */ 513 - pserver = SERVER_IS_CHAN(srv) ? srv->primary_server : srv; 514 - 515 - /* look up tcon based on tid & uid */ 516 - spin_lock(&cifs_tcp_ses_lock); 517 - list_for_each_entry(ses, &pserver->smb_ses_list, smb_ses_list) { 518 - if (cifs_ses_exiting(ses)) 519 - continue; 520 - list_for_each_entry(tcon, &ses->tcon_list, tcon_list) { 521 - if (tcon->tid != buf->Tid) 522 - continue; 523 - 524 - cifs_stats_inc(&tcon->stats.cifs_stats.num_oplock_brks); 525 - spin_lock(&tcon->open_file_lock); 526 - list_for_each_entry(netfile, &tcon->openFileList, tlist) { 527 - if (pSMB->Fid != netfile->fid.netfid) 528 - continue; 529 - 530 - cifs_dbg(FYI, "file id match, oplock break\n"); 531 - pCifsInode = CIFS_I(d_inode(netfile->dentry)); 532 - 533 - set_bit(CIFS_INODE_PENDING_OPLOCK_BREAK, 534 - &pCifsInode->flags); 535 - 536 - netfile->oplock_epoch = 0; 537 - netfile->oplock_level = pSMB->OplockLevel; 538 - netfile->oplock_break_cancelled = false; 539 - cifs_queue_oplock_break(netfile); 540 - 541 - spin_unlock(&tcon->open_file_lock); 542 - spin_unlock(&cifs_tcp_ses_lock); 543 - return true; 544 - } 545 - spin_unlock(&tcon->open_file_lock); 546 - spin_unlock(&cifs_tcp_ses_lock); 547 - cifs_dbg(FYI, "No matching file for oplock break\n"); 548 - return true; 549 - } 550 - } 551 - spin_unlock(&cifs_tcp_ses_lock); 552 - cifs_dbg(FYI, "Can not process oplock break for non-existent connection\n"); 553 - return true; 554 264 } 555 265 556 266 void
+2 -2
fs/smb/client/netlink.h
··· 10 10 11 11 extern struct genl_family cifs_genl_family; 12 12 13 - extern int cifs_genl_init(void); 14 - extern void cifs_genl_exit(void); 13 + int cifs_genl_init(void); 14 + void cifs_genl_exit(void); 15 15 16 16 #endif /* _CIFS_NETLINK_H */
+1 -823
fs/smb/client/netmisc.c
··· 17 17 #include <asm/byteorder.h> 18 18 #include <linux/inet.h> 19 19 #include "cifsfs.h" 20 - #include "cifspdu.h" 21 20 #include "cifsglob.h" 22 21 #include "cifsproto.h" 22 + #include "smb1proto.h" 23 23 #include "smberr.h" 24 24 #include "cifs_debug.h" 25 25 #include "nterr.h" 26 - 27 - struct smb_to_posix_error { 28 - __u16 smb_err; 29 - int posix_code; 30 - }; 31 - 32 - static const struct smb_to_posix_error mapping_table_ERRDOS[] = { 33 - {ERRbadfunc, -EINVAL}, 34 - {ERRbadfile, -ENOENT}, 35 - {ERRbadpath, -ENOTDIR}, 36 - {ERRnofids, -EMFILE}, 37 - {ERRnoaccess, -EACCES}, 38 - {ERRbadfid, -EBADF}, 39 - {ERRbadmcb, -EIO}, 40 - {ERRnomem, -EREMOTEIO}, 41 - {ERRbadmem, -EFAULT}, 42 - {ERRbadenv, -EFAULT}, 43 - {ERRbadformat, -EINVAL}, 44 - {ERRbadaccess, -EACCES}, 45 - {ERRbaddata, -EIO}, 46 - {ERRbaddrive, -ENXIO}, 47 - {ERRremcd, -EACCES}, 48 - {ERRdiffdevice, -EXDEV}, 49 - {ERRnofiles, -ENOENT}, 50 - {ERRwriteprot, -EROFS}, 51 - {ERRbadshare, -EBUSY}, 52 - {ERRlock, -EACCES}, 53 - {ERRunsup, -EINVAL}, 54 - {ERRnosuchshare, -ENXIO}, 55 - {ERRfilexists, -EEXIST}, 56 - {ERRinvparm, -EINVAL}, 57 - {ERRdiskfull, -ENOSPC}, 58 - {ERRinvname, -ENOENT}, 59 - {ERRinvlevel, -EOPNOTSUPP}, 60 - {ERRdirnotempty, -ENOTEMPTY}, 61 - {ERRnotlocked, -ENOLCK}, 62 - {ERRcancelviolation, -ENOLCK}, 63 - {ERRalreadyexists, -EEXIST}, 64 - {ERRmoredata, -EOVERFLOW}, 65 - {ERReasnotsupported, -EOPNOTSUPP}, 66 - {ErrQuota, -EDQUOT}, 67 - {ErrNotALink, -ENOLINK}, 68 - {ERRnetlogonNotStarted, -ENOPROTOOPT}, 69 - {ERRsymlink, -EOPNOTSUPP}, 70 - {ErrTooManyLinks, -EMLINK}, 71 - {0, 0} 72 - }; 73 - 74 - static const struct smb_to_posix_error mapping_table_ERRSRV[] = { 75 - {ERRerror, -EIO}, 76 - {ERRbadpw, -EACCES}, /* was EPERM */ 77 - {ERRbadtype, -EREMOTE}, 78 - {ERRaccess, -EACCES}, 79 - {ERRinvtid, -ENXIO}, 80 - {ERRinvnetname, -ENXIO}, 81 - {ERRinvdevice, -ENXIO}, 82 - {ERRqfull, -ENOSPC}, 83 - {ERRqtoobig, -ENOSPC}, 84 - {ERRqeof, -EIO}, 85 - {ERRinvpfid, -EBADF}, 86 - {ERRsmbcmd, -EBADRQC}, 87 - {ERRsrverror, -EIO}, 88 - {ERRbadBID, -EIO}, 89 - {ERRfilespecs, -EINVAL}, 90 - {ERRbadLink, -EIO}, 91 - {ERRbadpermits, -EINVAL}, 92 - {ERRbadPID, -ESRCH}, 93 - {ERRsetattrmode, -EINVAL}, 94 - {ERRpaused, -EHOSTDOWN}, 95 - {ERRmsgoff, -EHOSTDOWN}, 96 - {ERRnoroom, -ENOSPC}, 97 - {ERRrmuns, -EUSERS}, 98 - {ERRtimeout, -ETIME}, 99 - {ERRnoresource, -EREMOTEIO}, 100 - {ERRtoomanyuids, -EUSERS}, 101 - {ERRbaduid, -EACCES}, 102 - {ERRusempx, -EIO}, 103 - {ERRusestd, -EIO}, 104 - {ERR_NOTIFY_ENUM_DIR, -ENOBUFS}, 105 - {ERRnoSuchUser, -EACCES}, 106 - /* {ERRaccountexpired, -EACCES}, 107 - {ERRbadclient, -EACCES}, 108 - {ERRbadLogonTime, -EACCES}, 109 - {ERRpasswordExpired, -EACCES},*/ 110 - {ERRaccountexpired, -EKEYEXPIRED}, 111 - {ERRbadclient, -EACCES}, 112 - {ERRbadLogonTime, -EACCES}, 113 - {ERRpasswordExpired, -EKEYEXPIRED}, 114 - 115 - {ERRnosupport, -EINVAL}, 116 - {0, 0} 117 - }; 118 26 119 27 /* 120 28 * Convert a string containing text IPv4 or IPv6 address to binary form. ··· 105 197 ((struct sockaddr_in6 *)addr)->sin6_port = htons(port); 106 198 break; 107 199 } 108 - } 109 - 110 - /***************************************************************************** 111 - *convert a NT status code to a dos class/code 112 - *****************************************************************************/ 113 - /* NT status -> dos error map */ 114 - static const struct { 115 - __u8 dos_class; 116 - __u16 dos_code; 117 - __u32 ntstatus; 118 - } ntstatus_to_dos_map[] = { 119 - { 120 - ERRDOS, ERRgeneral, NT_STATUS_UNSUCCESSFUL}, { 121 - ERRDOS, ERRbadfunc, NT_STATUS_NOT_IMPLEMENTED}, { 122 - ERRDOS, ERRinvlevel, NT_STATUS_INVALID_INFO_CLASS}, { 123 - ERRDOS, 24, NT_STATUS_INFO_LENGTH_MISMATCH}, { 124 - ERRHRD, ERRgeneral, NT_STATUS_ACCESS_VIOLATION}, { 125 - ERRHRD, ERRgeneral, NT_STATUS_IN_PAGE_ERROR}, { 126 - ERRHRD, ERRgeneral, NT_STATUS_PAGEFILE_QUOTA}, { 127 - ERRDOS, ERRbadfid, NT_STATUS_INVALID_HANDLE}, { 128 - ERRHRD, ERRgeneral, NT_STATUS_BAD_INITIAL_STACK}, { 129 - ERRDOS, 193, NT_STATUS_BAD_INITIAL_PC}, { 130 - ERRDOS, 87, NT_STATUS_INVALID_CID}, { 131 - ERRHRD, ERRgeneral, NT_STATUS_TIMER_NOT_CANCELED}, { 132 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER}, { 133 - ERRDOS, ERRbadfile, NT_STATUS_NO_SUCH_DEVICE}, { 134 - ERRDOS, ERRbadfile, NT_STATUS_NO_SUCH_FILE}, { 135 - ERRDOS, ERRbadfunc, NT_STATUS_INVALID_DEVICE_REQUEST}, { 136 - ERRDOS, 38, NT_STATUS_END_OF_FILE}, { 137 - ERRDOS, 34, NT_STATUS_WRONG_VOLUME}, { 138 - ERRDOS, 21, NT_STATUS_NO_MEDIA_IN_DEVICE}, { 139 - ERRHRD, ERRgeneral, NT_STATUS_UNRECOGNIZED_MEDIA}, { 140 - ERRDOS, 27, NT_STATUS_NONEXISTENT_SECTOR}, 141 - /* { This NT error code was 'sqashed' 142 - from NT_STATUS_MORE_PROCESSING_REQUIRED to NT_STATUS_OK 143 - during the session setup } */ 144 - { 145 - ERRDOS, ERRnomem, NT_STATUS_NO_MEMORY}, { 146 - ERRDOS, 487, NT_STATUS_CONFLICTING_ADDRESSES}, { 147 - ERRDOS, 487, NT_STATUS_NOT_MAPPED_VIEW}, { 148 - ERRDOS, 87, NT_STATUS_UNABLE_TO_FREE_VM}, { 149 - ERRDOS, 87, NT_STATUS_UNABLE_TO_DELETE_SECTION}, { 150 - ERRDOS, 2142, NT_STATUS_INVALID_SYSTEM_SERVICE}, { 151 - ERRHRD, ERRgeneral, NT_STATUS_ILLEGAL_INSTRUCTION}, { 152 - ERRDOS, ERRnoaccess, NT_STATUS_INVALID_LOCK_SEQUENCE}, { 153 - ERRDOS, ERRnoaccess, NT_STATUS_INVALID_VIEW_SIZE}, { 154 - ERRDOS, 193, NT_STATUS_INVALID_FILE_FOR_SECTION}, { 155 - ERRDOS, ERRnoaccess, NT_STATUS_ALREADY_COMMITTED}, 156 - /* { This NT error code was 'sqashed' 157 - from NT_STATUS_ACCESS_DENIED to NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE 158 - during the session setup } */ 159 - { 160 - ERRDOS, ERRnoaccess, NT_STATUS_ACCESS_DENIED}, { 161 - ERRDOS, 111, NT_STATUS_BUFFER_TOO_SMALL}, { 162 - ERRDOS, ERRbadfid, NT_STATUS_OBJECT_TYPE_MISMATCH}, { 163 - ERRHRD, ERRgeneral, NT_STATUS_NONCONTINUABLE_EXCEPTION}, { 164 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_DISPOSITION}, { 165 - ERRHRD, ERRgeneral, NT_STATUS_UNWIND}, { 166 - ERRHRD, ERRgeneral, NT_STATUS_BAD_STACK}, { 167 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_UNWIND_TARGET}, { 168 - ERRDOS, 158, NT_STATUS_NOT_LOCKED}, { 169 - ERRHRD, ERRgeneral, NT_STATUS_PARITY_ERROR}, { 170 - ERRDOS, 487, NT_STATUS_UNABLE_TO_DECOMMIT_VM}, { 171 - ERRDOS, 487, NT_STATUS_NOT_COMMITTED}, { 172 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_PORT_ATTRIBUTES}, { 173 - ERRHRD, ERRgeneral, NT_STATUS_PORT_MESSAGE_TOO_LONG}, { 174 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_MIX}, { 175 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_QUOTA_LOWER}, { 176 - ERRHRD, ERRgeneral, NT_STATUS_DISK_CORRUPT_ERROR}, { 177 - /* mapping changed since shell does lookup on * expects FileNotFound */ 178 - ERRDOS, ERRbadfile, NT_STATUS_OBJECT_NAME_INVALID}, { 179 - ERRDOS, ERRbadfile, NT_STATUS_OBJECT_NAME_NOT_FOUND}, { 180 - ERRDOS, ERRalreadyexists, NT_STATUS_OBJECT_NAME_COLLISION}, { 181 - ERRHRD, ERRgeneral, NT_STATUS_HANDLE_NOT_WAITABLE}, { 182 - ERRDOS, ERRbadfid, NT_STATUS_PORT_DISCONNECTED}, { 183 - ERRHRD, ERRgeneral, NT_STATUS_DEVICE_ALREADY_ATTACHED}, { 184 - ERRDOS, 161, NT_STATUS_OBJECT_PATH_INVALID}, { 185 - ERRDOS, ERRbadpath, NT_STATUS_OBJECT_PATH_NOT_FOUND}, { 186 - ERRDOS, 161, NT_STATUS_OBJECT_PATH_SYNTAX_BAD}, { 187 - ERRHRD, ERRgeneral, NT_STATUS_DATA_OVERRUN}, { 188 - ERRHRD, ERRgeneral, NT_STATUS_DATA_LATE_ERROR}, { 189 - ERRDOS, 23, NT_STATUS_DATA_ERROR}, { 190 - ERRDOS, 23, NT_STATUS_CRC_ERROR}, { 191 - ERRDOS, ERRnomem, NT_STATUS_SECTION_TOO_BIG}, { 192 - ERRDOS, ERRnoaccess, NT_STATUS_PORT_CONNECTION_REFUSED}, { 193 - ERRDOS, ERRbadfid, NT_STATUS_INVALID_PORT_HANDLE}, { 194 - ERRDOS, ERRbadshare, NT_STATUS_SHARING_VIOLATION}, { 195 - ERRHRD, ERRgeneral, NT_STATUS_QUOTA_EXCEEDED}, { 196 - ERRDOS, 87, NT_STATUS_INVALID_PAGE_PROTECTION}, { 197 - ERRDOS, 288, NT_STATUS_MUTANT_NOT_OWNED}, { 198 - ERRDOS, 298, NT_STATUS_SEMAPHORE_LIMIT_EXCEEDED}, { 199 - ERRDOS, 87, NT_STATUS_PORT_ALREADY_SET}, { 200 - ERRDOS, 87, NT_STATUS_SECTION_NOT_IMAGE}, { 201 - ERRDOS, 156, NT_STATUS_SUSPEND_COUNT_EXCEEDED}, { 202 - ERRDOS, ERRnoaccess, NT_STATUS_THREAD_IS_TERMINATING}, { 203 - ERRDOS, 87, NT_STATUS_BAD_WORKING_SET_LIMIT}, { 204 - ERRDOS, 87, NT_STATUS_INCOMPATIBLE_FILE_MAP}, { 205 - ERRDOS, 87, NT_STATUS_SECTION_PROTECTION}, { 206 - ERRDOS, ERReasnotsupported, NT_STATUS_EAS_NOT_SUPPORTED}, { 207 - ERRDOS, 255, NT_STATUS_EA_TOO_LARGE}, { 208 - ERRHRD, ERRgeneral, NT_STATUS_NONEXISTENT_EA_ENTRY}, { 209 - ERRHRD, ERRgeneral, NT_STATUS_NO_EAS_ON_FILE}, { 210 - ERRHRD, ERRgeneral, NT_STATUS_EA_CORRUPT_ERROR}, { 211 - ERRDOS, ERRlock, NT_STATUS_FILE_LOCK_CONFLICT}, { 212 - ERRDOS, ERRlock, NT_STATUS_LOCK_NOT_GRANTED}, { 213 - ERRDOS, ERRbadfile, NT_STATUS_DELETE_PENDING}, { 214 - ERRDOS, ERRunsup, NT_STATUS_CTL_FILE_NOT_SUPPORTED}, { 215 - ERRHRD, ERRgeneral, NT_STATUS_UNKNOWN_REVISION}, { 216 - ERRHRD, ERRgeneral, NT_STATUS_REVISION_MISMATCH}, { 217 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_OWNER}, { 218 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_PRIMARY_GROUP}, { 219 - ERRHRD, ERRgeneral, NT_STATUS_NO_IMPERSONATION_TOKEN}, { 220 - ERRHRD, ERRgeneral, NT_STATUS_CANT_DISABLE_MANDATORY}, { 221 - ERRDOS, 2215, NT_STATUS_NO_LOGON_SERVERS}, { 222 - ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_LOGON_SESSION}, { 223 - ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_PRIVILEGE}, { 224 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_ACCOUNT_NAME}, { 225 - ERRHRD, ERRgeneral, NT_STATUS_USER_EXISTS}, 226 - /* { This NT error code was 'sqashed' 227 - from NT_STATUS_NO_SUCH_USER to NT_STATUS_LOGON_FAILURE 228 - during the session setup } */ 229 - { 230 - ERRDOS, ERRnoaccess, NT_STATUS_NO_SUCH_USER}, { /* could map to 2238 */ 231 - ERRHRD, ERRgeneral, NT_STATUS_GROUP_EXISTS}, { 232 - ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_GROUP}, { 233 - ERRHRD, ERRgeneral, NT_STATUS_MEMBER_IN_GROUP}, { 234 - ERRHRD, ERRgeneral, NT_STATUS_MEMBER_NOT_IN_GROUP}, { 235 - ERRHRD, ERRgeneral, NT_STATUS_LAST_ADMIN}, 236 - /* { This NT error code was 'sqashed' 237 - from NT_STATUS_WRONG_PASSWORD to NT_STATUS_LOGON_FAILURE 238 - during the session setup } */ 239 - { 240 - ERRSRV, ERRbadpw, NT_STATUS_WRONG_PASSWORD}, { 241 - ERRHRD, ERRgeneral, NT_STATUS_ILL_FORMED_PASSWORD}, { 242 - ERRHRD, ERRgeneral, NT_STATUS_PASSWORD_RESTRICTION}, { 243 - ERRDOS, ERRnoaccess, NT_STATUS_LOGON_FAILURE}, { 244 - ERRHRD, ERRgeneral, NT_STATUS_ACCOUNT_RESTRICTION}, { 245 - ERRSRV, ERRbadLogonTime, NT_STATUS_INVALID_LOGON_HOURS}, { 246 - ERRSRV, ERRbadclient, NT_STATUS_INVALID_WORKSTATION}, { 247 - ERRSRV, ERRpasswordExpired, NT_STATUS_PASSWORD_EXPIRED}, { 248 - ERRSRV, ERRaccountexpired, NT_STATUS_ACCOUNT_DISABLED}, { 249 - ERRHRD, ERRgeneral, NT_STATUS_NONE_MAPPED}, { 250 - ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_LUIDS_REQUESTED}, { 251 - ERRHRD, ERRgeneral, NT_STATUS_LUIDS_EXHAUSTED}, { 252 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_SUB_AUTHORITY}, { 253 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_ACL}, { 254 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_SID}, { 255 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_SECURITY_DESCR}, { 256 - ERRDOS, 127, NT_STATUS_PROCEDURE_NOT_FOUND}, { 257 - ERRDOS, 193, NT_STATUS_INVALID_IMAGE_FORMAT}, { 258 - ERRHRD, ERRgeneral, NT_STATUS_NO_TOKEN}, { 259 - ERRHRD, ERRgeneral, NT_STATUS_BAD_INHERITANCE_ACL}, { 260 - ERRDOS, 158, NT_STATUS_RANGE_NOT_LOCKED}, { 261 - ERRDOS, 112, NT_STATUS_DISK_FULL}, { 262 - ERRHRD, ERRgeneral, NT_STATUS_SERVER_DISABLED}, { 263 - ERRHRD, ERRgeneral, NT_STATUS_SERVER_NOT_DISABLED}, { 264 - ERRDOS, 68, NT_STATUS_TOO_MANY_GUIDS_REQUESTED}, { 265 - ERRDOS, 259, NT_STATUS_GUIDS_EXHAUSTED}, { 266 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_ID_AUTHORITY}, { 267 - ERRDOS, 259, NT_STATUS_AGENTS_EXHAUSTED}, { 268 - ERRDOS, 154, NT_STATUS_INVALID_VOLUME_LABEL}, { 269 - ERRDOS, 14, NT_STATUS_SECTION_NOT_EXTENDED}, { 270 - ERRDOS, 487, NT_STATUS_NOT_MAPPED_DATA}, { 271 - ERRHRD, ERRgeneral, NT_STATUS_RESOURCE_DATA_NOT_FOUND}, { 272 - ERRHRD, ERRgeneral, NT_STATUS_RESOURCE_TYPE_NOT_FOUND}, { 273 - ERRHRD, ERRgeneral, NT_STATUS_RESOURCE_NAME_NOT_FOUND}, { 274 - ERRHRD, ERRgeneral, NT_STATUS_ARRAY_BOUNDS_EXCEEDED}, { 275 - ERRHRD, ERRgeneral, NT_STATUS_FLOAT_DENORMAL_OPERAND}, { 276 - ERRHRD, ERRgeneral, NT_STATUS_FLOAT_DIVIDE_BY_ZERO}, { 277 - ERRHRD, ERRgeneral, NT_STATUS_FLOAT_INEXACT_RESULT}, { 278 - ERRHRD, ERRgeneral, NT_STATUS_FLOAT_INVALID_OPERATION}, { 279 - ERRHRD, ERRgeneral, NT_STATUS_FLOAT_OVERFLOW}, { 280 - ERRHRD, ERRgeneral, NT_STATUS_FLOAT_STACK_CHECK}, { 281 - ERRHRD, ERRgeneral, NT_STATUS_FLOAT_UNDERFLOW}, { 282 - ERRHRD, ERRgeneral, NT_STATUS_INTEGER_DIVIDE_BY_ZERO}, { 283 - ERRDOS, 534, NT_STATUS_INTEGER_OVERFLOW}, { 284 - ERRHRD, ERRgeneral, NT_STATUS_PRIVILEGED_INSTRUCTION}, { 285 - ERRDOS, ERRnomem, NT_STATUS_TOO_MANY_PAGING_FILES}, { 286 - ERRHRD, ERRgeneral, NT_STATUS_FILE_INVALID}, { 287 - ERRHRD, ERRgeneral, NT_STATUS_ALLOTTED_SPACE_EXCEEDED}, 288 - /* { This NT error code was 'sqashed' 289 - from NT_STATUS_INSUFFICIENT_RESOURCES to 290 - NT_STATUS_INSUFF_SERVER_RESOURCES during the session setup } */ 291 - { 292 - ERRDOS, ERRnoresource, NT_STATUS_INSUFFICIENT_RESOURCES}, { 293 - ERRDOS, ERRbadpath, NT_STATUS_DFS_EXIT_PATH_FOUND}, { 294 - ERRDOS, 23, NT_STATUS_DEVICE_DATA_ERROR}, { 295 - ERRHRD, ERRgeneral, NT_STATUS_DEVICE_NOT_CONNECTED}, { 296 - ERRDOS, 21, NT_STATUS_DEVICE_POWER_FAILURE}, { 297 - ERRDOS, 487, NT_STATUS_FREE_VM_NOT_AT_BASE}, { 298 - ERRDOS, 487, NT_STATUS_MEMORY_NOT_ALLOCATED}, { 299 - ERRHRD, ERRgeneral, NT_STATUS_WORKING_SET_QUOTA}, { 300 - ERRDOS, 19, NT_STATUS_MEDIA_WRITE_PROTECTED}, { 301 - ERRDOS, 21, NT_STATUS_DEVICE_NOT_READY}, { 302 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_GROUP_ATTRIBUTES}, { 303 - ERRHRD, ERRgeneral, NT_STATUS_BAD_IMPERSONATION_LEVEL}, { 304 - ERRHRD, ERRgeneral, NT_STATUS_CANT_OPEN_ANONYMOUS}, { 305 - ERRHRD, ERRgeneral, NT_STATUS_BAD_VALIDATION_CLASS}, { 306 - ERRHRD, ERRgeneral, NT_STATUS_BAD_TOKEN_TYPE}, { 307 - ERRDOS, 87, NT_STATUS_BAD_MASTER_BOOT_RECORD}, { 308 - ERRHRD, ERRgeneral, NT_STATUS_INSTRUCTION_MISALIGNMENT}, { 309 - ERRDOS, ERRpipebusy, NT_STATUS_INSTANCE_NOT_AVAILABLE}, { 310 - ERRDOS, ERRpipebusy, NT_STATUS_PIPE_NOT_AVAILABLE}, { 311 - ERRDOS, ERRbadpipe, NT_STATUS_INVALID_PIPE_STATE}, { 312 - ERRDOS, ERRpipebusy, NT_STATUS_PIPE_BUSY}, { 313 - ERRDOS, ERRbadfunc, NT_STATUS_ILLEGAL_FUNCTION}, { 314 - ERRDOS, ERRnotconnected, NT_STATUS_PIPE_DISCONNECTED}, { 315 - ERRDOS, ERRpipeclosing, NT_STATUS_PIPE_CLOSING}, { 316 - ERRHRD, ERRgeneral, NT_STATUS_PIPE_CONNECTED}, { 317 - ERRHRD, ERRgeneral, NT_STATUS_PIPE_LISTENING}, { 318 - ERRDOS, ERRbadpipe, NT_STATUS_INVALID_READ_MODE}, { 319 - ERRDOS, 121, NT_STATUS_IO_TIMEOUT}, { 320 - ERRDOS, 38, NT_STATUS_FILE_FORCED_CLOSED}, { 321 - ERRHRD, ERRgeneral, NT_STATUS_PROFILING_NOT_STARTED}, { 322 - ERRHRD, ERRgeneral, NT_STATUS_PROFILING_NOT_STOPPED}, { 323 - ERRHRD, ERRgeneral, NT_STATUS_COULD_NOT_INTERPRET}, { 324 - ERRDOS, ERRnoaccess, NT_STATUS_FILE_IS_A_DIRECTORY}, { 325 - ERRDOS, ERRunsup, NT_STATUS_NOT_SUPPORTED}, { 326 - ERRDOS, 51, NT_STATUS_REMOTE_NOT_LISTENING}, { 327 - ERRDOS, 52, NT_STATUS_DUPLICATE_NAME}, { 328 - ERRDOS, 53, NT_STATUS_BAD_NETWORK_PATH}, { 329 - ERRDOS, 54, NT_STATUS_NETWORK_BUSY}, { 330 - ERRDOS, 55, NT_STATUS_DEVICE_DOES_NOT_EXIST}, { 331 - ERRDOS, 56, NT_STATUS_TOO_MANY_COMMANDS}, { 332 - ERRDOS, 57, NT_STATUS_ADAPTER_HARDWARE_ERROR}, { 333 - ERRDOS, 58, NT_STATUS_INVALID_NETWORK_RESPONSE}, { 334 - ERRDOS, 59, NT_STATUS_UNEXPECTED_NETWORK_ERROR}, { 335 - ERRDOS, 60, NT_STATUS_BAD_REMOTE_ADAPTER}, { 336 - ERRDOS, 61, NT_STATUS_PRINT_QUEUE_FULL}, { 337 - ERRDOS, 62, NT_STATUS_NO_SPOOL_SPACE}, { 338 - ERRDOS, 63, NT_STATUS_PRINT_CANCELLED}, { 339 - ERRDOS, 64, NT_STATUS_NETWORK_NAME_DELETED}, { 340 - ERRDOS, 65, NT_STATUS_NETWORK_ACCESS_DENIED}, { 341 - ERRDOS, 66, NT_STATUS_BAD_DEVICE_TYPE}, { 342 - ERRDOS, ERRnosuchshare, NT_STATUS_BAD_NETWORK_NAME}, { 343 - ERRDOS, 68, NT_STATUS_TOO_MANY_NAMES}, { 344 - ERRDOS, 69, NT_STATUS_TOO_MANY_SESSIONS}, { 345 - ERRDOS, 70, NT_STATUS_SHARING_PAUSED}, { 346 - ERRDOS, 71, NT_STATUS_REQUEST_NOT_ACCEPTED}, { 347 - ERRDOS, 72, NT_STATUS_REDIRECTOR_PAUSED}, { 348 - ERRDOS, 88, NT_STATUS_NET_WRITE_FAULT}, { 349 - ERRHRD, ERRgeneral, NT_STATUS_PROFILING_AT_LIMIT}, { 350 - ERRDOS, ERRdiffdevice, NT_STATUS_NOT_SAME_DEVICE}, { 351 - ERRDOS, ERRnoaccess, NT_STATUS_FILE_RENAMED}, { 352 - ERRDOS, 240, NT_STATUS_VIRTUAL_CIRCUIT_CLOSED}, { 353 - ERRHRD, ERRgeneral, NT_STATUS_NO_SECURITY_ON_OBJECT}, { 354 - ERRHRD, ERRgeneral, NT_STATUS_CANT_WAIT}, { 355 - ERRDOS, ERRpipeclosing, NT_STATUS_PIPE_EMPTY}, { 356 - ERRHRD, ERRgeneral, NT_STATUS_CANT_ACCESS_DOMAIN_INFO}, { 357 - ERRHRD, ERRgeneral, NT_STATUS_CANT_TERMINATE_SELF}, { 358 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_SERVER_STATE}, { 359 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_DOMAIN_STATE}, { 360 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_DOMAIN_ROLE}, { 361 - ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_DOMAIN}, { 362 - ERRHRD, ERRgeneral, NT_STATUS_DOMAIN_EXISTS}, { 363 - ERRHRD, ERRgeneral, NT_STATUS_DOMAIN_LIMIT_EXCEEDED}, { 364 - ERRDOS, 300, NT_STATUS_OPLOCK_NOT_GRANTED}, { 365 - ERRDOS, 301, NT_STATUS_INVALID_OPLOCK_PROTOCOL}, { 366 - ERRHRD, ERRgeneral, NT_STATUS_INTERNAL_DB_CORRUPTION}, { 367 - ERRHRD, ERRgeneral, NT_STATUS_INTERNAL_ERROR}, { 368 - ERRHRD, ERRgeneral, NT_STATUS_GENERIC_NOT_MAPPED}, { 369 - ERRHRD, ERRgeneral, NT_STATUS_BAD_DESCRIPTOR_FORMAT}, { 370 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_USER_BUFFER}, { 371 - ERRHRD, ERRgeneral, NT_STATUS_UNEXPECTED_IO_ERROR}, { 372 - ERRHRD, ERRgeneral, NT_STATUS_UNEXPECTED_MM_CREATE_ERR}, { 373 - ERRHRD, ERRgeneral, NT_STATUS_UNEXPECTED_MM_MAP_ERROR}, { 374 - ERRHRD, ERRgeneral, NT_STATUS_UNEXPECTED_MM_EXTEND_ERR}, { 375 - ERRHRD, ERRgeneral, NT_STATUS_NOT_LOGON_PROCESS}, { 376 - ERRHRD, ERRgeneral, NT_STATUS_LOGON_SESSION_EXISTS}, { 377 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_1}, { 378 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_2}, { 379 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_3}, { 380 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_4}, { 381 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_5}, { 382 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_6}, { 383 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_7}, { 384 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_8}, { 385 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_9}, { 386 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_10}, { 387 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_11}, { 388 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_12}, { 389 - ERRDOS, ERRbadpath, NT_STATUS_REDIRECTOR_NOT_STARTED}, { 390 - ERRHRD, ERRgeneral, NT_STATUS_REDIRECTOR_STARTED}, { 391 - ERRHRD, ERRgeneral, NT_STATUS_STACK_OVERFLOW}, { 392 - ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_PACKAGE}, { 393 - ERRHRD, ERRgeneral, NT_STATUS_BAD_FUNCTION_TABLE}, { 394 - ERRDOS, 203, 0xc0000100}, { 395 - ERRDOS, 145, NT_STATUS_DIRECTORY_NOT_EMPTY}, { 396 - ERRHRD, ERRgeneral, NT_STATUS_FILE_CORRUPT_ERROR}, { 397 - ERRDOS, 267, NT_STATUS_NOT_A_DIRECTORY}, { 398 - ERRHRD, ERRgeneral, NT_STATUS_BAD_LOGON_SESSION_STATE}, { 399 - ERRHRD, ERRgeneral, NT_STATUS_LOGON_SESSION_COLLISION}, { 400 - ERRDOS, 206, NT_STATUS_NAME_TOO_LONG}, { 401 - ERRDOS, 2401, NT_STATUS_FILES_OPEN}, { 402 - ERRDOS, 2404, NT_STATUS_CONNECTION_IN_USE}, { 403 - ERRHRD, ERRgeneral, NT_STATUS_MESSAGE_NOT_FOUND}, { 404 - ERRDOS, ERRnoaccess, NT_STATUS_PROCESS_IS_TERMINATING}, { 405 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_LOGON_TYPE}, { 406 - ERRHRD, ERRgeneral, NT_STATUS_NO_GUID_TRANSLATION}, { 407 - ERRHRD, ERRgeneral, NT_STATUS_CANNOT_IMPERSONATE}, { 408 - ERRHRD, ERRgeneral, NT_STATUS_IMAGE_ALREADY_LOADED}, { 409 - ERRHRD, ERRgeneral, NT_STATUS_ABIOS_NOT_PRESENT}, { 410 - ERRHRD, ERRgeneral, NT_STATUS_ABIOS_LID_NOT_EXIST}, { 411 - ERRHRD, ERRgeneral, NT_STATUS_ABIOS_LID_ALREADY_OWNED}, { 412 - ERRHRD, ERRgeneral, NT_STATUS_ABIOS_NOT_LID_OWNER}, { 413 - ERRHRD, ERRgeneral, NT_STATUS_ABIOS_INVALID_COMMAND}, { 414 - ERRHRD, ERRgeneral, NT_STATUS_ABIOS_INVALID_LID}, { 415 - ERRHRD, ERRgeneral, NT_STATUS_ABIOS_SELECTOR_NOT_AVAILABLE}, { 416 - ERRHRD, ERRgeneral, NT_STATUS_ABIOS_INVALID_SELECTOR}, { 417 - ERRHRD, ERRgeneral, NT_STATUS_NO_LDT}, { 418 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_LDT_SIZE}, { 419 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_LDT_OFFSET}, { 420 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_LDT_DESCRIPTOR}, { 421 - ERRDOS, 193, NT_STATUS_INVALID_IMAGE_NE_FORMAT}, { 422 - ERRHRD, ERRgeneral, NT_STATUS_RXACT_INVALID_STATE}, { 423 - ERRHRD, ERRgeneral, NT_STATUS_RXACT_COMMIT_FAILURE}, { 424 - ERRHRD, ERRgeneral, NT_STATUS_MAPPED_FILE_SIZE_ZERO}, { 425 - ERRDOS, ERRnofids, NT_STATUS_TOO_MANY_OPENED_FILES}, { 426 - ERRHRD, ERRgeneral, NT_STATUS_CANCELLED}, { 427 - ERRDOS, ERRnoaccess, NT_STATUS_CANNOT_DELETE}, { 428 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_COMPUTER_NAME}, { 429 - ERRDOS, ERRnoaccess, NT_STATUS_FILE_DELETED}, { 430 - ERRHRD, ERRgeneral, NT_STATUS_SPECIAL_ACCOUNT}, { 431 - ERRHRD, ERRgeneral, NT_STATUS_SPECIAL_GROUP}, { 432 - ERRHRD, ERRgeneral, NT_STATUS_SPECIAL_USER}, { 433 - ERRHRD, ERRgeneral, NT_STATUS_MEMBERS_PRIMARY_GROUP}, { 434 - ERRDOS, ERRbadfid, NT_STATUS_FILE_CLOSED}, { 435 - ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_THREADS}, { 436 - ERRHRD, ERRgeneral, NT_STATUS_THREAD_NOT_IN_PROCESS}, { 437 - ERRHRD, ERRgeneral, NT_STATUS_TOKEN_ALREADY_IN_USE}, { 438 - ERRHRD, ERRgeneral, NT_STATUS_PAGEFILE_QUOTA_EXCEEDED}, { 439 - ERRHRD, ERRgeneral, NT_STATUS_COMMITMENT_LIMIT}, { 440 - ERRDOS, 193, NT_STATUS_INVALID_IMAGE_LE_FORMAT}, { 441 - ERRDOS, 193, NT_STATUS_INVALID_IMAGE_NOT_MZ}, { 442 - ERRDOS, 193, NT_STATUS_INVALID_IMAGE_PROTECT}, { 443 - ERRDOS, 193, NT_STATUS_INVALID_IMAGE_WIN_16}, { 444 - ERRHRD, ERRgeneral, NT_STATUS_LOGON_SERVER_CONFLICT}, { 445 - ERRHRD, ERRgeneral, NT_STATUS_TIME_DIFFERENCE_AT_DC}, { 446 - ERRHRD, ERRgeneral, NT_STATUS_SYNCHRONIZATION_REQUIRED}, { 447 - ERRDOS, 126, NT_STATUS_DLL_NOT_FOUND}, { 448 - ERRHRD, ERRgeneral, NT_STATUS_OPEN_FAILED}, { 449 - ERRHRD, ERRgeneral, NT_STATUS_IO_PRIVILEGE_FAILED}, { 450 - ERRDOS, 182, NT_STATUS_ORDINAL_NOT_FOUND}, { 451 - ERRDOS, 127, NT_STATUS_ENTRYPOINT_NOT_FOUND}, { 452 - ERRHRD, ERRgeneral, NT_STATUS_CONTROL_C_EXIT}, { 453 - ERRDOS, 64, NT_STATUS_LOCAL_DISCONNECT}, { 454 - ERRDOS, 64, NT_STATUS_REMOTE_DISCONNECT}, { 455 - ERRDOS, 51, NT_STATUS_REMOTE_RESOURCES}, { 456 - ERRDOS, 59, NT_STATUS_LINK_FAILED}, { 457 - ERRDOS, 59, NT_STATUS_LINK_TIMEOUT}, { 458 - ERRDOS, 59, NT_STATUS_INVALID_CONNECTION}, { 459 - ERRDOS, 59, NT_STATUS_INVALID_ADDRESS}, { 460 - ERRHRD, ERRgeneral, NT_STATUS_DLL_INIT_FAILED}, { 461 - ERRHRD, ERRgeneral, NT_STATUS_MISSING_SYSTEMFILE}, { 462 - ERRHRD, ERRgeneral, NT_STATUS_UNHANDLED_EXCEPTION}, { 463 - ERRHRD, ERRgeneral, NT_STATUS_APP_INIT_FAILURE}, { 464 - ERRHRD, ERRgeneral, NT_STATUS_PAGEFILE_CREATE_FAILED}, { 465 - ERRHRD, ERRgeneral, NT_STATUS_NO_PAGEFILE}, { 466 - ERRDOS, 124, NT_STATUS_INVALID_LEVEL}, { 467 - ERRDOS, 86, NT_STATUS_WRONG_PASSWORD_CORE}, { 468 - ERRHRD, ERRgeneral, NT_STATUS_ILLEGAL_FLOAT_CONTEXT}, { 469 - ERRDOS, 109, NT_STATUS_PIPE_BROKEN}, { 470 - ERRHRD, ERRgeneral, NT_STATUS_REGISTRY_CORRUPT}, { 471 - ERRHRD, ERRgeneral, NT_STATUS_REGISTRY_IO_FAILED}, { 472 - ERRHRD, ERRgeneral, NT_STATUS_NO_EVENT_PAIR}, { 473 - ERRHRD, ERRgeneral, NT_STATUS_UNRECOGNIZED_VOLUME}, { 474 - ERRHRD, ERRgeneral, NT_STATUS_SERIAL_NO_DEVICE_INITED}, { 475 - ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_ALIAS}, { 476 - ERRHRD, ERRgeneral, NT_STATUS_MEMBER_NOT_IN_ALIAS}, { 477 - ERRHRD, ERRgeneral, NT_STATUS_MEMBER_IN_ALIAS}, { 478 - ERRHRD, ERRgeneral, NT_STATUS_ALIAS_EXISTS}, { 479 - ERRHRD, ERRgeneral, NT_STATUS_LOGON_NOT_GRANTED}, { 480 - ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_SECRETS}, { 481 - ERRHRD, ERRgeneral, NT_STATUS_SECRET_TOO_LONG}, { 482 - ERRHRD, ERRgeneral, NT_STATUS_INTERNAL_DB_ERROR}, { 483 - ERRHRD, ERRgeneral, NT_STATUS_FULLSCREEN_MODE}, { 484 - ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_CONTEXT_IDS}, { 485 - ERRDOS, ERRnoaccess, NT_STATUS_LOGON_TYPE_NOT_GRANTED}, { 486 - ERRHRD, ERRgeneral, NT_STATUS_NOT_REGISTRY_FILE}, { 487 - ERRHRD, ERRgeneral, NT_STATUS_NT_CROSS_ENCRYPTION_REQUIRED}, { 488 - ERRHRD, ERRgeneral, NT_STATUS_DOMAIN_CTRLR_CONFIG_ERROR}, { 489 - ERRHRD, ERRgeneral, NT_STATUS_FT_MISSING_MEMBER}, { 490 - ERRHRD, ERRgeneral, NT_STATUS_ILL_FORMED_SERVICE_ENTRY}, { 491 - ERRHRD, ERRgeneral, NT_STATUS_ILLEGAL_CHARACTER}, { 492 - ERRHRD, ERRgeneral, NT_STATUS_UNMAPPABLE_CHARACTER}, { 493 - ERRHRD, ERRgeneral, NT_STATUS_UNDEFINED_CHARACTER}, { 494 - ERRHRD, ERRgeneral, NT_STATUS_FLOPPY_VOLUME}, { 495 - ERRHRD, ERRgeneral, NT_STATUS_FLOPPY_ID_MARK_NOT_FOUND}, { 496 - ERRHRD, ERRgeneral, NT_STATUS_FLOPPY_WRONG_CYLINDER}, { 497 - ERRHRD, ERRgeneral, NT_STATUS_FLOPPY_UNKNOWN_ERROR}, { 498 - ERRHRD, ERRgeneral, NT_STATUS_FLOPPY_BAD_REGISTERS}, { 499 - ERRHRD, ERRgeneral, NT_STATUS_DISK_RECALIBRATE_FAILED}, { 500 - ERRHRD, ERRgeneral, NT_STATUS_DISK_OPERATION_FAILED}, { 501 - ERRHRD, ERRgeneral, NT_STATUS_DISK_RESET_FAILED}, { 502 - ERRHRD, ERRgeneral, NT_STATUS_SHARED_IRQ_BUSY}, { 503 - ERRHRD, ERRgeneral, NT_STATUS_FT_ORPHANING}, { 504 - ERRHRD, ERRgeneral, 0xc000016e}, { 505 - ERRHRD, ERRgeneral, 0xc000016f}, { 506 - ERRHRD, ERRgeneral, 0xc0000170}, { 507 - ERRHRD, ERRgeneral, 0xc0000171}, { 508 - ERRHRD, ERRgeneral, NT_STATUS_PARTITION_FAILURE}, { 509 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_BLOCK_LENGTH}, { 510 - ERRHRD, ERRgeneral, NT_STATUS_DEVICE_NOT_PARTITIONED}, { 511 - ERRHRD, ERRgeneral, NT_STATUS_UNABLE_TO_LOCK_MEDIA}, { 512 - ERRHRD, ERRgeneral, NT_STATUS_UNABLE_TO_UNLOAD_MEDIA}, { 513 - ERRHRD, ERRgeneral, NT_STATUS_EOM_OVERFLOW}, { 514 - ERRHRD, ERRgeneral, NT_STATUS_NO_MEDIA}, { 515 - ERRHRD, ERRgeneral, 0xc0000179}, { 516 - ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_MEMBER}, { 517 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_MEMBER}, { 518 - ERRHRD, ERRgeneral, NT_STATUS_KEY_DELETED}, { 519 - ERRHRD, ERRgeneral, NT_STATUS_NO_LOG_SPACE}, { 520 - ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_SIDS}, { 521 - ERRHRD, ERRgeneral, NT_STATUS_LM_CROSS_ENCRYPTION_REQUIRED}, { 522 - ERRHRD, ERRgeneral, NT_STATUS_KEY_HAS_CHILDREN}, { 523 - ERRHRD, ERRgeneral, NT_STATUS_CHILD_MUST_BE_VOLATILE}, { 524 - ERRDOS, 87, NT_STATUS_DEVICE_CONFIGURATION_ERROR}, { 525 - ERRHRD, ERRgeneral, NT_STATUS_DRIVER_INTERNAL_ERROR}, { 526 - ERRDOS, 22, NT_STATUS_INVALID_DEVICE_STATE}, { 527 - ERRHRD, ERRgeneral, NT_STATUS_IO_DEVICE_ERROR}, { 528 - ERRHRD, ERRgeneral, NT_STATUS_DEVICE_PROTOCOL_ERROR}, { 529 - ERRHRD, ERRgeneral, NT_STATUS_BACKUP_CONTROLLER}, { 530 - ERRHRD, ERRgeneral, NT_STATUS_LOG_FILE_FULL}, { 531 - ERRDOS, 19, NT_STATUS_TOO_LATE}, { 532 - ERRDOS, ERRnoaccess, NT_STATUS_NO_TRUST_LSA_SECRET}, 533 - /* { This NT error code was 'sqashed' 534 - from NT_STATUS_NO_TRUST_SAM_ACCOUNT to 535 - NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE during the session setup } */ 536 - { 537 - ERRDOS, ERRnoaccess, NT_STATUS_NO_TRUST_SAM_ACCOUNT}, { 538 - ERRDOS, ERRnoaccess, NT_STATUS_TRUSTED_DOMAIN_FAILURE}, { 539 - ERRDOS, ERRnoaccess, NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE}, { 540 - ERRHRD, ERRgeneral, NT_STATUS_EVENTLOG_FILE_CORRUPT}, { 541 - ERRHRD, ERRgeneral, NT_STATUS_EVENTLOG_CANT_START}, { 542 - ERRDOS, ERRnoaccess, NT_STATUS_TRUST_FAILURE}, { 543 - ERRHRD, ERRgeneral, NT_STATUS_MUTANT_LIMIT_EXCEEDED}, { 544 - ERRDOS, ERRnetlogonNotStarted, NT_STATUS_NETLOGON_NOT_STARTED}, { 545 - ERRSRV, ERRaccountexpired, NT_STATUS_ACCOUNT_EXPIRED}, { 546 - ERRHRD, ERRgeneral, NT_STATUS_POSSIBLE_DEADLOCK}, { 547 - ERRHRD, ERRgeneral, NT_STATUS_NETWORK_CREDENTIAL_CONFLICT}, { 548 - ERRHRD, ERRgeneral, NT_STATUS_REMOTE_SESSION_LIMIT}, { 549 - ERRHRD, ERRgeneral, NT_STATUS_EVENTLOG_FILE_CHANGED}, { 550 - ERRDOS, ERRnoaccess, NT_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT}, { 551 - ERRDOS, ERRnoaccess, NT_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT}, { 552 - ERRDOS, ERRnoaccess, NT_STATUS_NOLOGON_SERVER_TRUST_ACCOUNT}, 553 - /* { This NT error code was 'sqashed' 554 - from NT_STATUS_DOMAIN_TRUST_INCONSISTENT to NT_STATUS_LOGON_FAILURE 555 - during the session setup } */ 556 - { 557 - ERRDOS, ERRnoaccess, NT_STATUS_DOMAIN_TRUST_INCONSISTENT}, { 558 - ERRHRD, ERRgeneral, NT_STATUS_FS_DRIVER_REQUIRED}, { 559 - ERRHRD, ERRgeneral, NT_STATUS_NO_USER_SESSION_KEY}, { 560 - ERRDOS, 59, NT_STATUS_USER_SESSION_DELETED}, { 561 - ERRHRD, ERRgeneral, NT_STATUS_RESOURCE_LANG_NOT_FOUND}, { 562 - ERRDOS, ERRnoresource, NT_STATUS_INSUFF_SERVER_RESOURCES}, { 563 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_BUFFER_SIZE}, { 564 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_ADDRESS_COMPONENT}, { 565 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_ADDRESS_WILDCARD}, { 566 - ERRDOS, 68, NT_STATUS_TOO_MANY_ADDRESSES}, { 567 - ERRDOS, 52, NT_STATUS_ADDRESS_ALREADY_EXISTS}, { 568 - ERRDOS, 64, NT_STATUS_ADDRESS_CLOSED}, { 569 - ERRDOS, 64, NT_STATUS_CONNECTION_DISCONNECTED}, { 570 - ERRDOS, 64, NT_STATUS_CONNECTION_RESET}, { 571 - ERRDOS, 68, NT_STATUS_TOO_MANY_NODES}, { 572 - ERRDOS, 59, NT_STATUS_TRANSACTION_ABORTED}, { 573 - ERRDOS, 59, NT_STATUS_TRANSACTION_TIMED_OUT}, { 574 - ERRDOS, 59, NT_STATUS_TRANSACTION_NO_RELEASE}, { 575 - ERRDOS, 59, NT_STATUS_TRANSACTION_NO_MATCH}, { 576 - ERRDOS, 59, NT_STATUS_TRANSACTION_RESPONDED}, { 577 - ERRDOS, 59, NT_STATUS_TRANSACTION_INVALID_ID}, { 578 - ERRDOS, 59, NT_STATUS_TRANSACTION_INVALID_TYPE}, { 579 - ERRDOS, ERRunsup, NT_STATUS_NOT_SERVER_SESSION}, { 580 - ERRDOS, ERRunsup, NT_STATUS_NOT_CLIENT_SESSION}, { 581 - ERRHRD, ERRgeneral, NT_STATUS_CANNOT_LOAD_REGISTRY_FILE}, { 582 - ERRHRD, ERRgeneral, NT_STATUS_DEBUG_ATTACH_FAILED}, { 583 - ERRHRD, ERRgeneral, NT_STATUS_SYSTEM_PROCESS_TERMINATED}, { 584 - ERRHRD, ERRgeneral, NT_STATUS_DATA_NOT_ACCEPTED}, { 585 - ERRHRD, ERRgeneral, NT_STATUS_NO_BROWSER_SERVERS_FOUND}, { 586 - ERRHRD, ERRgeneral, NT_STATUS_VDM_HARD_ERROR}, { 587 - ERRHRD, ERRgeneral, NT_STATUS_DRIVER_CANCEL_TIMEOUT}, { 588 - ERRHRD, ERRgeneral, NT_STATUS_REPLY_MESSAGE_MISMATCH}, { 589 - ERRHRD, ERRgeneral, NT_STATUS_MAPPED_ALIGNMENT}, { 590 - ERRDOS, 193, NT_STATUS_IMAGE_CHECKSUM_MISMATCH}, { 591 - ERRHRD, ERRgeneral, NT_STATUS_LOST_WRITEBEHIND_DATA}, { 592 - ERRHRD, ERRgeneral, NT_STATUS_CLIENT_SERVER_PARAMETERS_INVALID}, { 593 - ERRSRV, ERRpasswordExpired, NT_STATUS_PASSWORD_MUST_CHANGE}, { 594 - ERRHRD, ERRgeneral, NT_STATUS_NOT_FOUND}, { 595 - ERRHRD, ERRgeneral, NT_STATUS_NOT_TINY_STREAM}, { 596 - ERRHRD, ERRgeneral, NT_STATUS_RECOVERY_FAILURE}, { 597 - ERRHRD, ERRgeneral, NT_STATUS_STACK_OVERFLOW_READ}, { 598 - ERRHRD, ERRgeneral, NT_STATUS_FAIL_CHECK}, { 599 - ERRHRD, ERRgeneral, NT_STATUS_DUPLICATE_OBJECTID}, { 600 - ERRHRD, ERRgeneral, NT_STATUS_OBJECTID_EXISTS}, { 601 - ERRHRD, ERRgeneral, NT_STATUS_CONVERT_TO_LARGE}, { 602 - ERRHRD, ERRgeneral, NT_STATUS_RETRY}, { 603 - ERRHRD, ERRgeneral, NT_STATUS_FOUND_OUT_OF_SCOPE}, { 604 - ERRHRD, ERRgeneral, NT_STATUS_ALLOCATE_BUCKET}, { 605 - ERRHRD, ERRgeneral, NT_STATUS_PROPSET_NOT_FOUND}, { 606 - ERRHRD, ERRgeneral, NT_STATUS_MARSHALL_OVERFLOW}, { 607 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_VARIANT}, { 608 - ERRHRD, ERRgeneral, NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND}, { 609 - ERRDOS, ERRnoaccess, NT_STATUS_ACCOUNT_LOCKED_OUT}, { 610 - ERRDOS, ERRbadfid, NT_STATUS_HANDLE_NOT_CLOSABLE}, { 611 - ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_REFUSED}, { 612 - ERRHRD, ERRgeneral, NT_STATUS_GRACEFUL_DISCONNECT}, { 613 - ERRHRD, ERRgeneral, NT_STATUS_ADDRESS_ALREADY_ASSOCIATED}, { 614 - ERRHRD, ERRgeneral, NT_STATUS_ADDRESS_NOT_ASSOCIATED}, { 615 - ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_INVALID}, { 616 - ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_ACTIVE}, { 617 - ERRHRD, ERRgeneral, NT_STATUS_NETWORK_UNREACHABLE}, { 618 - ERRHRD, ERRgeneral, NT_STATUS_HOST_UNREACHABLE}, { 619 - ERRHRD, ERRgeneral, NT_STATUS_PROTOCOL_UNREACHABLE}, { 620 - ERRHRD, ERRgeneral, NT_STATUS_PORT_UNREACHABLE}, { 621 - ERRHRD, ERRgeneral, NT_STATUS_REQUEST_ABORTED}, { 622 - ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_ABORTED}, { 623 - ERRHRD, ERRgeneral, NT_STATUS_BAD_COMPRESSION_BUFFER}, { 624 - ERRHRD, ERRgeneral, NT_STATUS_USER_MAPPED_FILE}, { 625 - ERRHRD, ERRgeneral, NT_STATUS_AUDIT_FAILED}, { 626 - ERRHRD, ERRgeneral, NT_STATUS_TIMER_RESOLUTION_NOT_SET}, { 627 - ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_COUNT_LIMIT}, { 628 - ERRHRD, ERRgeneral, NT_STATUS_LOGIN_TIME_RESTRICTION}, { 629 - ERRHRD, ERRgeneral, NT_STATUS_LOGIN_WKSTA_RESTRICTION}, { 630 - ERRDOS, 193, NT_STATUS_IMAGE_MP_UP_MISMATCH}, { 631 - ERRHRD, ERRgeneral, 0xc000024a}, { 632 - ERRHRD, ERRgeneral, 0xc000024b}, { 633 - ERRHRD, ERRgeneral, 0xc000024c}, { 634 - ERRHRD, ERRgeneral, 0xc000024d}, { 635 - ERRHRD, ERRgeneral, 0xc000024e}, { 636 - ERRHRD, ERRgeneral, 0xc000024f}, { 637 - ERRHRD, ERRgeneral, NT_STATUS_INSUFFICIENT_LOGON_INFO}, { 638 - ERRHRD, ERRgeneral, NT_STATUS_BAD_DLL_ENTRYPOINT}, { 639 - ERRHRD, ERRgeneral, NT_STATUS_BAD_SERVICE_ENTRYPOINT}, { 640 - ERRHRD, ERRgeneral, NT_STATUS_LPC_REPLY_LOST}, { 641 - ERRHRD, ERRgeneral, NT_STATUS_IP_ADDRESS_CONFLICT1}, { 642 - ERRHRD, ERRgeneral, NT_STATUS_IP_ADDRESS_CONFLICT2}, { 643 - ERRHRD, ERRgeneral, NT_STATUS_REGISTRY_QUOTA_LIMIT}, { 644 - ERRSRV, 3, NT_STATUS_PATH_NOT_COVERED}, { 645 - ERRHRD, ERRgeneral, NT_STATUS_NO_CALLBACK_ACTIVE}, { 646 - ERRHRD, ERRgeneral, NT_STATUS_LICENSE_QUOTA_EXCEEDED}, { 647 - ERRHRD, ERRgeneral, NT_STATUS_PWD_TOO_SHORT}, { 648 - ERRHRD, ERRgeneral, NT_STATUS_PWD_TOO_RECENT}, { 649 - ERRHRD, ERRgeneral, NT_STATUS_PWD_HISTORY_CONFLICT}, { 650 - ERRHRD, ERRgeneral, 0xc000025d}, { 651 - ERRHRD, ERRgeneral, NT_STATUS_PLUGPLAY_NO_DEVICE}, { 652 - ERRHRD, ERRgeneral, NT_STATUS_UNSUPPORTED_COMPRESSION}, { 653 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_HW_PROFILE}, { 654 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_PLUGPLAY_DEVICE_PATH}, { 655 - ERRDOS, 182, NT_STATUS_DRIVER_ORDINAL_NOT_FOUND}, { 656 - ERRDOS, 127, NT_STATUS_DRIVER_ENTRYPOINT_NOT_FOUND}, { 657 - ERRDOS, 288, NT_STATUS_RESOURCE_NOT_OWNED}, { 658 - ERRDOS, ErrTooManyLinks, NT_STATUS_TOO_MANY_LINKS}, { 659 - ERRHRD, ERRgeneral, NT_STATUS_QUOTA_LIST_INCONSISTENT}, { 660 - ERRHRD, ERRgeneral, NT_STATUS_FILE_IS_OFFLINE}, { 661 - ERRDOS, 21, 0xc000026e}, { 662 - ERRDOS, 161, 0xc0000281}, { 663 - ERRDOS, ERRnoaccess, 0xc000028a}, { 664 - ERRDOS, ERRnoaccess, 0xc000028b}, { 665 - ERRHRD, ERRgeneral, 0xc000028c}, { 666 - ERRDOS, ERRnoaccess, 0xc000028d}, { 667 - ERRDOS, ERRnoaccess, 0xc000028e}, { 668 - ERRDOS, ERRnoaccess, 0xc000028f}, { 669 - ERRDOS, ERRnoaccess, 0xc0000290}, { 670 - ERRDOS, ERRbadfunc, 0xc000029c}, { 671 - ERRDOS, ERRsymlink, NT_STATUS_STOPPED_ON_SYMLINK}, { 672 - ERRDOS, ERRinvlevel, 0x007c0001}, { 673 - 0, 0, 0 } 674 - }; 675 - 676 - /***************************************************************************** 677 - Print an error message from the status code 678 - *****************************************************************************/ 679 - static void 680 - cifs_print_status(__u32 status_code) 681 - { 682 - int idx = 0; 683 - 684 - while (nt_errs[idx].nt_errstr != NULL) { 685 - if (nt_errs[idx].nt_errcode == status_code) { 686 - pr_notice("Status code returned 0x%08x %s\n", 687 - status_code, nt_errs[idx].nt_errstr); 688 - return; 689 - } 690 - idx++; 691 - } 692 - return; 693 - } 694 - 695 - 696 - static void 697 - ntstatus_to_dos(__u32 ntstatus, __u8 *eclass, __u16 *ecode) 698 - { 699 - int i; 700 - if (ntstatus == 0) { 701 - *eclass = 0; 702 - *ecode = 0; 703 - return; 704 - } 705 - for (i = 0; ntstatus_to_dos_map[i].ntstatus; i++) { 706 - if (ntstatus == ntstatus_to_dos_map[i].ntstatus) { 707 - *eclass = ntstatus_to_dos_map[i].dos_class; 708 - *ecode = ntstatus_to_dos_map[i].dos_code; 709 - return; 710 - } 711 - } 712 - *eclass = ERRHRD; 713 - *ecode = ERRgeneral; 714 - } 715 - 716 - int 717 - map_smb_to_linux_error(char *buf, bool logErr) 718 - { 719 - struct smb_hdr *smb = (struct smb_hdr *)buf; 720 - unsigned int i; 721 - int rc = -EIO; /* if transport error smb error may not be set */ 722 - __u8 smberrclass; 723 - __u16 smberrcode; 724 - 725 - /* BB if NT Status codes - map NT BB */ 726 - 727 - /* old style smb error codes */ 728 - if (smb->Status.CifsError == 0) 729 - return 0; 730 - 731 - if (smb->Flags2 & SMBFLG2_ERR_STATUS) { 732 - /* translate the newer STATUS codes to old style SMB errors 733 - * and then to POSIX errors */ 734 - __u32 err = le32_to_cpu(smb->Status.CifsError); 735 - if (logErr && (err != (NT_STATUS_MORE_PROCESSING_REQUIRED))) 736 - cifs_print_status(err); 737 - else if (cifsFYI & CIFS_RC) 738 - cifs_print_status(err); 739 - ntstatus_to_dos(err, &smberrclass, &smberrcode); 740 - } else { 741 - smberrclass = smb->Status.DosError.ErrorClass; 742 - smberrcode = le16_to_cpu(smb->Status.DosError.Error); 743 - } 744 - 745 - /* old style errors */ 746 - 747 - /* DOS class smb error codes - map DOS */ 748 - if (smberrclass == ERRDOS) { 749 - /* 1 byte field no need to byte reverse */ 750 - for (i = 0; 751 - i < 752 - sizeof(mapping_table_ERRDOS) / 753 - sizeof(struct smb_to_posix_error); i++) { 754 - if (mapping_table_ERRDOS[i].smb_err == 0) 755 - break; 756 - else if (mapping_table_ERRDOS[i].smb_err == 757 - smberrcode) { 758 - rc = mapping_table_ERRDOS[i].posix_code; 759 - break; 760 - } 761 - /* else try next error mapping one to see if match */ 762 - } 763 - } else if (smberrclass == ERRSRV) { 764 - /* server class of error codes */ 765 - for (i = 0; 766 - i < 767 - sizeof(mapping_table_ERRSRV) / 768 - sizeof(struct smb_to_posix_error); i++) { 769 - if (mapping_table_ERRSRV[i].smb_err == 0) 770 - break; 771 - else if (mapping_table_ERRSRV[i].smb_err == 772 - smberrcode) { 773 - rc = mapping_table_ERRSRV[i].posix_code; 774 - break; 775 - } 776 - /* else try next error mapping to see if match */ 777 - } 778 - } 779 - /* else ERRHRD class errors or junk - return EIO */ 780 - 781 - /* special cases for NT status codes which cannot be translated to DOS codes */ 782 - if (smb->Flags2 & SMBFLG2_ERR_STATUS) { 783 - __u32 err = le32_to_cpu(smb->Status.CifsError); 784 - if (err == (NT_STATUS_NOT_A_REPARSE_POINT)) 785 - rc = -ENODATA; 786 - else if (err == (NT_STATUS_PRIVILEGE_NOT_HELD)) 787 - rc = -EPERM; 788 - } 789 - 790 - cifs_dbg(FYI, "Mapping smb error code 0x%x to POSIX err %d\n", 791 - le32_to_cpu(smb->Status.CifsError), rc); 792 - 793 - /* generic corrective action e.g. reconnect SMB session on 794 - * ERRbaduid could be added */ 795 - 796 - if (rc == -EIO) 797 - smb_EIO2(smb_eio_trace_smb1_received_error, 798 - le32_to_cpu(smb->Status.CifsError), 799 - le16_to_cpu(smb->Flags2)); 800 - return rc; 801 - } 802 - 803 - int 804 - map_and_check_smb_error(struct TCP_Server_Info *server, 805 - struct mid_q_entry *mid, bool logErr) 806 - { 807 - int rc; 808 - struct smb_hdr *smb = (struct smb_hdr *)mid->resp_buf; 809 - 810 - rc = map_smb_to_linux_error((char *)smb, logErr); 811 - if (rc == -EACCES && !(smb->Flags2 & SMBFLG2_ERR_STATUS)) { 812 - /* possible ERRBaduid */ 813 - __u8 class = smb->Status.DosError.ErrorClass; 814 - __u16 code = le16_to_cpu(smb->Status.DosError.Error); 815 - 816 - /* switch can be used to handle different errors */ 817 - if (class == ERRSRV && code == ERRbaduid) { 818 - cifs_dbg(FYI, "Server returned 0x%x, reconnecting session...\n", 819 - code); 820 - cifs_signal_cifsd_for_reconnect(server, false); 821 - } 822 - } 823 - 824 - return rc; 825 - } 826 - 827 - 828 - /* 829 - * calculate the size of the SMB message based on the fixed header 830 - * portion, the number of word parameters and the data portion of the message 831 - */ 832 - unsigned int 833 - smbCalcSize(void *buf) 834 - { 835 - struct smb_hdr *ptr = buf; 836 - return (sizeof(struct smb_hdr) + (2 * ptr->WordCount) + 837 - 2 /* size of the bcc field */ + get_bcc(ptr)); 838 200 } 839 201 840 202 /* The following are taken from fs/ntfs/util.c */
+15
fs/smb/client/nterr.c
··· 346 346 {"NT_STATUS_STACK_OVERFLOW", NT_STATUS_STACK_OVERFLOW}, 347 347 {"NT_STATUS_NO_SUCH_PACKAGE", NT_STATUS_NO_SUCH_PACKAGE}, 348 348 {"NT_STATUS_BAD_FUNCTION_TABLE", NT_STATUS_BAD_FUNCTION_TABLE}, 349 + {"NT_STATUS_VARIABLE_NOT_FOUND", NT_STATUS_VARIABLE_NOT_FOUND}, 349 350 {"NT_STATUS_DIRECTORY_NOT_EMPTY", NT_STATUS_DIRECTORY_NOT_EMPTY}, 350 351 {"NT_STATUS_FILE_CORRUPT_ERROR", NT_STATUS_FILE_CORRUPT_ERROR}, 351 352 {"NT_STATUS_NOT_A_DIRECTORY", NT_STATUS_NOT_A_DIRECTORY}, ··· 487 486 {"NT_STATUS_DISK_RESET_FAILED", NT_STATUS_DISK_RESET_FAILED}, 488 487 {"NT_STATUS_SHARED_IRQ_BUSY", NT_STATUS_SHARED_IRQ_BUSY}, 489 488 {"NT_STATUS_FT_ORPHANING", NT_STATUS_FT_ORPHANING}, 489 + {"NT_STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT", 490 + NT_STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT}, 490 491 {"NT_STATUS_PARTITION_FAILURE", NT_STATUS_PARTITION_FAILURE}, 491 492 {"NT_STATUS_INVALID_BLOCK_LENGTH", NT_STATUS_INVALID_BLOCK_LENGTH}, 492 493 {"NT_STATUS_DEVICE_NOT_PARTITIONED", ··· 679 676 {"NT_STATUS_QUOTA_LIST_INCONSISTENT", 680 677 NT_STATUS_QUOTA_LIST_INCONSISTENT}, 681 678 {"NT_STATUS_FILE_IS_OFFLINE", NT_STATUS_FILE_IS_OFFLINE}, 679 + {"NT_STATUS_VOLUME_DISMOUNTED", NT_STATUS_VOLUME_DISMOUNTED}, 682 680 {"NT_STATUS_NOT_A_REPARSE_POINT", NT_STATUS_NOT_A_REPARSE_POINT}, 681 + {"NT_STATUS_DIRECTORY_IS_A_REPARSE_POINT", 682 + NT_STATUS_DIRECTORY_IS_A_REPARSE_POINT}, 683 + {"NT_STATUS_ENCRYPTION_FAILED", NT_STATUS_ENCRYPTION_FAILED}, 684 + {"NT_STATUS_DECRYPTION_FAILED", NT_STATUS_DECRYPTION_FAILED}, 685 + {"NT_STATUS_RANGE_NOT_FOUND", NT_STATUS_RANGE_NOT_FOUND}, 686 + {"NT_STATUS_NO_RECOVERY_POLICY", NT_STATUS_NO_RECOVERY_POLICY}, 687 + {"NT_STATUS_NO_EFS", NT_STATUS_NO_EFS}, 688 + {"NT_STATUS_WRONG_EFS", NT_STATUS_WRONG_EFS}, 689 + {"NT_STATUS_NO_USER_KEYS", NT_STATUS_NO_USER_KEYS}, 690 + {"NT_STATUS_VOLUME_NOT_UPGRADED", NT_STATUS_VOLUME_NOT_UPGRADED}, 683 691 {"NT_STATUS_NETWORK_SESSION_EXPIRED", NT_STATUS_NETWORK_SESSION_EXPIRED}, 684 692 {"NT_STATUS_NO_MORE_ENTRIES", NT_STATUS_NO_MORE_ENTRIES}, 685 693 {"NT_STATUS_MORE_ENTRIES", NT_STATUS_MORE_ENTRIES}, ··· 698 684 {"NT_STATUS_NO_SUCH_JOB", NT_STATUS_NO_SUCH_JOB}, 699 685 {"NT_STATUS_NO_PREAUTH_INTEGRITY_HASH_OVERLAP", 700 686 NT_STATUS_NO_PREAUTH_INTEGRITY_HASH_OVERLAP}, 687 + {"NT_STATUS_OS2_INVALID_LEVEL", NT_STATUS_OS2_INVALID_LEVEL}, 701 688 {NULL, 0} 702 689 };
+13
fs/smb/client/nterr.h
··· 301 301 #define NT_STATUS_STACK_OVERFLOW (0xC0000000 | 0x00fd) 302 302 #define NT_STATUS_NO_SUCH_PACKAGE (0xC0000000 | 0x00fe) 303 303 #define NT_STATUS_BAD_FUNCTION_TABLE (0xC0000000 | 0x00ff) 304 + #define NT_STATUS_VARIABLE_NOT_FOUND (0xC0000000 | 0x0100) 304 305 #define NT_STATUS_DIRECTORY_NOT_EMPTY (0xC0000000 | 0x0101) 305 306 #define NT_STATUS_FILE_CORRUPT_ERROR (0xC0000000 | 0x0102) 306 307 #define NT_STATUS_NOT_A_DIRECTORY (0xC0000000 | 0x0103) ··· 411 410 #define NT_STATUS_DISK_RESET_FAILED (0xC0000000 | 0x016b) 412 411 #define NT_STATUS_SHARED_IRQ_BUSY (0xC0000000 | 0x016c) 413 412 #define NT_STATUS_FT_ORPHANING (0xC0000000 | 0x016d) 413 + #define NT_STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT (0xC0000000 | 0x016e) 414 414 #define NT_STATUS_PARTITION_FAILURE (0xC0000000 | 0x0172) 415 415 #define NT_STATUS_INVALID_BLOCK_LENGTH (0xC0000000 | 0x0173) 416 416 #define NT_STATUS_DEVICE_NOT_PARTITIONED (0xC0000000 | 0x0174) ··· 550 548 #define NT_STATUS_TOO_MANY_LINKS (0xC0000000 | 0x0265) 551 549 #define NT_STATUS_QUOTA_LIST_INCONSISTENT (0xC0000000 | 0x0266) 552 550 #define NT_STATUS_FILE_IS_OFFLINE (0xC0000000 | 0x0267) 551 + #define NT_STATUS_VOLUME_DISMOUNTED (0xC0000000 | 0x026e) 553 552 #define NT_STATUS_NOT_A_REPARSE_POINT (0xC0000000 | 0x0275) 553 + #define NT_STATUS_DIRECTORY_IS_A_REPARSE_POINT (0xC0000000 | 0x0281) 554 + #define NT_STATUS_ENCRYPTION_FAILED (0xC0000000 | 0x028a) 555 + #define NT_STATUS_DECRYPTION_FAILED (0xC0000000 | 0x028b) 556 + #define NT_STATUS_RANGE_NOT_FOUND (0xC0000000 | 0x028c) 557 + #define NT_STATUS_NO_RECOVERY_POLICY (0xC0000000 | 0x028d) 558 + #define NT_STATUS_NO_EFS (0xC0000000 | 0x028e) 559 + #define NT_STATUS_WRONG_EFS (0xC0000000 | 0x028f) 560 + #define NT_STATUS_NO_USER_KEYS (0xC0000000 | 0x0290) 561 + #define NT_STATUS_VOLUME_NOT_UPGRADED (0xC0000000 | 0x029c) 554 562 #define NT_STATUS_NETWORK_SESSION_EXPIRED (0xC0000000 | 0x035c) 555 563 #define NT_STATUS_NO_SUCH_JOB (0xC0000000 | 0xEDE) /* scheduler */ 556 564 #define NT_STATUS_NO_PREAUTH_INTEGRITY_HASH_OVERLAP (0xC0000000 | 0x5D0000) 565 + #define NT_STATUS_OS2_INVALID_LEVEL 0x007c0001 557 566 558 567 #endif /* _NTERR_H */
+8 -7
fs/smb/client/ntlmssp.h
··· 142 142 * Size of the session key (crypto key encrypted with the password 143 143 */ 144 144 145 - int decode_ntlmssp_challenge(char *bcc_ptr, int blob_len, struct cifs_ses *ses); 145 + int decode_ntlmssp_challenge(char *bcc_ptr, int blob_len, 146 + struct cifs_ses *ses); 146 147 int build_ntlmssp_negotiate_blob(unsigned char **pbuffer, u16 *buflen, 147 148 struct cifs_ses *ses, 148 149 struct TCP_Server_Info *server, 149 150 const struct nls_table *nls_cp); 150 151 int build_ntlmssp_smb3_negotiate_blob(unsigned char **pbuffer, u16 *buflen, 151 - struct cifs_ses *ses, 152 - struct TCP_Server_Info *server, 153 - const struct nls_table *nls_cp); 152 + struct cifs_ses *ses, 153 + struct TCP_Server_Info *server, 154 + const struct nls_table *nls_cp); 154 155 int build_ntlmssp_auth_blob(unsigned char **pbuffer, u16 *buflen, 155 - struct cifs_ses *ses, 156 - struct TCP_Server_Info *server, 157 - const struct nls_table *nls_cp); 156 + struct cifs_ses *ses, 157 + struct TCP_Server_Info *server, 158 + const struct nls_table *nls_cp);
-1
fs/smb/client/readdir.c
··· 13 13 #include <linux/pagemap.h> 14 14 #include <linux/slab.h> 15 15 #include <linux/stat.h> 16 - #include "cifspdu.h" 17 16 #include "cifsglob.h" 18 17 #include "cifsproto.h" 19 18 #include "cifs_unicode.h"
+8 -6
fs/smb/client/reparse.h
··· 11 11 #include <linux/uidgid.h> 12 12 #include "fs_context.h" 13 13 #include "cifsglob.h" 14 + #include "../common/smbfsctl.h" 14 15 15 16 #define REPARSE_SYM_PATH_MAX 4060 16 17 ··· 131 130 struct cifs_fattr *fattr, 132 131 struct cifs_open_info_data *data); 133 132 int create_reparse_symlink(const unsigned int xid, struct inode *inode, 134 - struct dentry *dentry, struct cifs_tcon *tcon, 135 - const char *full_path, const char *symname); 136 - int mknod_reparse(unsigned int xid, struct inode *inode, 137 - struct dentry *dentry, struct cifs_tcon *tcon, 138 - const char *full_path, umode_t mode, dev_t dev); 139 - struct reparse_data_buffer *smb2_get_reparse_point_buffer(const struct kvec *rsp_iov, u32 *len); 133 + struct dentry *dentry, struct cifs_tcon *tcon, 134 + const char *full_path, const char *symname); 135 + int mknod_reparse(unsigned int xid, struct inode *inode, struct dentry *dentry, 136 + struct cifs_tcon *tcon, const char *full_path, umode_t mode, 137 + dev_t dev); 138 + struct reparse_data_buffer *smb2_get_reparse_point_buffer(const struct kvec *rsp_iov, 139 + u32 *plen); 140 140 141 141 #endif /* _CIFS_REPARSE_H */
-982
fs/smb/client/sess.c
··· 8 8 * 9 9 */ 10 10 11 - #include "cifspdu.h" 12 11 #include "cifsglob.h" 13 12 #include "cifsproto.h" 14 13 #include "cifs_unicode.h" ··· 638 639 return rc; 639 640 } 640 641 641 - #ifdef CONFIG_CIFS_ALLOW_INSECURE_LEGACY 642 - static __u32 cifs_ssetup_hdr(struct cifs_ses *ses, 643 - struct TCP_Server_Info *server, 644 - SESSION_SETUP_ANDX *pSMB) 645 - { 646 - __u32 capabilities = 0; 647 - 648 - /* init fields common to all four types of SessSetup */ 649 - /* Note that offsets for first seven fields in req struct are same */ 650 - /* in CIFS Specs so does not matter which of 3 forms of struct */ 651 - /* that we use in next few lines */ 652 - /* Note that header is initialized to zero in header_assemble */ 653 - pSMB->req.AndXCommand = 0xFF; 654 - pSMB->req.MaxBufferSize = cpu_to_le16(min_t(u32, 655 - CIFSMaxBufSize + MAX_CIFS_HDR_SIZE - 4, 656 - USHRT_MAX)); 657 - pSMB->req.MaxMpxCount = cpu_to_le16(server->maxReq); 658 - pSMB->req.VcNumber = cpu_to_le16(1); 659 - pSMB->req.SessionKey = server->session_key_id; 660 - 661 - /* Now no need to set SMBFLG_CASELESS or obsolete CANONICAL PATH */ 662 - 663 - /* BB verify whether signing required on neg or just auth frame (and NTLM case) */ 664 - 665 - capabilities = CAP_LARGE_FILES | CAP_NT_SMBS | CAP_LEVEL_II_OPLOCKS | 666 - CAP_LARGE_WRITE_X | CAP_LARGE_READ_X; 667 - 668 - if (server->sign) 669 - pSMB->req.hdr.Flags2 |= SMBFLG2_SECURITY_SIGNATURE; 670 - 671 - if (ses->capabilities & CAP_UNICODE) { 672 - pSMB->req.hdr.Flags2 |= SMBFLG2_UNICODE; 673 - capabilities |= CAP_UNICODE; 674 - } 675 - if (ses->capabilities & CAP_STATUS32) { 676 - pSMB->req.hdr.Flags2 |= SMBFLG2_ERR_STATUS; 677 - capabilities |= CAP_STATUS32; 678 - } 679 - if (ses->capabilities & CAP_DFS) { 680 - pSMB->req.hdr.Flags2 |= SMBFLG2_DFS; 681 - capabilities |= CAP_DFS; 682 - } 683 - if (ses->capabilities & CAP_UNIX) 684 - capabilities |= CAP_UNIX; 685 - 686 - return capabilities; 687 - } 688 - 689 - static void 690 - unicode_oslm_strings(char **pbcc_area, const struct nls_table *nls_cp) 691 - { 692 - char *bcc_ptr = *pbcc_area; 693 - int bytes_ret = 0; 694 - 695 - /* Copy OS version */ 696 - bytes_ret = cifs_strtoUTF16((__le16 *)bcc_ptr, "Linux version ", 32, 697 - nls_cp); 698 - bcc_ptr += 2 * bytes_ret; 699 - bytes_ret = cifs_strtoUTF16((__le16 *) bcc_ptr, init_utsname()->release, 700 - 32, nls_cp); 701 - bcc_ptr += 2 * bytes_ret; 702 - bcc_ptr += 2; /* trailing null */ 703 - 704 - bytes_ret = cifs_strtoUTF16((__le16 *) bcc_ptr, CIFS_NETWORK_OPSYS, 705 - 32, nls_cp); 706 - bcc_ptr += 2 * bytes_ret; 707 - bcc_ptr += 2; /* trailing null */ 708 - 709 - *pbcc_area = bcc_ptr; 710 - } 711 - 712 - static void 713 - ascii_oslm_strings(char **pbcc_area, const struct nls_table *nls_cp) 714 - { 715 - char *bcc_ptr = *pbcc_area; 716 - 717 - strcpy(bcc_ptr, "Linux version "); 718 - bcc_ptr += strlen("Linux version "); 719 - strcpy(bcc_ptr, init_utsname()->release); 720 - bcc_ptr += strlen(init_utsname()->release) + 1; 721 - 722 - strcpy(bcc_ptr, CIFS_NETWORK_OPSYS); 723 - bcc_ptr += strlen(CIFS_NETWORK_OPSYS) + 1; 724 - 725 - *pbcc_area = bcc_ptr; 726 - } 727 - 728 - static void unicode_domain_string(char **pbcc_area, struct cifs_ses *ses, 729 - const struct nls_table *nls_cp) 730 - { 731 - char *bcc_ptr = *pbcc_area; 732 - int bytes_ret = 0; 733 - 734 - /* copy domain */ 735 - if (ses->domainName == NULL) { 736 - /* 737 - * Sending null domain better than using a bogus domain name (as 738 - * we did briefly in 2.6.18) since server will use its default 739 - */ 740 - *bcc_ptr = 0; 741 - *(bcc_ptr+1) = 0; 742 - bytes_ret = 0; 743 - } else 744 - bytes_ret = cifs_strtoUTF16((__le16 *) bcc_ptr, ses->domainName, 745 - CIFS_MAX_DOMAINNAME_LEN, nls_cp); 746 - bcc_ptr += 2 * bytes_ret; 747 - bcc_ptr += 2; /* account for null terminator */ 748 - 749 - *pbcc_area = bcc_ptr; 750 - } 751 - 752 - static void ascii_domain_string(char **pbcc_area, struct cifs_ses *ses, 753 - const struct nls_table *nls_cp) 754 - { 755 - char *bcc_ptr = *pbcc_area; 756 - int len; 757 - 758 - /* copy domain */ 759 - if (ses->domainName != NULL) { 760 - len = strscpy(bcc_ptr, ses->domainName, CIFS_MAX_DOMAINNAME_LEN); 761 - if (WARN_ON_ONCE(len < 0)) 762 - len = CIFS_MAX_DOMAINNAME_LEN - 1; 763 - bcc_ptr += len; 764 - } /* else we send a null domain name so server will default to its own domain */ 765 - *bcc_ptr = 0; 766 - bcc_ptr++; 767 - 768 - *pbcc_area = bcc_ptr; 769 - } 770 - 771 - static void unicode_ssetup_strings(char **pbcc_area, struct cifs_ses *ses, 772 - const struct nls_table *nls_cp) 773 - { 774 - char *bcc_ptr = *pbcc_area; 775 - int bytes_ret = 0; 776 - 777 - /* BB FIXME add check that strings less than 335 or will need to send as arrays */ 778 - 779 - /* copy user */ 780 - if (ses->user_name == NULL) { 781 - /* null user mount */ 782 - *bcc_ptr = 0; 783 - *(bcc_ptr+1) = 0; 784 - } else { 785 - bytes_ret = cifs_strtoUTF16((__le16 *) bcc_ptr, ses->user_name, 786 - CIFS_MAX_USERNAME_LEN, nls_cp); 787 - } 788 - bcc_ptr += 2 * bytes_ret; 789 - bcc_ptr += 2; /* account for null termination */ 790 - 791 - unicode_domain_string(&bcc_ptr, ses, nls_cp); 792 - unicode_oslm_strings(&bcc_ptr, nls_cp); 793 - 794 - *pbcc_area = bcc_ptr; 795 - } 796 - 797 - static void ascii_ssetup_strings(char **pbcc_area, struct cifs_ses *ses, 798 - const struct nls_table *nls_cp) 799 - { 800 - char *bcc_ptr = *pbcc_area; 801 - int len; 802 - 803 - /* copy user */ 804 - /* BB what about null user mounts - check that we do this BB */ 805 - /* copy user */ 806 - if (ses->user_name != NULL) { 807 - len = strscpy(bcc_ptr, ses->user_name, CIFS_MAX_USERNAME_LEN); 808 - if (WARN_ON_ONCE(len < 0)) 809 - len = CIFS_MAX_USERNAME_LEN - 1; 810 - bcc_ptr += len; 811 - } 812 - /* else null user mount */ 813 - *bcc_ptr = 0; 814 - bcc_ptr++; /* account for null termination */ 815 - 816 - /* BB check for overflow here */ 817 - 818 - ascii_domain_string(&bcc_ptr, ses, nls_cp); 819 - ascii_oslm_strings(&bcc_ptr, nls_cp); 820 - 821 - *pbcc_area = bcc_ptr; 822 - } 823 - 824 - static void 825 - decode_unicode_ssetup(char **pbcc_area, int bleft, struct cifs_ses *ses, 826 - const struct nls_table *nls_cp) 827 - { 828 - int len; 829 - char *data = *pbcc_area; 830 - 831 - cifs_dbg(FYI, "bleft %d\n", bleft); 832 - 833 - kfree(ses->serverOS); 834 - ses->serverOS = cifs_strndup_from_utf16(data, bleft, true, nls_cp); 835 - cifs_dbg(FYI, "serverOS=%s\n", ses->serverOS); 836 - len = (UniStrnlen((wchar_t *) data, bleft / 2) * 2) + 2; 837 - data += len; 838 - bleft -= len; 839 - if (bleft <= 0) 840 - return; 841 - 842 - kfree(ses->serverNOS); 843 - ses->serverNOS = cifs_strndup_from_utf16(data, bleft, true, nls_cp); 844 - cifs_dbg(FYI, "serverNOS=%s\n", ses->serverNOS); 845 - len = (UniStrnlen((wchar_t *) data, bleft / 2) * 2) + 2; 846 - data += len; 847 - bleft -= len; 848 - if (bleft <= 0) 849 - return; 850 - 851 - kfree(ses->serverDomain); 852 - ses->serverDomain = cifs_strndup_from_utf16(data, bleft, true, nls_cp); 853 - cifs_dbg(FYI, "serverDomain=%s\n", ses->serverDomain); 854 - 855 - return; 856 - } 857 - 858 - static void decode_ascii_ssetup(char **pbcc_area, __u16 bleft, 859 - struct cifs_ses *ses, 860 - const struct nls_table *nls_cp) 861 - { 862 - int len; 863 - char *bcc_ptr = *pbcc_area; 864 - 865 - cifs_dbg(FYI, "decode sessetup ascii. bleft %d\n", bleft); 866 - 867 - len = strnlen(bcc_ptr, bleft); 868 - if (len >= bleft) 869 - return; 870 - 871 - kfree(ses->serverOS); 872 - 873 - ses->serverOS = kmalloc(len + 1, GFP_KERNEL); 874 - if (ses->serverOS) { 875 - memcpy(ses->serverOS, bcc_ptr, len); 876 - ses->serverOS[len] = 0; 877 - if (strncmp(ses->serverOS, "OS/2", 4) == 0) 878 - cifs_dbg(FYI, "OS/2 server\n"); 879 - } 880 - 881 - bcc_ptr += len + 1; 882 - bleft -= len + 1; 883 - 884 - len = strnlen(bcc_ptr, bleft); 885 - if (len >= bleft) 886 - return; 887 - 888 - kfree(ses->serverNOS); 889 - 890 - ses->serverNOS = kmalloc(len + 1, GFP_KERNEL); 891 - if (ses->serverNOS) { 892 - memcpy(ses->serverNOS, bcc_ptr, len); 893 - ses->serverNOS[len] = 0; 894 - } 895 - 896 - bcc_ptr += len + 1; 897 - bleft -= len + 1; 898 - 899 - len = strnlen(bcc_ptr, bleft); 900 - if (len > bleft) 901 - return; 902 - 903 - /* 904 - * No domain field in LANMAN case. Domain is 905 - * returned by old servers in the SMB negprot response 906 - * 907 - * BB For newer servers which do not support Unicode, 908 - * but thus do return domain here, we could add parsing 909 - * for it later, but it is not very important 910 - */ 911 - cifs_dbg(FYI, "ascii: bytes left %d\n", bleft); 912 - } 913 - #endif /* CONFIG_CIFS_ALLOW_INSECURE_LEGACY */ 914 642 915 643 int decode_ntlmssp_challenge(char *bcc_ptr, int blob_len, 916 644 struct cifs_ses *ses) ··· 1048 1322 return Unspecified; 1049 1323 } 1050 1324 } 1051 - 1052 - struct sess_data { 1053 - unsigned int xid; 1054 - struct cifs_ses *ses; 1055 - struct TCP_Server_Info *server; 1056 - struct nls_table *nls_cp; 1057 - void (*func)(struct sess_data *); 1058 - int result; 1059 - unsigned int in_len; 1060 - 1061 - /* we will send the SMB in three pieces: 1062 - * a fixed length beginning part, an optional 1063 - * SPNEGO blob (which can be zero length), and a 1064 - * last part which will include the strings 1065 - * and rest of bcc area. This allows us to avoid 1066 - * a large buffer 17K allocation 1067 - */ 1068 - int buf0_type; 1069 - struct kvec iov[3]; 1070 - }; 1071 - 1072 - #ifdef CONFIG_CIFS_ALLOW_INSECURE_LEGACY 1073 - static int 1074 - sess_alloc_buffer(struct sess_data *sess_data, int wct) 1075 - { 1076 - int rc; 1077 - struct cifs_ses *ses = sess_data->ses; 1078 - struct smb_hdr *smb_buf; 1079 - 1080 - rc = small_smb_init_no_tc(SMB_COM_SESSION_SETUP_ANDX, wct, ses, 1081 - (void **)&smb_buf); 1082 - 1083 - if (rc < 0) 1084 - return rc; 1085 - 1086 - sess_data->in_len = rc; 1087 - sess_data->iov[0].iov_base = (char *)smb_buf; 1088 - sess_data->iov[0].iov_len = sess_data->in_len; 1089 - /* 1090 - * This variable will be used to clear the buffer 1091 - * allocated above in case of any error in the calling function. 1092 - */ 1093 - sess_data->buf0_type = CIFS_SMALL_BUFFER; 1094 - 1095 - /* 2000 big enough to fit max user, domain, NOS name etc. */ 1096 - sess_data->iov[2].iov_base = kmalloc(2000, GFP_KERNEL); 1097 - if (!sess_data->iov[2].iov_base) { 1098 - rc = -ENOMEM; 1099 - goto out_free_smb_buf; 1100 - } 1101 - 1102 - return 0; 1103 - 1104 - out_free_smb_buf: 1105 - cifs_small_buf_release(smb_buf); 1106 - sess_data->iov[0].iov_base = NULL; 1107 - sess_data->iov[0].iov_len = 0; 1108 - sess_data->buf0_type = CIFS_NO_BUFFER; 1109 - return rc; 1110 - } 1111 - 1112 - static void 1113 - sess_free_buffer(struct sess_data *sess_data) 1114 - { 1115 - struct kvec *iov = sess_data->iov; 1116 - 1117 - /* 1118 - * Zero the session data before freeing, as it might contain sensitive info (keys, etc). 1119 - * Note that iov[1] is already freed by caller. 1120 - */ 1121 - if (sess_data->buf0_type != CIFS_NO_BUFFER && iov[0].iov_base) 1122 - memzero_explicit(iov[0].iov_base, iov[0].iov_len); 1123 - 1124 - free_rsp_buf(sess_data->buf0_type, iov[0].iov_base); 1125 - sess_data->buf0_type = CIFS_NO_BUFFER; 1126 - kfree_sensitive(iov[2].iov_base); 1127 - } 1128 - 1129 - static int 1130 - sess_establish_session(struct sess_data *sess_data) 1131 - { 1132 - struct cifs_ses *ses = sess_data->ses; 1133 - struct TCP_Server_Info *server = sess_data->server; 1134 - 1135 - cifs_server_lock(server); 1136 - if (!server->session_estab) { 1137 - if (server->sign) { 1138 - server->session_key.response = 1139 - kmemdup(ses->auth_key.response, 1140 - ses->auth_key.len, GFP_KERNEL); 1141 - if (!server->session_key.response) { 1142 - cifs_server_unlock(server); 1143 - return -ENOMEM; 1144 - } 1145 - server->session_key.len = 1146 - ses->auth_key.len; 1147 - } 1148 - server->sequence_number = 0x2; 1149 - server->session_estab = true; 1150 - } 1151 - cifs_server_unlock(server); 1152 - 1153 - cifs_dbg(FYI, "CIFS session established successfully\n"); 1154 - return 0; 1155 - } 1156 - 1157 - static int 1158 - sess_sendreceive(struct sess_data *sess_data) 1159 - { 1160 - int rc; 1161 - struct smb_hdr *smb_buf = (struct smb_hdr *) sess_data->iov[0].iov_base; 1162 - __u16 count; 1163 - struct kvec rsp_iov = { NULL, 0 }; 1164 - 1165 - count = sess_data->iov[1].iov_len + sess_data->iov[2].iov_len; 1166 - sess_data->in_len += count; 1167 - put_bcc(count, smb_buf); 1168 - 1169 - rc = SendReceive2(sess_data->xid, sess_data->ses, 1170 - sess_data->iov, 3 /* num_iovecs */, 1171 - &sess_data->buf0_type, 1172 - CIFS_LOG_ERROR, &rsp_iov); 1173 - cifs_small_buf_release(sess_data->iov[0].iov_base); 1174 - memcpy(&sess_data->iov[0], &rsp_iov, sizeof(struct kvec)); 1175 - 1176 - return rc; 1177 - } 1178 - 1179 - static void 1180 - sess_auth_ntlmv2(struct sess_data *sess_data) 1181 - { 1182 - int rc = 0; 1183 - struct smb_hdr *smb_buf; 1184 - SESSION_SETUP_ANDX *pSMB; 1185 - char *bcc_ptr; 1186 - struct cifs_ses *ses = sess_data->ses; 1187 - struct TCP_Server_Info *server = sess_data->server; 1188 - __u32 capabilities; 1189 - __u16 bytes_remaining; 1190 - 1191 - /* old style NTLM sessionsetup */ 1192 - /* wct = 13 */ 1193 - rc = sess_alloc_buffer(sess_data, 13); 1194 - if (rc) 1195 - goto out; 1196 - 1197 - pSMB = (SESSION_SETUP_ANDX *)sess_data->iov[0].iov_base; 1198 - bcc_ptr = sess_data->iov[2].iov_base; 1199 - capabilities = cifs_ssetup_hdr(ses, server, pSMB); 1200 - 1201 - pSMB->req_no_secext.Capabilities = cpu_to_le32(capabilities); 1202 - 1203 - /* LM2 password would be here if we supported it */ 1204 - pSMB->req_no_secext.CaseInsensitivePasswordLength = 0; 1205 - 1206 - if (ses->user_name != NULL) { 1207 - /* calculate nlmv2 response and session key */ 1208 - rc = setup_ntlmv2_rsp(ses, sess_data->nls_cp); 1209 - if (rc) { 1210 - cifs_dbg(VFS, "Error %d during NTLMv2 authentication\n", rc); 1211 - goto out; 1212 - } 1213 - 1214 - memcpy(bcc_ptr, ses->auth_key.response + CIFS_SESS_KEY_SIZE, 1215 - ses->auth_key.len - CIFS_SESS_KEY_SIZE); 1216 - bcc_ptr += ses->auth_key.len - CIFS_SESS_KEY_SIZE; 1217 - 1218 - /* set case sensitive password length after tilen may get 1219 - * assigned, tilen is 0 otherwise. 1220 - */ 1221 - pSMB->req_no_secext.CaseSensitivePasswordLength = 1222 - cpu_to_le16(ses->auth_key.len - CIFS_SESS_KEY_SIZE); 1223 - } else { 1224 - pSMB->req_no_secext.CaseSensitivePasswordLength = 0; 1225 - } 1226 - 1227 - if (ses->capabilities & CAP_UNICODE) { 1228 - if (!IS_ALIGNED(sess_data->iov[0].iov_len, 2)) { 1229 - *bcc_ptr = 0; 1230 - bcc_ptr++; 1231 - } 1232 - unicode_ssetup_strings(&bcc_ptr, ses, sess_data->nls_cp); 1233 - } else { 1234 - ascii_ssetup_strings(&bcc_ptr, ses, sess_data->nls_cp); 1235 - } 1236 - 1237 - 1238 - sess_data->iov[2].iov_len = (long) bcc_ptr - 1239 - (long) sess_data->iov[2].iov_base; 1240 - 1241 - rc = sess_sendreceive(sess_data); 1242 - if (rc) 1243 - goto out; 1244 - 1245 - pSMB = (SESSION_SETUP_ANDX *)sess_data->iov[0].iov_base; 1246 - smb_buf = (struct smb_hdr *)sess_data->iov[0].iov_base; 1247 - 1248 - if (smb_buf->WordCount != 3) { 1249 - rc = smb_EIO1(smb_eio_trace_sess_nl2_wcc, smb_buf->WordCount); 1250 - cifs_dbg(VFS, "bad word count %d\n", smb_buf->WordCount); 1251 - goto out; 1252 - } 1253 - 1254 - if (le16_to_cpu(pSMB->resp.Action) & GUEST_LOGIN) 1255 - cifs_dbg(FYI, "Guest login\n"); /* BB mark SesInfo struct? */ 1256 - 1257 - ses->Suid = smb_buf->Uid; /* UID left in wire format (le) */ 1258 - cifs_dbg(FYI, "UID = %llu\n", ses->Suid); 1259 - 1260 - bytes_remaining = get_bcc(smb_buf); 1261 - bcc_ptr = pByteArea(smb_buf); 1262 - 1263 - /* BB check if Unicode and decode strings */ 1264 - if (bytes_remaining == 0) { 1265 - /* no string area to decode, do nothing */ 1266 - } else if (smb_buf->Flags2 & SMBFLG2_UNICODE) { 1267 - /* unicode string area must be word-aligned */ 1268 - if (!IS_ALIGNED((unsigned long)bcc_ptr - (unsigned long)smb_buf, 2)) { 1269 - ++bcc_ptr; 1270 - --bytes_remaining; 1271 - } 1272 - decode_unicode_ssetup(&bcc_ptr, bytes_remaining, ses, 1273 - sess_data->nls_cp); 1274 - } else { 1275 - decode_ascii_ssetup(&bcc_ptr, bytes_remaining, ses, 1276 - sess_data->nls_cp); 1277 - } 1278 - 1279 - rc = sess_establish_session(sess_data); 1280 - out: 1281 - sess_data->result = rc; 1282 - sess_data->func = NULL; 1283 - sess_free_buffer(sess_data); 1284 - kfree_sensitive(ses->auth_key.response); 1285 - ses->auth_key.response = NULL; 1286 - } 1287 - 1288 - #ifdef CONFIG_CIFS_UPCALL 1289 - static void 1290 - sess_auth_kerberos(struct sess_data *sess_data) 1291 - { 1292 - int rc = 0; 1293 - struct smb_hdr *smb_buf; 1294 - SESSION_SETUP_ANDX *pSMB; 1295 - char *bcc_ptr; 1296 - struct cifs_ses *ses = sess_data->ses; 1297 - struct TCP_Server_Info *server = sess_data->server; 1298 - __u32 capabilities; 1299 - __u16 bytes_remaining; 1300 - struct key *spnego_key = NULL; 1301 - struct cifs_spnego_msg *msg; 1302 - u16 blob_len; 1303 - 1304 - /* extended security */ 1305 - /* wct = 12 */ 1306 - rc = sess_alloc_buffer(sess_data, 12); 1307 - if (rc) 1308 - goto out; 1309 - 1310 - pSMB = (SESSION_SETUP_ANDX *)sess_data->iov[0].iov_base; 1311 - bcc_ptr = sess_data->iov[2].iov_base; 1312 - capabilities = cifs_ssetup_hdr(ses, server, pSMB); 1313 - 1314 - spnego_key = cifs_get_spnego_key(ses, server); 1315 - if (IS_ERR(spnego_key)) { 1316 - rc = PTR_ERR(spnego_key); 1317 - spnego_key = NULL; 1318 - goto out; 1319 - } 1320 - 1321 - msg = spnego_key->payload.data[0]; 1322 - /* 1323 - * check version field to make sure that cifs.upcall is 1324 - * sending us a response in an expected form 1325 - */ 1326 - if (msg->version != CIFS_SPNEGO_UPCALL_VERSION) { 1327 - cifs_dbg(VFS, "incorrect version of cifs.upcall (expected %d but got %d)\n", 1328 - CIFS_SPNEGO_UPCALL_VERSION, msg->version); 1329 - rc = -EKEYREJECTED; 1330 - goto out_put_spnego_key; 1331 - } 1332 - 1333 - kfree_sensitive(ses->auth_key.response); 1334 - ses->auth_key.response = kmemdup(msg->data, msg->sesskey_len, 1335 - GFP_KERNEL); 1336 - if (!ses->auth_key.response) { 1337 - cifs_dbg(VFS, "Kerberos can't allocate (%u bytes) memory\n", 1338 - msg->sesskey_len); 1339 - rc = -ENOMEM; 1340 - goto out_put_spnego_key; 1341 - } 1342 - ses->auth_key.len = msg->sesskey_len; 1343 - 1344 - pSMB->req.hdr.Flags2 |= SMBFLG2_EXT_SEC; 1345 - capabilities |= CAP_EXTENDED_SECURITY; 1346 - pSMB->req.Capabilities = cpu_to_le32(capabilities); 1347 - sess_data->iov[1].iov_base = msg->data + msg->sesskey_len; 1348 - sess_data->iov[1].iov_len = msg->secblob_len; 1349 - pSMB->req.SecurityBlobLength = cpu_to_le16(sess_data->iov[1].iov_len); 1350 - 1351 - if (pSMB->req.hdr.Flags2 & SMBFLG2_UNICODE) { 1352 - /* unicode strings must be word aligned */ 1353 - if (!IS_ALIGNED(sess_data->iov[0].iov_len + sess_data->iov[1].iov_len, 2)) { 1354 - *bcc_ptr = 0; 1355 - bcc_ptr++; 1356 - } 1357 - unicode_oslm_strings(&bcc_ptr, sess_data->nls_cp); 1358 - unicode_domain_string(&bcc_ptr, ses, sess_data->nls_cp); 1359 - } else { 1360 - ascii_oslm_strings(&bcc_ptr, sess_data->nls_cp); 1361 - ascii_domain_string(&bcc_ptr, ses, sess_data->nls_cp); 1362 - } 1363 - 1364 - sess_data->iov[2].iov_len = (long) bcc_ptr - 1365 - (long) sess_data->iov[2].iov_base; 1366 - 1367 - rc = sess_sendreceive(sess_data); 1368 - if (rc) 1369 - goto out_put_spnego_key; 1370 - 1371 - pSMB = (SESSION_SETUP_ANDX *)sess_data->iov[0].iov_base; 1372 - smb_buf = (struct smb_hdr *)sess_data->iov[0].iov_base; 1373 - 1374 - if (smb_buf->WordCount != 4) { 1375 - rc = smb_EIO1(smb_eio_trace_sess_krb_wcc, smb_buf->WordCount); 1376 - cifs_dbg(VFS, "bad word count %d\n", smb_buf->WordCount); 1377 - goto out_put_spnego_key; 1378 - } 1379 - 1380 - if (le16_to_cpu(pSMB->resp.Action) & GUEST_LOGIN) 1381 - cifs_dbg(FYI, "Guest login\n"); /* BB mark SesInfo struct? */ 1382 - 1383 - ses->Suid = smb_buf->Uid; /* UID left in wire format (le) */ 1384 - cifs_dbg(FYI, "UID = %llu\n", ses->Suid); 1385 - 1386 - bytes_remaining = get_bcc(smb_buf); 1387 - bcc_ptr = pByteArea(smb_buf); 1388 - 1389 - blob_len = le16_to_cpu(pSMB->resp.SecurityBlobLength); 1390 - if (blob_len > bytes_remaining) { 1391 - cifs_dbg(VFS, "bad security blob length %d\n", 1392 - blob_len); 1393 - rc = -EINVAL; 1394 - goto out_put_spnego_key; 1395 - } 1396 - bcc_ptr += blob_len; 1397 - bytes_remaining -= blob_len; 1398 - 1399 - /* BB check if Unicode and decode strings */ 1400 - if (bytes_remaining == 0) { 1401 - /* no string area to decode, do nothing */ 1402 - } else if (smb_buf->Flags2 & SMBFLG2_UNICODE) { 1403 - /* unicode string area must be word-aligned */ 1404 - if (!IS_ALIGNED((unsigned long)bcc_ptr - (unsigned long)smb_buf, 2)) { 1405 - ++bcc_ptr; 1406 - --bytes_remaining; 1407 - } 1408 - decode_unicode_ssetup(&bcc_ptr, bytes_remaining, ses, 1409 - sess_data->nls_cp); 1410 - } else { 1411 - decode_ascii_ssetup(&bcc_ptr, bytes_remaining, ses, 1412 - sess_data->nls_cp); 1413 - } 1414 - 1415 - rc = sess_establish_session(sess_data); 1416 - out_put_spnego_key: 1417 - key_invalidate(spnego_key); 1418 - key_put(spnego_key); 1419 - out: 1420 - sess_data->result = rc; 1421 - sess_data->func = NULL; 1422 - sess_free_buffer(sess_data); 1423 - kfree_sensitive(ses->auth_key.response); 1424 - ses->auth_key.response = NULL; 1425 - } 1426 - 1427 - #endif /* ! CONFIG_CIFS_UPCALL */ 1428 - 1429 - /* 1430 - * The required kvec buffers have to be allocated before calling this 1431 - * function. 1432 - */ 1433 - static int 1434 - _sess_auth_rawntlmssp_assemble_req(struct sess_data *sess_data) 1435 - { 1436 - SESSION_SETUP_ANDX *pSMB; 1437 - struct cifs_ses *ses = sess_data->ses; 1438 - struct TCP_Server_Info *server = sess_data->server; 1439 - __u32 capabilities; 1440 - char *bcc_ptr; 1441 - 1442 - pSMB = (SESSION_SETUP_ANDX *)sess_data->iov[0].iov_base; 1443 - 1444 - capabilities = cifs_ssetup_hdr(ses, server, pSMB); 1445 - pSMB->req.hdr.Flags2 |= SMBFLG2_EXT_SEC; 1446 - capabilities |= CAP_EXTENDED_SECURITY; 1447 - pSMB->req.Capabilities |= cpu_to_le32(capabilities); 1448 - 1449 - bcc_ptr = sess_data->iov[2].iov_base; 1450 - 1451 - if (pSMB->req.hdr.Flags2 & SMBFLG2_UNICODE) { 1452 - /* unicode strings must be word aligned */ 1453 - if (!IS_ALIGNED(sess_data->iov[0].iov_len + sess_data->iov[1].iov_len, 2)) { 1454 - *bcc_ptr = 0; 1455 - bcc_ptr++; 1456 - } 1457 - unicode_oslm_strings(&bcc_ptr, sess_data->nls_cp); 1458 - } else { 1459 - ascii_oslm_strings(&bcc_ptr, sess_data->nls_cp); 1460 - } 1461 - 1462 - sess_data->iov[2].iov_len = (long) bcc_ptr - 1463 - (long) sess_data->iov[2].iov_base; 1464 - 1465 - return 0; 1466 - } 1467 - 1468 - static void 1469 - sess_auth_rawntlmssp_authenticate(struct sess_data *sess_data); 1470 - 1471 - static void 1472 - sess_auth_rawntlmssp_negotiate(struct sess_data *sess_data) 1473 - { 1474 - int rc; 1475 - struct smb_hdr *smb_buf; 1476 - SESSION_SETUP_ANDX *pSMB; 1477 - struct cifs_ses *ses = sess_data->ses; 1478 - struct TCP_Server_Info *server = sess_data->server; 1479 - __u16 bytes_remaining; 1480 - char *bcc_ptr; 1481 - unsigned char *ntlmsspblob = NULL; 1482 - u16 blob_len; 1483 - 1484 - cifs_dbg(FYI, "rawntlmssp session setup negotiate phase\n"); 1485 - 1486 - /* 1487 - * if memory allocation is successful, caller of this function 1488 - * frees it. 1489 - */ 1490 - ses->ntlmssp = kmalloc(sizeof(struct ntlmssp_auth), GFP_KERNEL); 1491 - if (!ses->ntlmssp) { 1492 - rc = -ENOMEM; 1493 - goto out; 1494 - } 1495 - ses->ntlmssp->sesskey_per_smbsess = false; 1496 - 1497 - /* wct = 12 */ 1498 - rc = sess_alloc_buffer(sess_data, 12); 1499 - if (rc) 1500 - goto out; 1501 - 1502 - pSMB = (SESSION_SETUP_ANDX *)sess_data->iov[0].iov_base; 1503 - 1504 - /* Build security blob before we assemble the request */ 1505 - rc = build_ntlmssp_negotiate_blob(&ntlmsspblob, 1506 - &blob_len, ses, server, 1507 - sess_data->nls_cp); 1508 - if (rc) 1509 - goto out_free_ntlmsspblob; 1510 - 1511 - sess_data->iov[1].iov_len = blob_len; 1512 - sess_data->iov[1].iov_base = ntlmsspblob; 1513 - pSMB->req.SecurityBlobLength = cpu_to_le16(blob_len); 1514 - 1515 - rc = _sess_auth_rawntlmssp_assemble_req(sess_data); 1516 - if (rc) 1517 - goto out_free_ntlmsspblob; 1518 - 1519 - rc = sess_sendreceive(sess_data); 1520 - 1521 - pSMB = (SESSION_SETUP_ANDX *)sess_data->iov[0].iov_base; 1522 - smb_buf = (struct smb_hdr *)sess_data->iov[0].iov_base; 1523 - 1524 - /* If true, rc here is expected and not an error */ 1525 - if (sess_data->buf0_type != CIFS_NO_BUFFER && 1526 - smb_buf->Status.CifsError == 1527 - cpu_to_le32(NT_STATUS_MORE_PROCESSING_REQUIRED)) 1528 - rc = 0; 1529 - 1530 - if (rc) 1531 - goto out_free_ntlmsspblob; 1532 - 1533 - cifs_dbg(FYI, "rawntlmssp session setup challenge phase\n"); 1534 - 1535 - if (smb_buf->WordCount != 4) { 1536 - rc = smb_EIO1(smb_eio_trace_sess_rawnl_neg_wcc, smb_buf->WordCount); 1537 - cifs_dbg(VFS, "bad word count %d\n", smb_buf->WordCount); 1538 - goto out_free_ntlmsspblob; 1539 - } 1540 - 1541 - ses->Suid = smb_buf->Uid; /* UID left in wire format (le) */ 1542 - cifs_dbg(FYI, "UID = %llu\n", ses->Suid); 1543 - 1544 - bytes_remaining = get_bcc(smb_buf); 1545 - bcc_ptr = pByteArea(smb_buf); 1546 - 1547 - blob_len = le16_to_cpu(pSMB->resp.SecurityBlobLength); 1548 - if (blob_len > bytes_remaining) { 1549 - cifs_dbg(VFS, "bad security blob length %d\n", 1550 - blob_len); 1551 - rc = -EINVAL; 1552 - goto out_free_ntlmsspblob; 1553 - } 1554 - 1555 - rc = decode_ntlmssp_challenge(bcc_ptr, blob_len, ses); 1556 - 1557 - out_free_ntlmsspblob: 1558 - kfree_sensitive(ntlmsspblob); 1559 - out: 1560 - sess_free_buffer(sess_data); 1561 - 1562 - if (!rc) { 1563 - sess_data->func = sess_auth_rawntlmssp_authenticate; 1564 - return; 1565 - } 1566 - 1567 - /* Else error. Cleanup */ 1568 - kfree_sensitive(ses->auth_key.response); 1569 - ses->auth_key.response = NULL; 1570 - kfree_sensitive(ses->ntlmssp); 1571 - ses->ntlmssp = NULL; 1572 - 1573 - sess_data->func = NULL; 1574 - sess_data->result = rc; 1575 - } 1576 - 1577 - static void 1578 - sess_auth_rawntlmssp_authenticate(struct sess_data *sess_data) 1579 - { 1580 - int rc; 1581 - struct smb_hdr *smb_buf; 1582 - SESSION_SETUP_ANDX *pSMB; 1583 - struct cifs_ses *ses = sess_data->ses; 1584 - struct TCP_Server_Info *server = sess_data->server; 1585 - __u16 bytes_remaining; 1586 - char *bcc_ptr; 1587 - unsigned char *ntlmsspblob = NULL; 1588 - u16 blob_len; 1589 - 1590 - cifs_dbg(FYI, "rawntlmssp session setup authenticate phase\n"); 1591 - 1592 - /* wct = 12 */ 1593 - rc = sess_alloc_buffer(sess_data, 12); 1594 - if (rc) 1595 - goto out; 1596 - 1597 - /* Build security blob before we assemble the request */ 1598 - pSMB = (SESSION_SETUP_ANDX *)sess_data->iov[0].iov_base; 1599 - smb_buf = (struct smb_hdr *)pSMB; 1600 - rc = build_ntlmssp_auth_blob(&ntlmsspblob, 1601 - &blob_len, ses, server, 1602 - sess_data->nls_cp); 1603 - if (rc) 1604 - goto out_free_ntlmsspblob; 1605 - sess_data->iov[1].iov_len = blob_len; 1606 - sess_data->iov[1].iov_base = ntlmsspblob; 1607 - pSMB->req.SecurityBlobLength = cpu_to_le16(blob_len); 1608 - /* 1609 - * Make sure that we tell the server that we are using 1610 - * the uid that it just gave us back on the response 1611 - * (challenge) 1612 - */ 1613 - smb_buf->Uid = ses->Suid; 1614 - 1615 - rc = _sess_auth_rawntlmssp_assemble_req(sess_data); 1616 - if (rc) 1617 - goto out_free_ntlmsspblob; 1618 - 1619 - rc = sess_sendreceive(sess_data); 1620 - if (rc) 1621 - goto out_free_ntlmsspblob; 1622 - 1623 - pSMB = (SESSION_SETUP_ANDX *)sess_data->iov[0].iov_base; 1624 - smb_buf = (struct smb_hdr *)sess_data->iov[0].iov_base; 1625 - if (smb_buf->WordCount != 4) { 1626 - rc = smb_EIO1(smb_eio_trace_sess_rawnl_auth_wcc, smb_buf->WordCount); 1627 - cifs_dbg(VFS, "bad word count %d\n", smb_buf->WordCount); 1628 - goto out_free_ntlmsspblob; 1629 - } 1630 - 1631 - if (le16_to_cpu(pSMB->resp.Action) & GUEST_LOGIN) 1632 - cifs_dbg(FYI, "Guest login\n"); /* BB mark SesInfo struct? */ 1633 - 1634 - if (ses->Suid != smb_buf->Uid) { 1635 - ses->Suid = smb_buf->Uid; 1636 - cifs_dbg(FYI, "UID changed! new UID = %llu\n", ses->Suid); 1637 - } 1638 - 1639 - bytes_remaining = get_bcc(smb_buf); 1640 - bcc_ptr = pByteArea(smb_buf); 1641 - blob_len = le16_to_cpu(pSMB->resp.SecurityBlobLength); 1642 - if (blob_len > bytes_remaining) { 1643 - cifs_dbg(VFS, "bad security blob length %d\n", 1644 - blob_len); 1645 - rc = -EINVAL; 1646 - goto out_free_ntlmsspblob; 1647 - } 1648 - bcc_ptr += blob_len; 1649 - bytes_remaining -= blob_len; 1650 - 1651 - 1652 - /* BB check if Unicode and decode strings */ 1653 - if (bytes_remaining == 0) { 1654 - /* no string area to decode, do nothing */ 1655 - } else if (smb_buf->Flags2 & SMBFLG2_UNICODE) { 1656 - /* unicode string area must be word-aligned */ 1657 - if (!IS_ALIGNED((unsigned long)bcc_ptr - (unsigned long)smb_buf, 2)) { 1658 - ++bcc_ptr; 1659 - --bytes_remaining; 1660 - } 1661 - decode_unicode_ssetup(&bcc_ptr, bytes_remaining, ses, 1662 - sess_data->nls_cp); 1663 - } else { 1664 - decode_ascii_ssetup(&bcc_ptr, bytes_remaining, ses, 1665 - sess_data->nls_cp); 1666 - } 1667 - 1668 - out_free_ntlmsspblob: 1669 - kfree_sensitive(ntlmsspblob); 1670 - out: 1671 - sess_free_buffer(sess_data); 1672 - 1673 - if (!rc) 1674 - rc = sess_establish_session(sess_data); 1675 - 1676 - /* Cleanup */ 1677 - kfree_sensitive(ses->auth_key.response); 1678 - ses->auth_key.response = NULL; 1679 - kfree_sensitive(ses->ntlmssp); 1680 - ses->ntlmssp = NULL; 1681 - 1682 - sess_data->func = NULL; 1683 - sess_data->result = rc; 1684 - } 1685 - 1686 - static int select_sec(struct sess_data *sess_data) 1687 - { 1688 - int type; 1689 - struct cifs_ses *ses = sess_data->ses; 1690 - struct TCP_Server_Info *server = sess_data->server; 1691 - 1692 - type = cifs_select_sectype(server, ses->sectype); 1693 - cifs_dbg(FYI, "sess setup type %d\n", type); 1694 - if (type == Unspecified) { 1695 - cifs_dbg(VFS, "Unable to select appropriate authentication method!\n"); 1696 - return -EINVAL; 1697 - } 1698 - 1699 - switch (type) { 1700 - case NTLMv2: 1701 - sess_data->func = sess_auth_ntlmv2; 1702 - break; 1703 - case Kerberos: 1704 - #ifdef CONFIG_CIFS_UPCALL 1705 - sess_data->func = sess_auth_kerberos; 1706 - break; 1707 - #else 1708 - cifs_dbg(VFS, "Kerberos negotiated but upcall support disabled!\n"); 1709 - return -ENOSYS; 1710 - #endif /* CONFIG_CIFS_UPCALL */ 1711 - case RawNTLMSSP: 1712 - sess_data->func = sess_auth_rawntlmssp_negotiate; 1713 - break; 1714 - default: 1715 - cifs_dbg(VFS, "secType %d not supported!\n", type); 1716 - return -ENOSYS; 1717 - } 1718 - 1719 - return 0; 1720 - } 1721 - 1722 - int CIFS_SessSetup(const unsigned int xid, struct cifs_ses *ses, 1723 - struct TCP_Server_Info *server, 1724 - const struct nls_table *nls_cp) 1725 - { 1726 - int rc = 0; 1727 - struct sess_data *sess_data; 1728 - 1729 - if (ses == NULL) { 1730 - WARN(1, "%s: ses == NULL!", __func__); 1731 - return -EINVAL; 1732 - } 1733 - 1734 - sess_data = kzalloc(sizeof(struct sess_data), GFP_KERNEL); 1735 - if (!sess_data) 1736 - return -ENOMEM; 1737 - 1738 - sess_data->xid = xid; 1739 - sess_data->ses = ses; 1740 - sess_data->server = server; 1741 - sess_data->buf0_type = CIFS_NO_BUFFER; 1742 - sess_data->nls_cp = (struct nls_table *) nls_cp; 1743 - 1744 - rc = select_sec(sess_data); 1745 - if (rc) 1746 - goto out; 1747 - 1748 - while (sess_data->func) 1749 - sess_data->func(sess_data); 1750 - 1751 - /* Store result before we free sess_data */ 1752 - rc = sess_data->result; 1753 - 1754 - out: 1755 - kfree_sensitive(sess_data); 1756 - return rc; 1757 - } 1758 - #endif /* CONFIG_CIFS_ALLOW_INSECURE_LEGACY */
+25
fs/smb/client/smb1debug.c
··· 1 + // SPDX-License-Identifier: GPL-2.0-or-later 2 + /* 3 + * 4 + * Copyright (C) International Business Machines Corp., 2000,2005 5 + * 6 + * Modified by Steve French (sfrench@us.ibm.com) 7 + */ 8 + #include "cifsproto.h" 9 + #include "smb1proto.h" 10 + #include "cifs_debug.h" 11 + 12 + void cifs_dump_detail(void *buf, size_t buf_len, struct TCP_Server_Info *server) 13 + { 14 + #ifdef CONFIG_CIFS_DEBUG2 15 + struct smb_hdr *smb = buf; 16 + 17 + cifs_dbg(VFS, "Cmd: %d Err: 0x%x Flags: 0x%x Flgs2: 0x%x Mid: %d Pid: %d Wct: %d\n", 18 + smb->Command, smb->Status.CifsError, smb->Flags, 19 + smb->Flags2, smb->Mid, smb->Pid, smb->WordCount); 20 + if (!server->ops->check_message(buf, buf_len, server->total_read, server)) { 21 + cifs_dbg(VFS, "smb buf %p len %u\n", smb, 22 + server->ops->calc_smb_size(smb)); 23 + } 24 + #endif /* CONFIG_CIFS_DEBUG2 */ 25 + }
+139
fs/smb/client/smb1encrypt.c
··· 1 + // SPDX-License-Identifier: LGPL-2.1 2 + /* 3 + * 4 + * Encryption and hashing operations relating to NTLM, NTLMv2. See MS-NLMP 5 + * for more detailed information 6 + * 7 + * Copyright (C) International Business Machines Corp., 2005,2013 8 + * Author(s): Steve French (sfrench@us.ibm.com) 9 + * 10 + */ 11 + 12 + #include <linux/fips.h> 13 + #include <crypto/md5.h> 14 + #include "cifsproto.h" 15 + #include "smb1proto.h" 16 + #include "cifs_debug.h" 17 + 18 + /* 19 + * Calculate and return the CIFS signature based on the mac key and SMB PDU. 20 + * The 16 byte signature must be allocated by the caller. Note we only use the 21 + * 1st eight bytes and that the smb header signature field on input contains 22 + * the sequence number before this function is called. Also, this function 23 + * should be called with the server->srv_mutex held. 24 + */ 25 + static int cifs_calc_signature(struct smb_rqst *rqst, 26 + struct TCP_Server_Info *server, char *signature) 27 + { 28 + struct md5_ctx ctx; 29 + 30 + if (!rqst->rq_iov || !signature || !server) 31 + return -EINVAL; 32 + if (fips_enabled) { 33 + cifs_dbg(VFS, 34 + "MD5 signature support is disabled due to FIPS\n"); 35 + return -EOPNOTSUPP; 36 + } 37 + 38 + md5_init(&ctx); 39 + md5_update(&ctx, server->session_key.response, server->session_key.len); 40 + 41 + return __cifs_calc_signature( 42 + rqst, server, signature, 43 + &(struct cifs_calc_sig_ctx){ .md5 = &ctx }); 44 + } 45 + 46 + /* must be called with server->srv_mutex held */ 47 + int cifs_sign_rqst(struct smb_rqst *rqst, struct TCP_Server_Info *server, 48 + __u32 *pexpected_response_sequence_number) 49 + { 50 + int rc = 0; 51 + char smb_signature[20]; 52 + struct smb_hdr *cifs_pdu = (struct smb_hdr *)rqst->rq_iov[0].iov_base; 53 + 54 + if ((cifs_pdu == NULL) || (server == NULL)) 55 + return -EINVAL; 56 + 57 + spin_lock(&server->srv_lock); 58 + if (!(cifs_pdu->Flags2 & SMBFLG2_SECURITY_SIGNATURE) || 59 + server->tcpStatus == CifsNeedNegotiate) { 60 + spin_unlock(&server->srv_lock); 61 + return rc; 62 + } 63 + spin_unlock(&server->srv_lock); 64 + 65 + if (!server->session_estab) { 66 + memcpy(cifs_pdu->Signature.SecuritySignature, "BSRSPYL", 8); 67 + return rc; 68 + } 69 + 70 + cifs_pdu->Signature.Sequence.SequenceNumber = 71 + cpu_to_le32(server->sequence_number); 72 + cifs_pdu->Signature.Sequence.Reserved = 0; 73 + 74 + *pexpected_response_sequence_number = ++server->sequence_number; 75 + ++server->sequence_number; 76 + 77 + rc = cifs_calc_signature(rqst, server, smb_signature); 78 + if (rc) 79 + memset(cifs_pdu->Signature.SecuritySignature, 0, 8); 80 + else 81 + memcpy(cifs_pdu->Signature.SecuritySignature, smb_signature, 8); 82 + 83 + return rc; 84 + } 85 + 86 + int cifs_verify_signature(struct smb_rqst *rqst, 87 + struct TCP_Server_Info *server, 88 + __u32 expected_sequence_number) 89 + { 90 + unsigned int rc; 91 + char server_response_sig[8]; 92 + char what_we_think_sig_should_be[20]; 93 + struct smb_hdr *cifs_pdu = (struct smb_hdr *)rqst->rq_iov[0].iov_base; 94 + 95 + if (cifs_pdu == NULL || server == NULL) 96 + return -EINVAL; 97 + 98 + if (!server->session_estab) 99 + return 0; 100 + 101 + if (cifs_pdu->Command == SMB_COM_LOCKING_ANDX) { 102 + struct smb_com_lock_req *pSMB = 103 + (struct smb_com_lock_req *)cifs_pdu; 104 + if (pSMB->LockType & LOCKING_ANDX_OPLOCK_RELEASE) 105 + return 0; 106 + } 107 + 108 + /* BB what if signatures are supposed to be on for session but 109 + server does not send one? BB */ 110 + 111 + /* Do not need to verify session setups with signature "BSRSPYL " */ 112 + if (memcmp(cifs_pdu->Signature.SecuritySignature, "BSRSPYL ", 8) == 0) 113 + cifs_dbg(FYI, "dummy signature received for smb command 0x%x\n", 114 + cifs_pdu->Command); 115 + 116 + /* save off the original signature so we can modify the smb and check 117 + its signature against what the server sent */ 118 + memcpy(server_response_sig, cifs_pdu->Signature.SecuritySignature, 8); 119 + 120 + cifs_pdu->Signature.Sequence.SequenceNumber = 121 + cpu_to_le32(expected_sequence_number); 122 + cifs_pdu->Signature.Sequence.Reserved = 0; 123 + 124 + cifs_server_lock(server); 125 + rc = cifs_calc_signature(rqst, server, what_we_think_sig_should_be); 126 + cifs_server_unlock(server); 127 + 128 + if (rc) 129 + return rc; 130 + 131 + /* cifs_dump_mem("what we think it should be: ", 132 + what_we_think_sig_should_be, 16); */ 133 + 134 + if (memcmp(server_response_sig, what_we_think_sig_should_be, 8)) 135 + return -EACCES; 136 + else 137 + return 0; 138 + 139 + }
+809
fs/smb/client/smb1maperror.c
··· 1 + // SPDX-License-Identifier: GPL-2.0-or-later 2 + /* 3 + * 4 + * Copyright (c) International Business Machines Corp., 2002,2008 5 + * Author(s): Steve French (sfrench@us.ibm.com) 6 + * 7 + * Error mapping routines from Samba libsmb/errormap.c 8 + * Copyright (C) Andrew Tridgell 2001 9 + */ 10 + 11 + #include "cifsproto.h" 12 + #include "smb1proto.h" 13 + #include "smberr.h" 14 + #include "nterr.h" 15 + #include "cifs_debug.h" 16 + 17 + struct smb_to_posix_error { 18 + __u16 smb_err; 19 + int posix_code; 20 + }; 21 + 22 + static const struct smb_to_posix_error mapping_table_ERRDOS[] = { 23 + {ERRbadfunc, -EINVAL}, 24 + {ERRbadfile, -ENOENT}, 25 + {ERRbadpath, -ENOTDIR}, 26 + {ERRnofids, -EMFILE}, 27 + {ERRnoaccess, -EACCES}, 28 + {ERRbadfid, -EBADF}, 29 + {ERRbadmcb, -EIO}, 30 + {ERRnomem, -EREMOTEIO}, 31 + {ERRbadmem, -EFAULT}, 32 + {ERRbadenv, -EFAULT}, 33 + {ERRbadformat, -EINVAL}, 34 + {ERRbadaccess, -EACCES}, 35 + {ERRbaddata, -EIO}, 36 + {ERRbaddrive, -ENXIO}, 37 + {ERRremcd, -EACCES}, 38 + {ERRdiffdevice, -EXDEV}, 39 + {ERRnofiles, -ENOENT}, 40 + {ERRwriteprot, -EROFS}, 41 + {ERRbadshare, -EBUSY}, 42 + {ERRlock, -EACCES}, 43 + {ERRunsup, -EINVAL}, 44 + {ERRnosuchshare, -ENXIO}, 45 + {ERRfilexists, -EEXIST}, 46 + {ERRinvparm, -EINVAL}, 47 + {ERRdiskfull, -ENOSPC}, 48 + {ERRinvname, -ENOENT}, 49 + {ERRunknownlevel, -EOPNOTSUPP}, 50 + {ERRdirnotempty, -ENOTEMPTY}, 51 + {ERRnotlocked, -ENOLCK}, 52 + {ERRcancelviolation, -ENOLCK}, 53 + {ERRalreadyexists, -EEXIST}, 54 + {ERRmoredata, -EOVERFLOW}, 55 + {ERReasnotsupported, -EOPNOTSUPP}, 56 + {ErrQuota, -EDQUOT}, 57 + {ErrNotALink, -ENOLINK}, 58 + {ERRnetlogonNotStarted, -ENOPROTOOPT}, 59 + {ERRsymlink, -EOPNOTSUPP}, 60 + {ErrTooManyLinks, -EMLINK}, 61 + {0, 0} 62 + }; 63 + 64 + static const struct smb_to_posix_error mapping_table_ERRSRV[] = { 65 + {ERRerror, -EIO}, 66 + {ERRbadpw, -EACCES}, /* was EPERM */ 67 + {ERRbadtype, -EREMOTE}, 68 + {ERRaccess, -EACCES}, 69 + {ERRinvtid, -ENXIO}, 70 + {ERRinvnetname, -ENXIO}, 71 + {ERRinvdevice, -ENXIO}, 72 + {ERRqfull, -ENOSPC}, 73 + {ERRqtoobig, -ENOSPC}, 74 + {ERRqeof, -EIO}, 75 + {ERRinvpfid, -EBADF}, 76 + {ERRsmbcmd, -EBADRQC}, 77 + {ERRsrverror, -EIO}, 78 + {ERRbadBID, -EIO}, 79 + {ERRfilespecs, -EINVAL}, 80 + {ERRbadLink, -EIO}, 81 + {ERRbadpermits, -EINVAL}, 82 + {ERRbadPID, -ESRCH}, 83 + {ERRsetattrmode, -EINVAL}, 84 + {ERRpaused, -EHOSTDOWN}, 85 + {ERRmsgoff, -EHOSTDOWN}, 86 + {ERRnoroom, -ENOSPC}, 87 + {ERRrmuns, -EUSERS}, 88 + {ERRtimeout, -ETIME}, 89 + {ERRnoresource, -EREMOTEIO}, 90 + {ERRtoomanyuids, -EUSERS}, 91 + {ERRbaduid, -EACCES}, 92 + {ERRusempx, -EIO}, 93 + {ERRusestd, -EIO}, 94 + {ERR_NOTIFY_ENUM_DIR, -ENOBUFS}, 95 + {ERRnoSuchUser, -EACCES}, 96 + {ERRaccountexpired, -EKEYEXPIRED}, 97 + {ERRbadclient, -EACCES}, 98 + {ERRbadLogonTime, -EACCES}, 99 + {ERRpasswordExpired, -EKEYEXPIRED}, 100 + 101 + {ERRnosupport, -EINVAL}, 102 + {0, 0} 103 + }; 104 + 105 + /***************************************************************************** 106 + *convert a NT status code to a dos class/code 107 + *****************************************************************************/ 108 + /* NT status -> dos error map */ 109 + static const struct { 110 + __u8 dos_class; 111 + __u16 dos_code; 112 + __u32 ntstatus; 113 + } ntstatus_to_dos_map[] = { 114 + { 115 + ERRDOS, ERRgeneral, NT_STATUS_UNSUCCESSFUL}, { 116 + ERRDOS, ERRbadfunc, NT_STATUS_NOT_IMPLEMENTED}, { 117 + ERRDOS, ERRbadpipe, NT_STATUS_INVALID_INFO_CLASS}, { 118 + ERRDOS, 24, NT_STATUS_INFO_LENGTH_MISMATCH}, { 119 + ERRHRD, ERRgeneral, NT_STATUS_ACCESS_VIOLATION}, { 120 + ERRHRD, ERRgeneral, NT_STATUS_IN_PAGE_ERROR}, { 121 + ERRHRD, ERRgeneral, NT_STATUS_PAGEFILE_QUOTA}, { 122 + ERRDOS, ERRbadfid, NT_STATUS_INVALID_HANDLE}, { 123 + ERRHRD, ERRgeneral, NT_STATUS_BAD_INITIAL_STACK}, { 124 + ERRDOS, 193, NT_STATUS_BAD_INITIAL_PC}, { 125 + ERRDOS, 87, NT_STATUS_INVALID_CID}, { 126 + ERRHRD, ERRgeneral, NT_STATUS_TIMER_NOT_CANCELED}, { 127 + ERRDOS, 87, NT_STATUS_INVALID_PARAMETER}, { 128 + ERRDOS, ERRbadfile, NT_STATUS_NO_SUCH_DEVICE}, { 129 + ERRDOS, ERRbadfile, NT_STATUS_NO_SUCH_FILE}, { 130 + ERRDOS, ERRbadfunc, NT_STATUS_INVALID_DEVICE_REQUEST}, { 131 + ERRDOS, 38, NT_STATUS_END_OF_FILE}, { 132 + ERRDOS, 34, NT_STATUS_WRONG_VOLUME}, { 133 + ERRDOS, 21, NT_STATUS_NO_MEDIA_IN_DEVICE}, { 134 + ERRHRD, ERRgeneral, NT_STATUS_UNRECOGNIZED_MEDIA}, { 135 + ERRDOS, 27, NT_STATUS_NONEXISTENT_SECTOR}, 136 + /* { This NT error code was 'sqashed' 137 + from NT_STATUS_MORE_PROCESSING_REQUIRED to NT_STATUS_OK 138 + during the session setup } */ 139 + { 140 + ERRDOS, ERRnomem, NT_STATUS_NO_MEMORY}, { 141 + ERRDOS, 487, NT_STATUS_CONFLICTING_ADDRESSES}, { 142 + ERRDOS, 487, NT_STATUS_NOT_MAPPED_VIEW}, { 143 + ERRDOS, 87, NT_STATUS_UNABLE_TO_FREE_VM}, { 144 + ERRDOS, 87, NT_STATUS_UNABLE_TO_DELETE_SECTION}, { 145 + ERRDOS, 2142, NT_STATUS_INVALID_SYSTEM_SERVICE}, { 146 + ERRHRD, ERRgeneral, NT_STATUS_ILLEGAL_INSTRUCTION}, { 147 + ERRDOS, ERRnoaccess, NT_STATUS_INVALID_LOCK_SEQUENCE}, { 148 + ERRDOS, ERRnoaccess, NT_STATUS_INVALID_VIEW_SIZE}, { 149 + ERRDOS, 193, NT_STATUS_INVALID_FILE_FOR_SECTION}, { 150 + ERRDOS, ERRnoaccess, NT_STATUS_ALREADY_COMMITTED}, 151 + /* { This NT error code was 'sqashed' 152 + from NT_STATUS_ACCESS_DENIED to NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE 153 + during the session setup } */ 154 + { 155 + ERRDOS, ERRnoaccess, NT_STATUS_ACCESS_DENIED}, { 156 + ERRDOS, 111, NT_STATUS_BUFFER_TOO_SMALL}, { 157 + ERRDOS, ERRbadfid, NT_STATUS_OBJECT_TYPE_MISMATCH}, { 158 + ERRHRD, ERRgeneral, NT_STATUS_NONCONTINUABLE_EXCEPTION}, { 159 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_DISPOSITION}, { 160 + ERRHRD, ERRgeneral, NT_STATUS_UNWIND}, { 161 + ERRHRD, ERRgeneral, NT_STATUS_BAD_STACK}, { 162 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_UNWIND_TARGET}, { 163 + ERRDOS, 158, NT_STATUS_NOT_LOCKED}, { 164 + ERRHRD, ERRgeneral, NT_STATUS_PARITY_ERROR}, { 165 + ERRDOS, 487, NT_STATUS_UNABLE_TO_DECOMMIT_VM}, { 166 + ERRDOS, 487, NT_STATUS_NOT_COMMITTED}, { 167 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_PORT_ATTRIBUTES}, { 168 + ERRHRD, ERRgeneral, NT_STATUS_PORT_MESSAGE_TOO_LONG}, { 169 + ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_MIX}, { 170 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_QUOTA_LOWER}, { 171 + ERRHRD, ERRgeneral, NT_STATUS_DISK_CORRUPT_ERROR}, { 172 + /* mapping changed since shell does lookup on * expects FileNotFound */ 173 + ERRDOS, ERRbadfile, NT_STATUS_OBJECT_NAME_INVALID}, { 174 + ERRDOS, ERRbadfile, NT_STATUS_OBJECT_NAME_NOT_FOUND}, { 175 + ERRDOS, ERRalreadyexists, NT_STATUS_OBJECT_NAME_COLLISION}, { 176 + ERRHRD, ERRgeneral, NT_STATUS_HANDLE_NOT_WAITABLE}, { 177 + ERRDOS, ERRbadfid, NT_STATUS_PORT_DISCONNECTED}, { 178 + ERRHRD, ERRgeneral, NT_STATUS_DEVICE_ALREADY_ATTACHED}, { 179 + ERRDOS, 161, NT_STATUS_OBJECT_PATH_INVALID}, { 180 + ERRDOS, ERRbadpath, NT_STATUS_OBJECT_PATH_NOT_FOUND}, { 181 + ERRDOS, 161, NT_STATUS_OBJECT_PATH_SYNTAX_BAD}, { 182 + ERRHRD, ERRgeneral, NT_STATUS_DATA_OVERRUN}, { 183 + ERRHRD, ERRgeneral, NT_STATUS_DATA_LATE_ERROR}, { 184 + ERRDOS, 23, NT_STATUS_DATA_ERROR}, { 185 + ERRDOS, 23, NT_STATUS_CRC_ERROR}, { 186 + ERRDOS, ERRnomem, NT_STATUS_SECTION_TOO_BIG}, { 187 + ERRDOS, ERRnoaccess, NT_STATUS_PORT_CONNECTION_REFUSED}, { 188 + ERRDOS, ERRbadfid, NT_STATUS_INVALID_PORT_HANDLE}, { 189 + ERRDOS, ERRbadshare, NT_STATUS_SHARING_VIOLATION}, { 190 + ERRHRD, ERRgeneral, NT_STATUS_QUOTA_EXCEEDED}, { 191 + ERRDOS, 87, NT_STATUS_INVALID_PAGE_PROTECTION}, { 192 + ERRDOS, 288, NT_STATUS_MUTANT_NOT_OWNED}, { 193 + ERRDOS, 298, NT_STATUS_SEMAPHORE_LIMIT_EXCEEDED}, { 194 + ERRDOS, 87, NT_STATUS_PORT_ALREADY_SET}, { 195 + ERRDOS, 87, NT_STATUS_SECTION_NOT_IMAGE}, { 196 + ERRDOS, 156, NT_STATUS_SUSPEND_COUNT_EXCEEDED}, { 197 + ERRDOS, ERRnoaccess, NT_STATUS_THREAD_IS_TERMINATING}, { 198 + ERRDOS, 87, NT_STATUS_BAD_WORKING_SET_LIMIT}, { 199 + ERRDOS, 87, NT_STATUS_INCOMPATIBLE_FILE_MAP}, { 200 + ERRDOS, 87, NT_STATUS_SECTION_PROTECTION}, { 201 + ERRDOS, ERReasnotsupported, NT_STATUS_EAS_NOT_SUPPORTED}, { 202 + ERRDOS, 255, NT_STATUS_EA_TOO_LARGE}, { 203 + ERRHRD, ERRgeneral, NT_STATUS_NONEXISTENT_EA_ENTRY}, { 204 + ERRHRD, ERRgeneral, NT_STATUS_NO_EAS_ON_FILE}, { 205 + ERRHRD, ERRgeneral, NT_STATUS_EA_CORRUPT_ERROR}, { 206 + ERRDOS, ERRlock, NT_STATUS_FILE_LOCK_CONFLICT}, { 207 + ERRDOS, ERRlock, NT_STATUS_LOCK_NOT_GRANTED}, { 208 + ERRDOS, ERRbadfile, NT_STATUS_DELETE_PENDING}, { 209 + ERRDOS, ERRunsup, NT_STATUS_CTL_FILE_NOT_SUPPORTED}, { 210 + ERRHRD, ERRgeneral, NT_STATUS_UNKNOWN_REVISION}, { 211 + ERRHRD, ERRgeneral, NT_STATUS_REVISION_MISMATCH}, { 212 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_OWNER}, { 213 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_PRIMARY_GROUP}, { 214 + ERRHRD, ERRgeneral, NT_STATUS_NO_IMPERSONATION_TOKEN}, { 215 + ERRHRD, ERRgeneral, NT_STATUS_CANT_DISABLE_MANDATORY}, { 216 + ERRDOS, 2215, NT_STATUS_NO_LOGON_SERVERS}, { 217 + ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_LOGON_SESSION}, { 218 + ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_PRIVILEGE}, { 219 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_ACCOUNT_NAME}, { 220 + ERRHRD, ERRgeneral, NT_STATUS_USER_EXISTS}, 221 + /* { This NT error code was 'sqashed' 222 + from NT_STATUS_NO_SUCH_USER to NT_STATUS_LOGON_FAILURE 223 + during the session setup } */ 224 + { 225 + ERRDOS, ERRnoaccess, NT_STATUS_NO_SUCH_USER}, { /* could map to 2238 */ 226 + ERRHRD, ERRgeneral, NT_STATUS_GROUP_EXISTS}, { 227 + ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_GROUP}, { 228 + ERRHRD, ERRgeneral, NT_STATUS_MEMBER_IN_GROUP}, { 229 + ERRHRD, ERRgeneral, NT_STATUS_MEMBER_NOT_IN_GROUP}, { 230 + ERRHRD, ERRgeneral, NT_STATUS_LAST_ADMIN}, 231 + /* { This NT error code was 'sqashed' 232 + from NT_STATUS_WRONG_PASSWORD to NT_STATUS_LOGON_FAILURE 233 + during the session setup } */ 234 + { 235 + ERRSRV, ERRbadpw, NT_STATUS_WRONG_PASSWORD}, { 236 + ERRHRD, ERRgeneral, NT_STATUS_ILL_FORMED_PASSWORD}, { 237 + ERRHRD, ERRgeneral, NT_STATUS_PASSWORD_RESTRICTION}, { 238 + ERRDOS, ERRnoaccess, NT_STATUS_LOGON_FAILURE}, { 239 + ERRHRD, ERRgeneral, NT_STATUS_ACCOUNT_RESTRICTION}, { 240 + ERRSRV, ERRbadLogonTime, NT_STATUS_INVALID_LOGON_HOURS}, { 241 + ERRSRV, ERRbadclient, NT_STATUS_INVALID_WORKSTATION}, { 242 + ERRSRV, ERRpasswordExpired, NT_STATUS_PASSWORD_EXPIRED}, { 243 + ERRSRV, ERRaccountexpired, NT_STATUS_ACCOUNT_DISABLED}, { 244 + ERRHRD, ERRgeneral, NT_STATUS_NONE_MAPPED}, { 245 + ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_LUIDS_REQUESTED}, { 246 + ERRHRD, ERRgeneral, NT_STATUS_LUIDS_EXHAUSTED}, { 247 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_SUB_AUTHORITY}, { 248 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_ACL}, { 249 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_SID}, { 250 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_SECURITY_DESCR}, { 251 + ERRDOS, 127, NT_STATUS_PROCEDURE_NOT_FOUND}, { 252 + ERRDOS, 193, NT_STATUS_INVALID_IMAGE_FORMAT}, { 253 + ERRHRD, ERRgeneral, NT_STATUS_NO_TOKEN}, { 254 + ERRHRD, ERRgeneral, NT_STATUS_BAD_INHERITANCE_ACL}, { 255 + ERRDOS, 158, NT_STATUS_RANGE_NOT_LOCKED}, { 256 + ERRDOS, 112, NT_STATUS_DISK_FULL}, { 257 + ERRHRD, ERRgeneral, NT_STATUS_SERVER_DISABLED}, { 258 + ERRHRD, ERRgeneral, NT_STATUS_SERVER_NOT_DISABLED}, { 259 + ERRDOS, 68, NT_STATUS_TOO_MANY_GUIDS_REQUESTED}, { 260 + ERRDOS, 259, NT_STATUS_GUIDS_EXHAUSTED}, { 261 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_ID_AUTHORITY}, { 262 + ERRDOS, 259, NT_STATUS_AGENTS_EXHAUSTED}, { 263 + ERRDOS, 154, NT_STATUS_INVALID_VOLUME_LABEL}, { 264 + ERRDOS, 14, NT_STATUS_SECTION_NOT_EXTENDED}, { 265 + ERRDOS, 487, NT_STATUS_NOT_MAPPED_DATA}, { 266 + ERRHRD, ERRgeneral, NT_STATUS_RESOURCE_DATA_NOT_FOUND}, { 267 + ERRHRD, ERRgeneral, NT_STATUS_RESOURCE_TYPE_NOT_FOUND}, { 268 + ERRHRD, ERRgeneral, NT_STATUS_RESOURCE_NAME_NOT_FOUND}, { 269 + ERRHRD, ERRgeneral, NT_STATUS_ARRAY_BOUNDS_EXCEEDED}, { 270 + ERRHRD, ERRgeneral, NT_STATUS_FLOAT_DENORMAL_OPERAND}, { 271 + ERRHRD, ERRgeneral, NT_STATUS_FLOAT_DIVIDE_BY_ZERO}, { 272 + ERRHRD, ERRgeneral, NT_STATUS_FLOAT_INEXACT_RESULT}, { 273 + ERRHRD, ERRgeneral, NT_STATUS_FLOAT_INVALID_OPERATION}, { 274 + ERRHRD, ERRgeneral, NT_STATUS_FLOAT_OVERFLOW}, { 275 + ERRHRD, ERRgeneral, NT_STATUS_FLOAT_STACK_CHECK}, { 276 + ERRHRD, ERRgeneral, NT_STATUS_FLOAT_UNDERFLOW}, { 277 + ERRHRD, ERRgeneral, NT_STATUS_INTEGER_DIVIDE_BY_ZERO}, { 278 + ERRDOS, 534, NT_STATUS_INTEGER_OVERFLOW}, { 279 + ERRHRD, ERRgeneral, NT_STATUS_PRIVILEGED_INSTRUCTION}, { 280 + ERRDOS, ERRnomem, NT_STATUS_TOO_MANY_PAGING_FILES}, { 281 + ERRHRD, ERRgeneral, NT_STATUS_FILE_INVALID}, { 282 + ERRHRD, ERRgeneral, NT_STATUS_ALLOTTED_SPACE_EXCEEDED}, 283 + /* { This NT error code was 'sqashed' 284 + from NT_STATUS_INSUFFICIENT_RESOURCES to 285 + NT_STATUS_INSUFF_SERVER_RESOURCES during the session setup } */ 286 + { 287 + ERRDOS, ERRnoresource, NT_STATUS_INSUFFICIENT_RESOURCES}, { 288 + ERRDOS, ERRbadpath, NT_STATUS_DFS_EXIT_PATH_FOUND}, { 289 + ERRDOS, 23, NT_STATUS_DEVICE_DATA_ERROR}, { 290 + ERRHRD, ERRgeneral, NT_STATUS_DEVICE_NOT_CONNECTED}, { 291 + ERRDOS, 21, NT_STATUS_DEVICE_POWER_FAILURE}, { 292 + ERRDOS, 487, NT_STATUS_FREE_VM_NOT_AT_BASE}, { 293 + ERRDOS, 487, NT_STATUS_MEMORY_NOT_ALLOCATED}, { 294 + ERRHRD, ERRgeneral, NT_STATUS_WORKING_SET_QUOTA}, { 295 + ERRDOS, 19, NT_STATUS_MEDIA_WRITE_PROTECTED}, { 296 + ERRDOS, 21, NT_STATUS_DEVICE_NOT_READY}, { 297 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_GROUP_ATTRIBUTES}, { 298 + ERRHRD, ERRgeneral, NT_STATUS_BAD_IMPERSONATION_LEVEL}, { 299 + ERRHRD, ERRgeneral, NT_STATUS_CANT_OPEN_ANONYMOUS}, { 300 + ERRHRD, ERRgeneral, NT_STATUS_BAD_VALIDATION_CLASS}, { 301 + ERRHRD, ERRgeneral, NT_STATUS_BAD_TOKEN_TYPE}, { 302 + ERRDOS, 87, NT_STATUS_BAD_MASTER_BOOT_RECORD}, { 303 + ERRHRD, ERRgeneral, NT_STATUS_INSTRUCTION_MISALIGNMENT}, { 304 + ERRDOS, ERRpipebusy, NT_STATUS_INSTANCE_NOT_AVAILABLE}, { 305 + ERRDOS, ERRpipebusy, NT_STATUS_PIPE_NOT_AVAILABLE}, { 306 + ERRDOS, ERRbadpipe, NT_STATUS_INVALID_PIPE_STATE}, { 307 + ERRDOS, ERRpipebusy, NT_STATUS_PIPE_BUSY}, { 308 + ERRDOS, ERRbadfunc, NT_STATUS_ILLEGAL_FUNCTION}, { 309 + ERRDOS, ERRnotconnected, NT_STATUS_PIPE_DISCONNECTED}, { 310 + ERRDOS, ERRpipeclosing, NT_STATUS_PIPE_CLOSING}, { 311 + ERRHRD, ERRgeneral, NT_STATUS_PIPE_CONNECTED}, { 312 + ERRHRD, ERRgeneral, NT_STATUS_PIPE_LISTENING}, { 313 + ERRDOS, ERRbadpipe, NT_STATUS_INVALID_READ_MODE}, { 314 + ERRDOS, 121, NT_STATUS_IO_TIMEOUT}, { 315 + ERRDOS, 38, NT_STATUS_FILE_FORCED_CLOSED}, { 316 + ERRHRD, ERRgeneral, NT_STATUS_PROFILING_NOT_STARTED}, { 317 + ERRHRD, ERRgeneral, NT_STATUS_PROFILING_NOT_STOPPED}, { 318 + ERRHRD, ERRgeneral, NT_STATUS_COULD_NOT_INTERPRET}, { 319 + ERRDOS, ERRnoaccess, NT_STATUS_FILE_IS_A_DIRECTORY}, { 320 + ERRDOS, ERRunsup, NT_STATUS_NOT_SUPPORTED}, { 321 + ERRDOS, 51, NT_STATUS_REMOTE_NOT_LISTENING}, { 322 + ERRDOS, 52, NT_STATUS_DUPLICATE_NAME}, { 323 + ERRDOS, 53, NT_STATUS_BAD_NETWORK_PATH}, { 324 + ERRDOS, 54, NT_STATUS_NETWORK_BUSY}, { 325 + ERRDOS, 55, NT_STATUS_DEVICE_DOES_NOT_EXIST}, { 326 + ERRDOS, 56, NT_STATUS_TOO_MANY_COMMANDS}, { 327 + ERRDOS, 57, NT_STATUS_ADAPTER_HARDWARE_ERROR}, { 328 + ERRDOS, 58, NT_STATUS_INVALID_NETWORK_RESPONSE}, { 329 + ERRDOS, 59, NT_STATUS_UNEXPECTED_NETWORK_ERROR}, { 330 + ERRDOS, 60, NT_STATUS_BAD_REMOTE_ADAPTER}, { 331 + ERRDOS, 61, NT_STATUS_PRINT_QUEUE_FULL}, { 332 + ERRDOS, 62, NT_STATUS_NO_SPOOL_SPACE}, { 333 + ERRDOS, 63, NT_STATUS_PRINT_CANCELLED}, { 334 + ERRDOS, 64, NT_STATUS_NETWORK_NAME_DELETED}, { 335 + ERRDOS, 65, NT_STATUS_NETWORK_ACCESS_DENIED}, { 336 + ERRDOS, 66, NT_STATUS_BAD_DEVICE_TYPE}, { 337 + ERRDOS, ERRnosuchshare, NT_STATUS_BAD_NETWORK_NAME}, { 338 + ERRDOS, 68, NT_STATUS_TOO_MANY_NAMES}, { 339 + ERRDOS, 69, NT_STATUS_TOO_MANY_SESSIONS}, { 340 + ERRDOS, 70, NT_STATUS_SHARING_PAUSED}, { 341 + ERRDOS, 71, NT_STATUS_REQUEST_NOT_ACCEPTED}, { 342 + ERRDOS, 72, NT_STATUS_REDIRECTOR_PAUSED}, { 343 + ERRDOS, 88, NT_STATUS_NET_WRITE_FAULT}, { 344 + ERRHRD, ERRgeneral, NT_STATUS_PROFILING_AT_LIMIT}, { 345 + ERRDOS, ERRdiffdevice, NT_STATUS_NOT_SAME_DEVICE}, { 346 + ERRDOS, ERRnoaccess, NT_STATUS_FILE_RENAMED}, { 347 + ERRDOS, 240, NT_STATUS_VIRTUAL_CIRCUIT_CLOSED}, { 348 + ERRHRD, ERRgeneral, NT_STATUS_NO_SECURITY_ON_OBJECT}, { 349 + ERRHRD, ERRgeneral, NT_STATUS_CANT_WAIT}, { 350 + ERRDOS, ERRpipeclosing, NT_STATUS_PIPE_EMPTY}, { 351 + ERRHRD, ERRgeneral, NT_STATUS_CANT_ACCESS_DOMAIN_INFO}, { 352 + ERRHRD, ERRgeneral, NT_STATUS_CANT_TERMINATE_SELF}, { 353 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_SERVER_STATE}, { 354 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_DOMAIN_STATE}, { 355 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_DOMAIN_ROLE}, { 356 + ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_DOMAIN}, { 357 + ERRHRD, ERRgeneral, NT_STATUS_DOMAIN_EXISTS}, { 358 + ERRHRD, ERRgeneral, NT_STATUS_DOMAIN_LIMIT_EXCEEDED}, { 359 + ERRDOS, 300, NT_STATUS_OPLOCK_NOT_GRANTED}, { 360 + ERRDOS, 301, NT_STATUS_INVALID_OPLOCK_PROTOCOL}, { 361 + ERRHRD, ERRgeneral, NT_STATUS_INTERNAL_DB_CORRUPTION}, { 362 + ERRHRD, ERRgeneral, NT_STATUS_INTERNAL_ERROR}, { 363 + ERRHRD, ERRgeneral, NT_STATUS_GENERIC_NOT_MAPPED}, { 364 + ERRHRD, ERRgeneral, NT_STATUS_BAD_DESCRIPTOR_FORMAT}, { 365 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_USER_BUFFER}, { 366 + ERRHRD, ERRgeneral, NT_STATUS_UNEXPECTED_IO_ERROR}, { 367 + ERRHRD, ERRgeneral, NT_STATUS_UNEXPECTED_MM_CREATE_ERR}, { 368 + ERRHRD, ERRgeneral, NT_STATUS_UNEXPECTED_MM_MAP_ERROR}, { 369 + ERRHRD, ERRgeneral, NT_STATUS_UNEXPECTED_MM_EXTEND_ERR}, { 370 + ERRHRD, ERRgeneral, NT_STATUS_NOT_LOGON_PROCESS}, { 371 + ERRHRD, ERRgeneral, NT_STATUS_LOGON_SESSION_EXISTS}, { 372 + ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_1}, { 373 + ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_2}, { 374 + ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_3}, { 375 + ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_4}, { 376 + ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_5}, { 377 + ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_6}, { 378 + ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_7}, { 379 + ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_8}, { 380 + ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_9}, { 381 + ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_10}, { 382 + ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_11}, { 383 + ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_12}, { 384 + ERRDOS, ERRbadpath, NT_STATUS_REDIRECTOR_NOT_STARTED}, { 385 + ERRHRD, ERRgeneral, NT_STATUS_REDIRECTOR_STARTED}, { 386 + ERRHRD, ERRgeneral, NT_STATUS_STACK_OVERFLOW}, { 387 + ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_PACKAGE}, { 388 + ERRHRD, ERRgeneral, NT_STATUS_BAD_FUNCTION_TABLE}, { 389 + ERRDOS, 203, NT_STATUS_VARIABLE_NOT_FOUND}, { 390 + ERRDOS, 145, NT_STATUS_DIRECTORY_NOT_EMPTY}, { 391 + ERRHRD, ERRgeneral, NT_STATUS_FILE_CORRUPT_ERROR}, { 392 + ERRDOS, 267, NT_STATUS_NOT_A_DIRECTORY}, { 393 + ERRHRD, ERRgeneral, NT_STATUS_BAD_LOGON_SESSION_STATE}, { 394 + ERRHRD, ERRgeneral, NT_STATUS_LOGON_SESSION_COLLISION}, { 395 + ERRDOS, 206, NT_STATUS_NAME_TOO_LONG}, { 396 + ERRDOS, 2401, NT_STATUS_FILES_OPEN}, { 397 + ERRDOS, 2404, NT_STATUS_CONNECTION_IN_USE}, { 398 + ERRHRD, ERRgeneral, NT_STATUS_MESSAGE_NOT_FOUND}, { 399 + ERRDOS, ERRnoaccess, NT_STATUS_PROCESS_IS_TERMINATING}, { 400 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_LOGON_TYPE}, { 401 + ERRHRD, ERRgeneral, NT_STATUS_NO_GUID_TRANSLATION}, { 402 + ERRHRD, ERRgeneral, NT_STATUS_CANNOT_IMPERSONATE}, { 403 + ERRHRD, ERRgeneral, NT_STATUS_IMAGE_ALREADY_LOADED}, { 404 + ERRHRD, ERRgeneral, NT_STATUS_ABIOS_NOT_PRESENT}, { 405 + ERRHRD, ERRgeneral, NT_STATUS_ABIOS_LID_NOT_EXIST}, { 406 + ERRHRD, ERRgeneral, NT_STATUS_ABIOS_LID_ALREADY_OWNED}, { 407 + ERRHRD, ERRgeneral, NT_STATUS_ABIOS_NOT_LID_OWNER}, { 408 + ERRHRD, ERRgeneral, NT_STATUS_ABIOS_INVALID_COMMAND}, { 409 + ERRHRD, ERRgeneral, NT_STATUS_ABIOS_INVALID_LID}, { 410 + ERRHRD, ERRgeneral, NT_STATUS_ABIOS_SELECTOR_NOT_AVAILABLE}, { 411 + ERRHRD, ERRgeneral, NT_STATUS_ABIOS_INVALID_SELECTOR}, { 412 + ERRHRD, ERRgeneral, NT_STATUS_NO_LDT}, { 413 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_LDT_SIZE}, { 414 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_LDT_OFFSET}, { 415 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_LDT_DESCRIPTOR}, { 416 + ERRDOS, 193, NT_STATUS_INVALID_IMAGE_NE_FORMAT}, { 417 + ERRHRD, ERRgeneral, NT_STATUS_RXACT_INVALID_STATE}, { 418 + ERRHRD, ERRgeneral, NT_STATUS_RXACT_COMMIT_FAILURE}, { 419 + ERRHRD, ERRgeneral, NT_STATUS_MAPPED_FILE_SIZE_ZERO}, { 420 + ERRDOS, ERRnofids, NT_STATUS_TOO_MANY_OPENED_FILES}, { 421 + ERRHRD, ERRgeneral, NT_STATUS_CANCELLED}, { 422 + ERRDOS, ERRnoaccess, NT_STATUS_CANNOT_DELETE}, { 423 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_COMPUTER_NAME}, { 424 + ERRDOS, ERRnoaccess, NT_STATUS_FILE_DELETED}, { 425 + ERRHRD, ERRgeneral, NT_STATUS_SPECIAL_ACCOUNT}, { 426 + ERRHRD, ERRgeneral, NT_STATUS_SPECIAL_GROUP}, { 427 + ERRHRD, ERRgeneral, NT_STATUS_SPECIAL_USER}, { 428 + ERRHRD, ERRgeneral, NT_STATUS_MEMBERS_PRIMARY_GROUP}, { 429 + ERRDOS, ERRbadfid, NT_STATUS_FILE_CLOSED}, { 430 + ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_THREADS}, { 431 + ERRHRD, ERRgeneral, NT_STATUS_THREAD_NOT_IN_PROCESS}, { 432 + ERRHRD, ERRgeneral, NT_STATUS_TOKEN_ALREADY_IN_USE}, { 433 + ERRHRD, ERRgeneral, NT_STATUS_PAGEFILE_QUOTA_EXCEEDED}, { 434 + ERRHRD, ERRgeneral, NT_STATUS_COMMITMENT_LIMIT}, { 435 + ERRDOS, 193, NT_STATUS_INVALID_IMAGE_LE_FORMAT}, { 436 + ERRDOS, 193, NT_STATUS_INVALID_IMAGE_NOT_MZ}, { 437 + ERRDOS, 193, NT_STATUS_INVALID_IMAGE_PROTECT}, { 438 + ERRDOS, 193, NT_STATUS_INVALID_IMAGE_WIN_16}, { 439 + ERRHRD, ERRgeneral, NT_STATUS_LOGON_SERVER_CONFLICT}, { 440 + ERRHRD, ERRgeneral, NT_STATUS_TIME_DIFFERENCE_AT_DC}, { 441 + ERRHRD, ERRgeneral, NT_STATUS_SYNCHRONIZATION_REQUIRED}, { 442 + ERRDOS, 126, NT_STATUS_DLL_NOT_FOUND}, { 443 + ERRHRD, ERRgeneral, NT_STATUS_OPEN_FAILED}, { 444 + ERRHRD, ERRgeneral, NT_STATUS_IO_PRIVILEGE_FAILED}, { 445 + ERRDOS, 182, NT_STATUS_ORDINAL_NOT_FOUND}, { 446 + ERRDOS, 127, NT_STATUS_ENTRYPOINT_NOT_FOUND}, { 447 + ERRHRD, ERRgeneral, NT_STATUS_CONTROL_C_EXIT}, { 448 + ERRDOS, 64, NT_STATUS_LOCAL_DISCONNECT}, { 449 + ERRDOS, 64, NT_STATUS_REMOTE_DISCONNECT}, { 450 + ERRDOS, 51, NT_STATUS_REMOTE_RESOURCES}, { 451 + ERRDOS, 59, NT_STATUS_LINK_FAILED}, { 452 + ERRDOS, 59, NT_STATUS_LINK_TIMEOUT}, { 453 + ERRDOS, 59, NT_STATUS_INVALID_CONNECTION}, { 454 + ERRDOS, 59, NT_STATUS_INVALID_ADDRESS}, { 455 + ERRHRD, ERRgeneral, NT_STATUS_DLL_INIT_FAILED}, { 456 + ERRHRD, ERRgeneral, NT_STATUS_MISSING_SYSTEMFILE}, { 457 + ERRHRD, ERRgeneral, NT_STATUS_UNHANDLED_EXCEPTION}, { 458 + ERRHRD, ERRgeneral, NT_STATUS_APP_INIT_FAILURE}, { 459 + ERRHRD, ERRgeneral, NT_STATUS_PAGEFILE_CREATE_FAILED}, { 460 + ERRHRD, ERRgeneral, NT_STATUS_NO_PAGEFILE}, { 461 + ERRDOS, 124, NT_STATUS_INVALID_LEVEL}, { 462 + ERRDOS, 86, NT_STATUS_WRONG_PASSWORD_CORE}, { 463 + ERRHRD, ERRgeneral, NT_STATUS_ILLEGAL_FLOAT_CONTEXT}, { 464 + ERRDOS, 109, NT_STATUS_PIPE_BROKEN}, { 465 + ERRHRD, ERRgeneral, NT_STATUS_REGISTRY_CORRUPT}, { 466 + ERRHRD, ERRgeneral, NT_STATUS_REGISTRY_IO_FAILED}, { 467 + ERRHRD, ERRgeneral, NT_STATUS_NO_EVENT_PAIR}, { 468 + ERRHRD, ERRgeneral, NT_STATUS_UNRECOGNIZED_VOLUME}, { 469 + ERRHRD, ERRgeneral, NT_STATUS_SERIAL_NO_DEVICE_INITED}, { 470 + ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_ALIAS}, { 471 + ERRHRD, ERRgeneral, NT_STATUS_MEMBER_NOT_IN_ALIAS}, { 472 + ERRHRD, ERRgeneral, NT_STATUS_MEMBER_IN_ALIAS}, { 473 + ERRHRD, ERRgeneral, NT_STATUS_ALIAS_EXISTS}, { 474 + ERRHRD, ERRgeneral, NT_STATUS_LOGON_NOT_GRANTED}, { 475 + ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_SECRETS}, { 476 + ERRHRD, ERRgeneral, NT_STATUS_SECRET_TOO_LONG}, { 477 + ERRHRD, ERRgeneral, NT_STATUS_INTERNAL_DB_ERROR}, { 478 + ERRHRD, ERRgeneral, NT_STATUS_FULLSCREEN_MODE}, { 479 + ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_CONTEXT_IDS}, { 480 + ERRDOS, ERRnoaccess, NT_STATUS_LOGON_TYPE_NOT_GRANTED}, { 481 + ERRHRD, ERRgeneral, NT_STATUS_NOT_REGISTRY_FILE}, { 482 + ERRHRD, ERRgeneral, NT_STATUS_NT_CROSS_ENCRYPTION_REQUIRED}, { 483 + ERRHRD, ERRgeneral, NT_STATUS_DOMAIN_CTRLR_CONFIG_ERROR}, { 484 + ERRHRD, ERRgeneral, NT_STATUS_FT_MISSING_MEMBER}, { 485 + ERRHRD, ERRgeneral, NT_STATUS_ILL_FORMED_SERVICE_ENTRY}, { 486 + ERRHRD, ERRgeneral, NT_STATUS_ILLEGAL_CHARACTER}, { 487 + ERRHRD, ERRgeneral, NT_STATUS_UNMAPPABLE_CHARACTER}, { 488 + ERRHRD, ERRgeneral, NT_STATUS_UNDEFINED_CHARACTER}, { 489 + ERRHRD, ERRgeneral, NT_STATUS_FLOPPY_VOLUME}, { 490 + ERRHRD, ERRgeneral, NT_STATUS_FLOPPY_ID_MARK_NOT_FOUND}, { 491 + ERRHRD, ERRgeneral, NT_STATUS_FLOPPY_WRONG_CYLINDER}, { 492 + ERRHRD, ERRgeneral, NT_STATUS_FLOPPY_UNKNOWN_ERROR}, { 493 + ERRHRD, ERRgeneral, NT_STATUS_FLOPPY_BAD_REGISTERS}, { 494 + ERRHRD, ERRgeneral, NT_STATUS_DISK_RECALIBRATE_FAILED}, { 495 + ERRHRD, ERRgeneral, NT_STATUS_DISK_OPERATION_FAILED}, { 496 + ERRHRD, ERRgeneral, NT_STATUS_DISK_RESET_FAILED}, { 497 + ERRHRD, ERRgeneral, NT_STATUS_SHARED_IRQ_BUSY}, { 498 + ERRHRD, ERRgeneral, NT_STATUS_FT_ORPHANING}, { 499 + ERRHRD, ERRgeneral, NT_STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT}, { 500 + ERRHRD, ERRgeneral, NT_STATUS_PARTITION_FAILURE}, { 501 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_BLOCK_LENGTH}, { 502 + ERRHRD, ERRgeneral, NT_STATUS_DEVICE_NOT_PARTITIONED}, { 503 + ERRHRD, ERRgeneral, NT_STATUS_UNABLE_TO_LOCK_MEDIA}, { 504 + ERRHRD, ERRgeneral, NT_STATUS_UNABLE_TO_UNLOAD_MEDIA}, { 505 + ERRHRD, ERRgeneral, NT_STATUS_EOM_OVERFLOW}, { 506 + ERRHRD, ERRgeneral, NT_STATUS_NO_MEDIA}, { 507 + ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_MEMBER}, { 508 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_MEMBER}, { 509 + ERRHRD, ERRgeneral, NT_STATUS_KEY_DELETED}, { 510 + ERRHRD, ERRgeneral, NT_STATUS_NO_LOG_SPACE}, { 511 + ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_SIDS}, { 512 + ERRHRD, ERRgeneral, NT_STATUS_LM_CROSS_ENCRYPTION_REQUIRED}, { 513 + ERRHRD, ERRgeneral, NT_STATUS_KEY_HAS_CHILDREN}, { 514 + ERRHRD, ERRgeneral, NT_STATUS_CHILD_MUST_BE_VOLATILE}, { 515 + ERRDOS, 87, NT_STATUS_DEVICE_CONFIGURATION_ERROR}, { 516 + ERRHRD, ERRgeneral, NT_STATUS_DRIVER_INTERNAL_ERROR}, { 517 + ERRDOS, 22, NT_STATUS_INVALID_DEVICE_STATE}, { 518 + ERRHRD, ERRgeneral, NT_STATUS_IO_DEVICE_ERROR}, { 519 + ERRHRD, ERRgeneral, NT_STATUS_DEVICE_PROTOCOL_ERROR}, { 520 + ERRHRD, ERRgeneral, NT_STATUS_BACKUP_CONTROLLER}, { 521 + ERRHRD, ERRgeneral, NT_STATUS_LOG_FILE_FULL}, { 522 + ERRDOS, 19, NT_STATUS_TOO_LATE}, { 523 + ERRDOS, ERRnoaccess, NT_STATUS_NO_TRUST_LSA_SECRET}, 524 + /* { This NT error code was 'sqashed' 525 + from NT_STATUS_NO_TRUST_SAM_ACCOUNT to 526 + NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE during the session setup } */ 527 + { 528 + ERRDOS, ERRnoaccess, NT_STATUS_NO_TRUST_SAM_ACCOUNT}, { 529 + ERRDOS, ERRnoaccess, NT_STATUS_TRUSTED_DOMAIN_FAILURE}, { 530 + ERRDOS, ERRnoaccess, NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE}, { 531 + ERRHRD, ERRgeneral, NT_STATUS_EVENTLOG_FILE_CORRUPT}, { 532 + ERRHRD, ERRgeneral, NT_STATUS_EVENTLOG_CANT_START}, { 533 + ERRDOS, ERRnoaccess, NT_STATUS_TRUST_FAILURE}, { 534 + ERRHRD, ERRgeneral, NT_STATUS_MUTANT_LIMIT_EXCEEDED}, { 535 + ERRDOS, ERRnetlogonNotStarted, NT_STATUS_NETLOGON_NOT_STARTED}, { 536 + ERRSRV, ERRaccountexpired, NT_STATUS_ACCOUNT_EXPIRED}, { 537 + ERRHRD, ERRgeneral, NT_STATUS_POSSIBLE_DEADLOCK}, { 538 + ERRHRD, ERRgeneral, NT_STATUS_NETWORK_CREDENTIAL_CONFLICT}, { 539 + ERRHRD, ERRgeneral, NT_STATUS_REMOTE_SESSION_LIMIT}, { 540 + ERRHRD, ERRgeneral, NT_STATUS_EVENTLOG_FILE_CHANGED}, { 541 + ERRDOS, ERRnoaccess, NT_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT}, { 542 + ERRDOS, ERRnoaccess, NT_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT}, { 543 + ERRDOS, ERRnoaccess, NT_STATUS_NOLOGON_SERVER_TRUST_ACCOUNT}, 544 + /* { This NT error code was 'sqashed' 545 + from NT_STATUS_DOMAIN_TRUST_INCONSISTENT to NT_STATUS_LOGON_FAILURE 546 + during the session setup } */ 547 + { 548 + ERRDOS, ERRnoaccess, NT_STATUS_DOMAIN_TRUST_INCONSISTENT}, { 549 + ERRHRD, ERRgeneral, NT_STATUS_FS_DRIVER_REQUIRED}, { 550 + ERRHRD, ERRgeneral, NT_STATUS_NO_USER_SESSION_KEY}, { 551 + ERRDOS, 59, NT_STATUS_USER_SESSION_DELETED}, { 552 + ERRHRD, ERRgeneral, NT_STATUS_RESOURCE_LANG_NOT_FOUND}, { 553 + ERRDOS, ERRnoresource, NT_STATUS_INSUFF_SERVER_RESOURCES}, { 554 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_BUFFER_SIZE}, { 555 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_ADDRESS_COMPONENT}, { 556 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_ADDRESS_WILDCARD}, { 557 + ERRDOS, 68, NT_STATUS_TOO_MANY_ADDRESSES}, { 558 + ERRDOS, 52, NT_STATUS_ADDRESS_ALREADY_EXISTS}, { 559 + ERRDOS, 64, NT_STATUS_ADDRESS_CLOSED}, { 560 + ERRDOS, 64, NT_STATUS_CONNECTION_DISCONNECTED}, { 561 + ERRDOS, 64, NT_STATUS_CONNECTION_RESET}, { 562 + ERRDOS, 68, NT_STATUS_TOO_MANY_NODES}, { 563 + ERRDOS, 59, NT_STATUS_TRANSACTION_ABORTED}, { 564 + ERRDOS, 59, NT_STATUS_TRANSACTION_TIMED_OUT}, { 565 + ERRDOS, 59, NT_STATUS_TRANSACTION_NO_RELEASE}, { 566 + ERRDOS, 59, NT_STATUS_TRANSACTION_NO_MATCH}, { 567 + ERRDOS, 59, NT_STATUS_TRANSACTION_RESPONDED}, { 568 + ERRDOS, 59, NT_STATUS_TRANSACTION_INVALID_ID}, { 569 + ERRDOS, 59, NT_STATUS_TRANSACTION_INVALID_TYPE}, { 570 + ERRDOS, ERRunsup, NT_STATUS_NOT_SERVER_SESSION}, { 571 + ERRDOS, ERRunsup, NT_STATUS_NOT_CLIENT_SESSION}, { 572 + ERRHRD, ERRgeneral, NT_STATUS_CANNOT_LOAD_REGISTRY_FILE}, { 573 + ERRHRD, ERRgeneral, NT_STATUS_DEBUG_ATTACH_FAILED}, { 574 + ERRHRD, ERRgeneral, NT_STATUS_SYSTEM_PROCESS_TERMINATED}, { 575 + ERRHRD, ERRgeneral, NT_STATUS_DATA_NOT_ACCEPTED}, { 576 + ERRHRD, ERRgeneral, NT_STATUS_NO_BROWSER_SERVERS_FOUND}, { 577 + ERRHRD, ERRgeneral, NT_STATUS_VDM_HARD_ERROR}, { 578 + ERRHRD, ERRgeneral, NT_STATUS_DRIVER_CANCEL_TIMEOUT}, { 579 + ERRHRD, ERRgeneral, NT_STATUS_REPLY_MESSAGE_MISMATCH}, { 580 + ERRHRD, ERRgeneral, NT_STATUS_MAPPED_ALIGNMENT}, { 581 + ERRDOS, 193, NT_STATUS_IMAGE_CHECKSUM_MISMATCH}, { 582 + ERRHRD, ERRgeneral, NT_STATUS_LOST_WRITEBEHIND_DATA}, { 583 + ERRHRD, ERRgeneral, NT_STATUS_CLIENT_SERVER_PARAMETERS_INVALID}, { 584 + ERRSRV, ERRpasswordExpired, NT_STATUS_PASSWORD_MUST_CHANGE}, { 585 + ERRHRD, ERRgeneral, NT_STATUS_NOT_FOUND}, { 586 + ERRHRD, ERRgeneral, NT_STATUS_NOT_TINY_STREAM}, { 587 + ERRHRD, ERRgeneral, NT_STATUS_RECOVERY_FAILURE}, { 588 + ERRHRD, ERRgeneral, NT_STATUS_STACK_OVERFLOW_READ}, { 589 + ERRHRD, ERRgeneral, NT_STATUS_FAIL_CHECK}, { 590 + ERRHRD, ERRgeneral, NT_STATUS_DUPLICATE_OBJECTID}, { 591 + ERRHRD, ERRgeneral, NT_STATUS_OBJECTID_EXISTS}, { 592 + ERRHRD, ERRgeneral, NT_STATUS_CONVERT_TO_LARGE}, { 593 + ERRHRD, ERRgeneral, NT_STATUS_RETRY}, { 594 + ERRHRD, ERRgeneral, NT_STATUS_FOUND_OUT_OF_SCOPE}, { 595 + ERRHRD, ERRgeneral, NT_STATUS_ALLOCATE_BUCKET}, { 596 + ERRHRD, ERRgeneral, NT_STATUS_PROPSET_NOT_FOUND}, { 597 + ERRHRD, ERRgeneral, NT_STATUS_MARSHALL_OVERFLOW}, { 598 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_VARIANT}, { 599 + ERRHRD, ERRgeneral, NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND}, { 600 + ERRDOS, ERRnoaccess, NT_STATUS_ACCOUNT_LOCKED_OUT}, { 601 + ERRDOS, ERRbadfid, NT_STATUS_HANDLE_NOT_CLOSABLE}, { 602 + ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_REFUSED}, { 603 + ERRHRD, ERRgeneral, NT_STATUS_GRACEFUL_DISCONNECT}, { 604 + ERRHRD, ERRgeneral, NT_STATUS_ADDRESS_ALREADY_ASSOCIATED}, { 605 + ERRHRD, ERRgeneral, NT_STATUS_ADDRESS_NOT_ASSOCIATED}, { 606 + ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_INVALID}, { 607 + ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_ACTIVE}, { 608 + ERRHRD, ERRgeneral, NT_STATUS_NETWORK_UNREACHABLE}, { 609 + ERRHRD, ERRgeneral, NT_STATUS_HOST_UNREACHABLE}, { 610 + ERRHRD, ERRgeneral, NT_STATUS_PROTOCOL_UNREACHABLE}, { 611 + ERRHRD, ERRgeneral, NT_STATUS_PORT_UNREACHABLE}, { 612 + ERRHRD, ERRgeneral, NT_STATUS_REQUEST_ABORTED}, { 613 + ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_ABORTED}, { 614 + ERRHRD, ERRgeneral, NT_STATUS_BAD_COMPRESSION_BUFFER}, { 615 + ERRHRD, ERRgeneral, NT_STATUS_USER_MAPPED_FILE}, { 616 + ERRHRD, ERRgeneral, NT_STATUS_AUDIT_FAILED}, { 617 + ERRHRD, ERRgeneral, NT_STATUS_TIMER_RESOLUTION_NOT_SET}, { 618 + ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_COUNT_LIMIT}, { 619 + ERRHRD, ERRgeneral, NT_STATUS_LOGIN_TIME_RESTRICTION}, { 620 + ERRHRD, ERRgeneral, NT_STATUS_LOGIN_WKSTA_RESTRICTION}, { 621 + ERRDOS, 193, NT_STATUS_IMAGE_MP_UP_MISMATCH}, { 622 + ERRHRD, ERRgeneral, NT_STATUS_INSUFFICIENT_LOGON_INFO}, { 623 + ERRHRD, ERRgeneral, NT_STATUS_BAD_DLL_ENTRYPOINT}, { 624 + ERRHRD, ERRgeneral, NT_STATUS_BAD_SERVICE_ENTRYPOINT}, { 625 + ERRHRD, ERRgeneral, NT_STATUS_LPC_REPLY_LOST}, { 626 + ERRHRD, ERRgeneral, NT_STATUS_IP_ADDRESS_CONFLICT1}, { 627 + ERRHRD, ERRgeneral, NT_STATUS_IP_ADDRESS_CONFLICT2}, { 628 + ERRHRD, ERRgeneral, NT_STATUS_REGISTRY_QUOTA_LIMIT}, { 629 + ERRSRV, 3, NT_STATUS_PATH_NOT_COVERED}, { 630 + ERRHRD, ERRgeneral, NT_STATUS_NO_CALLBACK_ACTIVE}, { 631 + ERRHRD, ERRgeneral, NT_STATUS_LICENSE_QUOTA_EXCEEDED}, { 632 + ERRHRD, ERRgeneral, NT_STATUS_PWD_TOO_SHORT}, { 633 + ERRHRD, ERRgeneral, NT_STATUS_PWD_TOO_RECENT}, { 634 + ERRHRD, ERRgeneral, NT_STATUS_PWD_HISTORY_CONFLICT}, { 635 + ERRHRD, ERRgeneral, NT_STATUS_PLUGPLAY_NO_DEVICE}, { 636 + ERRHRD, ERRgeneral, NT_STATUS_UNSUPPORTED_COMPRESSION}, { 637 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_HW_PROFILE}, { 638 + ERRHRD, ERRgeneral, NT_STATUS_INVALID_PLUGPLAY_DEVICE_PATH}, { 639 + ERRDOS, 182, NT_STATUS_DRIVER_ORDINAL_NOT_FOUND}, { 640 + ERRDOS, 127, NT_STATUS_DRIVER_ENTRYPOINT_NOT_FOUND}, { 641 + ERRDOS, 288, NT_STATUS_RESOURCE_NOT_OWNED}, { 642 + ERRDOS, ErrTooManyLinks, NT_STATUS_TOO_MANY_LINKS}, { 643 + ERRHRD, ERRgeneral, NT_STATUS_QUOTA_LIST_INCONSISTENT}, { 644 + ERRHRD, ERRgeneral, NT_STATUS_FILE_IS_OFFLINE}, { 645 + ERRDOS, 21, NT_STATUS_VOLUME_DISMOUNTED}, { 646 + ERRDOS, 161, NT_STATUS_DIRECTORY_IS_A_REPARSE_POINT}, { 647 + ERRDOS, ERRnoaccess, NT_STATUS_ENCRYPTION_FAILED}, { 648 + ERRDOS, ERRnoaccess, NT_STATUS_DECRYPTION_FAILED}, { 649 + ERRHRD, ERRgeneral, NT_STATUS_RANGE_NOT_FOUND}, { 650 + ERRDOS, ERRnoaccess, NT_STATUS_NO_RECOVERY_POLICY}, { 651 + ERRDOS, ERRnoaccess, NT_STATUS_NO_EFS}, { 652 + ERRDOS, ERRnoaccess, NT_STATUS_WRONG_EFS}, { 653 + ERRDOS, ERRnoaccess, NT_STATUS_NO_USER_KEYS}, { 654 + ERRDOS, ERRbadfunc, NT_STATUS_VOLUME_NOT_UPGRADED}, { 655 + ERRDOS, ERRsymlink, NT_STATUS_STOPPED_ON_SYMLINK}, { 656 + ERRDOS, ERRunknownlevel, NT_STATUS_OS2_INVALID_LEVEL}, { 657 + 0, 0, 0 } 658 + }; 659 + 660 + /***************************************************************************** 661 + Print an error message from the status code 662 + *****************************************************************************/ 663 + static void 664 + cifs_print_status(__u32 status_code) 665 + { 666 + int idx = 0; 667 + 668 + while (nt_errs[idx].nt_errstr != NULL) { 669 + if (nt_errs[idx].nt_errcode == status_code) { 670 + pr_notice("Status code returned 0x%08x %s\n", 671 + status_code, nt_errs[idx].nt_errstr); 672 + return; 673 + } 674 + idx++; 675 + } 676 + return; 677 + } 678 + 679 + 680 + static void 681 + ntstatus_to_dos(__u32 ntstatus, __u8 *eclass, __u16 *ecode) 682 + { 683 + int i; 684 + if (ntstatus == 0) { 685 + *eclass = 0; 686 + *ecode = 0; 687 + return; 688 + } 689 + for (i = 0; ntstatus_to_dos_map[i].ntstatus; i++) { 690 + if (ntstatus == ntstatus_to_dos_map[i].ntstatus) { 691 + *eclass = ntstatus_to_dos_map[i].dos_class; 692 + *ecode = ntstatus_to_dos_map[i].dos_code; 693 + return; 694 + } 695 + } 696 + *eclass = ERRHRD; 697 + *ecode = ERRgeneral; 698 + } 699 + 700 + int 701 + map_smb_to_linux_error(char *buf, bool logErr) 702 + { 703 + struct smb_hdr *smb = (struct smb_hdr *)buf; 704 + unsigned int i; 705 + int rc = -EIO; /* if transport error smb error may not be set */ 706 + __u8 smberrclass; 707 + __u16 smberrcode; 708 + 709 + /* BB if NT Status codes - map NT BB */ 710 + 711 + /* old style smb error codes */ 712 + if (smb->Status.CifsError == 0) 713 + return 0; 714 + 715 + if (smb->Flags2 & SMBFLG2_ERR_STATUS) { 716 + /* translate the newer STATUS codes to old style SMB errors 717 + * and then to POSIX errors */ 718 + __u32 err = le32_to_cpu(smb->Status.CifsError); 719 + if (logErr && (err != (NT_STATUS_MORE_PROCESSING_REQUIRED))) 720 + cifs_print_status(err); 721 + else if (cifsFYI & CIFS_RC) 722 + cifs_print_status(err); 723 + ntstatus_to_dos(err, &smberrclass, &smberrcode); 724 + } else { 725 + smberrclass = smb->Status.DosError.ErrorClass; 726 + smberrcode = le16_to_cpu(smb->Status.DosError.Error); 727 + } 728 + 729 + /* old style errors */ 730 + 731 + /* DOS class smb error codes - map DOS */ 732 + if (smberrclass == ERRDOS) { 733 + /* 1 byte field no need to byte reverse */ 734 + for (i = 0; 735 + i < 736 + sizeof(mapping_table_ERRDOS) / 737 + sizeof(struct smb_to_posix_error); i++) { 738 + if (mapping_table_ERRDOS[i].smb_err == 0) 739 + break; 740 + else if (mapping_table_ERRDOS[i].smb_err == 741 + smberrcode) { 742 + rc = mapping_table_ERRDOS[i].posix_code; 743 + break; 744 + } 745 + /* else try next error mapping one to see if match */ 746 + } 747 + } else if (smberrclass == ERRSRV) { 748 + /* server class of error codes */ 749 + for (i = 0; 750 + i < 751 + sizeof(mapping_table_ERRSRV) / 752 + sizeof(struct smb_to_posix_error); i++) { 753 + if (mapping_table_ERRSRV[i].smb_err == 0) 754 + break; 755 + else if (mapping_table_ERRSRV[i].smb_err == 756 + smberrcode) { 757 + rc = mapping_table_ERRSRV[i].posix_code; 758 + break; 759 + } 760 + /* else try next error mapping to see if match */ 761 + } 762 + } 763 + /* else ERRHRD class errors or junk - return EIO */ 764 + 765 + /* special cases for NT status codes which cannot be translated to DOS codes */ 766 + if (smb->Flags2 & SMBFLG2_ERR_STATUS) { 767 + __u32 err = le32_to_cpu(smb->Status.CifsError); 768 + if (err == (NT_STATUS_NOT_A_REPARSE_POINT)) 769 + rc = -ENODATA; 770 + else if (err == (NT_STATUS_PRIVILEGE_NOT_HELD)) 771 + rc = -EPERM; 772 + } 773 + 774 + cifs_dbg(FYI, "Mapping smb error code 0x%x to POSIX err %d\n", 775 + le32_to_cpu(smb->Status.CifsError), rc); 776 + 777 + /* generic corrective action e.g. reconnect SMB session on 778 + * ERRbaduid could be added */ 779 + 780 + if (rc == -EIO) 781 + smb_EIO2(smb_eio_trace_smb1_received_error, 782 + le32_to_cpu(smb->Status.CifsError), 783 + le16_to_cpu(smb->Flags2)); 784 + return rc; 785 + } 786 + 787 + int 788 + map_and_check_smb_error(struct TCP_Server_Info *server, 789 + struct mid_q_entry *mid, bool logErr) 790 + { 791 + int rc; 792 + struct smb_hdr *smb = (struct smb_hdr *)mid->resp_buf; 793 + 794 + rc = map_smb_to_linux_error((char *)smb, logErr); 795 + if (rc == -EACCES && !(smb->Flags2 & SMBFLG2_ERR_STATUS)) { 796 + /* possible ERRBaduid */ 797 + __u8 class = smb->Status.DosError.ErrorClass; 798 + __u16 code = le16_to_cpu(smb->Status.DosError.Error); 799 + 800 + /* switch can be used to handle different errors */ 801 + if (class == ERRSRV && code == ERRbaduid) { 802 + cifs_dbg(FYI, "Server returned 0x%x, reconnecting session...\n", 803 + code); 804 + cifs_signal_cifsd_for_reconnect(server, false); 805 + } 806 + } 807 + 808 + return rc; 809 + }
+189
fs/smb/client/smb1misc.c
··· 1 + // SPDX-License-Identifier: LGPL-2.1 2 + /* 3 + * 4 + * Copyright (C) International Business Machines Corp., 2002,2008 5 + * Author(s): Steve French (sfrench@us.ibm.com) 6 + * 7 + */ 8 + 9 + #include "smb1proto.h" 10 + #include "smberr.h" 11 + #include "nterr.h" 12 + #include "cifs_debug.h" 13 + 14 + /* NB: MID can not be set if treeCon not passed in, in that 15 + case it is responsibility of caller to set the mid */ 16 + unsigned int 17 + header_assemble(struct smb_hdr *buffer, char smb_command, 18 + const struct cifs_tcon *treeCon, int word_count 19 + /* length of fixed section (word count) in two byte units */) 20 + { 21 + unsigned int in_len; 22 + char *temp = (char *) buffer; 23 + 24 + memset(temp, 0, 256); /* bigger than MAX_CIFS_HDR_SIZE */ 25 + 26 + in_len = (2 * word_count) + sizeof(struct smb_hdr) + 27 + 2 /* for bcc field itself */; 28 + 29 + buffer->Protocol[0] = 0xFF; 30 + buffer->Protocol[1] = 'S'; 31 + buffer->Protocol[2] = 'M'; 32 + buffer->Protocol[3] = 'B'; 33 + buffer->Command = smb_command; 34 + buffer->Flags = 0x00; /* case sensitive */ 35 + buffer->Flags2 = SMBFLG2_KNOWS_LONG_NAMES; 36 + buffer->Pid = cpu_to_le16((__u16)current->tgid); 37 + buffer->PidHigh = cpu_to_le16((__u16)(current->tgid >> 16)); 38 + if (treeCon) { 39 + buffer->Tid = treeCon->tid; 40 + if (treeCon->ses) { 41 + if (treeCon->ses->capabilities & CAP_UNICODE) 42 + buffer->Flags2 |= SMBFLG2_UNICODE; 43 + if (treeCon->ses->capabilities & CAP_STATUS32) 44 + buffer->Flags2 |= SMBFLG2_ERR_STATUS; 45 + 46 + /* Uid is not converted */ 47 + buffer->Uid = treeCon->ses->Suid; 48 + if (treeCon->ses->server) 49 + buffer->Mid = get_next_mid(treeCon->ses->server); 50 + } 51 + if (treeCon->Flags & SMB_SHARE_IS_IN_DFS) 52 + buffer->Flags2 |= SMBFLG2_DFS; 53 + if (treeCon->nocase) 54 + buffer->Flags |= SMBFLG_CASELESS; 55 + if ((treeCon->ses) && (treeCon->ses->server)) 56 + if (treeCon->ses->server->sign) 57 + buffer->Flags2 |= SMBFLG2_SECURITY_SIGNATURE; 58 + } 59 + 60 + /* endian conversion of flags is now done just before sending */ 61 + buffer->WordCount = (char) word_count; 62 + return in_len; 63 + } 64 + 65 + bool 66 + is_valid_oplock_break(char *buffer, struct TCP_Server_Info *srv) 67 + { 68 + struct smb_hdr *buf = (struct smb_hdr *)buffer; 69 + struct smb_com_lock_req *pSMB = (struct smb_com_lock_req *)buf; 70 + struct TCP_Server_Info *pserver; 71 + struct cifs_ses *ses; 72 + struct cifs_tcon *tcon; 73 + struct cifsInodeInfo *pCifsInode; 74 + struct cifsFileInfo *netfile; 75 + 76 + cifs_dbg(FYI, "Checking for oplock break or dnotify response\n"); 77 + if ((pSMB->hdr.Command == SMB_COM_NT_TRANSACT) && 78 + (pSMB->hdr.Flags & SMBFLG_RESPONSE)) { 79 + struct smb_com_transaction_change_notify_rsp *pSMBr = 80 + (struct smb_com_transaction_change_notify_rsp *)buf; 81 + struct file_notify_information *pnotify; 82 + __u32 data_offset = 0; 83 + size_t len = srv->total_read - srv->pdu_size; 84 + 85 + if (get_bcc(buf) > sizeof(struct file_notify_information)) { 86 + data_offset = le32_to_cpu(pSMBr->DataOffset); 87 + 88 + if (data_offset > 89 + len - sizeof(struct file_notify_information)) { 90 + cifs_dbg(FYI, "Invalid data_offset %u\n", 91 + data_offset); 92 + return true; 93 + } 94 + pnotify = (struct file_notify_information *) 95 + ((char *)&pSMBr->hdr.Protocol + data_offset); 96 + cifs_dbg(FYI, "dnotify on %s Action: 0x%x\n", 97 + pnotify->FileName, pnotify->Action); 98 + /* cifs_dump_mem("Rcvd notify Data: ",buf, 99 + sizeof(struct smb_hdr)+60); */ 100 + return true; 101 + } 102 + if (pSMBr->hdr.Status.CifsError) { 103 + cifs_dbg(FYI, "notify err 0x%x\n", 104 + pSMBr->hdr.Status.CifsError); 105 + return true; 106 + } 107 + return false; 108 + } 109 + if (pSMB->hdr.Command != SMB_COM_LOCKING_ANDX) 110 + return false; 111 + if (pSMB->hdr.Flags & SMBFLG_RESPONSE) { 112 + /* no sense logging error on invalid handle on oplock 113 + break - harmless race between close request and oplock 114 + break response is expected from time to time writing out 115 + large dirty files cached on the client */ 116 + if ((NT_STATUS_INVALID_HANDLE) == 117 + le32_to_cpu(pSMB->hdr.Status.CifsError)) { 118 + cifs_dbg(FYI, "Invalid handle on oplock break\n"); 119 + return true; 120 + } else if (ERRbadfid == 121 + le16_to_cpu(pSMB->hdr.Status.DosError.Error)) { 122 + return true; 123 + } else { 124 + return false; /* on valid oplock brk we get "request" */ 125 + } 126 + } 127 + if (pSMB->hdr.WordCount != 8) 128 + return false; 129 + 130 + cifs_dbg(FYI, "oplock type 0x%x level 0x%x\n", 131 + pSMB->LockType, pSMB->OplockLevel); 132 + if (!(pSMB->LockType & LOCKING_ANDX_OPLOCK_RELEASE)) 133 + return false; 134 + 135 + /* If server is a channel, select the primary channel */ 136 + pserver = SERVER_IS_CHAN(srv) ? srv->primary_server : srv; 137 + 138 + /* look up tcon based on tid & uid */ 139 + spin_lock(&cifs_tcp_ses_lock); 140 + list_for_each_entry(ses, &pserver->smb_ses_list, smb_ses_list) { 141 + if (cifs_ses_exiting(ses)) 142 + continue; 143 + list_for_each_entry(tcon, &ses->tcon_list, tcon_list) { 144 + if (tcon->tid != buf->Tid) 145 + continue; 146 + 147 + cifs_stats_inc(&tcon->stats.cifs_stats.num_oplock_brks); 148 + spin_lock(&tcon->open_file_lock); 149 + list_for_each_entry(netfile, &tcon->openFileList, tlist) { 150 + if (pSMB->Fid != netfile->fid.netfid) 151 + continue; 152 + 153 + cifs_dbg(FYI, "file id match, oplock break\n"); 154 + pCifsInode = CIFS_I(d_inode(netfile->dentry)); 155 + 156 + set_bit(CIFS_INODE_PENDING_OPLOCK_BREAK, 157 + &pCifsInode->flags); 158 + 159 + netfile->oplock_epoch = 0; 160 + netfile->oplock_level = pSMB->OplockLevel; 161 + netfile->oplock_break_cancelled = false; 162 + cifs_queue_oplock_break(netfile); 163 + 164 + spin_unlock(&tcon->open_file_lock); 165 + spin_unlock(&cifs_tcp_ses_lock); 166 + return true; 167 + } 168 + spin_unlock(&tcon->open_file_lock); 169 + spin_unlock(&cifs_tcp_ses_lock); 170 + cifs_dbg(FYI, "No matching file for oplock break\n"); 171 + return true; 172 + } 173 + } 174 + spin_unlock(&cifs_tcp_ses_lock); 175 + cifs_dbg(FYI, "Can not process oplock break for non-existent connection\n"); 176 + return true; 177 + } 178 + 179 + /* 180 + * calculate the size of the SMB message based on the fixed header 181 + * portion, the number of word parameters and the data portion of the message 182 + */ 183 + unsigned int 184 + smbCalcSize(void *buf) 185 + { 186 + struct smb_hdr *ptr = buf; 187 + return (sizeof(struct smb_hdr) + (2 * ptr->WordCount) + 188 + 2 /* size of the bcc field */ + get_bcc(ptr)); 189 + }
+107 -172
fs/smb/client/smb1ops.c
··· 12 12 #include "cifsglob.h" 13 13 #include "cifsproto.h" 14 14 #include "cifs_debug.h" 15 - #include "cifspdu.h" 16 15 #include "cifs_unicode.h" 17 16 #include "fs_context.h" 18 17 #include "nterr.h" 19 18 #include "smberr.h" 20 19 #include "reparse.h" 20 + 21 + void reset_cifs_unix_caps(unsigned int xid, struct cifs_tcon *tcon, 22 + struct cifs_sb_info *cifs_sb, struct smb3_fs_context *ctx) 23 + { 24 + /* 25 + * If we are reconnecting then should we check to see if 26 + * any requested capabilities changed locally e.g. via 27 + * remount but we can not do much about it here 28 + * if they have (even if we could detect it by the following) 29 + * Perhaps we could add a backpointer to array of sb from tcon 30 + * or if we change to make all sb to same share the same 31 + * sb as NFS - then we only have one backpointer to sb. 32 + * What if we wanted to mount the server share twice once with 33 + * and once without posixacls or posix paths? 34 + */ 35 + __u64 saved_cap = le64_to_cpu(tcon->fsUnixInfo.Capability); 36 + 37 + if (ctx && ctx->no_linux_ext) { 38 + tcon->fsUnixInfo.Capability = 0; 39 + tcon->unix_ext = 0; /* Unix Extensions disabled */ 40 + cifs_dbg(FYI, "Linux protocol extensions disabled\n"); 41 + return; 42 + } else if (ctx) 43 + tcon->unix_ext = 1; /* Unix Extensions supported */ 44 + 45 + if (!tcon->unix_ext) { 46 + cifs_dbg(FYI, "Unix extensions disabled so not set on reconnect\n"); 47 + return; 48 + } 49 + 50 + if (!CIFSSMBQFSUnixInfo(xid, tcon)) { 51 + __u64 cap = le64_to_cpu(tcon->fsUnixInfo.Capability); 52 + 53 + cifs_dbg(FYI, "unix caps which server supports %lld\n", cap); 54 + /* 55 + * check for reconnect case in which we do not 56 + * want to change the mount behavior if we can avoid it 57 + */ 58 + if (ctx == NULL) { 59 + /* 60 + * turn off POSIX ACL and PATHNAMES if not set 61 + * originally at mount time 62 + */ 63 + if ((saved_cap & CIFS_UNIX_POSIX_ACL_CAP) == 0) 64 + cap &= ~CIFS_UNIX_POSIX_ACL_CAP; 65 + if ((saved_cap & CIFS_UNIX_POSIX_PATHNAMES_CAP) == 0) { 66 + if (cap & CIFS_UNIX_POSIX_PATHNAMES_CAP) 67 + cifs_dbg(VFS, "POSIXPATH support change\n"); 68 + cap &= ~CIFS_UNIX_POSIX_PATHNAMES_CAP; 69 + } else if ((cap & CIFS_UNIX_POSIX_PATHNAMES_CAP) == 0) { 70 + cifs_dbg(VFS, "possible reconnect error\n"); 71 + cifs_dbg(VFS, "server disabled POSIX path support\n"); 72 + } 73 + } 74 + 75 + if (cap & CIFS_UNIX_TRANSPORT_ENCRYPTION_MANDATORY_CAP) 76 + cifs_dbg(VFS, "per-share encryption not supported yet\n"); 77 + 78 + cap &= CIFS_UNIX_CAP_MASK; 79 + if (ctx && ctx->no_psx_acl) 80 + cap &= ~CIFS_UNIX_POSIX_ACL_CAP; 81 + else if (CIFS_UNIX_POSIX_ACL_CAP & cap) { 82 + cifs_dbg(FYI, "negotiated posix acl support\n"); 83 + if (cifs_sb) 84 + cifs_sb->mnt_cifs_flags |= 85 + CIFS_MOUNT_POSIXACL; 86 + } 87 + 88 + if (ctx && ctx->posix_paths == 0) 89 + cap &= ~CIFS_UNIX_POSIX_PATHNAMES_CAP; 90 + else if (cap & CIFS_UNIX_POSIX_PATHNAMES_CAP) { 91 + cifs_dbg(FYI, "negotiate posix pathnames\n"); 92 + if (cifs_sb) 93 + cifs_sb->mnt_cifs_flags |= 94 + CIFS_MOUNT_POSIX_PATHS; 95 + } 96 + 97 + cifs_dbg(FYI, "Negotiate caps 0x%x\n", (int)cap); 98 + #ifdef CONFIG_CIFS_DEBUG2 99 + if (cap & CIFS_UNIX_FCNTL_CAP) 100 + cifs_dbg(FYI, "FCNTL cap\n"); 101 + if (cap & CIFS_UNIX_EXTATTR_CAP) 102 + cifs_dbg(FYI, "EXTATTR cap\n"); 103 + if (cap & CIFS_UNIX_POSIX_PATHNAMES_CAP) 104 + cifs_dbg(FYI, "POSIX path cap\n"); 105 + if (cap & CIFS_UNIX_XATTR_CAP) 106 + cifs_dbg(FYI, "XATTR cap\n"); 107 + if (cap & CIFS_UNIX_POSIX_ACL_CAP) 108 + cifs_dbg(FYI, "POSIX ACL cap\n"); 109 + if (cap & CIFS_UNIX_LARGE_READ_CAP) 110 + cifs_dbg(FYI, "very large read cap\n"); 111 + if (cap & CIFS_UNIX_LARGE_WRITE_CAP) 112 + cifs_dbg(FYI, "very large write cap\n"); 113 + if (cap & CIFS_UNIX_TRANSPORT_ENCRYPTION_CAP) 114 + cifs_dbg(FYI, "transport encryption cap\n"); 115 + if (cap & CIFS_UNIX_TRANSPORT_ENCRYPTION_MANDATORY_CAP) 116 + cifs_dbg(FYI, "mandatory transport encryption cap\n"); 117 + #endif /* CIFS_DEBUG2 */ 118 + if (CIFSSMBSetFSUnixInfo(xid, tcon, cap)) { 119 + if (ctx == NULL) 120 + cifs_dbg(FYI, "resetting capabilities failed\n"); 121 + else 122 + cifs_dbg(VFS, "Negotiating Unix capabilities with the server failed. Consider mounting with the Unix Extensions disabled if problems are found by specifying the nounix mount option.\n"); 123 + 124 + } 125 + } 126 + } 21 127 22 128 /* 23 129 * An NT cancel request header looks just like the original request except: ··· 390 284 return mid; 391 285 } 392 286 393 - /* 394 - return codes: 395 - 0 not a transact2, or all data present 396 - >0 transact2 with that much data missing 397 - -EINVAL invalid transact2 398 - */ 399 - static int 400 - check2ndT2(char *buf) 401 - { 402 - struct smb_hdr *pSMB = (struct smb_hdr *)buf; 403 - struct smb_t2_rsp *pSMBt; 404 - int remaining; 405 - __u16 total_data_size, data_in_this_rsp; 406 - 407 - if (pSMB->Command != SMB_COM_TRANSACTION2) 408 - return 0; 409 - 410 - /* check for plausible wct, bcc and t2 data and parm sizes */ 411 - /* check for parm and data offset going beyond end of smb */ 412 - if (pSMB->WordCount != 10) { /* coalesce_t2 depends on this */ 413 - cifs_dbg(FYI, "Invalid transact2 word count\n"); 414 - return -EINVAL; 415 - } 416 - 417 - pSMBt = (struct smb_t2_rsp *)pSMB; 418 - 419 - total_data_size = get_unaligned_le16(&pSMBt->t2_rsp.TotalDataCount); 420 - data_in_this_rsp = get_unaligned_le16(&pSMBt->t2_rsp.DataCount); 421 - 422 - if (total_data_size == data_in_this_rsp) 423 - return 0; 424 - else if (total_data_size < data_in_this_rsp) { 425 - cifs_dbg(FYI, "total data %d smaller than data in frame %d\n", 426 - total_data_size, data_in_this_rsp); 427 - return -EINVAL; 428 - } 429 - 430 - remaining = total_data_size - data_in_this_rsp; 431 - 432 - cifs_dbg(FYI, "missing %d bytes from transact2, check next response\n", 433 - remaining); 434 - if (total_data_size > CIFSMaxBufSize) { 435 - cifs_dbg(VFS, "TotalDataSize %d is over maximum buffer %d\n", 436 - total_data_size, CIFSMaxBufSize); 437 - return -EINVAL; 438 - } 439 - return remaining; 440 - } 441 - 442 - static int 443 - coalesce_t2(char *second_buf, struct smb_hdr *target_hdr, unsigned int *pdu_len) 444 - { 445 - struct smb_t2_rsp *pSMBs = (struct smb_t2_rsp *)second_buf; 446 - struct smb_t2_rsp *pSMBt = (struct smb_t2_rsp *)target_hdr; 447 - char *data_area_of_tgt; 448 - char *data_area_of_src; 449 - int remaining; 450 - unsigned int byte_count, total_in_tgt; 451 - __u16 tgt_total_cnt, src_total_cnt, total_in_src; 452 - 453 - src_total_cnt = get_unaligned_le16(&pSMBs->t2_rsp.TotalDataCount); 454 - tgt_total_cnt = get_unaligned_le16(&pSMBt->t2_rsp.TotalDataCount); 455 - 456 - if (tgt_total_cnt != src_total_cnt) 457 - cifs_dbg(FYI, "total data count of primary and secondary t2 differ source=%hu target=%hu\n", 458 - src_total_cnt, tgt_total_cnt); 459 - 460 - total_in_tgt = get_unaligned_le16(&pSMBt->t2_rsp.DataCount); 461 - 462 - remaining = tgt_total_cnt - total_in_tgt; 463 - 464 - if (remaining < 0) { 465 - cifs_dbg(FYI, "Server sent too much data. tgt_total_cnt=%hu total_in_tgt=%u\n", 466 - tgt_total_cnt, total_in_tgt); 467 - return -EPROTO; 468 - } 469 - 470 - if (remaining == 0) { 471 - /* nothing to do, ignore */ 472 - cifs_dbg(FYI, "no more data remains\n"); 473 - return 0; 474 - } 475 - 476 - total_in_src = get_unaligned_le16(&pSMBs->t2_rsp.DataCount); 477 - if (remaining < total_in_src) 478 - cifs_dbg(FYI, "transact2 2nd response contains too much data\n"); 479 - 480 - /* find end of first SMB data area */ 481 - data_area_of_tgt = (char *)&pSMBt->hdr.Protocol + 482 - get_unaligned_le16(&pSMBt->t2_rsp.DataOffset); 483 - 484 - /* validate target area */ 485 - data_area_of_src = (char *)&pSMBs->hdr.Protocol + 486 - get_unaligned_le16(&pSMBs->t2_rsp.DataOffset); 487 - 488 - data_area_of_tgt += total_in_tgt; 489 - 490 - total_in_tgt += total_in_src; 491 - /* is the result too big for the field? */ 492 - if (total_in_tgt > USHRT_MAX) { 493 - cifs_dbg(FYI, "coalesced DataCount too large (%u)\n", 494 - total_in_tgt); 495 - return -EPROTO; 496 - } 497 - put_unaligned_le16(total_in_tgt, &pSMBt->t2_rsp.DataCount); 498 - 499 - /* fix up the BCC */ 500 - byte_count = get_bcc(target_hdr); 501 - byte_count += total_in_src; 502 - /* is the result too big for the field? */ 503 - if (byte_count > USHRT_MAX) { 504 - cifs_dbg(FYI, "coalesced BCC too large (%u)\n", byte_count); 505 - return -EPROTO; 506 - } 507 - put_bcc(byte_count, target_hdr); 508 - 509 - byte_count = *pdu_len; 510 - byte_count += total_in_src; 511 - /* don't allow buffer to overflow */ 512 - if (byte_count > CIFSMaxBufSize + MAX_CIFS_HDR_SIZE) { 513 - cifs_dbg(FYI, "coalesced BCC exceeds buffer size (%u)\n", 514 - byte_count); 515 - return -ENOBUFS; 516 - } 517 - *pdu_len = byte_count; 518 - 519 - /* copy second buffer into end of first buffer */ 520 - memcpy(data_area_of_tgt, data_area_of_src, total_in_src); 521 - 522 - if (remaining != total_in_src) { 523 - /* more responses to go */ 524 - cifs_dbg(FYI, "waiting for more secondary responses\n"); 525 - return 1; 526 - } 527 - 528 - /* we are done */ 529 - cifs_dbg(FYI, "found the last secondary response\n"); 530 - return 0; 531 - } 532 - 533 287 static void 534 288 cifs_downgrade_oplock(struct TCP_Server_Info *server, 535 289 struct cifsInodeInfo *cinode, __u32 oplock, 536 290 __u16 epoch, bool *purge_cache) 537 291 { 538 292 cifs_set_oplock_level(cinode, oplock); 539 - } 540 - 541 - static bool 542 - cifs_check_trans2(struct mid_q_entry *mid, struct TCP_Server_Info *server, 543 - char *buf, int malformed) 544 - { 545 - if (malformed) 546 - return false; 547 - if (check2ndT2(buf) <= 0) 548 - return false; 549 - mid->multiRsp = true; 550 - if (mid->resp_buf) { 551 - /* merge response - fix up 1st*/ 552 - malformed = coalesce_t2(buf, mid->resp_buf, &mid->response_pdu_len); 553 - if (malformed > 0) 554 - return true; 555 - /* All parts received or packet is malformed. */ 556 - mid->multiEnd = true; 557 - dequeue_mid(server, mid, malformed); 558 - return true; 559 - } 560 - if (!server->large_buf) { 561 - /*FIXME: switch to already allocated largebuf?*/ 562 - cifs_dbg(VFS, "1st trans2 resp needs bigbuf\n"); 563 - } else { 564 - /* Have first buffer */ 565 - mid->resp_buf = buf; 566 - mid->large_buf = true; 567 - server->bigbuf = NULL; 568 - } 569 - return true; 570 293 } 571 294 572 295 static bool
+2354
fs/smb/client/smb1pdu.h
··· 1 + /* SPDX-License-Identifier: LGPL-2.1 */ 2 + /* 3 + * 4 + * Copyright (c) International Business Machines Corp., 2002,2009 5 + * Author(s): Steve French (sfrench@us.ibm.com) 6 + * 7 + */ 8 + 9 + #ifndef _SMB1PDU_H 10 + #define _SMB1PDU_H 11 + 12 + #include "../common/smb1pdu.h" 13 + 14 + #define CIFS_PROT 0 15 + #define POSIX_PROT (CIFS_PROT+1) 16 + #define BAD_PROT 0xFFFF 17 + 18 + /* SMB command codes: 19 + * See MS-CIFS 2.2.2.1 20 + * Note some commands have minimal (wct=0,bcc=0), or uninteresting, responses 21 + * (ie which include no useful data other than the SMB error code itself). 22 + * This can allow us to avoid response buffer allocations and copy in some cases 23 + */ 24 + #define SMB_COM_CREATE_DIRECTORY 0x00 /* trivial response */ 25 + #define SMB_COM_DELETE_DIRECTORY 0x01 /* trivial response */ 26 + #define SMB_COM_CLOSE 0x04 /* triv req/rsp, timestamp ignored */ 27 + #define SMB_COM_FLUSH 0x05 /* triv req/rsp */ 28 + #define SMB_COM_DELETE 0x06 /* trivial response */ 29 + #define SMB_COM_RENAME 0x07 /* trivial response */ 30 + #define SMB_COM_QUERY_INFORMATION 0x08 /* aka getattr */ 31 + #define SMB_COM_SETATTR 0x09 /* trivial response */ 32 + #define SMB_COM_LOCKING_ANDX 0x24 /* trivial response */ 33 + #define SMB_COM_COPY 0x29 /* trivial rsp, fail filename ignrd*/ 34 + #define SMB_COM_ECHO 0x2B /* echo request */ 35 + #define SMB_COM_OPEN_ANDX 0x2D /* Legacy open for old servers */ 36 + #define SMB_COM_READ_ANDX 0x2E 37 + #define SMB_COM_WRITE_ANDX 0x2F 38 + #define SMB_COM_TRANSACTION2 0x32 39 + #define SMB_COM_TRANSACTION2_SECONDARY 0x33 40 + #define SMB_COM_FIND_CLOSE2 0x34 /* trivial response */ 41 + #define SMB_COM_TREE_DISCONNECT 0x71 /* trivial response */ 42 + #define SMB_COM_NEGOTIATE 0x72 43 + #define SMB_COM_SESSION_SETUP_ANDX 0x73 44 + #define SMB_COM_LOGOFF_ANDX 0x74 /* trivial response */ 45 + #define SMB_COM_TREE_CONNECT_ANDX 0x75 46 + #define SMB_COM_NT_TRANSACT 0xA0 47 + #define SMB_COM_NT_TRANSACT_SECONDARY 0xA1 48 + #define SMB_COM_NT_CREATE_ANDX 0xA2 49 + #define SMB_COM_NT_CANCEL 0xA4 /* no response */ 50 + #define SMB_COM_NT_RENAME 0xA5 /* trivial response */ 51 + 52 + /* Transact2 subcommand codes */ 53 + #define TRANS2_OPEN 0x00 54 + #define TRANS2_FIND_FIRST 0x01 55 + #define TRANS2_FIND_NEXT 0x02 56 + #define TRANS2_QUERY_FS_INFORMATION 0x03 57 + #define TRANS2_SET_FS_INFORMATION 0x04 58 + #define TRANS2_QUERY_PATH_INFORMATION 0x05 59 + #define TRANS2_SET_PATH_INFORMATION 0x06 60 + #define TRANS2_QUERY_FILE_INFORMATION 0x07 61 + #define TRANS2_SET_FILE_INFORMATION 0x08 62 + #define TRANS2_GET_DFS_REFERRAL 0x10 63 + #define TRANS2_REPORT_DFS_INCOSISTENCY 0x11 64 + 65 + /* SMB Transact (Named Pipe) subcommand codes */ 66 + #define TRANS_SET_NMPIPE_STATE 0x0001 67 + #define TRANS_RAW_READ_NMPIPE 0x0011 68 + #define TRANS_QUERY_NMPIPE_STATE 0x0021 69 + #define TRANS_QUERY_NMPIPE_INFO 0x0022 70 + #define TRANS_PEEK_NMPIPE 0x0023 71 + #define TRANS_TRANSACT_NMPIPE 0x0026 72 + #define TRANS_RAW_WRITE_NMPIPE 0x0031 73 + #define TRANS_READ_NMPIPE 0x0036 74 + #define TRANS_WRITE_NMPIPE 0x0037 75 + #define TRANS_WAIT_NMPIPE 0x0053 76 + #define TRANS_CALL_NMPIPE 0x0054 77 + 78 + /* NT Transact subcommand codes */ 79 + #define NT_TRANSACT_CREATE 0x01 80 + #define NT_TRANSACT_IOCTL 0x02 81 + #define NT_TRANSACT_SET_SECURITY_DESC 0x03 82 + #define NT_TRANSACT_NOTIFY_CHANGE 0x04 83 + #define NT_TRANSACT_RENAME 0x05 84 + #define NT_TRANSACT_QUERY_SECURITY_DESC 0x06 85 + #define NT_TRANSACT_GET_USER_QUOTA 0x07 86 + #define NT_TRANSACT_SET_USER_QUOTA 0x08 87 + 88 + /* future chained NTCreateXReadX bigger, but for time being NTCreateX biggest */ 89 + /* among the requests (NTCreateX response is bigger with wct of 34) */ 90 + #define MAX_CIFS_HDR_SIZE 0x54 /* 32 hdr + (2*24 wct) + 2 bct + 2 pad */ 91 + #define CIFS_SMALL_PATH 120 /* allows for (448-88)/3 */ 92 + 93 + /* internal cifs vfs structures */ 94 + /***************************************************************** 95 + * All constants go here 96 + ***************************************************************** 97 + */ 98 + 99 + /* 100 + * Starting value for maximum SMB size negotiation 101 + */ 102 + #define CIFS_MAX_MSGSIZE (4*4096) 103 + 104 + /* 105 + * Size of encrypted user password in bytes 106 + */ 107 + #define CIFS_ENCPWD_SIZE (16) 108 + 109 + /* 110 + * Size of the crypto key returned on the negotiate SMB in bytes 111 + */ 112 + #define CIFS_CRYPTO_KEY_SIZE (8) 113 + 114 + /* 115 + * Size of the ntlm client response 116 + */ 117 + #define CIFS_AUTH_RESP_SIZE (24) 118 + 119 + /* 120 + * Size of the session key (crypto key encrypted with the password 121 + */ 122 + #define CIFS_SESS_KEY_SIZE (16) 123 + 124 + #define CIFS_SERVER_CHALLENGE_SIZE (8) 125 + #define CIFS_HMAC_MD5_HASH_SIZE (16) 126 + #define CIFS_CPHTXT_SIZE (16) 127 + #define CIFS_NTHASH_SIZE (16) 128 + 129 + /* 130 + * Maximum user name length 131 + */ 132 + #define CIFS_UNLEN (20) 133 + 134 + /* 135 + * Flags on SMB open 136 + */ 137 + #define SMBOPEN_WRITE_THROUGH 0x4000 138 + #define SMBOPEN_DENY_ALL 0x0010 139 + #define SMBOPEN_DENY_WRITE 0x0020 140 + #define SMBOPEN_DENY_READ 0x0030 141 + #define SMBOPEN_DENY_NONE 0x0040 142 + #define SMBOPEN_READ 0x0000 143 + #define SMBOPEN_WRITE 0x0001 144 + #define SMBOPEN_READWRITE 0x0002 145 + #define SMBOPEN_EXECUTE 0x0003 146 + 147 + #define SMBOPEN_OCREATE 0x0010 148 + #define SMBOPEN_OTRUNC 0x0002 149 + #define SMBOPEN_OAPPEND 0x0001 150 + 151 + /* 152 + * SMB flag definitions 153 + * See MS-CIFS 2.2.3.1 154 + */ 155 + #define SMBFLG_EXTD_LOCK 0x01 /* server supports lock-read write-unlock smb */ 156 + #define SMBFLG_RCV_POSTED 0x02 /* obsolete */ 157 + #define SMBFLG_RSVD 0x04 158 + #define SMBFLG_CASELESS 0x08 /* all pathnames treated as caseless (off 159 + implies case sensitive file handling request) */ 160 + #define SMBFLG_CANONICAL_PATH_FORMAT 0x10 /* obsolete */ 161 + #define SMBFLG_OLD_OPLOCK 0x20 /* obsolete */ 162 + #define SMBFLG_OLD_OPLOCK_NOTIFY 0x40 /* obsolete */ 163 + #define SMBFLG_RESPONSE 0x80 /* this PDU is a response from server */ 164 + 165 + /* 166 + * SMB flag2 definitions 167 + * See MS-CIFS 2.2.3.1 168 + * MS-SMB 2.2.3.1 169 + */ 170 + #define SMBFLG2_KNOWS_LONG_NAMES cpu_to_le16(1) /* can send long (non-8.3) 171 + path names in response */ 172 + #define SMBFLG2_KNOWS_EAS cpu_to_le16(2) 173 + #define SMBFLG2_SECURITY_SIGNATURE cpu_to_le16(4) 174 + #define SMBFLG2_COMPRESSED (8) 175 + #define SMBFLG2_SECURITY_SIGNATURE_REQUIRED (0x10) 176 + #define SMBFLG2_IS_LONG_NAME cpu_to_le16(0x40) 177 + #define SMBFLG2_REPARSE_PATH (0x400) 178 + #define SMBFLG2_EXT_SEC cpu_to_le16(0x800) 179 + #define SMBFLG2_DFS cpu_to_le16(0x1000) 180 + #define SMBFLG2_PAGING_IO cpu_to_le16(0x2000) 181 + #define SMBFLG2_ERR_STATUS cpu_to_le16(0x4000) 182 + #define SMBFLG2_UNICODE cpu_to_le16(0x8000) 183 + 184 + /* Combinations of file access permission bits */ 185 + #define SET_FILE_READ_RIGHTS (FILE_READ_DATA | FILE_READ_EA | FILE_WRITE_EA \ 186 + | FILE_READ_ATTRIBUTES \ 187 + | FILE_WRITE_ATTRIBUTES \ 188 + | DELETE | READ_CONTROL | WRITE_DAC \ 189 + | WRITE_OWNER | SYNCHRONIZE) 190 + #define SET_FILE_WRITE_RIGHTS (FILE_WRITE_DATA | FILE_APPEND_DATA \ 191 + | FILE_READ_EA | FILE_WRITE_EA \ 192 + | FILE_READ_ATTRIBUTES \ 193 + | FILE_WRITE_ATTRIBUTES \ 194 + | DELETE | READ_CONTROL | WRITE_DAC \ 195 + | WRITE_OWNER | SYNCHRONIZE) 196 + 197 + /* 198 + * Invalid readdir handle 199 + */ 200 + #define CIFS_NO_HANDLE 0xFFFF 201 + 202 + #define NO_CHANGE_64 0xFFFFFFFFFFFFFFFFULL 203 + 204 + /* IPC$ in ASCII */ 205 + #define CIFS_IPC_RESOURCE "\x49\x50\x43\x24" 206 + 207 + /* IPC$ in Unicode */ 208 + #define CIFS_IPC_UNICODE_RESOURCE "\x00\x49\x00\x50\x00\x43\x00\x24\x00\x00" 209 + 210 + /* Unicode Null terminate 2 bytes of 0 */ 211 + #define UNICODE_NULL "\x00\x00" 212 + #define ASCII_NULL 0x00 213 + 214 + /* 215 + * Server type values (returned on EnumServer API 216 + */ 217 + #define CIFS_SV_TYPE_DC 0x00000008 218 + #define CIFS_SV_TYPE_BACKDC 0x00000010 219 + 220 + /* 221 + * Alias type flags (From EnumAlias API call 222 + */ 223 + #define CIFS_ALIAS_TYPE_FILE 0x0001 224 + #define CIFS_SHARE_TYPE_FILE 0x0000 225 + 226 + /* 227 + * File Attribute flags 228 + */ 229 + #define ATTR_READONLY 0x0001 /* See MS-CIFS 2.2.1.2.3 */ 230 + #define ATTR_HIDDEN 0x0002 /* See MS-CIFS 2.2.1.2.3 */ 231 + #define ATTR_SYSTEM 0x0004 /* See MS-CIFS 2.2.1.2.3 */ 232 + #define ATTR_VOLUME 0x0008 233 + #define ATTR_DIRECTORY 0x0010 /* See MS-CIFS 2.2.1.2.3 */ 234 + #define ATTR_ARCHIVE 0x0020 /* See MS-CIFS 2.2.1.2.3 */ 235 + #define ATTR_DEVICE 0x0040 236 + #define ATTR_NORMAL 0x0080 /* See MS-CIFS 2.2.1.2.3 */ 237 + #define ATTR_TEMPORARY 0x0100 /* See MS-CIFS 2.2.1.2.3 */ 238 + #define ATTR_SPARSE 0x0200 /* See MS-SMB 2.2.1.2.1 */ 239 + #define ATTR_REPARSE_POINT 0x0400 /* See MS-SMB 2.2.1.2.1 */ 240 + #define ATTR_COMPRESSED 0x0800 /* See MS-CIFS 2.2.1.2.3 */ 241 + #define ATTR_OFFLINE 0x1000 /* See MS-SMB 2.2.1.2.1 242 + ie file not immediately available - 243 + on offline storage */ 244 + #define ATTR_NOT_CONTENT_INDEXED 0x2000 /* See MS-SMB 2.2.1.2.1 */ 245 + #define ATTR_ENCRYPTED 0x4000 /* See MS-SMB 2.2.1.2.1 */ 246 + #define ATTR_POSIX_SEMANTICS 0x0100000 /* See MS-CIFS 2.2.1.2.3 */ 247 + #define ATTR_BACKUP_SEMANTICS 0x0200000 /* See MS-CIFS 2.2.1.2.3 */ 248 + #define ATTR_DELETE_ON_CLOSE 0x0400000 /* See MS-CIFS 2.2.1.2.3 */ 249 + #define ATTR_SEQUENTIAL_SCAN 0x0800000 /* See MS-CIFS 2.2.1.2.3 */ 250 + #define ATTR_RANDOM_ACCESS 0x1000000 /* See MS-CIFS 2.2.1.2.3 */ 251 + #define ATTR_NO_BUFFERING 0x2000000 /* See MS-CIFS 2.2.1.2.3 */ 252 + #define ATTR_WRITE_THROUGH 0x8000000 /* See MS-CIFS 2.2.1.2.3 */ 253 + 254 + /* ShareAccess flags */ 255 + #define FILE_NO_SHARE 0x00000000 256 + #define FILE_SHARE_READ 0x00000001 257 + #define FILE_SHARE_WRITE 0x00000002 258 + #define FILE_SHARE_DELETE 0x00000004 259 + #define FILE_SHARE_ALL 0x00000007 260 + 261 + /* CreateDisposition flags, similar to CreateAction as well */ 262 + #define FILE_SUPERSEDE 0x00000000 263 + #define FILE_OPEN 0x00000001 264 + #define FILE_CREATE 0x00000002 265 + #define FILE_OPEN_IF 0x00000003 266 + #define FILE_OVERWRITE 0x00000004 267 + #define FILE_OVERWRITE_IF 0x00000005 268 + 269 + /* CreateOptions */ 270 + #define CREATE_NOT_FILE 0x00000001 /* if set must not be file */ 271 + #define CREATE_WRITE_THROUGH 0x00000002 272 + #define CREATE_SEQUENTIAL 0x00000004 273 + #define CREATE_NO_BUFFER 0x00000008 /* should not buffer on srv */ 274 + #define CREATE_SYNC_ALERT 0x00000010 /* MBZ */ 275 + #define CREATE_ASYNC_ALERT 0x00000020 /* MBZ */ 276 + #define CREATE_NOT_DIR 0x00000040 /* if set must not be directory */ 277 + #define CREATE_TREE_CONNECTION 0x00000080 /* should be zero */ 278 + #define CREATE_COMPLETE_IF_OPLK 0x00000100 /* should be zero */ 279 + #define CREATE_NO_EA_KNOWLEDGE 0x00000200 280 + #define CREATE_EIGHT_DOT_THREE 0x00000400 /* doc says this is obsolete 281 + "open for recovery" flag should 282 + be zero in any case */ 283 + #define CREATE_OPEN_FOR_RECOVERY 0x00000400 284 + #define CREATE_RANDOM_ACCESS 0x00000800 285 + #define CREATE_DELETE_ON_CLOSE 0x00001000 286 + #define CREATE_OPEN_BY_ID 0x00002000 287 + #define CREATE_OPEN_BACKUP_INTENT 0x00004000 288 + #define CREATE_NO_COMPRESSION 0x00008000 289 + #define CREATE_RESERVE_OPFILTER 0x00100000 /* should be zero */ 290 + #define OPEN_REPARSE_POINT 0x00200000 291 + #define OPEN_NO_RECALL 0x00400000 292 + #define OPEN_FREE_SPACE_QUERY 0x00800000 /* should be zero */ 293 + #define CREATE_OPTIONS_MASK 0x007FFFFF 294 + #define CREATE_OPTION_READONLY 0x10000000 295 + #define CREATE_OPTION_SPECIAL 0x20000000 /* system. NB not sent over wire */ 296 + 297 + /* ImpersonationLevel flags */ 298 + #define SECURITY_ANONYMOUS 0 299 + #define SECURITY_IDENTIFICATION 1 300 + #define SECURITY_IMPERSONATION 2 301 + #define SECURITY_DELEGATION 3 302 + 303 + /* SecurityFlags */ 304 + #define SECURITY_CONTEXT_TRACKING 0x01 305 + #define SECURITY_EFFECTIVE_ONLY 0x02 306 + 307 + /* 308 + * Default PID value, used in all SMBs where the PID is not important 309 + */ 310 + #define CIFS_DFT_PID 0x1234 311 + 312 + /* 313 + * We use the same routine for Copy and Move SMBs. This flag is used to 314 + * distinguish 315 + */ 316 + #define CIFS_COPY_OP 1 317 + #define CIFS_RENAME_OP 2 318 + 319 + /* 320 + * Computer Name Length (since Netbios name was length 16 with last byte 0x20) 321 + * No longer as important, now that TCP names are more commonly used to 322 + * resolve hosts. 323 + */ 324 + #define CNLEN 15 325 + 326 + /* 327 + * Share Name Length (SNLEN) 328 + * Note: This length was limited by the SMB used to get 329 + * the Share info. NetShareEnum only returned 13 330 + * chars, including the null termination. 331 + * This was removed because it no longer is limiting. 332 + */ 333 + 334 + /* 335 + * Comment Length 336 + */ 337 + #define MAXCOMMENTLEN 40 338 + 339 + /* 340 + * The OS/2 maximum path name 341 + */ 342 + #define MAX_PATHCONF 256 343 + 344 + /* 345 + * SMB frame definitions (following must be packed structs) 346 + * See the SNIA CIFS Specification for details. 347 + * 348 + * The Naming convention is the lower case version of the 349 + * smb command code name for the struct and this is typedef to the 350 + * uppercase version of the same name with the prefix SMB_ removed 351 + * for brevity. Although typedefs are not commonly used for 352 + * structure definitions in the Linux kernel, their use in the 353 + * CIFS standards document, which this code is based on, may 354 + * make this one of the cases where typedefs for structures make 355 + * sense to improve readability for readers of the standards doc. 356 + * Typedefs can always be removed later if they are too distracting 357 + * and they are only used for the CIFSs PDUs themselves, not 358 + * internal cifs vfs structures 359 + * 360 + */ 361 + 362 + #define MIN_TZ_ADJ (15 * 60) /* minimum grid for timezones in seconds */ 363 + 364 + #define READ_RAW_ENABLE 1 365 + #define WRITE_RAW_ENABLE 2 366 + #define RAW_ENABLE (READ_RAW_ENABLE | WRITE_RAW_ENABLE) 367 + #define SMB1_CLIENT_GUID_SIZE (16) 368 + 369 + /* See MS-CIFS 2.2.4.52.2 */ 370 + typedef struct smb_negotiate_rsp { 371 + struct smb_hdr hdr; /* wct = 17 */ 372 + __le16 DialectIndex; /* 0xFFFF = no dialect acceptable */ 373 + __u8 SecurityMode; 374 + __le16 MaxMpxCount; 375 + __le16 MaxNumberVcs; 376 + __le32 MaxBufferSize; 377 + __le32 MaxRawSize; 378 + __le32 SessionKey; 379 + __le32 Capabilities; /* see below */ 380 + __le32 SystemTimeLow; 381 + __le32 SystemTimeHigh; 382 + __le16 ServerTimeZone; 383 + __u8 EncryptionKeyLength; 384 + __u16 ByteCount; 385 + union { 386 + /* cap extended security off */ 387 + DECLARE_FLEX_ARRAY(unsigned char, EncryptionKey); 388 + /* followed by Domain name - if extended security is off */ 389 + /* followed by 16 bytes of server GUID */ 390 + /* then security blob if cap_extended_security negotiated */ 391 + struct { 392 + unsigned char GUID[SMB1_CLIENT_GUID_SIZE]; 393 + unsigned char SecurityBlob[]; 394 + } __packed extended_response; 395 + } __packed u; 396 + } __packed SMB_NEGOTIATE_RSP; 397 + 398 + /* SecurityMode bits */ 399 + #define SECMODE_USER 0x01 /* off indicates share level security */ 400 + #define SECMODE_PW_ENCRYPT 0x02 401 + #define SECMODE_SIGN_ENABLED 0x04 /* SMB security signatures enabled */ 402 + #define SECMODE_SIGN_REQUIRED 0x08 /* SMB security signatures required */ 403 + 404 + /* Negotiate response Capabilities */ 405 + #define CAP_RAW_MODE 0x00000001 406 + #define CAP_MPX_MODE 0x00000002 407 + #define CAP_UNICODE 0x00000004 408 + #define CAP_LARGE_FILES 0x00000008 409 + #define CAP_NT_SMBS 0x00000010 /* implies CAP_NT_FIND */ 410 + #define CAP_RPC_REMOTE_APIS 0x00000020 411 + #define CAP_STATUS32 0x00000040 412 + #define CAP_LEVEL_II_OPLOCKS 0x00000080 413 + #define CAP_LOCK_AND_READ 0x00000100 414 + #define CAP_NT_FIND 0x00000200 415 + #define CAP_DFS 0x00001000 416 + #define CAP_INFOLEVEL_PASSTHRU 0x00002000 417 + #define CAP_LARGE_READ_X 0x00004000 418 + #define CAP_LARGE_WRITE_X 0x00008000 419 + #define CAP_LWIO 0x00010000 /* support fctl_srv_req_resume_key */ 420 + #define CAP_UNIX 0x00800000 421 + #define CAP_COMPRESSED_DATA 0x02000000 422 + #define CAP_DYNAMIC_REAUTH 0x20000000 423 + #define CAP_PERSISTENT_HANDLES 0x40000000 424 + #define CAP_EXTENDED_SECURITY 0x80000000 425 + 426 + typedef union smb_com_session_setup_andx { 427 + struct { /* request format */ 428 + struct smb_hdr hdr; /* wct = 12 */ 429 + __u8 AndXCommand; 430 + __u8 AndXReserved; 431 + __le16 AndXOffset; 432 + __le16 MaxBufferSize; 433 + __le16 MaxMpxCount; 434 + __le16 VcNumber; 435 + __le32 SessionKey; 436 + __le16 SecurityBlobLength; 437 + __u32 Reserved; 438 + __le32 Capabilities; /* see below */ 439 + __le16 ByteCount; 440 + unsigned char SecurityBlob[]; /* followed by */ 441 + /* STRING NativeOS */ 442 + /* STRING NativeLanMan */ 443 + } __packed req; /* NTLM request format (with 444 + extended security */ 445 + 446 + struct { /* request format */ 447 + struct smb_hdr hdr; /* wct = 13 */ 448 + __u8 AndXCommand; 449 + __u8 AndXReserved; 450 + __le16 AndXOffset; 451 + __le16 MaxBufferSize; 452 + __le16 MaxMpxCount; 453 + __le16 VcNumber; 454 + __le32 SessionKey; 455 + __le16 CaseInsensitivePasswordLength; /* ASCII password len */ 456 + __le16 CaseSensitivePasswordLength; /* Unicode password length*/ 457 + __u32 Reserved; /* see below */ 458 + __le32 Capabilities; 459 + __le16 ByteCount; 460 + unsigned char CaseInsensitivePassword[]; /* followed by: */ 461 + /* unsigned char * CaseSensitivePassword; */ 462 + /* STRING AccountName */ 463 + /* STRING PrimaryDomain */ 464 + /* STRING NativeOS */ 465 + /* STRING NativeLanMan */ 466 + } __packed req_no_secext; /* NTLM request format (without 467 + extended security */ 468 + 469 + struct { /* default (NTLM) response format */ 470 + struct smb_hdr hdr; /* wct = 4 */ 471 + __u8 AndXCommand; 472 + __u8 AndXReserved; 473 + __le16 AndXOffset; 474 + __le16 Action; /* see below */ 475 + __le16 SecurityBlobLength; 476 + __u16 ByteCount; 477 + unsigned char SecurityBlob[]; /* followed by */ 478 + /* unsigned char * NativeOS; */ 479 + /* unsigned char * NativeLanMan; */ 480 + /* unsigned char * PrimaryDomain; */ 481 + } __packed resp; /* NTLM response 482 + (with or without extended sec) */ 483 + 484 + struct { /* request format */ 485 + struct smb_hdr hdr; /* wct = 10 */ 486 + __u8 AndXCommand; 487 + __u8 AndXReserved; 488 + __le16 AndXOffset; 489 + __le16 MaxBufferSize; 490 + __le16 MaxMpxCount; 491 + __le16 VcNumber; 492 + __le32 SessionKey; 493 + __le16 PasswordLength; 494 + __u32 Reserved; /* encrypt key len and offset */ 495 + __le16 ByteCount; 496 + unsigned char AccountPassword[]; /* followed by */ 497 + /* STRING AccountName */ 498 + /* STRING PrimaryDomain */ 499 + /* STRING NativeOS */ 500 + /* STRING NativeLanMan */ 501 + } __packed old_req; /* pre-NTLM (LANMAN2.1) req format */ 502 + 503 + struct { /* default (NTLM) response format */ 504 + struct smb_hdr hdr; /* wct = 3 */ 505 + __u8 AndXCommand; 506 + __u8 AndXReserved; 507 + __le16 AndXOffset; 508 + __le16 Action; /* see below */ 509 + __u16 ByteCount; 510 + unsigned char NativeOS[]; /* followed by */ 511 + /* unsigned char * NativeLanMan; */ 512 + /* unsigned char * PrimaryDomain; */ 513 + } __packed old_resp; /* pre-NTLM (LANMAN2.1) response */ 514 + } __packed SESSION_SETUP_ANDX; 515 + 516 + /* format of NLTMv2 Response ie "case sensitive password" hash when NTLMv2 */ 517 + 518 + #define NTLMSSP_SERVER_TYPE 1 519 + #define NTLMSSP_DOMAIN_TYPE 2 520 + #define NTLMSSP_FQ_DOMAIN_TYPE 3 521 + #define NTLMSSP_DNS_DOMAIN_TYPE 4 522 + #define NTLMSSP_DNS_PARENT_TYPE 5 523 + 524 + struct ntlmssp2_name { 525 + __le16 type; 526 + __le16 length; 527 + __u8 data[]; 528 + } __packed; 529 + 530 + struct ntlmv2_resp { 531 + union { 532 + char ntlmv2_hash[CIFS_ENCPWD_SIZE]; 533 + struct { 534 + __u8 reserved[8]; 535 + __u8 key[CIFS_SERVER_CHALLENGE_SIZE]; 536 + } __packed challenge; 537 + } __packed; 538 + __le32 blob_signature; 539 + __u32 reserved; 540 + __le64 time; 541 + __u64 client_chal; /* random */ 542 + __u32 reserved2; 543 + /* array of name entries could follow ending in minimum 4 byte struct */ 544 + } __packed; 545 + 546 + 547 + #define CIFS_NETWORK_OPSYS "CIFS VFS Client for Linux" 548 + 549 + 550 + /* 551 + * Capabilities bits (for NTLM SessSetup request) 552 + * See MS-CIFS 2.2.4.52.2 553 + * MS-SMB 2.2.4.5.2.1 554 + */ 555 + #define CAP_UNICODE 0x00000004 556 + #define CAP_LARGE_FILES 0x00000008 557 + #define CAP_NT_SMBS 0x00000010 558 + #define CAP_STATUS32 0x00000040 559 + #define CAP_LEVEL_II_OPLOCKS 0x00000080 560 + #define CAP_NT_FIND 0x00000200 /* reserved should be zero 561 + (because NT_SMBs implies the same thing?) */ 562 + #define CAP_BULK_TRANSFER 0x00000400 563 + #define CAP_EXTENDED_SECURITY 0x80000000 564 + 565 + /* Action bits */ 566 + #define GUEST_LOGIN 1 567 + 568 + typedef struct smb_com_tconx_req { 569 + struct smb_hdr hdr; /* wct = 4 */ 570 + __u8 AndXCommand; 571 + __u8 AndXReserved; 572 + __le16 AndXOffset; 573 + __le16 Flags; /* see below */ 574 + __le16 PasswordLength; 575 + __le16 ByteCount; 576 + unsigned char Password[]; /* followed by */ 577 + /* STRING Path *//* \\server\share name */ 578 + /* STRING Service */ 579 + } __packed TCONX_REQ; 580 + 581 + typedef struct smb_com_tconx_rsp { 582 + struct smb_hdr hdr; /* wct = 3 , not extended response */ 583 + __u8 AndXCommand; 584 + __u8 AndXReserved; 585 + __le16 AndXOffset; 586 + __le16 OptionalSupport; /* see below */ 587 + __u16 ByteCount; 588 + unsigned char Service[]; /* always ASCII, not Unicode */ 589 + /* STRING NativeFileSystem */ 590 + } __packed TCONX_RSP; 591 + 592 + typedef struct smb_com_tconx_rsp_ext { 593 + struct smb_hdr hdr; /* wct = 7, extended response */ 594 + __u8 AndXCommand; 595 + __u8 AndXReserved; 596 + __le16 AndXOffset; 597 + __le16 OptionalSupport; /* see below */ 598 + __le32 MaximalShareAccessRights; 599 + __le32 GuestMaximalShareAccessRights; 600 + __u16 ByteCount; 601 + unsigned char Service[]; /* always ASCII, not Unicode */ 602 + /* STRING NativeFileSystem */ 603 + } __packed TCONX_RSP_EXT; 604 + 605 + 606 + /* tree connect Flags */ 607 + #define DISCONNECT_TID 0x0001 608 + #define TCON_EXTENDED_SIGNATURES 0x0004 609 + #define TCON_EXTENDED_SECINFO 0x0008 610 + 611 + /* OptionalSupport bits */ 612 + #define SMB_SUPPORT_SEARCH_BITS 0x0001 /* "must have" directory search bits 613 + (exclusive searches supported) */ 614 + #define SMB_SHARE_IS_IN_DFS 0x0002 615 + #define SMB_CSC_MASK 0x000C 616 + /* CSC flags defined as follows */ 617 + #define SMB_CSC_CACHE_MANUAL_REINT 0x0000 618 + #define SMB_CSC_CACHE_AUTO_REINT 0x0004 619 + #define SMB_CSC_CACHE_VDO 0x0008 620 + #define SMB_CSC_NO_CACHING 0x000C 621 + #define SMB_UNIQUE_FILE_NAME 0x0010 622 + #define SMB_EXTENDED_SIGNATURES 0x0020 623 + 624 + /* services 625 + * 626 + * A: ie disk 627 + * LPT1: ie printer 628 + * IPC ie named pipe 629 + * COMM 630 + * ????? ie any type 631 + * 632 + */ 633 + 634 + typedef struct smb_com_echo_req { 635 + struct smb_hdr hdr; 636 + __le16 EchoCount; 637 + __le16 ByteCount; 638 + char Data[]; 639 + } __packed ECHO_REQ; 640 + 641 + typedef struct smb_com_echo_rsp { 642 + struct smb_hdr hdr; 643 + __le16 SequenceNumber; 644 + __le16 ByteCount; 645 + char Data[]; 646 + } __packed ECHO_RSP; 647 + 648 + typedef struct smb_com_logoff_andx_req { 649 + struct smb_hdr hdr; /* wct = 2 */ 650 + __u8 AndXCommand; 651 + __u8 AndXReserved; 652 + __u16 AndXOffset; 653 + __u16 ByteCount; 654 + } __packed LOGOFF_ANDX_REQ; 655 + 656 + typedef struct smb_com_logoff_andx_rsp { 657 + struct smb_hdr hdr; /* wct = 2 */ 658 + __u8 AndXCommand; 659 + __u8 AndXReserved; 660 + __u16 AndXOffset; 661 + __u16 ByteCount; 662 + } __packed LOGOFF_ANDX_RSP; 663 + 664 + typedef union smb_com_tree_disconnect { /* as an alternative can use flag on 665 + tree_connect PDU to effect disconnect */ 666 + /* tdis is probably simplest SMB PDU */ 667 + struct { 668 + struct smb_hdr hdr; /* wct = 0 */ 669 + __u16 ByteCount; /* bcc = 0 */ 670 + } __packed req; 671 + struct { 672 + struct smb_hdr hdr; /* wct = 0 */ 673 + __u16 ByteCount; /* bcc = 0 */ 674 + } __packed resp; 675 + } __packed TREE_DISCONNECT; 676 + 677 + typedef struct smb_com_close_req { 678 + struct smb_hdr hdr; /* wct = 3 */ 679 + __u16 FileID; 680 + __u32 LastWriteTime; /* should be zero or -1 */ 681 + __u16 ByteCount; /* 0 */ 682 + } __packed CLOSE_REQ; 683 + 684 + typedef struct smb_com_close_rsp { 685 + struct smb_hdr hdr; /* wct = 0 */ 686 + __u16 ByteCount; /* bct = 0 */ 687 + } __packed CLOSE_RSP; 688 + 689 + typedef struct smb_com_flush_req { 690 + struct smb_hdr hdr; /* wct = 1 */ 691 + __u16 FileID; 692 + __u16 ByteCount; /* 0 */ 693 + } __packed FLUSH_REQ; 694 + 695 + typedef struct smb_com_findclose_req { 696 + struct smb_hdr hdr; /* wct = 1 */ 697 + __u16 FileID; 698 + __u16 ByteCount; /* 0 */ 699 + } __packed FINDCLOSE_REQ; 700 + 701 + /* OpenFlags */ 702 + #define REQ_MORE_INFO 0x00000001 /* legacy (OPEN_AND_X) only */ 703 + #define REQ_OPLOCK 0x00000002 704 + #define REQ_BATCHOPLOCK 0x00000004 705 + #define REQ_OPENDIRONLY 0x00000008 706 + #define REQ_EXTENDED_INFO 0x00000010 707 + 708 + /* File type */ 709 + #define DISK_TYPE 0x0000 710 + #define BYTE_PIPE_TYPE 0x0001 711 + #define MESSAGE_PIPE_TYPE 0x0002 712 + #define PRINTER_TYPE 0x0003 713 + #define COMM_DEV_TYPE 0x0004 714 + #define UNKNOWN_TYPE 0xFFFF 715 + 716 + /* Device Type or File Status Flags */ 717 + #define NO_EAS 0x0001 718 + #define NO_SUBSTREAMS 0x0002 719 + #define NO_REPARSETAG 0x0004 720 + /* following flags can apply if pipe */ 721 + #define ICOUNT_MASK 0x00FF 722 + #define PIPE_READ_MODE 0x0100 723 + #define NAMED_PIPE_TYPE 0x0400 724 + #define PIPE_END_POINT 0x4000 725 + #define BLOCKING_NAMED_PIPE 0x8000 726 + 727 + typedef struct smb_com_open_req { /* also handles create */ 728 + struct smb_hdr hdr; /* wct = 24 */ 729 + __u8 AndXCommand; 730 + __u8 AndXReserved; 731 + __le16 AndXOffset; 732 + __u8 Reserved; /* Must Be Zero */ 733 + __le16 NameLength; 734 + __le32 OpenFlags; 735 + __u32 RootDirectoryFid; 736 + __le32 DesiredAccess; 737 + __le64 AllocationSize; 738 + __le32 FileAttributes; 739 + __le32 ShareAccess; 740 + __le32 CreateDisposition; 741 + __le32 CreateOptions; 742 + __le32 ImpersonationLevel; 743 + __u8 SecurityFlags; 744 + __le16 ByteCount; 745 + char fileName[]; 746 + } __packed OPEN_REQ; 747 + 748 + /* open response: oplock levels */ 749 + #define OPLOCK_NONE 0 750 + #define OPLOCK_EXCLUSIVE 1 751 + #define OPLOCK_BATCH 2 752 + #define OPLOCK_READ 3 /* level 2 oplock */ 753 + 754 + /* open response for CreateAction shifted left */ 755 + #define CIFS_CREATE_ACTION 0x20000 /* file created */ 756 + 757 + typedef struct smb_com_open_rsp { 758 + struct smb_hdr hdr; /* wct = 34 BB */ 759 + __u8 AndXCommand; 760 + __u8 AndXReserved; 761 + __le16 AndXOffset; 762 + __u8 OplockLevel; 763 + __u16 Fid; 764 + __le32 CreateAction; 765 + struct_group_attr(common_attributes, __packed, 766 + __le64 CreationTime; 767 + __le64 LastAccessTime; 768 + __le64 LastWriteTime; 769 + __le64 ChangeTime; 770 + __le32 FileAttributes; 771 + ); 772 + __le64 AllocationSize; 773 + __le64 EndOfFile; 774 + __le16 FileType; 775 + __le16 DeviceState; 776 + __u8 DirectoryFlag; 777 + __u16 ByteCount; /* bct = 0 */ 778 + } __packed OPEN_RSP; 779 + 780 + typedef struct smb_com_open_rsp_ext { 781 + struct smb_hdr hdr; /* wct = 42 but meaningless due to MS bug? */ 782 + __u8 AndXCommand; 783 + __u8 AndXReserved; 784 + __le16 AndXOffset; 785 + __u8 OplockLevel; 786 + __u16 Fid; 787 + __le32 CreateAction; 788 + __le64 CreationTime; 789 + __le64 LastAccessTime; 790 + __le64 LastWriteTime; 791 + __le64 ChangeTime; 792 + __le32 FileAttributes; 793 + __le64 AllocationSize; 794 + __le64 EndOfFile; 795 + __le16 FileType; 796 + __le16 DeviceState; 797 + __u8 DirectoryFlag; 798 + __u8 VolumeGUID[16]; 799 + __u64 FileId; /* note no endian conversion - is opaque UniqueID */ 800 + __le32 MaximalAccessRights; 801 + __le32 GuestMaximalAccessRights; 802 + __u16 ByteCount; /* bct = 0 */ 803 + } __packed OPEN_RSP_EXT; 804 + 805 + 806 + /* format of legacy open request */ 807 + typedef struct smb_com_openx_req { 808 + struct smb_hdr hdr; /* wct = 15 */ 809 + __u8 AndXCommand; 810 + __u8 AndXReserved; 811 + __le16 AndXOffset; 812 + __le16 OpenFlags; 813 + __le16 Mode; 814 + __le16 Sattr; /* search attributes */ 815 + __le16 FileAttributes; /* dos attrs */ 816 + __le32 CreateTime; /* os2 format */ 817 + __le16 OpenFunction; 818 + __le32 EndOfFile; 819 + __le32 Timeout; 820 + __le32 Reserved; 821 + __le16 ByteCount; /* file name follows */ 822 + char fileName[]; 823 + } __packed OPENX_REQ; 824 + 825 + typedef struct smb_com_openx_rsp { 826 + struct smb_hdr hdr; /* wct = 15 */ 827 + __u8 AndXCommand; 828 + __u8 AndXReserved; 829 + __le16 AndXOffset; 830 + __u16 Fid; 831 + __le16 FileAttributes; 832 + __le32 LastWriteTime; /* os2 format */ 833 + __le32 EndOfFile; 834 + __le16 Access; 835 + __le16 FileType; 836 + __le16 IPCState; 837 + __le16 Action; 838 + __u32 FileId; 839 + __u16 Reserved; 840 + __u16 ByteCount; 841 + } __packed OPENX_RSP; 842 + 843 + /* For encoding of POSIX Open Request - see trans2 function 0x209 data struct */ 844 + 845 + /* Legacy write request for older servers */ 846 + typedef struct smb_com_writex_req { 847 + struct smb_hdr hdr; /* wct = 12 */ 848 + __u8 AndXCommand; 849 + __u8 AndXReserved; 850 + __le16 AndXOffset; 851 + __u16 Fid; 852 + __le32 OffsetLow; 853 + __u32 Reserved; /* Timeout */ 854 + __le16 WriteMode; /* 1 = write through */ 855 + __le16 Remaining; 856 + __le16 Reserved2; 857 + __le16 DataLengthLow; 858 + __le16 DataOffset; 859 + __le16 ByteCount; 860 + __u8 Pad; /* BB check for whether padded to DWORD 861 + boundary and optimum performance here */ 862 + char Data[]; 863 + } __packed WRITEX_REQ; 864 + 865 + typedef struct smb_com_write_req { 866 + struct smb_hdr hdr; /* wct = 14 */ 867 + __u8 AndXCommand; 868 + __u8 AndXReserved; 869 + __le16 AndXOffset; 870 + __u16 Fid; 871 + __le32 OffsetLow; 872 + __u32 Reserved; 873 + __le16 WriteMode; 874 + __le16 Remaining; 875 + __le16 DataLengthHigh; 876 + __le16 DataLengthLow; 877 + __le16 DataOffset; 878 + __le32 OffsetHigh; 879 + __le16 ByteCount; 880 + __u8 Pad; /* BB check for whether padded to DWORD 881 + boundary and optimum performance here */ 882 + char Data[]; 883 + } __packed WRITE_REQ; 884 + 885 + typedef struct smb_com_write_rsp { 886 + struct smb_hdr hdr; /* wct = 6 */ 887 + __u8 AndXCommand; 888 + __u8 AndXReserved; 889 + __le16 AndXOffset; 890 + __le16 Count; 891 + __le16 Remaining; 892 + __le16 CountHigh; 893 + __u16 Reserved; 894 + __u16 ByteCount; 895 + } __packed WRITE_RSP; 896 + 897 + /* legacy read request for older servers */ 898 + typedef struct smb_com_readx_req { 899 + struct smb_hdr hdr; /* wct = 10 */ 900 + __u8 AndXCommand; 901 + __u8 AndXReserved; 902 + __le16 AndXOffset; 903 + __u16 Fid; 904 + __le32 OffsetLow; 905 + __le16 MaxCount; 906 + __le16 MinCount; /* obsolete */ 907 + __le32 Reserved; 908 + __le16 Remaining; 909 + __le16 ByteCount; 910 + } __packed READX_REQ; 911 + 912 + typedef struct smb_com_read_req { 913 + struct smb_hdr hdr; /* wct = 12 */ 914 + __u8 AndXCommand; 915 + __u8 AndXReserved; 916 + __le16 AndXOffset; 917 + __u16 Fid; 918 + __le32 OffsetLow; 919 + __le16 MaxCount; 920 + __le16 MinCount; /* obsolete */ 921 + __le32 MaxCountHigh; 922 + __le16 Remaining; 923 + __le32 OffsetHigh; 924 + __le16 ByteCount; 925 + } __packed READ_REQ; 926 + 927 + typedef struct smb_com_read_rsp { 928 + struct smb_hdr hdr; /* wct = 12 */ 929 + __u8 AndXCommand; 930 + __u8 AndXReserved; 931 + __le16 AndXOffset; 932 + __le16 Remaining; 933 + __le16 DataCompactionMode; 934 + __le16 Reserved; 935 + __le16 DataLength; 936 + __le16 DataOffset; 937 + __le16 DataLengthHigh; 938 + __u64 Reserved2; 939 + __u16 ByteCount; 940 + /* read response data immediately follows */ 941 + } __packed READ_RSP; 942 + 943 + typedef struct locking_andx_range { 944 + __le16 Pid; 945 + __le16 Pad; 946 + __le32 OffsetHigh; 947 + __le32 OffsetLow; 948 + __le32 LengthHigh; 949 + __le32 LengthLow; 950 + } __packed LOCKING_ANDX_RANGE; 951 + 952 + #define LOCKING_ANDX_SHARED_LOCK 0x01 953 + #define LOCKING_ANDX_OPLOCK_RELEASE 0x02 954 + #define LOCKING_ANDX_CHANGE_LOCKTYPE 0x04 955 + #define LOCKING_ANDX_CANCEL_LOCK 0x08 956 + #define LOCKING_ANDX_LARGE_FILES 0x10 /* always on for us */ 957 + 958 + typedef struct smb_com_lock_req { 959 + struct smb_hdr hdr; /* wct = 8 */ 960 + __u8 AndXCommand; 961 + __u8 AndXReserved; 962 + __le16 AndXOffset; 963 + __u16 Fid; 964 + __u8 LockType; 965 + __u8 OplockLevel; 966 + __le32 Timeout; 967 + __le16 NumberOfUnlocks; 968 + __le16 NumberOfLocks; 969 + __le16 ByteCount; 970 + LOCKING_ANDX_RANGE Locks[]; 971 + } __packed LOCK_REQ; 972 + 973 + /* lock type */ 974 + #define CIFS_RDLCK 0 975 + #define CIFS_WRLCK 1 976 + #define CIFS_UNLCK 2 977 + typedef struct cifs_posix_lock { 978 + __le16 lock_type; /* 0 = Read, 1 = Write, 2 = Unlock */ 979 + __le16 lock_flags; /* 1 = Wait (only valid for setlock) */ 980 + __le32 pid; 981 + __le64 start; 982 + __le64 length; 983 + /* BB what about additional owner info to identify network client */ 984 + } __packed CIFS_POSIX_LOCK; 985 + 986 + typedef struct smb_com_lock_rsp { 987 + struct smb_hdr hdr; /* wct = 2 */ 988 + __u8 AndXCommand; 989 + __u8 AndXReserved; 990 + __le16 AndXOffset; 991 + __u16 ByteCount; 992 + } __packed LOCK_RSP; 993 + 994 + typedef struct smb_com_rename_req { 995 + struct smb_hdr hdr; /* wct = 1 */ 996 + __le16 SearchAttributes; /* target file attributes */ 997 + __le16 ByteCount; 998 + __u8 BufferFormat; /* 4 = ASCII or Unicode */ 999 + unsigned char OldFileName[]; 1000 + /* followed by __u8 BufferFormat2 */ 1001 + /* followed by NewFileName */ 1002 + } __packed RENAME_REQ; 1003 + 1004 + /* copy request flags */ 1005 + #define COPY_MUST_BE_FILE 0x0001 1006 + #define COPY_MUST_BE_DIR 0x0002 1007 + #define COPY_TARGET_MODE_ASCII 0x0004 /* if not set, binary */ 1008 + #define COPY_SOURCE_MODE_ASCII 0x0008 /* if not set, binary */ 1009 + #define COPY_VERIFY_WRITES 0x0010 1010 + #define COPY_TREE 0x0020 1011 + 1012 + typedef struct smb_com_copy_req { 1013 + struct smb_hdr hdr; /* wct = 3 */ 1014 + __u16 Tid2; 1015 + __le16 OpenFunction; 1016 + __le16 Flags; 1017 + __le16 ByteCount; 1018 + __u8 BufferFormat; /* 4 = ASCII or Unicode */ 1019 + unsigned char OldFileName[]; 1020 + /* followed by __u8 BufferFormat2 */ 1021 + /* followed by NewFileName string */ 1022 + } __packed COPY_REQ; 1023 + 1024 + typedef struct smb_com_copy_rsp { 1025 + struct smb_hdr hdr; /* wct = 1 */ 1026 + __le16 CopyCount; /* number of files copied */ 1027 + __u16 ByteCount; /* may be zero */ 1028 + __u8 BufferFormat; /* 0x04 - only present if errored file follows */ 1029 + unsigned char ErrorFileName[]; /* only present if error in copy */ 1030 + } __packed COPY_RSP; 1031 + 1032 + #define CREATE_HARD_LINK 0x103 1033 + #define MOVEFILE_COPY_ALLOWED 0x0002 1034 + #define MOVEFILE_REPLACE_EXISTING 0x0001 1035 + 1036 + typedef struct smb_com_nt_rename_req { /* A5 - also used for create hardlink */ 1037 + struct smb_hdr hdr; /* wct = 4 */ 1038 + __le16 SearchAttributes; /* target file attributes */ 1039 + __le16 Flags; /* spec says Information Level */ 1040 + __le32 ClusterCount; 1041 + __le16 ByteCount; 1042 + __u8 BufferFormat; /* 4 = ASCII or Unicode */ 1043 + unsigned char OldFileName[]; 1044 + /* followed by __u8 BufferFormat2 */ 1045 + /* followed by NewFileName */ 1046 + } __packed NT_RENAME_REQ; 1047 + 1048 + typedef struct smb_com_rename_rsp { 1049 + struct smb_hdr hdr; /* wct = 0 */ 1050 + __u16 ByteCount; /* bct = 0 */ 1051 + } __packed RENAME_RSP; 1052 + 1053 + typedef struct smb_com_delete_file_req { 1054 + struct smb_hdr hdr; /* wct = 1 */ 1055 + __le16 SearchAttributes; 1056 + __le16 ByteCount; 1057 + __u8 BufferFormat; /* 4 = ASCII */ 1058 + unsigned char fileName[]; 1059 + } __packed DELETE_FILE_REQ; 1060 + 1061 + typedef struct smb_com_delete_file_rsp { 1062 + struct smb_hdr hdr; /* wct = 0 */ 1063 + __u16 ByteCount; /* bct = 0 */ 1064 + } __packed DELETE_FILE_RSP; 1065 + 1066 + typedef struct smb_com_delete_directory_req { 1067 + struct smb_hdr hdr; /* wct = 0 */ 1068 + __le16 ByteCount; 1069 + __u8 BufferFormat; /* 4 = ASCII */ 1070 + unsigned char DirName[]; 1071 + } __packed DELETE_DIRECTORY_REQ; 1072 + 1073 + typedef struct smb_com_delete_directory_rsp { 1074 + struct smb_hdr hdr; /* wct = 0 */ 1075 + __u16 ByteCount; /* bct = 0 */ 1076 + } __packed DELETE_DIRECTORY_RSP; 1077 + 1078 + typedef struct smb_com_create_directory_req { 1079 + struct smb_hdr hdr; /* wct = 0 */ 1080 + __le16 ByteCount; 1081 + __u8 BufferFormat; /* 4 = ASCII */ 1082 + unsigned char DirName[]; 1083 + } __packed CREATE_DIRECTORY_REQ; 1084 + 1085 + typedef struct smb_com_create_directory_rsp { 1086 + struct smb_hdr hdr; /* wct = 0 */ 1087 + __u16 ByteCount; /* bct = 0 */ 1088 + } __packed CREATE_DIRECTORY_RSP; 1089 + 1090 + typedef struct smb_com_query_information_req { 1091 + struct smb_hdr hdr; /* wct = 0 */ 1092 + __le16 ByteCount; /* 1 + namelen + 1 */ 1093 + __u8 BufferFormat; /* 4 = ASCII */ 1094 + unsigned char FileName[]; 1095 + } __packed QUERY_INFORMATION_REQ; 1096 + 1097 + typedef struct smb_com_query_information_rsp { 1098 + struct smb_hdr hdr; /* wct = 10 */ 1099 + __le16 attr; 1100 + __le32 last_write_time; 1101 + __le32 size; 1102 + __u16 reserved[5]; 1103 + __le16 ByteCount; /* bcc = 0 */ 1104 + } __packed QUERY_INFORMATION_RSP; 1105 + 1106 + typedef struct smb_com_setattr_req { 1107 + struct smb_hdr hdr; /* wct = 8 */ 1108 + __le16 attr; 1109 + __le32 last_write_time; 1110 + __le16 reserved[5]; /* must be zero */ 1111 + __le16 ByteCount; 1112 + __u8 BufferFormat; /* 4 = ASCII */ 1113 + unsigned char fileName[]; 1114 + } __packed SETATTR_REQ; 1115 + 1116 + typedef struct smb_com_setattr_rsp { 1117 + struct smb_hdr hdr; /* wct = 0 */ 1118 + __u16 ByteCount; /* bct = 0 */ 1119 + } __packed SETATTR_RSP; 1120 + 1121 + /* empty wct response to setattr */ 1122 + 1123 + /*******************************************************/ 1124 + /* NT Transact structure definitions follow */ 1125 + /* Currently only ioctl, acl (get security descriptor) */ 1126 + /* and notify are implemented */ 1127 + /*******************************************************/ 1128 + typedef struct smb_com_ntransact_req { 1129 + struct smb_hdr hdr; /* wct >= 19 */ 1130 + __u8 MaxSetupCount; 1131 + __u16 Reserved; 1132 + __le32 TotalParameterCount; 1133 + __le32 TotalDataCount; 1134 + __le32 MaxParameterCount; 1135 + __le32 MaxDataCount; 1136 + __le32 ParameterCount; 1137 + __le32 ParameterOffset; 1138 + __le32 DataCount; 1139 + __le32 DataOffset; 1140 + __u8 SetupCount; /* four setup words follow subcommand */ 1141 + /* SNIA spec incorrectly included spurious pad here */ 1142 + __le16 SubCommand; /* 2 = IOCTL/FSCTL */ 1143 + /* SetupCount words follow then */ 1144 + __le16 ByteCount; 1145 + __u8 Pad[3]; 1146 + __u8 Parms[]; 1147 + } __packed NTRANSACT_REQ; 1148 + 1149 + typedef struct smb_com_ntransact_rsp { 1150 + struct smb_hdr hdr; /* wct = 18 */ 1151 + __u8 Reserved[3]; 1152 + __le32 TotalParameterCount; 1153 + __le32 TotalDataCount; 1154 + __le32 ParameterCount; 1155 + __le32 ParameterOffset; 1156 + __le32 ParameterDisplacement; 1157 + __le32 DataCount; 1158 + __le32 DataOffset; 1159 + __le32 DataDisplacement; 1160 + __u8 SetupCount; /* 0 */ 1161 + __u16 ByteCount; 1162 + /* __u8 Pad[3]; */ 1163 + /* parms and data follow */ 1164 + } __packed NTRANSACT_RSP; 1165 + 1166 + typedef struct smb_com_transaction_ioctl_req { 1167 + struct smb_hdr hdr; /* wct = 23 */ 1168 + __u8 MaxSetupCount; 1169 + __u16 Reserved; 1170 + __le32 TotalParameterCount; 1171 + __le32 TotalDataCount; 1172 + __le32 MaxParameterCount; 1173 + __le32 MaxDataCount; 1174 + __le32 ParameterCount; 1175 + __le32 ParameterOffset; 1176 + __le32 DataCount; 1177 + __le32 DataOffset; 1178 + __u8 SetupCount; /* four setup words follow subcommand */ 1179 + /* SNIA spec incorrectly included spurious pad here */ 1180 + __le16 SubCommand; /* 2 = IOCTL/FSCTL */ 1181 + __le32 FunctionCode; 1182 + __u16 Fid; 1183 + __u8 IsFsctl; /* 1 = File System Control 0 = device control (IOCTL) */ 1184 + __u8 IsRootFlag; /* 1 = apply command to root of share (must be DFS) */ 1185 + __le16 ByteCount; 1186 + __u8 Pad[3]; 1187 + __u8 Data[]; 1188 + } __packed TRANSACT_IOCTL_REQ; 1189 + 1190 + typedef struct smb_com_transaction_compr_ioctl_req { 1191 + struct smb_hdr hdr; /* wct = 23 */ 1192 + __u8 MaxSetupCount; 1193 + __u16 Reserved; 1194 + __le32 TotalParameterCount; 1195 + __le32 TotalDataCount; 1196 + __le32 MaxParameterCount; 1197 + __le32 MaxDataCount; 1198 + __le32 ParameterCount; 1199 + __le32 ParameterOffset; 1200 + __le32 DataCount; 1201 + __le32 DataOffset; 1202 + __u8 SetupCount; /* four setup words follow subcommand */ 1203 + /* SNIA spec incorrectly included spurious pad here */ 1204 + __le16 SubCommand; /* 2 = IOCTL/FSCTL */ 1205 + __le32 FunctionCode; 1206 + __u16 Fid; 1207 + __u8 IsFsctl; /* 1 = File System Control 0 = device control (IOCTL) */ 1208 + __u8 IsRootFlag; /* 1 = apply command to root of share (must be DFS) */ 1209 + __le16 ByteCount; 1210 + __u8 Pad[3]; 1211 + __le16 compression_state; /* See below for valid flags */ 1212 + } __packed TRANSACT_COMPR_IOCTL_REQ; 1213 + 1214 + /* compression state flags */ 1215 + #define COMPRESSION_FORMAT_NONE 0x0000 1216 + #define COMPRESSION_FORMAT_DEFAULT 0x0001 1217 + #define COMPRESSION_FORMAT_LZNT1 0x0002 1218 + 1219 + typedef struct smb_com_transaction_ioctl_rsp { 1220 + struct smb_hdr hdr; /* wct = 19 */ 1221 + __u8 Reserved[3]; 1222 + __le32 TotalParameterCount; 1223 + __le32 TotalDataCount; 1224 + __le32 ParameterCount; 1225 + __le32 ParameterOffset; 1226 + __le32 ParameterDisplacement; 1227 + __le32 DataCount; 1228 + __le32 DataOffset; 1229 + __le32 DataDisplacement; 1230 + __u8 SetupCount; /* 1 */ 1231 + __le16 ReturnedDataLen; 1232 + __le16 ByteCount; 1233 + } __packed TRANSACT_IOCTL_RSP; 1234 + 1235 + #define CIFS_ACL_OWNER 1 1236 + #define CIFS_ACL_GROUP 2 1237 + #define CIFS_ACL_DACL 4 1238 + #define CIFS_ACL_SACL 8 1239 + 1240 + typedef struct smb_com_transaction_qsec_req { 1241 + struct smb_hdr hdr; /* wct = 19 */ 1242 + __u8 MaxSetupCount; 1243 + __u16 Reserved; 1244 + __le32 TotalParameterCount; 1245 + __le32 TotalDataCount; 1246 + __le32 MaxParameterCount; 1247 + __le32 MaxDataCount; 1248 + __le32 ParameterCount; 1249 + __le32 ParameterOffset; 1250 + __le32 DataCount; 1251 + __le32 DataOffset; 1252 + __u8 SetupCount; /* no setup words follow subcommand */ 1253 + /* SNIA spec incorrectly included spurious pad here */ 1254 + __le16 SubCommand; /* 6 = QUERY_SECURITY_DESC */ 1255 + __le16 ByteCount; /* bcc = 3 + 8 */ 1256 + __u8 Pad[3]; 1257 + __u16 Fid; 1258 + __u16 Reserved2; 1259 + __le32 AclFlags; 1260 + } __packed QUERY_SEC_DESC_REQ; 1261 + 1262 + 1263 + typedef struct smb_com_transaction_ssec_req { 1264 + struct smb_hdr hdr; /* wct = 19 */ 1265 + __u8 MaxSetupCount; 1266 + __u16 Reserved; 1267 + __le32 TotalParameterCount; 1268 + __le32 TotalDataCount; 1269 + __le32 MaxParameterCount; 1270 + __le32 MaxDataCount; 1271 + __le32 ParameterCount; 1272 + __le32 ParameterOffset; 1273 + __le32 DataCount; 1274 + __le32 DataOffset; 1275 + __u8 SetupCount; /* no setup words follow subcommand */ 1276 + /* SNIA spec incorrectly included spurious pad here */ 1277 + __le16 SubCommand; /* 3 = SET_SECURITY_DESC */ 1278 + __le16 ByteCount; /* bcc = 3 + 8 */ 1279 + __u8 Pad[3]; 1280 + __u16 Fid; 1281 + __u16 Reserved2; 1282 + __le32 AclFlags; 1283 + } __packed SET_SEC_DESC_REQ; 1284 + 1285 + typedef struct smb_com_transaction_change_notify_req { 1286 + struct smb_hdr hdr; /* wct = 23 */ 1287 + __u8 MaxSetupCount; 1288 + __u16 Reserved; 1289 + __le32 TotalParameterCount; 1290 + __le32 TotalDataCount; 1291 + __le32 MaxParameterCount; 1292 + __le32 MaxDataCount; 1293 + __le32 ParameterCount; 1294 + __le32 ParameterOffset; 1295 + __le32 DataCount; 1296 + __le32 DataOffset; 1297 + __u8 SetupCount; /* four setup words follow subcommand */ 1298 + /* SNIA spec incorrectly included spurious pad here */ 1299 + __le16 SubCommand;/* 4 = Change Notify */ 1300 + __le32 CompletionFilter; /* operation to monitor */ 1301 + __u16 Fid; 1302 + __u8 WatchTree; /* 1 = Monitor subdirectories */ 1303 + __u8 Reserved2; 1304 + __le16 ByteCount; 1305 + /* __u8 Pad[3];*/ 1306 + /* __u8 Data[];*/ 1307 + } __packed TRANSACT_CHANGE_NOTIFY_REQ; 1308 + 1309 + /* BB eventually change to use generic ntransact rsp struct 1310 + and validation routine */ 1311 + typedef struct smb_com_transaction_change_notify_rsp { 1312 + struct smb_hdr hdr; /* wct = 18 */ 1313 + __u8 Reserved[3]; 1314 + __le32 TotalParameterCount; 1315 + __le32 TotalDataCount; 1316 + __le32 ParameterCount; 1317 + __le32 ParameterOffset; 1318 + __le32 ParameterDisplacement; 1319 + __le32 DataCount; 1320 + __le32 DataOffset; 1321 + __le32 DataDisplacement; 1322 + __u8 SetupCount; /* 0 */ 1323 + __u16 ByteCount; 1324 + /* __u8 Pad[3]; */ 1325 + } __packed TRANSACT_CHANGE_NOTIFY_RSP; 1326 + 1327 + struct cifs_quota_data { 1328 + __u32 rsrvd1; /* 0 */ 1329 + __u32 sid_size; 1330 + __u64 rsrvd2; /* 0 */ 1331 + __u64 space_used; 1332 + __u64 soft_limit; 1333 + __u64 hard_limit; 1334 + char sid[]; /* variable size? */ 1335 + } __packed; 1336 + 1337 + /* quota sub commands */ 1338 + #define QUOTA_LIST_CONTINUE 0 1339 + #define QUOTA_LIST_START 0x100 1340 + #define QUOTA_FOR_SID 0x101 1341 + 1342 + struct trans2_req { 1343 + /* struct smb_hdr hdr precedes. Set wct = 14+ */ 1344 + __le16 TotalParameterCount; 1345 + __le16 TotalDataCount; 1346 + __le16 MaxParameterCount; 1347 + __le16 MaxDataCount; 1348 + __u8 MaxSetupCount; 1349 + __u8 Reserved; 1350 + __le16 Flags; 1351 + __le32 Timeout; 1352 + __u16 Reserved2; 1353 + __le16 ParameterCount; 1354 + __le16 ParameterOffset; 1355 + __le16 DataCount; 1356 + __le16 DataOffset; 1357 + __u8 SetupCount; 1358 + __u8 Reserved3; 1359 + __le16 SubCommand; /* 1st setup word - SetupCount words follow */ 1360 + __le16 ByteCount; 1361 + } __packed; 1362 + 1363 + struct smb_t2_req { 1364 + struct smb_hdr hdr; 1365 + struct trans2_req t2_req; 1366 + } __packed; 1367 + 1368 + struct trans2_resp { 1369 + /* struct smb_hdr hdr precedes. Note wct = 10 + setup count */ 1370 + __le16 TotalParameterCount; 1371 + __le16 TotalDataCount; 1372 + __u16 Reserved; 1373 + __le16 ParameterCount; 1374 + __le16 ParameterOffset; 1375 + __le16 ParameterDisplacement; 1376 + __le16 DataCount; 1377 + __le16 DataOffset; 1378 + __le16 DataDisplacement; 1379 + __u8 SetupCount; 1380 + __u8 Reserved1; 1381 + /* SetupWords[SetupCount]; 1382 + __u16 ByteCount; 1383 + __u16 Reserved2;*/ 1384 + /* data area follows */ 1385 + } __packed; 1386 + 1387 + struct smb_t2_rsp { 1388 + struct smb_hdr hdr; 1389 + struct trans2_resp t2_rsp; 1390 + } __packed; 1391 + 1392 + /* PathInfo/FileInfo infolevels */ 1393 + #define SMB_INFO_STANDARD 1 1394 + #define SMB_SET_FILE_EA 2 1395 + #define SMB_QUERY_FILE_EA_SIZE 2 1396 + #define SMB_INFO_QUERY_EAS_FROM_LIST 3 1397 + #define SMB_INFO_QUERY_ALL_EAS 4 1398 + #define SMB_INFO_IS_NAME_VALID 6 1399 + #define SMB_QUERY_FILE_BASIC_INFO 0x101 1400 + #define SMB_QUERY_FILE_STANDARD_INFO 0x102 1401 + #define SMB_QUERY_FILE_EA_INFO 0x103 1402 + #define SMB_QUERY_FILE_NAME_INFO 0x104 1403 + #define SMB_QUERY_FILE_ALLOCATION_INFO 0x105 1404 + #define SMB_QUERY_FILE_END_OF_FILEINFO 0x106 1405 + #define SMB_QUERY_FILE_ALL_INFO 0x107 1406 + #define SMB_QUERY_ALT_NAME_INFO 0x108 1407 + #define SMB_QUERY_FILE_STREAM_INFO 0x109 1408 + #define SMB_QUERY_FILE_COMPRESSION_INFO 0x10B 1409 + #define SMB_QUERY_FILE_UNIX_BASIC 0x200 1410 + #define SMB_QUERY_FILE_UNIX_LINK 0x201 1411 + #define SMB_QUERY_POSIX_ACL 0x204 1412 + #define SMB_QUERY_XATTR 0x205 /* e.g. system EA name space */ 1413 + #define SMB_QUERY_ATTR_FLAGS 0x206 /* append,immutable etc. */ 1414 + #define SMB_QUERY_POSIX_PERMISSION 0x207 1415 + #define SMB_QUERY_POSIX_LOCK 0x208 1416 + /* #define SMB_POSIX_OPEN 0x209 */ 1417 + /* #define SMB_POSIX_UNLINK 0x20a */ 1418 + #define SMB_QUERY_FILE__UNIX_INFO2 0x20b 1419 + #define SMB_QUERY_FILE_INTERNAL_INFO 0x3ee 1420 + #define SMB_QUERY_FILE_ACCESS_INFO 0x3f0 1421 + #define SMB_QUERY_FILE_NAME_INFO2 0x3f1 /* 0x30 bytes */ 1422 + #define SMB_QUERY_FILE_POSITION_INFO 0x3f6 1423 + #define SMB_QUERY_FILE_MODE_INFO 0x3f8 1424 + #define SMB_QUERY_FILE_ALGN_INFO 0x3f9 1425 + 1426 + 1427 + #define SMB_SET_FILE_BASIC_INFO 0x101 1428 + #define SMB_SET_FILE_DISPOSITION_INFO 0x102 1429 + #define SMB_SET_FILE_ALLOCATION_INFO 0x103 1430 + #define SMB_SET_FILE_END_OF_FILE_INFO 0x104 1431 + #define SMB_SET_FILE_UNIX_BASIC 0x200 1432 + #define SMB_SET_FILE_UNIX_LINK 0x201 1433 + #define SMB_SET_FILE_UNIX_HLINK 0x203 1434 + #define SMB_SET_POSIX_ACL 0x204 1435 + #define SMB_SET_XATTR 0x205 1436 + #define SMB_SET_ATTR_FLAGS 0x206 /* append, immutable etc. */ 1437 + #define SMB_SET_POSIX_LOCK 0x208 1438 + #define SMB_POSIX_OPEN 0x209 1439 + #define SMB_POSIX_UNLINK 0x20a 1440 + #define SMB_SET_FILE_UNIX_INFO2 0x20b 1441 + #define SMB_SET_FILE_BASIC_INFO2 0x3ec 1442 + #define SMB_SET_FILE_RENAME_INFORMATION 0x3f2 /* BB check if qpathinfo too */ 1443 + #define SMB_FILE_ALL_INFO2 0x3fa 1444 + #define SMB_SET_FILE_ALLOCATION_INFO2 0x3fb 1445 + #define SMB_SET_FILE_END_OF_FILE_INFO2 0x3fc 1446 + #define SMB_FILE_MOVE_CLUSTER_INFO 0x407 1447 + #define SMB_FILE_QUOTA_INFO 0x408 1448 + #define SMB_FILE_REPARSEPOINT_INFO 0x409 1449 + #define SMB_FILE_MAXIMUM_INFO 0x40d 1450 + 1451 + /* Find File infolevels */ 1452 + #define SMB_FIND_FILE_INFO_STANDARD 0x001 1453 + #define SMB_FIND_FILE_QUERY_EA_SIZE 0x002 1454 + #define SMB_FIND_FILE_QUERY_EAS_FROM_LIST 0x003 1455 + #define SMB_FIND_FILE_DIRECTORY_INFO 0x101 1456 + #define SMB_FIND_FILE_FULL_DIRECTORY_INFO 0x102 1457 + #define SMB_FIND_FILE_NAMES_INFO 0x103 1458 + #define SMB_FIND_FILE_BOTH_DIRECTORY_INFO 0x104 1459 + #define SMB_FIND_FILE_ID_FULL_DIR_INFO 0x105 1460 + #define SMB_FIND_FILE_ID_BOTH_DIR_INFO 0x106 1461 + #define SMB_FIND_FILE_UNIX 0x202 1462 + /* #define SMB_FIND_FILE_POSIX_INFO 0x064 */ 1463 + 1464 + typedef struct smb_com_transaction2_qpi_req { 1465 + struct smb_hdr hdr; /* wct = 14+ */ 1466 + __le16 TotalParameterCount; 1467 + __le16 TotalDataCount; 1468 + __le16 MaxParameterCount; 1469 + __le16 MaxDataCount; 1470 + __u8 MaxSetupCount; 1471 + __u8 Reserved; 1472 + __le16 Flags; 1473 + __le32 Timeout; 1474 + __u16 Reserved2; 1475 + __le16 ParameterCount; 1476 + __le16 ParameterOffset; 1477 + __le16 DataCount; 1478 + __le16 DataOffset; 1479 + __u8 SetupCount; 1480 + __u8 Reserved3; 1481 + __le16 SubCommand; /* one setup word */ 1482 + __le16 ByteCount; 1483 + __u8 Pad; 1484 + __le16 InformationLevel; 1485 + __u32 Reserved4; 1486 + char FileName[]; 1487 + } __packed TRANSACTION2_QPI_REQ; 1488 + 1489 + typedef struct smb_com_transaction2_qpi_rsp { 1490 + struct smb_hdr hdr; /* wct = 10 + SetupCount */ 1491 + struct trans2_resp t2; 1492 + __u16 ByteCount; 1493 + __u16 Reserved2; /* parameter word is present for infolevels > 100 */ 1494 + } __packed TRANSACTION2_QPI_RSP; 1495 + 1496 + typedef struct smb_com_transaction2_spi_req { 1497 + struct smb_hdr hdr; /* wct = 15 */ 1498 + __le16 TotalParameterCount; 1499 + __le16 TotalDataCount; 1500 + __le16 MaxParameterCount; 1501 + __le16 MaxDataCount; 1502 + __u8 MaxSetupCount; 1503 + __u8 Reserved; 1504 + __le16 Flags; 1505 + __le32 Timeout; 1506 + __u16 Reserved2; 1507 + __le16 ParameterCount; 1508 + __le16 ParameterOffset; 1509 + __le16 DataCount; 1510 + __le16 DataOffset; 1511 + __u8 SetupCount; 1512 + __u8 Reserved3; 1513 + __le16 SubCommand; /* one setup word */ 1514 + __le16 ByteCount; 1515 + __u8 Pad; 1516 + __u16 Pad1; 1517 + __le16 InformationLevel; 1518 + __u32 Reserved4; 1519 + char FileName[]; 1520 + } __packed TRANSACTION2_SPI_REQ; 1521 + 1522 + typedef struct smb_com_transaction2_spi_rsp { 1523 + struct smb_hdr hdr; /* wct = 10 + SetupCount */ 1524 + struct trans2_resp t2; 1525 + __u16 ByteCount; 1526 + __u16 Reserved2; /* parameter word is present for infolevels > 100 */ 1527 + } __packed TRANSACTION2_SPI_RSP; 1528 + 1529 + struct set_file_rename { 1530 + __le32 overwrite; /* 1 = overwrite dest */ 1531 + __u32 root_fid; /* zero */ 1532 + __le32 target_name_len; 1533 + char target_name[]; /* Must be unicode */ 1534 + } __packed; 1535 + 1536 + struct smb_com_transaction2_sfi_req { 1537 + struct smb_hdr hdr; /* wct = 15 */ 1538 + __le16 TotalParameterCount; 1539 + __le16 TotalDataCount; 1540 + __le16 MaxParameterCount; 1541 + __le16 MaxDataCount; 1542 + __u8 MaxSetupCount; 1543 + __u8 Reserved; 1544 + __le16 Flags; 1545 + __le32 Timeout; 1546 + __u16 Reserved2; 1547 + __le16 ParameterCount; 1548 + __le16 ParameterOffset; 1549 + __le16 DataCount; 1550 + __le16 DataOffset; 1551 + __u8 SetupCount; 1552 + __u8 Reserved3; 1553 + __le16 SubCommand; /* one setup word */ 1554 + __le16 ByteCount; 1555 + __u8 Pad; 1556 + __u16 Pad1; 1557 + __u16 Fid; 1558 + __le16 InformationLevel; 1559 + __u16 Reserved4; 1560 + __u8 payload[]; 1561 + } __packed; 1562 + 1563 + struct smb_com_transaction2_sfi_rsp { 1564 + struct smb_hdr hdr; /* wct = 10 + SetupCount */ 1565 + struct trans2_resp t2; 1566 + __u16 ByteCount; 1567 + __u16 Reserved2; /* parameter word reserved - present for infolevels > 100 */ 1568 + } __packed; 1569 + 1570 + struct smb_t2_qfi_req { 1571 + struct smb_hdr hdr; 1572 + struct trans2_req t2; 1573 + __u8 Pad; 1574 + __u16 Fid; 1575 + __le16 InformationLevel; 1576 + } __packed; 1577 + 1578 + struct smb_t2_qfi_rsp { 1579 + struct smb_hdr hdr; /* wct = 10 + SetupCount */ 1580 + struct trans2_resp t2; 1581 + __u16 ByteCount; 1582 + __u16 Reserved2; /* parameter word reserved - present for infolevels > 100 */ 1583 + } __packed; 1584 + 1585 + /* 1586 + * Flags on T2 FINDFIRST and FINDNEXT 1587 + */ 1588 + #define CIFS_SEARCH_CLOSE_ALWAYS 0x0001 1589 + #define CIFS_SEARCH_CLOSE_AT_END 0x0002 1590 + #define CIFS_SEARCH_RETURN_RESUME 0x0004 1591 + #define CIFS_SEARCH_CONTINUE_FROM_LAST 0x0008 1592 + #define CIFS_SEARCH_BACKUP_SEARCH 0x0010 1593 + 1594 + /* 1595 + * Size of the resume key on FINDFIRST and FINDNEXT calls 1596 + */ 1597 + #define CIFS_SMB_RESUME_KEY_SIZE 4 1598 + 1599 + typedef struct smb_com_transaction2_ffirst_req { 1600 + struct smb_hdr hdr; /* wct = 15 */ 1601 + __le16 TotalParameterCount; 1602 + __le16 TotalDataCount; 1603 + __le16 MaxParameterCount; 1604 + __le16 MaxDataCount; 1605 + __u8 MaxSetupCount; 1606 + __u8 Reserved; 1607 + __le16 Flags; 1608 + __le32 Timeout; 1609 + __u16 Reserved2; 1610 + __le16 ParameterCount; 1611 + __le16 ParameterOffset; 1612 + __le16 DataCount; 1613 + __le16 DataOffset; 1614 + __u8 SetupCount; /* one */ 1615 + __u8 Reserved3; 1616 + __le16 SubCommand; /* TRANS2_FIND_FIRST */ 1617 + __le16 ByteCount; 1618 + __u8 Pad; 1619 + __le16 SearchAttributes; 1620 + __le16 SearchCount; 1621 + __le16 SearchFlags; 1622 + __le16 InformationLevel; 1623 + __le32 SearchStorageType; 1624 + char FileName[]; 1625 + } __packed TRANSACTION2_FFIRST_REQ; 1626 + 1627 + typedef struct smb_com_transaction2_ffirst_rsp { 1628 + struct smb_hdr hdr; /* wct = 10 */ 1629 + struct trans2_resp t2; 1630 + __u16 ByteCount; 1631 + } __packed TRANSACTION2_FFIRST_RSP; 1632 + 1633 + typedef struct smb_com_transaction2_ffirst_rsp_parms { 1634 + __u16 SearchHandle; 1635 + __le16 SearchCount; 1636 + __le16 EndofSearch; 1637 + __le16 EAErrorOffset; 1638 + __le16 LastNameOffset; 1639 + } __packed T2_FFIRST_RSP_PARMS; 1640 + 1641 + typedef struct smb_com_transaction2_fnext_req { 1642 + struct smb_hdr hdr; /* wct = 15 */ 1643 + __le16 TotalParameterCount; 1644 + __le16 TotalDataCount; 1645 + __le16 MaxParameterCount; 1646 + __le16 MaxDataCount; 1647 + __u8 MaxSetupCount; 1648 + __u8 Reserved; 1649 + __le16 Flags; 1650 + __le32 Timeout; 1651 + __u16 Reserved2; 1652 + __le16 ParameterCount; 1653 + __le16 ParameterOffset; 1654 + __le16 DataCount; 1655 + __le16 DataOffset; 1656 + __u8 SetupCount; /* one */ 1657 + __u8 Reserved3; 1658 + __le16 SubCommand; /* TRANS2_FIND_NEXT */ 1659 + __le16 ByteCount; 1660 + __u8 Pad; 1661 + __u16 SearchHandle; 1662 + __le16 SearchCount; 1663 + __le16 InformationLevel; 1664 + __u32 ResumeKey; 1665 + __le16 SearchFlags; 1666 + char ResumeFileName[]; 1667 + } __packed TRANSACTION2_FNEXT_REQ; 1668 + 1669 + typedef struct smb_com_transaction2_fnext_rsp { 1670 + struct smb_hdr hdr; /* wct = 10 */ 1671 + struct trans2_resp t2; 1672 + __u16 ByteCount; 1673 + } __packed TRANSACTION2_FNEXT_RSP; 1674 + 1675 + typedef struct smb_com_transaction2_fnext_rsp_parms { 1676 + __le16 SearchCount; 1677 + __le16 EndofSearch; 1678 + __le16 EAErrorOffset; 1679 + __le16 LastNameOffset; 1680 + } __packed T2_FNEXT_RSP_PARMS; 1681 + 1682 + /* QFSInfo Levels */ 1683 + #define SMB_INFO_ALLOCATION 1 1684 + #define SMB_INFO_VOLUME 2 1685 + #define SMB_QUERY_FS_VOLUME_INFO 0x102 1686 + #define SMB_QUERY_FS_SIZE_INFO 0x103 1687 + #define SMB_QUERY_FS_DEVICE_INFO 0x104 1688 + #define SMB_QUERY_FS_ATTRIBUTE_INFO 0x105 1689 + #define SMB_QUERY_CIFS_UNIX_INFO 0x200 1690 + #define SMB_QUERY_POSIX_FS_INFO 0x201 1691 + #define SMB_QUERY_POSIX_WHO_AM_I 0x202 1692 + #define SMB_REQUEST_TRANSPORT_ENCRYPTION 0x203 1693 + #define SMB_QUERY_FS_PROXY 0x204 /* WAFS enabled. Returns structure 1694 + FILE_SYSTEM__UNIX_INFO to tell 1695 + whether new NTIOCTL available 1696 + (0xACE) for WAN friendly SMB 1697 + operations to be carried */ 1698 + #define SMB_QUERY_LABEL_INFO 0x3ea 1699 + #define SMB_QUERY_FS_QUOTA_INFO 0x3ee 1700 + #define SMB_QUERY_FS_FULL_SIZE_INFO 0x3ef 1701 + #define SMB_QUERY_OBJECTID_INFO 0x3f0 1702 + 1703 + typedef struct smb_com_transaction2_qfsi_req { 1704 + struct smb_hdr hdr; /* wct = 14+ */ 1705 + __le16 TotalParameterCount; 1706 + __le16 TotalDataCount; 1707 + __le16 MaxParameterCount; 1708 + __le16 MaxDataCount; 1709 + __u8 MaxSetupCount; 1710 + __u8 Reserved; 1711 + __le16 Flags; 1712 + __le32 Timeout; 1713 + __u16 Reserved2; 1714 + __le16 ParameterCount; 1715 + __le16 ParameterOffset; 1716 + __le16 DataCount; 1717 + __le16 DataOffset; 1718 + __u8 SetupCount; 1719 + __u8 Reserved3; 1720 + __le16 SubCommand; /* one setup word */ 1721 + __le16 ByteCount; 1722 + __u8 Pad; 1723 + __le16 InformationLevel; 1724 + } __packed TRANSACTION2_QFSI_REQ; 1725 + 1726 + typedef struct smb_com_transaction_qfsi_rsp { 1727 + struct smb_hdr hdr; /* wct = 10 + SetupCount */ 1728 + struct trans2_resp t2; 1729 + __u16 ByteCount; 1730 + __u8 Pad; /* may be three bytes? *//* followed by data area */ 1731 + } __packed TRANSACTION2_QFSI_RSP; 1732 + 1733 + typedef struct whoami_rsp_data { /* Query level 0x202 */ 1734 + __u32 flags; /* 0 = Authenticated user 1 = GUEST */ 1735 + __u32 mask; /* which flags bits server understands ie 0x0001 */ 1736 + __u64 unix_user_id; 1737 + __u64 unix_user_gid; 1738 + __u32 number_of_supplementary_gids; /* may be zero */ 1739 + __u32 number_of_sids; /* may be zero */ 1740 + __u32 length_of_sid_array; /* in bytes - may be zero */ 1741 + __u32 pad; /* reserved - MBZ */ 1742 + /* __u64 gid_array[0]; */ /* may be empty */ 1743 + /* __u8 * psid_list */ /* may be empty */ 1744 + } __packed WHOAMI_RSP_DATA; 1745 + 1746 + /* SETFSInfo Levels */ 1747 + #define SMB_SET_CIFS_UNIX_INFO 0x200 1748 + /* level 0x203 is defined above in list of QFS info levels */ 1749 + /* #define SMB_REQUEST_TRANSPORT_ENCRYPTION 0x203 */ 1750 + 1751 + /* Level 0x200 request structure follows */ 1752 + typedef struct smb_com_transaction2_setfsi_req { 1753 + struct smb_hdr hdr; /* wct = 15 */ 1754 + __le16 TotalParameterCount; 1755 + __le16 TotalDataCount; 1756 + __le16 MaxParameterCount; 1757 + __le16 MaxDataCount; 1758 + __u8 MaxSetupCount; 1759 + __u8 Reserved; 1760 + __le16 Flags; 1761 + __le32 Timeout; 1762 + __u16 Reserved2; 1763 + __le16 ParameterCount; /* 4 */ 1764 + __le16 ParameterOffset; 1765 + __le16 DataCount; /* 12 */ 1766 + __le16 DataOffset; 1767 + __u8 SetupCount; /* one */ 1768 + __u8 Reserved3; 1769 + __le16 SubCommand; /* TRANS2_SET_FS_INFORMATION */ 1770 + __le16 ByteCount; 1771 + __u8 Pad; 1772 + __u16 FileNum; /* Parameters start. */ 1773 + __le16 InformationLevel;/* Parameters end. */ 1774 + __le16 ClientUnixMajor; /* Data start. */ 1775 + __le16 ClientUnixMinor; 1776 + __le64 ClientUnixCap; /* Data end */ 1777 + } __packed TRANSACTION2_SETFSI_REQ; 1778 + 1779 + /* level 0x203 request structure follows */ 1780 + typedef struct smb_com_transaction2_setfs_enc_req { 1781 + struct smb_hdr hdr; /* wct = 15 */ 1782 + __le16 TotalParameterCount; 1783 + __le16 TotalDataCount; 1784 + __le16 MaxParameterCount; 1785 + __le16 MaxDataCount; 1786 + __u8 MaxSetupCount; 1787 + __u8 Reserved; 1788 + __le16 Flags; 1789 + __le32 Timeout; 1790 + __u16 Reserved2; 1791 + __le16 ParameterCount; /* 4 */ 1792 + __le16 ParameterOffset; 1793 + __le16 DataCount; /* 12 */ 1794 + __le16 DataOffset; 1795 + __u8 SetupCount; /* one */ 1796 + __u8 Reserved3; 1797 + __le16 SubCommand; /* TRANS2_SET_FS_INFORMATION */ 1798 + __le16 ByteCount; 1799 + __u8 Pad; 1800 + __u16 Reserved4; /* Parameters start. */ 1801 + __le16 InformationLevel;/* Parameters end. */ 1802 + /* NTLMSSP Blob, Data start. */ 1803 + } __packed TRANSACTION2_SETFSI_ENC_REQ; 1804 + 1805 + /* response for setfsinfo levels 0x200 and 0x203 */ 1806 + typedef struct smb_com_transaction2_setfsi_rsp { 1807 + struct smb_hdr hdr; /* wct = 10 */ 1808 + struct trans2_resp t2; 1809 + __u16 ByteCount; 1810 + } __packed TRANSACTION2_SETFSI_RSP; 1811 + 1812 + typedef struct smb_com_transaction2_get_dfs_refer_req { 1813 + struct smb_hdr hdr; /* wct = 15 */ 1814 + __le16 TotalParameterCount; 1815 + __le16 TotalDataCount; 1816 + __le16 MaxParameterCount; 1817 + __le16 MaxDataCount; 1818 + __u8 MaxSetupCount; 1819 + __u8 Reserved; 1820 + __le16 Flags; 1821 + __le32 Timeout; 1822 + __u16 Reserved2; 1823 + __le16 ParameterCount; 1824 + __le16 ParameterOffset; 1825 + __le16 DataCount; 1826 + __le16 DataOffset; 1827 + __u8 SetupCount; 1828 + __u8 Reserved3; 1829 + __le16 SubCommand; /* one setup word */ 1830 + __le16 ByteCount; 1831 + __u8 Pad[3]; /* Win2K has sent 0x0F01 (max response length 1832 + perhaps?) followed by one byte pad - doesn't 1833 + seem to matter though */ 1834 + __le16 MaxReferralLevel; 1835 + char RequestFileName[]; 1836 + } __packed TRANSACTION2_GET_DFS_REFER_REQ; 1837 + 1838 + #define DFS_VERSION cpu_to_le16(0x0003) 1839 + 1840 + /* DFS server target type */ 1841 + #define DFS_TYPE_LINK 0x0000 /* also for sysvol targets */ 1842 + #define DFS_TYPE_ROOT 0x0001 1843 + 1844 + /* Referral Entry Flags */ 1845 + #define DFS_NAME_LIST_REF 0x0200 /* set for domain or DC referral responses */ 1846 + #define DFS_TARGET_SET_BOUNDARY 0x0400 /* only valid with version 4 dfs req */ 1847 + 1848 + typedef struct dfs_referral_level_3 { /* version 4 is same, + one flag bit */ 1849 + __le16 VersionNumber; /* must be 3 or 4 */ 1850 + __le16 Size; 1851 + __le16 ServerType; /* 0x0001 = root targets; 0x0000 = link targets */ 1852 + __le16 ReferralEntryFlags; 1853 + __le32 TimeToLive; 1854 + __le16 DfsPathOffset; 1855 + __le16 DfsAlternatePathOffset; 1856 + __le16 NetworkAddressOffset; /* offset of the link target */ 1857 + __u8 ServiceSiteGuid[16]; /* MBZ, ignored */ 1858 + } __packed REFERRAL3; 1859 + 1860 + struct get_dfs_referral_rsp { 1861 + __le16 PathConsumed; 1862 + __le16 NumberOfReferrals; 1863 + __le32 DFSFlags; 1864 + REFERRAL3 referrals[]; /* array of level 3 dfs_referral structures */ 1865 + /* followed by the strings pointed to by the referral structures */ 1866 + } __packed; 1867 + 1868 + typedef struct smb_com_transaction_get_dfs_refer_rsp { 1869 + struct smb_hdr hdr; /* wct = 10 */ 1870 + struct trans2_resp t2; 1871 + __u16 ByteCount; 1872 + __u8 Pad; 1873 + struct get_dfs_referral_rsp dfs_data; 1874 + } __packed TRANSACTION2_GET_DFS_REFER_RSP; 1875 + 1876 + /* DFS Flags */ 1877 + #define DFSREF_REFERRAL_SERVER 0x00000001 /* all targets are DFS roots */ 1878 + #define DFSREF_STORAGE_SERVER 0x00000002 /* no further ref requests needed */ 1879 + #define DFSREF_TARGET_FAILBACK 0x00000004 /* only for DFS referral version 4 */ 1880 + 1881 + /* 1882 + ************************************************************************ 1883 + * All structs for everything above the SMB PDUs themselves 1884 + * (such as the T2 level specific data) go here 1885 + ************************************************************************ 1886 + */ 1887 + 1888 + /* 1889 + * Information on a server 1890 + */ 1891 + 1892 + struct serverInfo { 1893 + char name[16]; 1894 + unsigned char versionMajor; 1895 + unsigned char versionMinor; 1896 + unsigned long type; 1897 + unsigned int commentOffset; 1898 + } __packed; 1899 + 1900 + /* 1901 + * The following structure is the format of the data returned on a NetShareEnum 1902 + * with level "90" (x5A) 1903 + */ 1904 + 1905 + struct shareInfo { 1906 + char shareName[13]; 1907 + char pad; 1908 + unsigned short type; 1909 + unsigned int commentOffset; 1910 + } __packed; 1911 + 1912 + struct aliasInfo { 1913 + char aliasName[9]; 1914 + char pad; 1915 + unsigned int commentOffset; 1916 + unsigned char type[2]; 1917 + } __packed; 1918 + 1919 + struct aliasInfo92 { 1920 + int aliasNameOffset; 1921 + int serverNameOffset; 1922 + int shareNameOffset; 1923 + } __packed; 1924 + 1925 + typedef struct { 1926 + __le32 fsid; 1927 + __le32 SectorsPerAllocationUnit; 1928 + __le32 TotalAllocationUnits; 1929 + __le32 FreeAllocationUnits; 1930 + __le16 BytesPerSector; 1931 + } __packed FILE_SYSTEM_ALLOC_INFO; 1932 + 1933 + typedef struct { 1934 + __le16 MajorVersionNumber; 1935 + __le16 MinorVersionNumber; 1936 + __le64 Capability; 1937 + } __packed FILE_SYSTEM_UNIX_INFO; /* Unix extension level 0x200*/ 1938 + 1939 + /* Version numbers for CIFS UNIX major and minor. */ 1940 + #define CIFS_UNIX_MAJOR_VERSION 1 1941 + #define CIFS_UNIX_MINOR_VERSION 0 1942 + 1943 + /* Linux/Unix extensions capability flags */ 1944 + #define CIFS_UNIX_FCNTL_CAP 0x00000001 /* support for fcntl locks */ 1945 + #define CIFS_UNIX_POSIX_ACL_CAP 0x00000002 /* support getfacl/setfacl */ 1946 + #define CIFS_UNIX_XATTR_CAP 0x00000004 /* support new namespace */ 1947 + #define CIFS_UNIX_EXTATTR_CAP 0x00000008 /* support chattr/chflag */ 1948 + #define CIFS_UNIX_POSIX_PATHNAMES_CAP 0x00000010 /* Allow POSIX path chars */ 1949 + #define CIFS_UNIX_POSIX_PATH_OPS_CAP 0x00000020 /* Allow new POSIX path based 1950 + calls including posix open 1951 + and posix unlink */ 1952 + #define CIFS_UNIX_LARGE_READ_CAP 0x00000040 /* support reads >128K (up to 0xFFFF00 */ 1953 + #define CIFS_UNIX_LARGE_WRITE_CAP 0x00000080 1954 + #define CIFS_UNIX_TRANSPORT_ENCRYPTION_CAP 0x00000100 /* can do SPNEGO crypt */ 1955 + #define CIFS_UNIX_TRANSPORT_ENCRYPTION_MANDATORY_CAP 0x00000200 /* must do */ 1956 + #define CIFS_UNIX_PROXY_CAP 0x00000400 /* Proxy cap: 0xACE ioctl and QFS PROXY call */ 1957 + #ifdef CONFIG_CIFS_POSIX 1958 + /* presumably don't need the 0x20 POSIX_PATH_OPS_CAP since we never send 1959 + LockingX instead of posix locking call on unix sess (and we do not expect 1960 + LockingX to use different (ie Windows) semantics than posix locking on 1961 + the same session (if WINE needs to do this later, we can add this cap 1962 + back in later */ 1963 + /* #define CIFS_UNIX_CAP_MASK 0x000000fb */ 1964 + #define CIFS_UNIX_CAP_MASK 0x000003db 1965 + #else 1966 + #define CIFS_UNIX_CAP_MASK 0x00000013 1967 + #endif /* CONFIG_CIFS_POSIX */ 1968 + 1969 + 1970 + #define CIFS_POSIX_EXTENSIONS 0x00000010 /* support for new QFSInfo */ 1971 + 1972 + /******************************************************************************/ 1973 + /* QueryFileInfo/QueryPathinfo (also for SetPath/SetFile) data buffer formats */ 1974 + /******************************************************************************/ 1975 + typedef struct { /* data block encoding of response to level 263 QPathInfo */ 1976 + struct_group_attr(common_attributes, __packed, 1977 + __le64 CreationTime; 1978 + __le64 LastAccessTime; 1979 + __le64 LastWriteTime; 1980 + __le64 ChangeTime; 1981 + __le32 Attributes; 1982 + ); 1983 + __u32 Pad1; 1984 + __le64 AllocationSize; 1985 + __le64 EndOfFile; /* size ie offset to first free byte in file */ 1986 + __le32 NumberOfLinks; /* hard links */ 1987 + __u8 DeletePending; 1988 + __u8 Directory; 1989 + __u16 Pad2; 1990 + __le32 EASize; 1991 + __le32 FileNameLength; 1992 + union { 1993 + char __pad; 1994 + DECLARE_FLEX_ARRAY(char, FileName); 1995 + }; 1996 + } __packed FILE_ALL_INFO; /* level 0x107 QPathInfo */ 1997 + 1998 + typedef struct { 1999 + __le64 AllocationSize; 2000 + __le64 EndOfFile; /* size ie offset to first free byte in file */ 2001 + __le32 NumberOfLinks; /* hard links */ 2002 + __u8 DeletePending; 2003 + __u8 Directory; 2004 + __u16 Pad; 2005 + } __packed FILE_STANDARD_INFO; /* level 0x102 QPathInfo */ 2006 + 2007 + 2008 + /* defines for enumerating possible values of the Unix type field below */ 2009 + #define UNIX_FILE 0 2010 + #define UNIX_DIR 1 2011 + #define UNIX_SYMLINK 2 2012 + #define UNIX_CHARDEV 3 2013 + #define UNIX_BLOCKDEV 4 2014 + #define UNIX_FIFO 5 2015 + #define UNIX_SOCKET 6 2016 + typedef struct { 2017 + __le64 EndOfFile; 2018 + __le64 NumOfBytes; 2019 + __le64 LastStatusChange; /*SNIA specs DCE time for the 3 time fields */ 2020 + __le64 LastAccessTime; 2021 + __le64 LastModificationTime; 2022 + __le64 Uid; 2023 + __le64 Gid; 2024 + __le32 Type; 2025 + __le64 DevMajor; 2026 + __le64 DevMinor; 2027 + __le64 UniqueId; 2028 + __le64 Permissions; 2029 + __le64 Nlinks; 2030 + } __packed FILE_UNIX_BASIC_INFO; /* level 0x200 QPathInfo */ 2031 + 2032 + typedef struct { 2033 + DECLARE_FLEX_ARRAY(char, LinkDest); 2034 + } __packed FILE_UNIX_LINK_INFO; /* level 0x201 QPathInfo */ 2035 + 2036 + /* The following three structures are needed only for 2037 + setting time to NT4 and some older servers via 2038 + the primitive DOS time format */ 2039 + typedef struct { 2040 + __u16 Day:5; 2041 + __u16 Month:4; 2042 + __u16 Year:7; 2043 + } __packed SMB_DATE; 2044 + 2045 + typedef struct { 2046 + __u16 TwoSeconds:5; 2047 + __u16 Minutes:6; 2048 + __u16 Hours:5; 2049 + } __packed SMB_TIME; 2050 + 2051 + typedef struct { 2052 + __le16 CreationDate; /* SMB Date see above */ 2053 + __le16 CreationTime; /* SMB Time */ 2054 + __le16 LastAccessDate; 2055 + __le16 LastAccessTime; 2056 + __le16 LastWriteDate; 2057 + __le16 LastWriteTime; 2058 + __le32 DataSize; /* File Size (EOF) */ 2059 + __le32 AllocationSize; 2060 + __le16 Attributes; /* verify not u32 */ 2061 + __le32 EASize; 2062 + } __packed FILE_INFO_STANDARD; /* level 1 SetPath/FileInfo */ 2063 + 2064 + typedef struct { 2065 + __le64 CreationTime; 2066 + __le64 LastAccessTime; 2067 + __le64 LastWriteTime; 2068 + __le64 ChangeTime; 2069 + __le32 Attributes; 2070 + __u32 Pad; 2071 + } __packed FILE_BASIC_INFO; /* size info, level 0x101 */ 2072 + 2073 + struct file_allocation_info { 2074 + __le64 AllocationSize; /* Note old Samba srvr rounds this up too much */ 2075 + } __packed; /* size used on disk, for level 0x103 for set, 0x105 for query */ 2076 + 2077 + struct file_end_of_file_info { 2078 + __le64 FileSize; /* offset to end of file */ 2079 + } __packed; /* size info, level 0x104 for set, 0x106 for query */ 2080 + 2081 + struct file_alt_name_info { 2082 + DECLARE_FLEX_ARRAY(__u8, alt_name); 2083 + } __packed; /* level 0x0108 */ 2084 + 2085 + struct file_stream_info { 2086 + __le32 number_of_streams; /* BB check sizes and verify location */ 2087 + /* followed by info on streams themselves 2088 + u64 size; 2089 + u64 allocation_size 2090 + stream info */ 2091 + }; /* level 0x109 */ 2092 + 2093 + struct file_compression_info { 2094 + __le64 compressed_size; 2095 + __le16 format; 2096 + __u8 unit_shift; 2097 + __u8 ch_shift; 2098 + __u8 cl_shift; 2099 + __u8 pad[3]; 2100 + } __packed; /* level 0x10b */ 2101 + 2102 + /* POSIX ACL set/query path info structures */ 2103 + #define CIFS_ACL_VERSION 1 2104 + struct cifs_posix_ace { /* access control entry (ACE) */ 2105 + __u8 cifs_e_tag; 2106 + __u8 cifs_e_perm; 2107 + __le64 cifs_uid; /* or gid */ 2108 + } __packed; 2109 + 2110 + struct cifs_posix_acl { /* access control list (ACL) */ 2111 + __le16 version; 2112 + __le16 access_entry_count; /* access ACL - count of entries */ 2113 + __le16 default_entry_count; /* default ACL - count of entries */ 2114 + struct cifs_posix_ace ace_array[]; 2115 + /* followed by struct cifs_posix_ace default_ace_array[] */ 2116 + } __packed; /* level 0x204 */ 2117 + 2118 + /* types of access control entries already defined in posix_acl.h */ 2119 + /* #define CIFS_POSIX_ACL_USER_OBJ 0x01 2120 + #define CIFS_POSIX_ACL_USER 0x02 2121 + #define CIFS_POSIX_ACL_GROUP_OBJ 0x04 2122 + #define CIFS_POSIX_ACL_GROUP 0x08 2123 + #define CIFS_POSIX_ACL_MASK 0x10 2124 + #define CIFS_POSIX_ACL_OTHER 0x20 */ 2125 + 2126 + /* types of perms */ 2127 + /* #define CIFS_POSIX_ACL_EXECUTE 0x01 2128 + #define CIFS_POSIX_ACL_WRITE 0x02 2129 + #define CIFS_POSIX_ACL_READ 0x04 */ 2130 + 2131 + /* end of POSIX ACL definitions */ 2132 + 2133 + /* POSIX Open Flags */ 2134 + #define SMB_O_RDONLY 0x1 2135 + #define SMB_O_WRONLY 0x2 2136 + #define SMB_O_RDWR 0x4 2137 + #define SMB_O_CREAT 0x10 2138 + #define SMB_O_EXCL 0x20 2139 + #define SMB_O_TRUNC 0x40 2140 + #define SMB_O_APPEND 0x80 2141 + #define SMB_O_SYNC 0x100 2142 + #define SMB_O_DIRECTORY 0x200 2143 + #define SMB_O_NOFOLLOW 0x400 2144 + #define SMB_O_DIRECT 0x800 2145 + 2146 + typedef struct { 2147 + __le32 OpenFlags; /* same as NT CreateX */ 2148 + __le32 PosixOpenFlags; 2149 + __le64 Permissions; 2150 + __le16 Level; /* reply level requested (see QPathInfo levels) */ 2151 + } __packed OPEN_PSX_REQ; /* level 0x209 SetPathInfo data */ 2152 + 2153 + typedef struct { 2154 + __le16 OplockFlags; 2155 + __u16 Fid; 2156 + __le32 CreateAction; 2157 + __le16 ReturnedLevel; 2158 + __le16 Pad; 2159 + /* struct following varies based on requested level */ 2160 + } __packed OPEN_PSX_RSP; /* level 0x209 SetPathInfo data */ 2161 + 2162 + #define SMB_POSIX_UNLINK_FILE_TARGET 0 2163 + #define SMB_POSIX_UNLINK_DIRECTORY_TARGET 1 2164 + 2165 + struct unlink_psx_rq { /* level 0x20a SetPathInfo */ 2166 + __le16 type; 2167 + } __packed; 2168 + 2169 + struct file_internal_info { 2170 + __le64 UniqueId; /* inode number */ 2171 + } __packed; /* level 0x3ee */ 2172 + 2173 + struct file_mode_info { 2174 + __le32 Mode; 2175 + } __packed; /* level 0x3f8 */ 2176 + 2177 + struct file_attrib_tag { 2178 + __le32 Attribute; 2179 + __le32 ReparseTag; 2180 + } __packed; /* level 0x40b */ 2181 + 2182 + 2183 + /********************************************************/ 2184 + /* FindFirst/FindNext transact2 data buffer formats */ 2185 + /********************************************************/ 2186 + 2187 + typedef struct { 2188 + __le32 NextEntryOffset; 2189 + __u32 ResumeKey; /* as with FileIndex - no need to convert */ 2190 + FILE_UNIX_BASIC_INFO basic; 2191 + union { 2192 + char __pad; 2193 + DECLARE_FLEX_ARRAY(char, FileName); 2194 + }; 2195 + } __packed FILE_UNIX_INFO; /* level 0x202 */ 2196 + 2197 + typedef struct { 2198 + __u32 ResumeKey; 2199 + __le16 CreationDate; /* SMB Date */ 2200 + __le16 CreationTime; /* SMB Time */ 2201 + __le16 LastAccessDate; 2202 + __le16 LastAccessTime; 2203 + __le16 LastWriteDate; 2204 + __le16 LastWriteTime; 2205 + __le32 DataSize; /* File Size (EOF) */ 2206 + __le32 AllocationSize; 2207 + __le16 Attributes; /* verify not u32 */ 2208 + __u8 FileNameLength; 2209 + char FileName[]; 2210 + } __packed FIND_FILE_STANDARD_INFO; /* level 0x1 FF resp data */ 2211 + 2212 + 2213 + struct fea { 2214 + unsigned char EA_flags; 2215 + __u8 name_len; 2216 + __le16 value_len; 2217 + char name[]; 2218 + /* optionally followed by value */ 2219 + } __packed; 2220 + /* flags for _FEA.fEA */ 2221 + #define FEA_NEEDEA 0x80 /* need EA bit */ 2222 + 2223 + struct fealist { 2224 + __le32 list_len; 2225 + struct fea list; 2226 + } __packed; 2227 + 2228 + /* used to hold an arbitrary blob of data */ 2229 + struct data_blob { 2230 + __u8 *data; 2231 + size_t length; 2232 + void (*free) (struct data_blob *data_blob); 2233 + } __packed; 2234 + 2235 + 2236 + #ifdef CONFIG_CIFS_POSIX 2237 + /* 2238 + For better POSIX semantics from Linux client, (even better 2239 + than the existing CIFS Unix Extensions) we need updated PDUs for: 2240 + 2241 + 1) PosixCreateX - to set and return the mode, inode#, device info and 2242 + perhaps add a CreateDevice - to create Pipes and other special .inodes 2243 + Also note POSIX open flags 2244 + 2) Close - to return the last write time to do cache across close 2245 + more safely 2246 + 3) FindFirst return unique inode number - what about resume key, two 2247 + forms short (matches readdir) and full (enough info to cache inodes) 2248 + 4) Mkdir - set mode 2249 + 2250 + And under consideration: 2251 + 5) FindClose2 (return nanosecond timestamp ??) 2252 + 6) Use nanosecond timestamps throughout all time fields if 2253 + corresponding attribute flag is set 2254 + 7) sendfile - handle based copy 2255 + 2256 + what about fixing 64 bit alignment 2257 + 2258 + There are also various legacy SMB/CIFS requests used as is 2259 + 2260 + From existing Lanman and NTLM dialects: 2261 + -------------------------------------- 2262 + NEGOTIATE 2263 + SESSION_SETUP_ANDX (BB which?) 2264 + TREE_CONNECT_ANDX (BB which wct?) 2265 + TREE_DISCONNECT (BB add volume timestamp on response) 2266 + LOGOFF_ANDX 2267 + DELETE (note delete open file behavior) 2268 + DELETE_DIRECTORY 2269 + READ_AND_X 2270 + WRITE_AND_X 2271 + LOCKING_AND_X (note posix lock semantics) 2272 + RENAME (note rename across dirs and open file rename posix behaviors) 2273 + NT_RENAME (for hardlinks) Is this good enough for all features? 2274 + FIND_CLOSE2 2275 + TRANSACTION2 (18 cases) 2276 + SMB_SET_FILE_END_OF_FILE_INFO2 SMB_SET_PATH_END_OF_FILE_INFO2 2277 + (BB verify that never need to set allocation size) 2278 + SMB_SET_FILE_BASIC_INFO2 (setting times - BB can it be done via 2279 + Unix ext?) 2280 + 2281 + COPY (note support for copy across directories) - FUTURE, OPTIONAL 2282 + setting/getting OS/2 EAs - FUTURE (BB can this handle 2283 + setting Linux xattrs perfectly) - OPTIONAL 2284 + dnotify - FUTURE, OPTIONAL 2285 + quota - FUTURE, OPTIONAL 2286 + 2287 + Note that various requests implemented for NT interop such as 2288 + NT_TRANSACT (IOCTL) QueryReparseInfo 2289 + are unneeded to servers compliant with the CIFS POSIX extensions 2290 + 2291 + From CIFS Unix Extensions: 2292 + ------------------------- 2293 + T2 SET_PATH_INFO (SMB_SET_FILE_UNIX_LINK) for symlinks 2294 + T2 SET_PATH_INFO (SMB_SET_FILE_BASIC_INFO2) 2295 + T2 QUERY_PATH_INFO (SMB_QUERY_FILE_UNIX_LINK) 2296 + T2 QUERY_PATH_INFO (SMB_QUERY_FILE_UNIX_BASIC) BB check for missing 2297 + inode fields 2298 + Actually a need QUERY_FILE_UNIX_INFO 2299 + since has inode num 2300 + BB what about a) blksize/blkbits/blocks 2301 + b) i_version 2302 + c) i_rdev 2303 + d) notify mask? 2304 + e) generation 2305 + f) size_seqcount 2306 + T2 FIND_FIRST/FIND_NEXT FIND_FILE_UNIX 2307 + TRANS2_GET_DFS_REFERRAL - OPTIONAL but recommended 2308 + T2_QFS_INFO QueryDevice/AttributeInfo - OPTIONAL 2309 + */ 2310 + 2311 + /* xsymlink is a symlink format (used by MacOS) that can be used 2312 + to save symlink info in a regular file when 2313 + mounted to operating systems that do not 2314 + support the cifs Unix extensions or EAs (for xattr 2315 + based symlinks). For such a file to be recognized 2316 + as containing symlink data: 2317 + 2318 + 1) file size must be 1067, 2319 + 2) signature must begin file data, 2320 + 3) length field must be set to ASCII representation 2321 + of a number which is less than or equal to 1024, 2322 + 4) md5 must match that of the path data */ 2323 + 2324 + struct xsymlink { 2325 + /* 1067 bytes */ 2326 + char signature[4]; /* XSym */ /* not null terminated */ 2327 + char cr0; /* \n */ 2328 + /* ASCII representation of length (4 bytes decimal) terminated by \n not null */ 2329 + char length[4]; 2330 + char cr1; /* \n */ 2331 + /* md5 of valid subset of path ie path[0] through path[length-1] */ 2332 + __u8 md5[32]; 2333 + char cr2; /* \n */ 2334 + /* if room left, then end with \n then 0x20s by convention but not required */ 2335 + char path[1024]; 2336 + } __packed; 2337 + 2338 + typedef struct file_xattr_info { 2339 + /* BB do we need another field for flags? BB */ 2340 + __u32 xattr_name_len; 2341 + __u32 xattr_value_len; 2342 + char xattr_name[]; 2343 + /* followed by xattr_value[xattr_value_len], no pad */ 2344 + } __packed FILE_XATTR_INFO; /* extended attribute info level 0x205 */ 2345 + 2346 + /* flags for lsattr and chflags commands removed arein uapi/linux/fs.h */ 2347 + 2348 + typedef struct file_chattr_info { 2349 + __le64 mask; /* list of all possible attribute bits */ 2350 + __le64 mode; /* list of actual attribute bits on this inode */ 2351 + } __packed FILE_CHATTR_INFO; /* ext attributes (chattr, chflags) level 0x206 */ 2352 + #endif /* POSIX */ 2353 + 2354 + #endif /* _SMB1PDU_H */
+335
fs/smb/client/smb1proto.h
··· 1 + /* SPDX-License-Identifier: LGPL-2.1 */ 2 + /* 3 + * 4 + * Copyright (c) International Business Machines Corp., 2002,2008 5 + * Author(s): Steve French (sfrench@us.ibm.com) 6 + * 7 + */ 8 + #ifndef _SMB1PROTO_H 9 + #define _SMB1PROTO_H 10 + 11 + #include <linux/uidgid_types.h> 12 + #include <linux/unaligned.h> 13 + #include "../common/smb2pdu.h" 14 + #include "cifsglob.h" 15 + 16 + struct cifs_unix_set_info_args { 17 + __u64 ctime; 18 + __u64 atime; 19 + __u64 mtime; 20 + __u64 mode; 21 + kuid_t uid; 22 + kgid_t gid; 23 + dev_t device; 24 + }; 25 + 26 + #ifdef CONFIG_CIFS_ALLOW_INSECURE_LEGACY 27 + 28 + /* 29 + * cifssmb.c 30 + */ 31 + int small_smb_init_no_tc(const int smb_command, const int wct, 32 + struct cifs_ses *ses, void **request_buf); 33 + int CIFSSMBNegotiate(const unsigned int xid, struct cifs_ses *ses, 34 + struct TCP_Server_Info *server); 35 + int CIFSTCon(const unsigned int xid, struct cifs_ses *ses, const char *tree, 36 + struct cifs_tcon *tcon, const struct nls_table *nls_codepage); 37 + int CIFSSMBTDis(const unsigned int xid, struct cifs_tcon *tcon); 38 + int CIFSSMBEcho(struct TCP_Server_Info *server); 39 + int CIFSSMBLogoff(const unsigned int xid, struct cifs_ses *ses); 40 + int CIFSPOSIXDelFile(const unsigned int xid, struct cifs_tcon *tcon, 41 + const char *fileName, __u16 type, 42 + const struct nls_table *nls_codepage, int remap); 43 + int CIFSSMBDelFile(const unsigned int xid, struct cifs_tcon *tcon, 44 + const char *name, struct cifs_sb_info *cifs_sb, 45 + struct dentry *dentry); 46 + int CIFSSMBRmDir(const unsigned int xid, struct cifs_tcon *tcon, 47 + const char *name, struct cifs_sb_info *cifs_sb); 48 + int CIFSSMBMkDir(const unsigned int xid, struct inode *inode, umode_t mode, 49 + struct cifs_tcon *tcon, const char *name, 50 + struct cifs_sb_info *cifs_sb); 51 + int CIFSPOSIXCreate(const unsigned int xid, struct cifs_tcon *tcon, 52 + __u32 posix_flags, __u64 mode, __u16 *netfid, 53 + FILE_UNIX_BASIC_INFO *pRetData, __u32 *pOplock, 54 + const char *name, const struct nls_table *nls_codepage, 55 + int remap); 56 + int SMBLegacyOpen(const unsigned int xid, struct cifs_tcon *tcon, 57 + const char *fileName, const int openDisposition, 58 + const int access_flags, const int create_options, 59 + __u16 *netfid, int *pOplock, FILE_ALL_INFO *pfile_info, 60 + const struct nls_table *nls_codepage, int remap); 61 + int CIFS_open(const unsigned int xid, struct cifs_open_parms *oparms, 62 + int *oplock, FILE_ALL_INFO *buf); 63 + int cifs_async_readv(struct cifs_io_subrequest *rdata); 64 + int CIFSSMBRead(const unsigned int xid, struct cifs_io_parms *io_parms, 65 + unsigned int *nbytes, char **buf, int *pbuf_type); 66 + int CIFSSMBWrite(const unsigned int xid, struct cifs_io_parms *io_parms, 67 + unsigned int *nbytes, const char *buf); 68 + void cifs_async_writev(struct cifs_io_subrequest *wdata); 69 + int CIFSSMBWrite2(const unsigned int xid, struct cifs_io_parms *io_parms, 70 + unsigned int *nbytes, struct kvec *iov, int n_vec); 71 + int cifs_lockv(const unsigned int xid, struct cifs_tcon *tcon, 72 + const __u16 netfid, const __u8 lock_type, 73 + const __u32 num_unlock, const __u32 num_lock, 74 + LOCKING_ANDX_RANGE *buf); 75 + int CIFSSMBLock(const unsigned int xid, struct cifs_tcon *tcon, 76 + const __u16 smb_file_id, const __u32 netpid, const __u64 len, 77 + const __u64 offset, const __u32 numUnlock, const __u32 numLock, 78 + const __u8 lockType, const bool waitFlag, 79 + const __u8 oplock_level); 80 + int CIFSSMBPosixLock(const unsigned int xid, struct cifs_tcon *tcon, 81 + const __u16 smb_file_id, const __u32 netpid, 82 + const loff_t start_offset, const __u64 len, 83 + struct file_lock *pLockData, const __u16 lock_type, 84 + const bool waitFlag); 85 + int CIFSSMBClose(const unsigned int xid, struct cifs_tcon *tcon, 86 + int smb_file_id); 87 + int CIFSSMBFlush(const unsigned int xid, struct cifs_tcon *tcon, 88 + int smb_file_id); 89 + int CIFSSMBRename(const unsigned int xid, struct cifs_tcon *tcon, 90 + struct dentry *source_dentry, const char *from_name, 91 + const char *to_name, struct cifs_sb_info *cifs_sb); 92 + int CIFSSMBRenameOpenFile(const unsigned int xid, struct cifs_tcon *pTcon, 93 + int netfid, const char *target_name, 94 + const struct nls_table *nls_codepage, int remap); 95 + int CIFSUnixCreateSymLink(const unsigned int xid, struct cifs_tcon *tcon, 96 + const char *fromName, const char *toName, 97 + const struct nls_table *nls_codepage, int remap); 98 + int CIFSUnixCreateHardLink(const unsigned int xid, struct cifs_tcon *tcon, 99 + const char *fromName, const char *toName, 100 + const struct nls_table *nls_codepage, int remap); 101 + int CIFSCreateHardLink(const unsigned int xid, struct cifs_tcon *tcon, 102 + struct dentry *source_dentry, const char *from_name, 103 + const char *to_name, struct cifs_sb_info *cifs_sb); 104 + int CIFSSMBUnixQuerySymLink(const unsigned int xid, struct cifs_tcon *tcon, 105 + const unsigned char *searchName, 106 + char **symlinkinfo, 107 + const struct nls_table *nls_codepage, int remap); 108 + int cifs_query_reparse_point(const unsigned int xid, struct cifs_tcon *tcon, 109 + struct cifs_sb_info *cifs_sb, 110 + const char *full_path, u32 *tag, struct kvec *rsp, 111 + int *rsp_buftype); 112 + struct inode *cifs_create_reparse_inode(struct cifs_open_info_data *data, 113 + struct super_block *sb, 114 + const unsigned int xid, 115 + struct cifs_tcon *tcon, 116 + const char *full_path, bool directory, 117 + struct kvec *reparse_iov, 118 + struct kvec *xattr_iov); 119 + int CIFSSMB_set_compression(const unsigned int xid, struct cifs_tcon *tcon, 120 + __u16 fid); 121 + int cifs_do_get_acl(const unsigned int xid, struct cifs_tcon *tcon, 122 + const unsigned char *searchName, struct posix_acl **acl, 123 + const int acl_type, const struct nls_table *nls_codepage, 124 + int remap); 125 + int cifs_do_set_acl(const unsigned int xid, struct cifs_tcon *tcon, 126 + const unsigned char *fileName, const struct posix_acl *acl, 127 + const int acl_type, const struct nls_table *nls_codepage, 128 + int remap); 129 + int CIFSGetExtAttr(const unsigned int xid, struct cifs_tcon *tcon, 130 + const int netfid, __u64 *pExtAttrBits, __u64 *pMask); 131 + int CIFSSMBGetCIFSACL(const unsigned int xid, struct cifs_tcon *tcon, 132 + __u16 fid, struct smb_ntsd **acl_inf, __u32 *pbuflen, 133 + __u32 info); 134 + int CIFSSMBSetCIFSACL(const unsigned int xid, struct cifs_tcon *tcon, 135 + __u16 fid, struct smb_ntsd *pntsd, __u32 acllen, 136 + int aclflag); 137 + int SMBQueryInformation(const unsigned int xid, struct cifs_tcon *tcon, 138 + const char *search_name, FILE_ALL_INFO *data, 139 + const struct nls_table *nls_codepage, int remap); 140 + int CIFSSMBQFileInfo(const unsigned int xid, struct cifs_tcon *tcon, 141 + u16 netfid, FILE_ALL_INFO *pFindData); 142 + int CIFSSMBQPathInfo(const unsigned int xid, struct cifs_tcon *tcon, 143 + const char *search_name, FILE_ALL_INFO *data, 144 + int legacy /* old style infolevel */, 145 + const struct nls_table *nls_codepage, int remap); 146 + int CIFSSMBUnixQFileInfo(const unsigned int xid, struct cifs_tcon *tcon, 147 + u16 netfid, FILE_UNIX_BASIC_INFO *pFindData); 148 + int CIFSSMBUnixQPathInfo(const unsigned int xid, struct cifs_tcon *tcon, 149 + const unsigned char *searchName, 150 + FILE_UNIX_BASIC_INFO *pFindData, 151 + const struct nls_table *nls_codepage, int remap); 152 + int CIFSFindFirst(const unsigned int xid, struct cifs_tcon *tcon, 153 + const char *searchName, struct cifs_sb_info *cifs_sb, 154 + __u16 *pnetfid, __u16 search_flags, 155 + struct cifs_search_info *psrch_inf, bool msearch); 156 + int CIFSFindNext(const unsigned int xid, struct cifs_tcon *tcon, 157 + __u16 searchHandle, __u16 search_flags, 158 + struct cifs_search_info *psrch_inf); 159 + int CIFSFindClose(const unsigned int xid, struct cifs_tcon *tcon, 160 + const __u16 searchHandle); 161 + int CIFSGetSrvInodeNumber(const unsigned int xid, struct cifs_tcon *tcon, 162 + const char *search_name, __u64 *inode_number, 163 + const struct nls_table *nls_codepage, int remap); 164 + int CIFSGetDFSRefer(const unsigned int xid, struct cifs_ses *ses, 165 + const char *search_name, 166 + struct dfs_info3_param **target_nodes, 167 + unsigned int *num_of_nodes, 168 + const struct nls_table *nls_codepage, int remap); 169 + int SMBOldQFSInfo(const unsigned int xid, struct cifs_tcon *tcon, 170 + struct kstatfs *FSData); 171 + int CIFSSMBQFSInfo(const unsigned int xid, struct cifs_tcon *tcon, 172 + struct kstatfs *FSData); 173 + int CIFSSMBQFSAttributeInfo(const unsigned int xid, struct cifs_tcon *tcon); 174 + int CIFSSMBQFSDeviceInfo(const unsigned int xid, struct cifs_tcon *tcon); 175 + int CIFSSMBQFSUnixInfo(const unsigned int xid, struct cifs_tcon *tcon); 176 + int CIFSSMBSetFSUnixInfo(const unsigned int xid, struct cifs_tcon *tcon, 177 + __u64 cap); 178 + int CIFSSMBQFSPosixInfo(const unsigned int xid, struct cifs_tcon *tcon, 179 + struct kstatfs *FSData); 180 + int CIFSSMBSetEOF(const unsigned int xid, struct cifs_tcon *tcon, 181 + const char *file_name, __u64 size, 182 + struct cifs_sb_info *cifs_sb, bool set_allocation, 183 + struct dentry *dentry); 184 + int CIFSSMBSetFileSize(const unsigned int xid, struct cifs_tcon *tcon, 185 + struct cifsFileInfo *cfile, __u64 size, 186 + bool set_allocation); 187 + int SMBSetInformation(const unsigned int xid, struct cifs_tcon *tcon, 188 + const char *fileName, __le32 attributes, 189 + __le64 write_time, const struct nls_table *nls_codepage, 190 + struct cifs_sb_info *cifs_sb); 191 + int CIFSSMBSetFileInfo(const unsigned int xid, struct cifs_tcon *tcon, 192 + const FILE_BASIC_INFO *data, __u16 fid, 193 + __u32 pid_of_opener); 194 + int CIFSSMBSetFileDisposition(const unsigned int xid, struct cifs_tcon *tcon, 195 + bool delete_file, __u16 fid, 196 + __u32 pid_of_opener); 197 + int CIFSSMBSetPathInfo(const unsigned int xid, struct cifs_tcon *tcon, 198 + const char *fileName, const FILE_BASIC_INFO *data, 199 + const struct nls_table *nls_codepage, 200 + struct cifs_sb_info *cifs_sb); 201 + int CIFSSMBUnixSetFileInfo(const unsigned int xid, struct cifs_tcon *tcon, 202 + const struct cifs_unix_set_info_args *args, u16 fid, 203 + u32 pid_of_opener); 204 + int CIFSSMBUnixSetPathInfo(const unsigned int xid, struct cifs_tcon *tcon, 205 + const char *file_name, 206 + const struct cifs_unix_set_info_args *args, 207 + const struct nls_table *nls_codepage, int remap); 208 + ssize_t CIFSSMBQAllEAs(const unsigned int xid, struct cifs_tcon *tcon, 209 + const unsigned char *searchName, 210 + const unsigned char *ea_name, char *EAData, 211 + size_t buf_size, struct cifs_sb_info *cifs_sb); 212 + int CIFSSMBSetEA(const unsigned int xid, struct cifs_tcon *tcon, 213 + const char *fileName, const char *ea_name, 214 + const void *ea_value, const __u16 ea_value_len, 215 + const struct nls_table *nls_codepage, 216 + struct cifs_sb_info *cifs_sb); 217 + 218 + /* 219 + * smb1debug.c 220 + */ 221 + void cifs_dump_detail(void *buf, size_t buf_len, 222 + struct TCP_Server_Info *server); 223 + 224 + /* 225 + * smb1encrypt.c 226 + */ 227 + int cifs_sign_rqst(struct smb_rqst *rqst, struct TCP_Server_Info *server, 228 + __u32 *pexpected_response_sequence_number); 229 + int cifs_verify_signature(struct smb_rqst *rqst, 230 + struct TCP_Server_Info *server, 231 + __u32 expected_sequence_number); 232 + 233 + /* 234 + * smb1maperror.c 235 + */ 236 + int map_smb_to_linux_error(char *buf, bool logErr); 237 + int map_and_check_smb_error(struct TCP_Server_Info *server, 238 + struct mid_q_entry *mid, bool logErr); 239 + 240 + /* 241 + * smb1misc.c 242 + */ 243 + unsigned int header_assemble(struct smb_hdr *buffer, char smb_command, 244 + const struct cifs_tcon *treeCon, int word_count); 245 + bool is_valid_oplock_break(char *buffer, struct TCP_Server_Info *srv); 246 + unsigned int smbCalcSize(void *buf); 247 + 248 + /* 249 + * smb1ops.c 250 + */ 251 + extern struct smb_version_operations smb1_operations; 252 + extern struct smb_version_values smb1_values; 253 + 254 + void reset_cifs_unix_caps(unsigned int xid, struct cifs_tcon *tcon, 255 + struct cifs_sb_info *cifs_sb, 256 + struct smb3_fs_context *ctx); 257 + 258 + /* 259 + * smb1session.c 260 + */ 261 + int CIFS_SessSetup(const unsigned int xid, struct cifs_ses *ses, 262 + struct TCP_Server_Info *server, 263 + const struct nls_table *nls_cp); 264 + 265 + /* 266 + * smb1transport.c 267 + */ 268 + struct mid_q_entry *cifs_setup_async_request(struct TCP_Server_Info *server, 269 + struct smb_rqst *rqst); 270 + int SendReceiveNoRsp(const unsigned int xid, struct cifs_ses *ses, 271 + char *in_buf, unsigned int in_len, int flags); 272 + int cifs_check_receive(struct mid_q_entry *mid, struct TCP_Server_Info *server, 273 + bool log_error); 274 + struct mid_q_entry *cifs_setup_request(struct cifs_ses *ses, 275 + struct TCP_Server_Info *server, 276 + struct smb_rqst *rqst); 277 + int SendReceive2(const unsigned int xid, struct cifs_ses *ses, 278 + struct kvec *iov, int n_vec, int *resp_buf_type /* ret */, 279 + const int flags, struct kvec *resp_iov); 280 + int SendReceive(const unsigned int xid, struct cifs_ses *ses, 281 + struct smb_hdr *in_buf, unsigned int in_len, 282 + struct smb_hdr *out_buf, int *pbytes_returned, 283 + const int flags); 284 + bool cifs_check_trans2(struct mid_q_entry *mid, struct TCP_Server_Info *server, 285 + char *buf, int malformed); 286 + int checkSMB(char *buf, unsigned int pdu_len, unsigned int total_read, 287 + struct TCP_Server_Info *server); 288 + 289 + 290 + static inline __u16 291 + get_mid(const struct smb_hdr *smb) 292 + { 293 + return le16_to_cpu(smb->Mid); 294 + } 295 + 296 + static inline bool 297 + compare_mid(__u16 mid, const struct smb_hdr *smb) 298 + { 299 + return mid == le16_to_cpu(smb->Mid); 300 + } 301 + 302 + #define GETU16(var) (*((__u16 *)var)) /* BB check for endian issues */ 303 + #define GETU32(var) (*((__u32 *)var)) /* BB check for endian issues */ 304 + 305 + /* given a pointer to an smb_hdr, retrieve a void pointer to the ByteCount */ 306 + static inline void * 307 + BCC(struct smb_hdr *smb) 308 + { 309 + return (void *)smb + sizeof(*smb) + 2 * smb->WordCount; 310 + } 311 + 312 + /* given a pointer to an smb_hdr retrieve the pointer to the byte area */ 313 + #define pByteArea(smb_var) (BCC(smb_var) + 2) 314 + 315 + /* get the unconverted ByteCount for a SMB packet and return it */ 316 + static inline __u16 317 + get_bcc(struct smb_hdr *hdr) 318 + { 319 + __le16 *bc_ptr = (__le16 *)BCC(hdr); 320 + 321 + return get_unaligned_le16(bc_ptr); 322 + } 323 + 324 + /* set the ByteCount for a SMB packet in little-endian */ 325 + static inline void 326 + put_bcc(__u16 count, struct smb_hdr *hdr) 327 + { 328 + __le16 *bc_ptr = (__le16 *)BCC(hdr); 329 + 330 + put_unaligned_le16(count, bc_ptr); 331 + } 332 + 333 + #endif /* CONFIG_CIFS_ALLOW_INSECURE_LEGACY */ 334 + 335 + #endif /* _SMB1PROTO_H */
+995
fs/smb/client/smb1session.c
··· 1 + // SPDX-License-Identifier: LGPL-2.1 2 + /* 3 + * 4 + * SMB/CIFS session setup handling routines 5 + * 6 + * Copyright (c) International Business Machines Corp., 2006, 2009 7 + * Author(s): Steve French (sfrench@us.ibm.com) 8 + * 9 + */ 10 + 11 + #include "cifsproto.h" 12 + #include "smb1proto.h" 13 + #include "ntlmssp.h" 14 + #include "nterr.h" 15 + #include "cifs_spnego.h" 16 + #include "cifs_unicode.h" 17 + #include "cifs_debug.h" 18 + 19 + struct sess_data { 20 + unsigned int xid; 21 + struct cifs_ses *ses; 22 + struct TCP_Server_Info *server; 23 + struct nls_table *nls_cp; 24 + void (*func)(struct sess_data *); 25 + int result; 26 + unsigned int in_len; 27 + 28 + /* we will send the SMB in three pieces: 29 + * a fixed length beginning part, an optional 30 + * SPNEGO blob (which can be zero length), and a 31 + * last part which will include the strings 32 + * and rest of bcc area. This allows us to avoid 33 + * a large buffer 17K allocation 34 + */ 35 + int buf0_type; 36 + struct kvec iov[3]; 37 + }; 38 + 39 + static __u32 cifs_ssetup_hdr(struct cifs_ses *ses, 40 + struct TCP_Server_Info *server, 41 + SESSION_SETUP_ANDX *pSMB) 42 + { 43 + __u32 capabilities = 0; 44 + 45 + /* init fields common to all four types of SessSetup */ 46 + /* Note that offsets for first seven fields in req struct are same */ 47 + /* in CIFS Specs so does not matter which of 3 forms of struct */ 48 + /* that we use in next few lines */ 49 + /* Note that header is initialized to zero in header_assemble */ 50 + pSMB->req.AndXCommand = 0xFF; 51 + pSMB->req.MaxBufferSize = cpu_to_le16(min_t(u32, 52 + CIFSMaxBufSize + MAX_CIFS_HDR_SIZE - 4, 53 + USHRT_MAX)); 54 + pSMB->req.MaxMpxCount = cpu_to_le16(server->maxReq); 55 + pSMB->req.VcNumber = cpu_to_le16(1); 56 + pSMB->req.SessionKey = server->session_key_id; 57 + 58 + /* Now no need to set SMBFLG_CASELESS or obsolete CANONICAL PATH */ 59 + 60 + /* BB verify whether signing required on neg or just auth frame (and NTLM case) */ 61 + 62 + capabilities = CAP_LARGE_FILES | CAP_NT_SMBS | CAP_LEVEL_II_OPLOCKS | 63 + CAP_LARGE_WRITE_X | CAP_LARGE_READ_X; 64 + 65 + if (server->sign) 66 + pSMB->req.hdr.Flags2 |= SMBFLG2_SECURITY_SIGNATURE; 67 + 68 + if (ses->capabilities & CAP_UNICODE) { 69 + pSMB->req.hdr.Flags2 |= SMBFLG2_UNICODE; 70 + capabilities |= CAP_UNICODE; 71 + } 72 + if (ses->capabilities & CAP_STATUS32) { 73 + pSMB->req.hdr.Flags2 |= SMBFLG2_ERR_STATUS; 74 + capabilities |= CAP_STATUS32; 75 + } 76 + if (ses->capabilities & CAP_DFS) { 77 + pSMB->req.hdr.Flags2 |= SMBFLG2_DFS; 78 + capabilities |= CAP_DFS; 79 + } 80 + if (ses->capabilities & CAP_UNIX) 81 + capabilities |= CAP_UNIX; 82 + 83 + return capabilities; 84 + } 85 + 86 + static void 87 + unicode_oslm_strings(char **pbcc_area, const struct nls_table *nls_cp) 88 + { 89 + char *bcc_ptr = *pbcc_area; 90 + int bytes_ret = 0; 91 + 92 + /* Copy OS version */ 93 + bytes_ret = cifs_strtoUTF16((__le16 *)bcc_ptr, "Linux version ", 32, 94 + nls_cp); 95 + bcc_ptr += 2 * bytes_ret; 96 + bytes_ret = cifs_strtoUTF16((__le16 *) bcc_ptr, init_utsname()->release, 97 + 32, nls_cp); 98 + bcc_ptr += 2 * bytes_ret; 99 + bcc_ptr += 2; /* trailing null */ 100 + 101 + bytes_ret = cifs_strtoUTF16((__le16 *) bcc_ptr, CIFS_NETWORK_OPSYS, 102 + 32, nls_cp); 103 + bcc_ptr += 2 * bytes_ret; 104 + bcc_ptr += 2; /* trailing null */ 105 + 106 + *pbcc_area = bcc_ptr; 107 + } 108 + 109 + static void 110 + ascii_oslm_strings(char **pbcc_area, const struct nls_table *nls_cp) 111 + { 112 + char *bcc_ptr = *pbcc_area; 113 + 114 + strcpy(bcc_ptr, "Linux version "); 115 + bcc_ptr += strlen("Linux version "); 116 + strcpy(bcc_ptr, init_utsname()->release); 117 + bcc_ptr += strlen(init_utsname()->release) + 1; 118 + 119 + strcpy(bcc_ptr, CIFS_NETWORK_OPSYS); 120 + bcc_ptr += strlen(CIFS_NETWORK_OPSYS) + 1; 121 + 122 + *pbcc_area = bcc_ptr; 123 + } 124 + 125 + static void unicode_domain_string(char **pbcc_area, struct cifs_ses *ses, 126 + const struct nls_table *nls_cp) 127 + { 128 + char *bcc_ptr = *pbcc_area; 129 + int bytes_ret = 0; 130 + 131 + /* copy domain */ 132 + if (ses->domainName == NULL) { 133 + /* 134 + * Sending null domain better than using a bogus domain name (as 135 + * we did briefly in 2.6.18) since server will use its default 136 + */ 137 + *bcc_ptr = 0; 138 + *(bcc_ptr+1) = 0; 139 + bytes_ret = 0; 140 + } else 141 + bytes_ret = cifs_strtoUTF16((__le16 *) bcc_ptr, ses->domainName, 142 + CIFS_MAX_DOMAINNAME_LEN, nls_cp); 143 + bcc_ptr += 2 * bytes_ret; 144 + bcc_ptr += 2; /* account for null terminator */ 145 + 146 + *pbcc_area = bcc_ptr; 147 + } 148 + 149 + static void ascii_domain_string(char **pbcc_area, struct cifs_ses *ses, 150 + const struct nls_table *nls_cp) 151 + { 152 + char *bcc_ptr = *pbcc_area; 153 + int len; 154 + 155 + /* copy domain */ 156 + if (ses->domainName != NULL) { 157 + len = strscpy(bcc_ptr, ses->domainName, CIFS_MAX_DOMAINNAME_LEN); 158 + if (WARN_ON_ONCE(len < 0)) 159 + len = CIFS_MAX_DOMAINNAME_LEN - 1; 160 + bcc_ptr += len; 161 + } /* else we send a null domain name so server will default to its own domain */ 162 + *bcc_ptr = 0; 163 + bcc_ptr++; 164 + 165 + *pbcc_area = bcc_ptr; 166 + } 167 + 168 + static void unicode_ssetup_strings(char **pbcc_area, struct cifs_ses *ses, 169 + const struct nls_table *nls_cp) 170 + { 171 + char *bcc_ptr = *pbcc_area; 172 + int bytes_ret = 0; 173 + 174 + /* BB FIXME add check that strings less than 335 or will need to send as arrays */ 175 + 176 + /* copy user */ 177 + if (ses->user_name == NULL) { 178 + /* null user mount */ 179 + *bcc_ptr = 0; 180 + *(bcc_ptr+1) = 0; 181 + } else { 182 + bytes_ret = cifs_strtoUTF16((__le16 *) bcc_ptr, ses->user_name, 183 + CIFS_MAX_USERNAME_LEN, nls_cp); 184 + } 185 + bcc_ptr += 2 * bytes_ret; 186 + bcc_ptr += 2; /* account for null termination */ 187 + 188 + unicode_domain_string(&bcc_ptr, ses, nls_cp); 189 + unicode_oslm_strings(&bcc_ptr, nls_cp); 190 + 191 + *pbcc_area = bcc_ptr; 192 + } 193 + 194 + static void ascii_ssetup_strings(char **pbcc_area, struct cifs_ses *ses, 195 + const struct nls_table *nls_cp) 196 + { 197 + char *bcc_ptr = *pbcc_area; 198 + int len; 199 + 200 + /* copy user */ 201 + /* BB what about null user mounts - check that we do this BB */ 202 + /* copy user */ 203 + if (ses->user_name != NULL) { 204 + len = strscpy(bcc_ptr, ses->user_name, CIFS_MAX_USERNAME_LEN); 205 + if (WARN_ON_ONCE(len < 0)) 206 + len = CIFS_MAX_USERNAME_LEN - 1; 207 + bcc_ptr += len; 208 + } 209 + /* else null user mount */ 210 + *bcc_ptr = 0; 211 + bcc_ptr++; /* account for null termination */ 212 + 213 + /* BB check for overflow here */ 214 + 215 + ascii_domain_string(&bcc_ptr, ses, nls_cp); 216 + ascii_oslm_strings(&bcc_ptr, nls_cp); 217 + 218 + *pbcc_area = bcc_ptr; 219 + } 220 + 221 + static void 222 + decode_unicode_ssetup(char **pbcc_area, int bleft, struct cifs_ses *ses, 223 + const struct nls_table *nls_cp) 224 + { 225 + int len; 226 + char *data = *pbcc_area; 227 + 228 + cifs_dbg(FYI, "bleft %d\n", bleft); 229 + 230 + kfree(ses->serverOS); 231 + ses->serverOS = cifs_strndup_from_utf16(data, bleft, true, nls_cp); 232 + cifs_dbg(FYI, "serverOS=%s\n", ses->serverOS); 233 + len = (UniStrnlen((wchar_t *) data, bleft / 2) * 2) + 2; 234 + data += len; 235 + bleft -= len; 236 + if (bleft <= 0) 237 + return; 238 + 239 + kfree(ses->serverNOS); 240 + ses->serverNOS = cifs_strndup_from_utf16(data, bleft, true, nls_cp); 241 + cifs_dbg(FYI, "serverNOS=%s\n", ses->serverNOS); 242 + len = (UniStrnlen((wchar_t *) data, bleft / 2) * 2) + 2; 243 + data += len; 244 + bleft -= len; 245 + if (bleft <= 0) 246 + return; 247 + 248 + kfree(ses->serverDomain); 249 + ses->serverDomain = cifs_strndup_from_utf16(data, bleft, true, nls_cp); 250 + cifs_dbg(FYI, "serverDomain=%s\n", ses->serverDomain); 251 + 252 + return; 253 + } 254 + 255 + static void decode_ascii_ssetup(char **pbcc_area, __u16 bleft, 256 + struct cifs_ses *ses, 257 + const struct nls_table *nls_cp) 258 + { 259 + int len; 260 + char *bcc_ptr = *pbcc_area; 261 + 262 + cifs_dbg(FYI, "decode sessetup ascii. bleft %d\n", bleft); 263 + 264 + len = strnlen(bcc_ptr, bleft); 265 + if (len >= bleft) 266 + return; 267 + 268 + kfree(ses->serverOS); 269 + 270 + ses->serverOS = kmalloc(len + 1, GFP_KERNEL); 271 + if (ses->serverOS) { 272 + memcpy(ses->serverOS, bcc_ptr, len); 273 + ses->serverOS[len] = 0; 274 + if (strncmp(ses->serverOS, "OS/2", 4) == 0) 275 + cifs_dbg(FYI, "OS/2 server\n"); 276 + } 277 + 278 + bcc_ptr += len + 1; 279 + bleft -= len + 1; 280 + 281 + len = strnlen(bcc_ptr, bleft); 282 + if (len >= bleft) 283 + return; 284 + 285 + kfree(ses->serverNOS); 286 + 287 + ses->serverNOS = kmalloc(len + 1, GFP_KERNEL); 288 + if (ses->serverNOS) { 289 + memcpy(ses->serverNOS, bcc_ptr, len); 290 + ses->serverNOS[len] = 0; 291 + } 292 + 293 + bcc_ptr += len + 1; 294 + bleft -= len + 1; 295 + 296 + len = strnlen(bcc_ptr, bleft); 297 + if (len > bleft) 298 + return; 299 + 300 + /* 301 + * No domain field in LANMAN case. Domain is 302 + * returned by old servers in the SMB negprot response 303 + * 304 + * BB For newer servers which do not support Unicode, 305 + * but thus do return domain here, we could add parsing 306 + * for it later, but it is not very important 307 + */ 308 + cifs_dbg(FYI, "ascii: bytes left %d\n", bleft); 309 + } 310 + 311 + static int 312 + sess_alloc_buffer(struct sess_data *sess_data, int wct) 313 + { 314 + int rc; 315 + struct cifs_ses *ses = sess_data->ses; 316 + struct smb_hdr *smb_buf; 317 + 318 + rc = small_smb_init_no_tc(SMB_COM_SESSION_SETUP_ANDX, wct, ses, 319 + (void **)&smb_buf); 320 + 321 + if (rc < 0) 322 + return rc; 323 + 324 + sess_data->in_len = rc; 325 + sess_data->iov[0].iov_base = (char *)smb_buf; 326 + sess_data->iov[0].iov_len = sess_data->in_len; 327 + /* 328 + * This variable will be used to clear the buffer 329 + * allocated above in case of any error in the calling function. 330 + */ 331 + sess_data->buf0_type = CIFS_SMALL_BUFFER; 332 + 333 + /* 2000 big enough to fit max user, domain, NOS name etc. */ 334 + sess_data->iov[2].iov_base = kmalloc(2000, GFP_KERNEL); 335 + if (!sess_data->iov[2].iov_base) { 336 + rc = -ENOMEM; 337 + goto out_free_smb_buf; 338 + } 339 + 340 + return 0; 341 + 342 + out_free_smb_buf: 343 + cifs_small_buf_release(smb_buf); 344 + sess_data->iov[0].iov_base = NULL; 345 + sess_data->iov[0].iov_len = 0; 346 + sess_data->buf0_type = CIFS_NO_BUFFER; 347 + return rc; 348 + } 349 + 350 + static void 351 + sess_free_buffer(struct sess_data *sess_data) 352 + { 353 + struct kvec *iov = sess_data->iov; 354 + 355 + /* 356 + * Zero the session data before freeing, as it might contain sensitive info (keys, etc). 357 + * Note that iov[1] is already freed by caller. 358 + */ 359 + if (sess_data->buf0_type != CIFS_NO_BUFFER && iov[0].iov_base) 360 + memzero_explicit(iov[0].iov_base, iov[0].iov_len); 361 + 362 + free_rsp_buf(sess_data->buf0_type, iov[0].iov_base); 363 + sess_data->buf0_type = CIFS_NO_BUFFER; 364 + kfree_sensitive(iov[2].iov_base); 365 + } 366 + 367 + static int 368 + sess_establish_session(struct sess_data *sess_data) 369 + { 370 + struct cifs_ses *ses = sess_data->ses; 371 + struct TCP_Server_Info *server = sess_data->server; 372 + 373 + cifs_server_lock(server); 374 + if (!server->session_estab) { 375 + if (server->sign) { 376 + server->session_key.response = 377 + kmemdup(ses->auth_key.response, 378 + ses->auth_key.len, GFP_KERNEL); 379 + if (!server->session_key.response) { 380 + cifs_server_unlock(server); 381 + return -ENOMEM; 382 + } 383 + server->session_key.len = 384 + ses->auth_key.len; 385 + } 386 + server->sequence_number = 0x2; 387 + server->session_estab = true; 388 + } 389 + cifs_server_unlock(server); 390 + 391 + cifs_dbg(FYI, "CIFS session established successfully\n"); 392 + return 0; 393 + } 394 + 395 + static int 396 + sess_sendreceive(struct sess_data *sess_data) 397 + { 398 + int rc; 399 + struct smb_hdr *smb_buf = (struct smb_hdr *) sess_data->iov[0].iov_base; 400 + __u16 count; 401 + struct kvec rsp_iov = { NULL, 0 }; 402 + 403 + count = sess_data->iov[1].iov_len + sess_data->iov[2].iov_len; 404 + sess_data->in_len += count; 405 + put_bcc(count, smb_buf); 406 + 407 + rc = SendReceive2(sess_data->xid, sess_data->ses, 408 + sess_data->iov, 3 /* num_iovecs */, 409 + &sess_data->buf0_type, 410 + CIFS_LOG_ERROR, &rsp_iov); 411 + cifs_small_buf_release(sess_data->iov[0].iov_base); 412 + memcpy(&sess_data->iov[0], &rsp_iov, sizeof(struct kvec)); 413 + 414 + return rc; 415 + } 416 + 417 + static void 418 + sess_auth_ntlmv2(struct sess_data *sess_data) 419 + { 420 + int rc = 0; 421 + struct smb_hdr *smb_buf; 422 + SESSION_SETUP_ANDX *pSMB; 423 + char *bcc_ptr; 424 + struct cifs_ses *ses = sess_data->ses; 425 + struct TCP_Server_Info *server = sess_data->server; 426 + __u32 capabilities; 427 + __u16 bytes_remaining; 428 + 429 + /* old style NTLM sessionsetup */ 430 + /* wct = 13 */ 431 + rc = sess_alloc_buffer(sess_data, 13); 432 + if (rc) 433 + goto out; 434 + 435 + pSMB = (SESSION_SETUP_ANDX *)sess_data->iov[0].iov_base; 436 + bcc_ptr = sess_data->iov[2].iov_base; 437 + capabilities = cifs_ssetup_hdr(ses, server, pSMB); 438 + 439 + pSMB->req_no_secext.Capabilities = cpu_to_le32(capabilities); 440 + 441 + /* LM2 password would be here if we supported it */ 442 + pSMB->req_no_secext.CaseInsensitivePasswordLength = 0; 443 + 444 + if (ses->user_name != NULL) { 445 + /* calculate nlmv2 response and session key */ 446 + rc = setup_ntlmv2_rsp(ses, sess_data->nls_cp); 447 + if (rc) { 448 + cifs_dbg(VFS, "Error %d during NTLMv2 authentication\n", rc); 449 + goto out; 450 + } 451 + 452 + memcpy(bcc_ptr, ses->auth_key.response + CIFS_SESS_KEY_SIZE, 453 + ses->auth_key.len - CIFS_SESS_KEY_SIZE); 454 + bcc_ptr += ses->auth_key.len - CIFS_SESS_KEY_SIZE; 455 + 456 + /* set case sensitive password length after tilen may get 457 + * assigned, tilen is 0 otherwise. 458 + */ 459 + pSMB->req_no_secext.CaseSensitivePasswordLength = 460 + cpu_to_le16(ses->auth_key.len - CIFS_SESS_KEY_SIZE); 461 + } else { 462 + pSMB->req_no_secext.CaseSensitivePasswordLength = 0; 463 + } 464 + 465 + if (ses->capabilities & CAP_UNICODE) { 466 + if (!IS_ALIGNED(sess_data->iov[0].iov_len, 2)) { 467 + *bcc_ptr = 0; 468 + bcc_ptr++; 469 + } 470 + unicode_ssetup_strings(&bcc_ptr, ses, sess_data->nls_cp); 471 + } else { 472 + ascii_ssetup_strings(&bcc_ptr, ses, sess_data->nls_cp); 473 + } 474 + 475 + 476 + sess_data->iov[2].iov_len = (long) bcc_ptr - 477 + (long) sess_data->iov[2].iov_base; 478 + 479 + rc = sess_sendreceive(sess_data); 480 + if (rc) 481 + goto out; 482 + 483 + pSMB = (SESSION_SETUP_ANDX *)sess_data->iov[0].iov_base; 484 + smb_buf = (struct smb_hdr *)sess_data->iov[0].iov_base; 485 + 486 + if (smb_buf->WordCount != 3) { 487 + rc = smb_EIO1(smb_eio_trace_sess_nl2_wcc, smb_buf->WordCount); 488 + cifs_dbg(VFS, "bad word count %d\n", smb_buf->WordCount); 489 + goto out; 490 + } 491 + 492 + if (le16_to_cpu(pSMB->resp.Action) & GUEST_LOGIN) 493 + cifs_dbg(FYI, "Guest login\n"); /* BB mark SesInfo struct? */ 494 + 495 + ses->Suid = smb_buf->Uid; /* UID left in wire format (le) */ 496 + cifs_dbg(FYI, "UID = %llu\n", ses->Suid); 497 + 498 + bytes_remaining = get_bcc(smb_buf); 499 + bcc_ptr = pByteArea(smb_buf); 500 + 501 + /* BB check if Unicode and decode strings */ 502 + if (bytes_remaining == 0) { 503 + /* no string area to decode, do nothing */ 504 + } else if (smb_buf->Flags2 & SMBFLG2_UNICODE) { 505 + /* unicode string area must be word-aligned */ 506 + if (!IS_ALIGNED((unsigned long)bcc_ptr - (unsigned long)smb_buf, 2)) { 507 + ++bcc_ptr; 508 + --bytes_remaining; 509 + } 510 + decode_unicode_ssetup(&bcc_ptr, bytes_remaining, ses, 511 + sess_data->nls_cp); 512 + } else { 513 + decode_ascii_ssetup(&bcc_ptr, bytes_remaining, ses, 514 + sess_data->nls_cp); 515 + } 516 + 517 + rc = sess_establish_session(sess_data); 518 + out: 519 + sess_data->result = rc; 520 + sess_data->func = NULL; 521 + sess_free_buffer(sess_data); 522 + kfree_sensitive(ses->auth_key.response); 523 + ses->auth_key.response = NULL; 524 + } 525 + 526 + #ifdef CONFIG_CIFS_UPCALL 527 + static void 528 + sess_auth_kerberos(struct sess_data *sess_data) 529 + { 530 + int rc = 0; 531 + struct smb_hdr *smb_buf; 532 + SESSION_SETUP_ANDX *pSMB; 533 + char *bcc_ptr; 534 + struct cifs_ses *ses = sess_data->ses; 535 + struct TCP_Server_Info *server = sess_data->server; 536 + __u32 capabilities; 537 + __u16 bytes_remaining; 538 + struct key *spnego_key = NULL; 539 + struct cifs_spnego_msg *msg; 540 + u16 blob_len; 541 + 542 + /* extended security */ 543 + /* wct = 12 */ 544 + rc = sess_alloc_buffer(sess_data, 12); 545 + if (rc) 546 + goto out; 547 + 548 + pSMB = (SESSION_SETUP_ANDX *)sess_data->iov[0].iov_base; 549 + bcc_ptr = sess_data->iov[2].iov_base; 550 + capabilities = cifs_ssetup_hdr(ses, server, pSMB); 551 + 552 + spnego_key = cifs_get_spnego_key(ses, server); 553 + if (IS_ERR(spnego_key)) { 554 + rc = PTR_ERR(spnego_key); 555 + spnego_key = NULL; 556 + goto out; 557 + } 558 + 559 + msg = spnego_key->payload.data[0]; 560 + /* 561 + * check version field to make sure that cifs.upcall is 562 + * sending us a response in an expected form 563 + */ 564 + if (msg->version != CIFS_SPNEGO_UPCALL_VERSION) { 565 + cifs_dbg(VFS, "incorrect version of cifs.upcall (expected %d but got %d)\n", 566 + CIFS_SPNEGO_UPCALL_VERSION, msg->version); 567 + rc = -EKEYREJECTED; 568 + goto out_put_spnego_key; 569 + } 570 + 571 + kfree_sensitive(ses->auth_key.response); 572 + ses->auth_key.response = kmemdup(msg->data, msg->sesskey_len, 573 + GFP_KERNEL); 574 + if (!ses->auth_key.response) { 575 + cifs_dbg(VFS, "Kerberos can't allocate (%u bytes) memory\n", 576 + msg->sesskey_len); 577 + rc = -ENOMEM; 578 + goto out_put_spnego_key; 579 + } 580 + ses->auth_key.len = msg->sesskey_len; 581 + 582 + pSMB->req.hdr.Flags2 |= SMBFLG2_EXT_SEC; 583 + capabilities |= CAP_EXTENDED_SECURITY; 584 + pSMB->req.Capabilities = cpu_to_le32(capabilities); 585 + sess_data->iov[1].iov_base = msg->data + msg->sesskey_len; 586 + sess_data->iov[1].iov_len = msg->secblob_len; 587 + pSMB->req.SecurityBlobLength = cpu_to_le16(sess_data->iov[1].iov_len); 588 + 589 + if (pSMB->req.hdr.Flags2 & SMBFLG2_UNICODE) { 590 + /* unicode strings must be word aligned */ 591 + if (!IS_ALIGNED(sess_data->iov[0].iov_len + sess_data->iov[1].iov_len, 2)) { 592 + *bcc_ptr = 0; 593 + bcc_ptr++; 594 + } 595 + unicode_oslm_strings(&bcc_ptr, sess_data->nls_cp); 596 + unicode_domain_string(&bcc_ptr, ses, sess_data->nls_cp); 597 + } else { 598 + ascii_oslm_strings(&bcc_ptr, sess_data->nls_cp); 599 + ascii_domain_string(&bcc_ptr, ses, sess_data->nls_cp); 600 + } 601 + 602 + sess_data->iov[2].iov_len = (long) bcc_ptr - 603 + (long) sess_data->iov[2].iov_base; 604 + 605 + rc = sess_sendreceive(sess_data); 606 + if (rc) 607 + goto out_put_spnego_key; 608 + 609 + pSMB = (SESSION_SETUP_ANDX *)sess_data->iov[0].iov_base; 610 + smb_buf = (struct smb_hdr *)sess_data->iov[0].iov_base; 611 + 612 + if (smb_buf->WordCount != 4) { 613 + rc = smb_EIO1(smb_eio_trace_sess_krb_wcc, smb_buf->WordCount); 614 + cifs_dbg(VFS, "bad word count %d\n", smb_buf->WordCount); 615 + goto out_put_spnego_key; 616 + } 617 + 618 + if (le16_to_cpu(pSMB->resp.Action) & GUEST_LOGIN) 619 + cifs_dbg(FYI, "Guest login\n"); /* BB mark SesInfo struct? */ 620 + 621 + ses->Suid = smb_buf->Uid; /* UID left in wire format (le) */ 622 + cifs_dbg(FYI, "UID = %llu\n", ses->Suid); 623 + 624 + bytes_remaining = get_bcc(smb_buf); 625 + bcc_ptr = pByteArea(smb_buf); 626 + 627 + blob_len = le16_to_cpu(pSMB->resp.SecurityBlobLength); 628 + if (blob_len > bytes_remaining) { 629 + cifs_dbg(VFS, "bad security blob length %d\n", 630 + blob_len); 631 + rc = -EINVAL; 632 + goto out_put_spnego_key; 633 + } 634 + bcc_ptr += blob_len; 635 + bytes_remaining -= blob_len; 636 + 637 + /* BB check if Unicode and decode strings */ 638 + if (bytes_remaining == 0) { 639 + /* no string area to decode, do nothing */ 640 + } else if (smb_buf->Flags2 & SMBFLG2_UNICODE) { 641 + /* unicode string area must be word-aligned */ 642 + if (!IS_ALIGNED((unsigned long)bcc_ptr - (unsigned long)smb_buf, 2)) { 643 + ++bcc_ptr; 644 + --bytes_remaining; 645 + } 646 + decode_unicode_ssetup(&bcc_ptr, bytes_remaining, ses, 647 + sess_data->nls_cp); 648 + } else { 649 + decode_ascii_ssetup(&bcc_ptr, bytes_remaining, ses, 650 + sess_data->nls_cp); 651 + } 652 + 653 + rc = sess_establish_session(sess_data); 654 + out_put_spnego_key: 655 + key_invalidate(spnego_key); 656 + key_put(spnego_key); 657 + out: 658 + sess_data->result = rc; 659 + sess_data->func = NULL; 660 + sess_free_buffer(sess_data); 661 + kfree_sensitive(ses->auth_key.response); 662 + ses->auth_key.response = NULL; 663 + } 664 + 665 + #endif /* ! CONFIG_CIFS_UPCALL */ 666 + 667 + /* 668 + * The required kvec buffers have to be allocated before calling this 669 + * function. 670 + */ 671 + static int 672 + _sess_auth_rawntlmssp_assemble_req(struct sess_data *sess_data) 673 + { 674 + SESSION_SETUP_ANDX *pSMB; 675 + struct cifs_ses *ses = sess_data->ses; 676 + struct TCP_Server_Info *server = sess_data->server; 677 + __u32 capabilities; 678 + char *bcc_ptr; 679 + 680 + pSMB = (SESSION_SETUP_ANDX *)sess_data->iov[0].iov_base; 681 + 682 + capabilities = cifs_ssetup_hdr(ses, server, pSMB); 683 + pSMB->req.hdr.Flags2 |= SMBFLG2_EXT_SEC; 684 + capabilities |= CAP_EXTENDED_SECURITY; 685 + pSMB->req.Capabilities |= cpu_to_le32(capabilities); 686 + 687 + bcc_ptr = sess_data->iov[2].iov_base; 688 + 689 + if (pSMB->req.hdr.Flags2 & SMBFLG2_UNICODE) { 690 + /* unicode strings must be word aligned */ 691 + if (!IS_ALIGNED(sess_data->iov[0].iov_len + sess_data->iov[1].iov_len, 2)) { 692 + *bcc_ptr = 0; 693 + bcc_ptr++; 694 + } 695 + unicode_oslm_strings(&bcc_ptr, sess_data->nls_cp); 696 + } else { 697 + ascii_oslm_strings(&bcc_ptr, sess_data->nls_cp); 698 + } 699 + 700 + sess_data->iov[2].iov_len = (long) bcc_ptr - 701 + (long) sess_data->iov[2].iov_base; 702 + 703 + return 0; 704 + } 705 + 706 + static void 707 + sess_auth_rawntlmssp_authenticate(struct sess_data *sess_data); 708 + 709 + static void 710 + sess_auth_rawntlmssp_negotiate(struct sess_data *sess_data) 711 + { 712 + int rc; 713 + struct smb_hdr *smb_buf; 714 + SESSION_SETUP_ANDX *pSMB; 715 + struct cifs_ses *ses = sess_data->ses; 716 + struct TCP_Server_Info *server = sess_data->server; 717 + __u16 bytes_remaining; 718 + char *bcc_ptr; 719 + unsigned char *ntlmsspblob = NULL; 720 + u16 blob_len; 721 + 722 + cifs_dbg(FYI, "rawntlmssp session setup negotiate phase\n"); 723 + 724 + /* 725 + * if memory allocation is successful, caller of this function 726 + * frees it. 727 + */ 728 + ses->ntlmssp = kmalloc(sizeof(struct ntlmssp_auth), GFP_KERNEL); 729 + if (!ses->ntlmssp) { 730 + rc = -ENOMEM; 731 + goto out; 732 + } 733 + ses->ntlmssp->sesskey_per_smbsess = false; 734 + 735 + /* wct = 12 */ 736 + rc = sess_alloc_buffer(sess_data, 12); 737 + if (rc) 738 + goto out; 739 + 740 + pSMB = (SESSION_SETUP_ANDX *)sess_data->iov[0].iov_base; 741 + 742 + /* Build security blob before we assemble the request */ 743 + rc = build_ntlmssp_negotiate_blob(&ntlmsspblob, 744 + &blob_len, ses, server, 745 + sess_data->nls_cp); 746 + if (rc) 747 + goto out_free_ntlmsspblob; 748 + 749 + sess_data->iov[1].iov_len = blob_len; 750 + sess_data->iov[1].iov_base = ntlmsspblob; 751 + pSMB->req.SecurityBlobLength = cpu_to_le16(blob_len); 752 + 753 + rc = _sess_auth_rawntlmssp_assemble_req(sess_data); 754 + if (rc) 755 + goto out_free_ntlmsspblob; 756 + 757 + rc = sess_sendreceive(sess_data); 758 + 759 + pSMB = (SESSION_SETUP_ANDX *)sess_data->iov[0].iov_base; 760 + smb_buf = (struct smb_hdr *)sess_data->iov[0].iov_base; 761 + 762 + /* If true, rc here is expected and not an error */ 763 + if (sess_data->buf0_type != CIFS_NO_BUFFER && 764 + smb_buf->Status.CifsError == 765 + cpu_to_le32(NT_STATUS_MORE_PROCESSING_REQUIRED)) 766 + rc = 0; 767 + 768 + if (rc) 769 + goto out_free_ntlmsspblob; 770 + 771 + cifs_dbg(FYI, "rawntlmssp session setup challenge phase\n"); 772 + 773 + if (smb_buf->WordCount != 4) { 774 + rc = smb_EIO1(smb_eio_trace_sess_rawnl_neg_wcc, smb_buf->WordCount); 775 + cifs_dbg(VFS, "bad word count %d\n", smb_buf->WordCount); 776 + goto out_free_ntlmsspblob; 777 + } 778 + 779 + ses->Suid = smb_buf->Uid; /* UID left in wire format (le) */ 780 + cifs_dbg(FYI, "UID = %llu\n", ses->Suid); 781 + 782 + bytes_remaining = get_bcc(smb_buf); 783 + bcc_ptr = pByteArea(smb_buf); 784 + 785 + blob_len = le16_to_cpu(pSMB->resp.SecurityBlobLength); 786 + if (blob_len > bytes_remaining) { 787 + cifs_dbg(VFS, "bad security blob length %d\n", 788 + blob_len); 789 + rc = -EINVAL; 790 + goto out_free_ntlmsspblob; 791 + } 792 + 793 + rc = decode_ntlmssp_challenge(bcc_ptr, blob_len, ses); 794 + 795 + out_free_ntlmsspblob: 796 + kfree_sensitive(ntlmsspblob); 797 + out: 798 + sess_free_buffer(sess_data); 799 + 800 + if (!rc) { 801 + sess_data->func = sess_auth_rawntlmssp_authenticate; 802 + return; 803 + } 804 + 805 + /* Else error. Cleanup */ 806 + kfree_sensitive(ses->auth_key.response); 807 + ses->auth_key.response = NULL; 808 + kfree_sensitive(ses->ntlmssp); 809 + ses->ntlmssp = NULL; 810 + 811 + sess_data->func = NULL; 812 + sess_data->result = rc; 813 + } 814 + 815 + static void 816 + sess_auth_rawntlmssp_authenticate(struct sess_data *sess_data) 817 + { 818 + int rc; 819 + struct smb_hdr *smb_buf; 820 + SESSION_SETUP_ANDX *pSMB; 821 + struct cifs_ses *ses = sess_data->ses; 822 + struct TCP_Server_Info *server = sess_data->server; 823 + __u16 bytes_remaining; 824 + char *bcc_ptr; 825 + unsigned char *ntlmsspblob = NULL; 826 + u16 blob_len; 827 + 828 + cifs_dbg(FYI, "rawntlmssp session setup authenticate phase\n"); 829 + 830 + /* wct = 12 */ 831 + rc = sess_alloc_buffer(sess_data, 12); 832 + if (rc) 833 + goto out; 834 + 835 + /* Build security blob before we assemble the request */ 836 + pSMB = (SESSION_SETUP_ANDX *)sess_data->iov[0].iov_base; 837 + smb_buf = (struct smb_hdr *)pSMB; 838 + rc = build_ntlmssp_auth_blob(&ntlmsspblob, 839 + &blob_len, ses, server, 840 + sess_data->nls_cp); 841 + if (rc) 842 + goto out_free_ntlmsspblob; 843 + sess_data->iov[1].iov_len = blob_len; 844 + sess_data->iov[1].iov_base = ntlmsspblob; 845 + pSMB->req.SecurityBlobLength = cpu_to_le16(blob_len); 846 + /* 847 + * Make sure that we tell the server that we are using 848 + * the uid that it just gave us back on the response 849 + * (challenge) 850 + */ 851 + smb_buf->Uid = ses->Suid; 852 + 853 + rc = _sess_auth_rawntlmssp_assemble_req(sess_data); 854 + if (rc) 855 + goto out_free_ntlmsspblob; 856 + 857 + rc = sess_sendreceive(sess_data); 858 + if (rc) 859 + goto out_free_ntlmsspblob; 860 + 861 + pSMB = (SESSION_SETUP_ANDX *)sess_data->iov[0].iov_base; 862 + smb_buf = (struct smb_hdr *)sess_data->iov[0].iov_base; 863 + if (smb_buf->WordCount != 4) { 864 + rc = smb_EIO1(smb_eio_trace_sess_rawnl_auth_wcc, smb_buf->WordCount); 865 + cifs_dbg(VFS, "bad word count %d\n", smb_buf->WordCount); 866 + goto out_free_ntlmsspblob; 867 + } 868 + 869 + if (le16_to_cpu(pSMB->resp.Action) & GUEST_LOGIN) 870 + cifs_dbg(FYI, "Guest login\n"); /* BB mark SesInfo struct? */ 871 + 872 + if (ses->Suid != smb_buf->Uid) { 873 + ses->Suid = smb_buf->Uid; 874 + cifs_dbg(FYI, "UID changed! new UID = %llu\n", ses->Suid); 875 + } 876 + 877 + bytes_remaining = get_bcc(smb_buf); 878 + bcc_ptr = pByteArea(smb_buf); 879 + blob_len = le16_to_cpu(pSMB->resp.SecurityBlobLength); 880 + if (blob_len > bytes_remaining) { 881 + cifs_dbg(VFS, "bad security blob length %d\n", 882 + blob_len); 883 + rc = -EINVAL; 884 + goto out_free_ntlmsspblob; 885 + } 886 + bcc_ptr += blob_len; 887 + bytes_remaining -= blob_len; 888 + 889 + 890 + /* BB check if Unicode and decode strings */ 891 + if (bytes_remaining == 0) { 892 + /* no string area to decode, do nothing */ 893 + } else if (smb_buf->Flags2 & SMBFLG2_UNICODE) { 894 + /* unicode string area must be word-aligned */ 895 + if (!IS_ALIGNED((unsigned long)bcc_ptr - (unsigned long)smb_buf, 2)) { 896 + ++bcc_ptr; 897 + --bytes_remaining; 898 + } 899 + decode_unicode_ssetup(&bcc_ptr, bytes_remaining, ses, 900 + sess_data->nls_cp); 901 + } else { 902 + decode_ascii_ssetup(&bcc_ptr, bytes_remaining, ses, 903 + sess_data->nls_cp); 904 + } 905 + 906 + out_free_ntlmsspblob: 907 + kfree_sensitive(ntlmsspblob); 908 + out: 909 + sess_free_buffer(sess_data); 910 + 911 + if (!rc) 912 + rc = sess_establish_session(sess_data); 913 + 914 + /* Cleanup */ 915 + kfree_sensitive(ses->auth_key.response); 916 + ses->auth_key.response = NULL; 917 + kfree_sensitive(ses->ntlmssp); 918 + ses->ntlmssp = NULL; 919 + 920 + sess_data->func = NULL; 921 + sess_data->result = rc; 922 + } 923 + 924 + static int select_sec(struct sess_data *sess_data) 925 + { 926 + int type; 927 + struct cifs_ses *ses = sess_data->ses; 928 + struct TCP_Server_Info *server = sess_data->server; 929 + 930 + type = cifs_select_sectype(server, ses->sectype); 931 + cifs_dbg(FYI, "sess setup type %d\n", type); 932 + if (type == Unspecified) { 933 + cifs_dbg(VFS, "Unable to select appropriate authentication method!\n"); 934 + return -EINVAL; 935 + } 936 + 937 + switch (type) { 938 + case NTLMv2: 939 + sess_data->func = sess_auth_ntlmv2; 940 + break; 941 + case Kerberos: 942 + #ifdef CONFIG_CIFS_UPCALL 943 + sess_data->func = sess_auth_kerberos; 944 + break; 945 + #else 946 + cifs_dbg(VFS, "Kerberos negotiated but upcall support disabled!\n"); 947 + return -ENOSYS; 948 + #endif /* CONFIG_CIFS_UPCALL */ 949 + case RawNTLMSSP: 950 + sess_data->func = sess_auth_rawntlmssp_negotiate; 951 + break; 952 + default: 953 + cifs_dbg(VFS, "secType %d not supported!\n", type); 954 + return -ENOSYS; 955 + } 956 + 957 + return 0; 958 + } 959 + 960 + int CIFS_SessSetup(const unsigned int xid, struct cifs_ses *ses, 961 + struct TCP_Server_Info *server, 962 + const struct nls_table *nls_cp) 963 + { 964 + int rc = 0; 965 + struct sess_data *sess_data; 966 + 967 + if (ses == NULL) { 968 + WARN(1, "%s: ses == NULL!", __func__); 969 + return -EINVAL; 970 + } 971 + 972 + sess_data = kzalloc(sizeof(struct sess_data), GFP_KERNEL); 973 + if (!sess_data) 974 + return -ENOMEM; 975 + 976 + sess_data->xid = xid; 977 + sess_data->ses = ses; 978 + sess_data->server = server; 979 + sess_data->buf0_type = CIFS_NO_BUFFER; 980 + sess_data->nls_cp = (struct nls_table *) nls_cp; 981 + 982 + rc = select_sec(sess_data); 983 + if (rc) 984 + goto out; 985 + 986 + while (sess_data->func) 987 + sess_data->func(sess_data); 988 + 989 + /* Store result before we free sess_data */ 990 + rc = sess_data->result; 991 + 992 + out: 993 + kfree_sensitive(sess_data); 994 + return rc; 995 + }
+563
fs/smb/client/smb1transport.c
··· 1 + // SPDX-License-Identifier: LGPL-2.1 2 + /* 3 + * 4 + * Copyright (C) International Business Machines Corp., 2002,2008 5 + * Author(s): Steve French (sfrench@us.ibm.com) 6 + * Jeremy Allison (jra@samba.org) 2006. 7 + * 8 + */ 9 + 10 + #include <linux/fs.h> 11 + #include <linux/list.h> 12 + #include <linux/gfp.h> 13 + #include <linux/wait.h> 14 + #include <linux/net.h> 15 + #include <linux/delay.h> 16 + #include <linux/freezer.h> 17 + #include <linux/tcp.h> 18 + #include <linux/bvec.h> 19 + #include <linux/highmem.h> 20 + #include <linux/uaccess.h> 21 + #include <linux/processor.h> 22 + #include <linux/mempool.h> 23 + #include <linux/sched/signal.h> 24 + #include <linux/task_io_accounting_ops.h> 25 + #include "cifsglob.h" 26 + #include "cifsproto.h" 27 + #include "smb1proto.h" 28 + #include "smb2proto.h" 29 + #include "cifs_debug.h" 30 + #include "smbdirect.h" 31 + #include "compress.h" 32 + #include "cifs_debug.h" 33 + 34 + /* Max number of iovectors we can use off the stack when sending requests. */ 35 + #define CIFS_MAX_IOV_SIZE 8 36 + 37 + static struct mid_q_entry * 38 + alloc_mid(const struct smb_hdr *smb_buffer, struct TCP_Server_Info *server) 39 + { 40 + struct mid_q_entry *temp; 41 + 42 + if (server == NULL) { 43 + cifs_dbg(VFS, "%s: null TCP session\n", __func__); 44 + return NULL; 45 + } 46 + 47 + temp = mempool_alloc(&cifs_mid_pool, GFP_NOFS); 48 + memset(temp, 0, sizeof(struct mid_q_entry)); 49 + refcount_set(&temp->refcount, 1); 50 + spin_lock_init(&temp->mid_lock); 51 + temp->mid = get_mid(smb_buffer); 52 + temp->pid = current->pid; 53 + temp->command = cpu_to_le16(smb_buffer->Command); 54 + cifs_dbg(FYI, "For smb_command %d\n", smb_buffer->Command); 55 + /* easier to use jiffies */ 56 + /* when mid allocated can be before when sent */ 57 + temp->when_alloc = jiffies; 58 + 59 + /* 60 + * The default is for the mid to be synchronous, so the 61 + * default callback just wakes up the current task. 62 + */ 63 + get_task_struct(current); 64 + temp->creator = current; 65 + temp->callback = cifs_wake_up_task; 66 + temp->callback_data = current; 67 + 68 + atomic_inc(&mid_count); 69 + temp->mid_state = MID_REQUEST_ALLOCATED; 70 + return temp; 71 + } 72 + 73 + static int allocate_mid(struct cifs_ses *ses, struct smb_hdr *in_buf, 74 + struct mid_q_entry **ppmidQ) 75 + { 76 + spin_lock(&ses->ses_lock); 77 + if (ses->ses_status == SES_NEW) { 78 + if ((in_buf->Command != SMB_COM_SESSION_SETUP_ANDX) && 79 + (in_buf->Command != SMB_COM_NEGOTIATE)) { 80 + spin_unlock(&ses->ses_lock); 81 + return -EAGAIN; 82 + } 83 + /* else ok - we are setting up session */ 84 + } 85 + 86 + if (ses->ses_status == SES_EXITING) { 87 + /* check if SMB session is bad because we are setting it up */ 88 + if (in_buf->Command != SMB_COM_LOGOFF_ANDX) { 89 + spin_unlock(&ses->ses_lock); 90 + return -EAGAIN; 91 + } 92 + /* else ok - we are shutting down session */ 93 + } 94 + spin_unlock(&ses->ses_lock); 95 + 96 + *ppmidQ = alloc_mid(in_buf, ses->server); 97 + if (*ppmidQ == NULL) 98 + return -ENOMEM; 99 + spin_lock(&ses->server->mid_queue_lock); 100 + list_add_tail(&(*ppmidQ)->qhead, &ses->server->pending_mid_q); 101 + spin_unlock(&ses->server->mid_queue_lock); 102 + return 0; 103 + } 104 + 105 + struct mid_q_entry * 106 + cifs_setup_async_request(struct TCP_Server_Info *server, struct smb_rqst *rqst) 107 + { 108 + int rc; 109 + struct smb_hdr *hdr = (struct smb_hdr *)rqst->rq_iov[0].iov_base; 110 + struct mid_q_entry *mid; 111 + 112 + /* enable signing if server requires it */ 113 + if (server->sign) 114 + hdr->Flags2 |= SMBFLG2_SECURITY_SIGNATURE; 115 + 116 + mid = alloc_mid(hdr, server); 117 + if (mid == NULL) 118 + return ERR_PTR(-ENOMEM); 119 + 120 + rc = cifs_sign_rqst(rqst, server, &mid->sequence_number); 121 + if (rc) { 122 + release_mid(server, mid); 123 + return ERR_PTR(rc); 124 + } 125 + 126 + return mid; 127 + } 128 + 129 + /* 130 + * 131 + * Send an SMB Request. No response info (other than return code) 132 + * needs to be parsed. 133 + * 134 + * flags indicate the type of request buffer and how long to wait 135 + * and whether to log NT STATUS code (error) before mapping it to POSIX error 136 + * 137 + */ 138 + int 139 + SendReceiveNoRsp(const unsigned int xid, struct cifs_ses *ses, 140 + char *in_buf, unsigned int in_len, int flags) 141 + { 142 + int rc; 143 + struct kvec iov[1]; 144 + struct kvec rsp_iov; 145 + int resp_buf_type; 146 + 147 + iov[0].iov_base = in_buf; 148 + iov[0].iov_len = in_len; 149 + flags |= CIFS_NO_RSP_BUF; 150 + rc = SendReceive2(xid, ses, iov, 1, &resp_buf_type, flags, &rsp_iov); 151 + cifs_dbg(NOISY, "SendRcvNoRsp flags %d rc %d\n", flags, rc); 152 + 153 + return rc; 154 + } 155 + 156 + int 157 + cifs_check_receive(struct mid_q_entry *mid, struct TCP_Server_Info *server, 158 + bool log_error) 159 + { 160 + unsigned int len = mid->response_pdu_len; 161 + 162 + dump_smb(mid->resp_buf, min_t(u32, 92, len)); 163 + 164 + /* convert the length into a more usable form */ 165 + if (server->sign) { 166 + struct kvec iov[1]; 167 + int rc = 0; 168 + struct smb_rqst rqst = { .rq_iov = iov, 169 + .rq_nvec = ARRAY_SIZE(iov) }; 170 + 171 + iov[0].iov_base = mid->resp_buf; 172 + iov[0].iov_len = len; 173 + /* FIXME: add code to kill session */ 174 + rc = cifs_verify_signature(&rqst, server, 175 + mid->sequence_number); 176 + if (rc) 177 + cifs_server_dbg(VFS, "SMB signature verification returned error = %d\n", 178 + rc); 179 + } 180 + 181 + /* BB special case reconnect tid and uid here? */ 182 + return map_and_check_smb_error(server, mid, log_error); 183 + } 184 + 185 + struct mid_q_entry * 186 + cifs_setup_request(struct cifs_ses *ses, struct TCP_Server_Info *server, 187 + struct smb_rqst *rqst) 188 + { 189 + int rc; 190 + struct smb_hdr *hdr = (struct smb_hdr *)rqst->rq_iov[0].iov_base; 191 + struct mid_q_entry *mid; 192 + 193 + rc = allocate_mid(ses, hdr, &mid); 194 + if (rc) 195 + return ERR_PTR(rc); 196 + rc = cifs_sign_rqst(rqst, server, &mid->sequence_number); 197 + if (rc) { 198 + delete_mid(server, mid); 199 + return ERR_PTR(rc); 200 + } 201 + return mid; 202 + } 203 + 204 + int 205 + SendReceive2(const unsigned int xid, struct cifs_ses *ses, 206 + struct kvec *iov, int n_vec, int *resp_buf_type /* ret */, 207 + const int flags, struct kvec *resp_iov) 208 + { 209 + struct smb_rqst rqst = { 210 + .rq_iov = iov, 211 + .rq_nvec = n_vec, 212 + }; 213 + 214 + return cifs_send_recv(xid, ses, ses->server, 215 + &rqst, resp_buf_type, flags, resp_iov); 216 + } 217 + 218 + int 219 + SendReceive(const unsigned int xid, struct cifs_ses *ses, 220 + struct smb_hdr *in_buf, unsigned int in_len, 221 + struct smb_hdr *out_buf, int *pbytes_returned, const int flags) 222 + { 223 + struct TCP_Server_Info *server; 224 + struct kvec resp_iov = {}; 225 + struct kvec iov = { .iov_base = in_buf, .iov_len = in_len }; 226 + struct smb_rqst rqst = { .rq_iov = &iov, .rq_nvec = 1 }; 227 + int resp_buf_type; 228 + int rc = 0; 229 + 230 + if (WARN_ON_ONCE(in_len > 0xffffff)) 231 + return smb_EIO1(smb_eio_trace_tx_too_long, in_len); 232 + if (ses == NULL) { 233 + cifs_dbg(VFS, "Null smb session\n"); 234 + return smb_EIO(smb_eio_trace_null_pointers); 235 + } 236 + server = ses->server; 237 + if (server == NULL) { 238 + cifs_dbg(VFS, "Null tcp session\n"); 239 + return smb_EIO(smb_eio_trace_null_pointers); 240 + } 241 + 242 + /* Ensure that we do not send more than 50 overlapping requests 243 + to the same server. We may make this configurable later or 244 + use ses->maxReq */ 245 + 246 + if (in_len > CIFSMaxBufSize + MAX_CIFS_HDR_SIZE) { 247 + cifs_server_dbg(VFS, "Invalid length, greater than maximum frame, %d\n", 248 + in_len); 249 + return smb_EIO1(smb_eio_trace_tx_too_long, in_len); 250 + } 251 + 252 + rc = cifs_send_recv(xid, ses, ses->server, 253 + &rqst, &resp_buf_type, flags, &resp_iov); 254 + if (rc < 0) 255 + goto out; 256 + 257 + if (out_buf) { 258 + *pbytes_returned = resp_iov.iov_len; 259 + if (resp_iov.iov_len) 260 + memcpy(out_buf, resp_iov.iov_base, resp_iov.iov_len); 261 + } 262 + 263 + out: 264 + free_rsp_buf(resp_buf_type, resp_iov.iov_base); 265 + return rc; 266 + } 267 + 268 + /* 269 + return codes: 270 + 0 not a transact2, or all data present 271 + >0 transact2 with that much data missing 272 + -EINVAL invalid transact2 273 + */ 274 + static int 275 + check2ndT2(char *buf) 276 + { 277 + struct smb_hdr *pSMB = (struct smb_hdr *)buf; 278 + struct smb_t2_rsp *pSMBt; 279 + int remaining; 280 + __u16 total_data_size, data_in_this_rsp; 281 + 282 + if (pSMB->Command != SMB_COM_TRANSACTION2) 283 + return 0; 284 + 285 + /* check for plausible wct, bcc and t2 data and parm sizes */ 286 + /* check for parm and data offset going beyond end of smb */ 287 + if (pSMB->WordCount != 10) { /* coalesce_t2 depends on this */ 288 + cifs_dbg(FYI, "Invalid transact2 word count\n"); 289 + return -EINVAL; 290 + } 291 + 292 + pSMBt = (struct smb_t2_rsp *)pSMB; 293 + 294 + total_data_size = get_unaligned_le16(&pSMBt->t2_rsp.TotalDataCount); 295 + data_in_this_rsp = get_unaligned_le16(&pSMBt->t2_rsp.DataCount); 296 + 297 + if (total_data_size == data_in_this_rsp) 298 + return 0; 299 + else if (total_data_size < data_in_this_rsp) { 300 + cifs_dbg(FYI, "total data %d smaller than data in frame %d\n", 301 + total_data_size, data_in_this_rsp); 302 + return -EINVAL; 303 + } 304 + 305 + remaining = total_data_size - data_in_this_rsp; 306 + 307 + cifs_dbg(FYI, "missing %d bytes from transact2, check next response\n", 308 + remaining); 309 + if (total_data_size > CIFSMaxBufSize) { 310 + cifs_dbg(VFS, "TotalDataSize %d is over maximum buffer %d\n", 311 + total_data_size, CIFSMaxBufSize); 312 + return -EINVAL; 313 + } 314 + return remaining; 315 + } 316 + 317 + static int 318 + coalesce_t2(char *second_buf, struct smb_hdr *target_hdr, unsigned int *pdu_len) 319 + { 320 + struct smb_t2_rsp *pSMBs = (struct smb_t2_rsp *)second_buf; 321 + struct smb_t2_rsp *pSMBt = (struct smb_t2_rsp *)target_hdr; 322 + char *data_area_of_tgt; 323 + char *data_area_of_src; 324 + int remaining; 325 + unsigned int byte_count, total_in_tgt; 326 + __u16 tgt_total_cnt, src_total_cnt, total_in_src; 327 + 328 + src_total_cnt = get_unaligned_le16(&pSMBs->t2_rsp.TotalDataCount); 329 + tgt_total_cnt = get_unaligned_le16(&pSMBt->t2_rsp.TotalDataCount); 330 + 331 + if (tgt_total_cnt != src_total_cnt) 332 + cifs_dbg(FYI, "total data count of primary and secondary t2 differ source=%hu target=%hu\n", 333 + src_total_cnt, tgt_total_cnt); 334 + 335 + total_in_tgt = get_unaligned_le16(&pSMBt->t2_rsp.DataCount); 336 + 337 + remaining = tgt_total_cnt - total_in_tgt; 338 + 339 + if (remaining < 0) { 340 + cifs_dbg(FYI, "Server sent too much data. tgt_total_cnt=%hu total_in_tgt=%u\n", 341 + tgt_total_cnt, total_in_tgt); 342 + return -EPROTO; 343 + } 344 + 345 + if (remaining == 0) { 346 + /* nothing to do, ignore */ 347 + cifs_dbg(FYI, "no more data remains\n"); 348 + return 0; 349 + } 350 + 351 + total_in_src = get_unaligned_le16(&pSMBs->t2_rsp.DataCount); 352 + if (remaining < total_in_src) 353 + cifs_dbg(FYI, "transact2 2nd response contains too much data\n"); 354 + 355 + /* find end of first SMB data area */ 356 + data_area_of_tgt = (char *)&pSMBt->hdr.Protocol + 357 + get_unaligned_le16(&pSMBt->t2_rsp.DataOffset); 358 + 359 + /* validate target area */ 360 + data_area_of_src = (char *)&pSMBs->hdr.Protocol + 361 + get_unaligned_le16(&pSMBs->t2_rsp.DataOffset); 362 + 363 + data_area_of_tgt += total_in_tgt; 364 + 365 + total_in_tgt += total_in_src; 366 + /* is the result too big for the field? */ 367 + if (total_in_tgt > USHRT_MAX) { 368 + cifs_dbg(FYI, "coalesced DataCount too large (%u)\n", 369 + total_in_tgt); 370 + return -EPROTO; 371 + } 372 + put_unaligned_le16(total_in_tgt, &pSMBt->t2_rsp.DataCount); 373 + 374 + /* fix up the BCC */ 375 + byte_count = get_bcc(target_hdr); 376 + byte_count += total_in_src; 377 + /* is the result too big for the field? */ 378 + if (byte_count > USHRT_MAX) { 379 + cifs_dbg(FYI, "coalesced BCC too large (%u)\n", byte_count); 380 + return -EPROTO; 381 + } 382 + put_bcc(byte_count, target_hdr); 383 + 384 + byte_count = *pdu_len; 385 + byte_count += total_in_src; 386 + /* don't allow buffer to overflow */ 387 + if (byte_count > CIFSMaxBufSize + MAX_CIFS_HDR_SIZE) { 388 + cifs_dbg(FYI, "coalesced BCC exceeds buffer size (%u)\n", 389 + byte_count); 390 + return -ENOBUFS; 391 + } 392 + *pdu_len = byte_count; 393 + 394 + /* copy second buffer into end of first buffer */ 395 + memcpy(data_area_of_tgt, data_area_of_src, total_in_src); 396 + 397 + if (remaining != total_in_src) { 398 + /* more responses to go */ 399 + cifs_dbg(FYI, "waiting for more secondary responses\n"); 400 + return 1; 401 + } 402 + 403 + /* we are done */ 404 + cifs_dbg(FYI, "found the last secondary response\n"); 405 + return 0; 406 + } 407 + 408 + bool 409 + cifs_check_trans2(struct mid_q_entry *mid, struct TCP_Server_Info *server, 410 + char *buf, int malformed) 411 + { 412 + if (malformed) 413 + return false; 414 + if (check2ndT2(buf) <= 0) 415 + return false; 416 + mid->multiRsp = true; 417 + if (mid->resp_buf) { 418 + /* merge response - fix up 1st*/ 419 + malformed = coalesce_t2(buf, mid->resp_buf, &mid->response_pdu_len); 420 + if (malformed > 0) 421 + return true; 422 + /* All parts received or packet is malformed. */ 423 + mid->multiEnd = true; 424 + dequeue_mid(server, mid, malformed); 425 + return true; 426 + } 427 + if (!server->large_buf) { 428 + /*FIXME: switch to already allocated largebuf?*/ 429 + cifs_dbg(VFS, "1st trans2 resp needs bigbuf\n"); 430 + } else { 431 + /* Have first buffer */ 432 + mid->resp_buf = buf; 433 + mid->large_buf = true; 434 + server->bigbuf = NULL; 435 + } 436 + return true; 437 + } 438 + 439 + static int 440 + check_smb_hdr(struct smb_hdr *smb) 441 + { 442 + /* does it have the right SMB "signature" ? */ 443 + if (*(__le32 *) smb->Protocol != SMB1_PROTO_NUMBER) { 444 + cifs_dbg(VFS, "Bad protocol string signature header 0x%x\n", 445 + *(unsigned int *)smb->Protocol); 446 + return 1; 447 + } 448 + 449 + /* if it's a response then accept */ 450 + if (smb->Flags & SMBFLG_RESPONSE) 451 + return 0; 452 + 453 + /* only one valid case where server sends us request */ 454 + if (smb->Command == SMB_COM_LOCKING_ANDX) 455 + return 0; 456 + 457 + /* 458 + * Windows NT server returns error resposne (e.g. STATUS_DELETE_PENDING 459 + * or STATUS_OBJECT_NAME_NOT_FOUND or ERRDOS/ERRbadfile or any other) 460 + * for some TRANS2 requests without the RESPONSE flag set in header. 461 + */ 462 + if (smb->Command == SMB_COM_TRANSACTION2 && smb->Status.CifsError != 0) 463 + return 0; 464 + 465 + cifs_dbg(VFS, "Server sent request, not response. mid=%u\n", 466 + get_mid(smb)); 467 + return 1; 468 + } 469 + 470 + int 471 + checkSMB(char *buf, unsigned int pdu_len, unsigned int total_read, 472 + struct TCP_Server_Info *server) 473 + { 474 + struct smb_hdr *smb = (struct smb_hdr *)buf; 475 + __u32 rfclen = pdu_len; 476 + __u32 clc_len; /* calculated length */ 477 + cifs_dbg(FYI, "checkSMB Length: 0x%x, smb_buf_length: 0x%x\n", 478 + total_read, rfclen); 479 + 480 + /* is this frame too small to even get to a BCC? */ 481 + if (total_read < 2 + sizeof(struct smb_hdr)) { 482 + if ((total_read >= sizeof(struct smb_hdr) - 1) 483 + && (smb->Status.CifsError != 0)) { 484 + /* it's an error return */ 485 + smb->WordCount = 0; 486 + /* some error cases do not return wct and bcc */ 487 + return 0; 488 + } else if ((total_read == sizeof(struct smb_hdr) + 1) && 489 + (smb->WordCount == 0)) { 490 + char *tmp = (char *)smb; 491 + /* Need to work around a bug in two servers here */ 492 + /* First, check if the part of bcc they sent was zero */ 493 + if (tmp[sizeof(struct smb_hdr)] == 0) { 494 + /* some servers return only half of bcc 495 + * on simple responses (wct, bcc both zero) 496 + * in particular have seen this on 497 + * ulogoffX and FindClose. This leaves 498 + * one byte of bcc potentially uninitialized 499 + */ 500 + /* zero rest of bcc */ 501 + tmp[sizeof(struct smb_hdr)+1] = 0; 502 + return 0; 503 + } 504 + cifs_dbg(VFS, "rcvd invalid byte count (bcc)\n"); 505 + return smb_EIO1(smb_eio_trace_rx_inv_bcc, tmp[sizeof(struct smb_hdr)]); 506 + } else { 507 + cifs_dbg(VFS, "Length less than smb header size\n"); 508 + return smb_EIO2(smb_eio_trace_rx_too_short, 509 + total_read, smb->WordCount); 510 + } 511 + } else if (total_read < sizeof(*smb) + 2 * smb->WordCount) { 512 + cifs_dbg(VFS, "%s: can't read BCC due to invalid WordCount(%u)\n", 513 + __func__, smb->WordCount); 514 + return smb_EIO2(smb_eio_trace_rx_check_rsp, 515 + total_read, 2 + sizeof(struct smb_hdr)); 516 + } 517 + 518 + /* otherwise, there is enough to get to the BCC */ 519 + if (check_smb_hdr(smb)) 520 + return smb_EIO1(smb_eio_trace_rx_rfc1002_magic, *(u32 *)smb->Protocol); 521 + clc_len = smbCalcSize(smb); 522 + 523 + if (rfclen != total_read) { 524 + cifs_dbg(VFS, "Length read does not match RFC1001 length %d/%d\n", 525 + rfclen, total_read); 526 + return smb_EIO2(smb_eio_trace_rx_check_rsp, 527 + total_read, rfclen); 528 + } 529 + 530 + if (rfclen != clc_len) { 531 + __u16 mid = get_mid(smb); 532 + /* check if bcc wrapped around for large read responses */ 533 + if ((rfclen > 64 * 1024) && (rfclen > clc_len)) { 534 + /* check if lengths match mod 64K */ 535 + if (((rfclen) & 0xFFFF) == (clc_len & 0xFFFF)) 536 + return 0; /* bcc wrapped */ 537 + } 538 + cifs_dbg(FYI, "Calculated size %u vs length %u mismatch for mid=%u\n", 539 + clc_len, rfclen, mid); 540 + 541 + if (rfclen < clc_len) { 542 + cifs_dbg(VFS, "RFC1001 size %u smaller than SMB for mid=%u\n", 543 + rfclen, mid); 544 + return smb_EIO2(smb_eio_trace_rx_calc_len_too_big, 545 + rfclen, clc_len); 546 + } else if (rfclen > clc_len + 512) { 547 + /* 548 + * Some servers (Windows XP in particular) send more 549 + * data than the lengths in the SMB packet would 550 + * indicate on certain calls (byte range locks and 551 + * trans2 find first calls in particular). While the 552 + * client can handle such a frame by ignoring the 553 + * trailing data, we choose limit the amount of extra 554 + * data to 512 bytes. 555 + */ 556 + cifs_dbg(VFS, "RFC1001 size %u more than 512 bytes larger than SMB for mid=%u\n", 557 + rfclen, mid); 558 + return smb_EIO2(smb_eio_trace_rx_overlong, 559 + rfclen, clc_len + 512); 560 + } 561 + } 562 + return 0; 563 + }
+3 -1
fs/smb/client/smb2file.c
··· 13 13 #include <linux/pagemap.h> 14 14 #include <asm/div64.h> 15 15 #include "cifsfs.h" 16 - #include "cifspdu.h" 17 16 #include "cifsglob.h" 18 17 #include "cifsproto.h" 19 18 #include "cifs_debug.h" ··· 21 22 #include "fscache.h" 22 23 #include "smb2proto.h" 23 24 #include "../common/smb2status.h" 25 + #include "../common/smbfsctl.h" 24 26 25 27 static struct smb2_symlink_err_rsp *symlink_data(const struct kvec *iov) 26 28 { ··· 179 179 &err_buftype); 180 180 if (rc == -EACCES && retry_without_read_attributes) { 181 181 free_rsp_buf(err_buftype, err_iov.iov_base); 182 + memset(&err_iov, 0, sizeof(err_iov)); 183 + err_buftype = CIFS_NO_BUFFER; 182 184 oparms->desired_access &= ~FILE_READ_ATTRIBUTES; 183 185 rc = SMB2_open(xid, oparms, smb2_path, &smb2_oplock, smb2_data, NULL, &err_iov, 184 186 &err_buftype);
+17 -6
fs/smb/client/smb2inode.c
··· 13 13 #include <linux/pagemap.h> 14 14 #include <asm/div64.h> 15 15 #include "cifsfs.h" 16 - #include "cifspdu.h" 17 16 #include "cifsglob.h" 18 17 #include "cifsproto.h" 19 18 #include "cifs_debug.h" ··· 23 24 #include "smb2proto.h" 24 25 #include "cached_dir.h" 25 26 #include "../common/smb2status.h" 27 + #include "../common/smbfsctl.h" 26 28 27 29 static struct reparse_data_buffer *reparse_buf_ptr(struct kvec *iov) 28 30 { ··· 188 188 struct reparse_data_buffer *rbuf; 189 189 struct TCP_Server_Info *server; 190 190 int resp_buftype[MAX_COMPOUND]; 191 - int retries = 0, cur_sleep = 1; 191 + int retries = 0, cur_sleep = 0; 192 192 __u8 delete_pending[8] = {1,}; 193 193 struct kvec *rsp_iov, *iov; 194 194 struct inode *inode = NULL; ··· 638 638 num_rqst++; 639 639 640 640 if (cfile) { 641 - if (retries) 641 + if (retries) { 642 + /* Back-off before retry */ 643 + if (cur_sleep) 644 + msleep(cur_sleep); 642 645 for (i = 1; i < num_rqst - 2; i++) 643 646 smb2_set_replay(server, &rqst[i]); 647 + } 644 648 645 649 rc = compound_send_recv(xid, ses, server, 646 650 flags, num_rqst - 2, 647 651 &rqst[1], &resp_buftype[1], 648 652 &rsp_iov[1]); 649 653 } else { 650 - if (retries) 654 + if (retries) { 655 + /* Back-off before retry */ 656 + if (cur_sleep) 657 + msleep(cur_sleep); 651 658 for (i = 0; i < num_rqst; i++) 652 659 smb2_set_replay(server, &rqst[i]); 660 + } 653 661 654 662 rc = compound_send_recv(xid, ses, server, 655 663 flags, num_rqst, ··· 1188 1180 { 1189 1181 struct kvec open_iov[SMB2_CREATE_IOV_SIZE]; 1190 1182 __le16 *utf16_path __free(kfree) = NULL; 1191 - int retries = 0, cur_sleep = 1; 1183 + int retries = 0, cur_sleep = 0; 1192 1184 struct TCP_Server_Info *server; 1193 1185 struct cifs_open_parms oparms; 1194 1186 struct smb2_create_req *creq; ··· 1250 1242 goto err_free; 1251 1243 1252 1244 if (retries) { 1245 + /* Back-off before retry */ 1246 + if (cur_sleep) 1247 + msleep(cur_sleep); 1253 1248 for (int i = 0; i < ARRAY_SIZE(rqst); i++) 1254 1249 smb2_set_replay(server, &rqst[i]); 1255 1250 } ··· 1273 1262 if (rc == -EINVAL && dentry) { 1274 1263 dentry = NULL; 1275 1264 retries = 0; 1276 - cur_sleep = 1; 1265 + cur_sleep = 0; 1277 1266 goto again; 1278 1267 } 1279 1268 /*
+65 -2408
fs/smb/client/smb2maperror.c
··· 17 17 #include "trace.h" 18 18 19 19 struct status_to_posix_error { 20 - __le32 smb2_status; 20 + __u32 smb2_status; 21 21 int posix_error; 22 22 char *status_string; 23 23 }; 24 24 25 25 static const struct status_to_posix_error smb2_error_map_table[] = { 26 - {STATUS_WAIT_1, -EIO, "STATUS_WAIT_1"}, 27 - {STATUS_WAIT_2, -EIO, "STATUS_WAIT_2"}, 28 - {STATUS_WAIT_3, -EIO, "STATUS_WAIT_3"}, 29 - {STATUS_WAIT_63, -EIO, "STATUS_WAIT_63"}, 30 - {STATUS_ABANDONED, -EIO, "STATUS_ABANDONED or STATUS_ABANDONED_WAIT_0"}, 31 - {STATUS_ABANDONED_WAIT_0, -EIO, 32 - "STATUS_ABANDONED or STATUS_ABANDONED_WAIT_0"}, 33 - {STATUS_ABANDONED_WAIT_63, -EIO, "STATUS_ABANDONED_WAIT_63"}, 34 - {STATUS_USER_APC, -EIO, "STATUS_USER_APC"}, 35 - {STATUS_KERNEL_APC, -EIO, "STATUS_KERNEL_APC"}, 36 - {STATUS_ALERTED, -EIO, "STATUS_ALERTED"}, 37 - {STATUS_TIMEOUT, -ETIMEDOUT, "STATUS_TIMEOUT"}, 38 - {STATUS_PENDING, -EIO, "STATUS_PENDING"}, 39 - {STATUS_REPARSE, -EIO, "STATUS_REPARSE"}, 40 - {STATUS_MORE_ENTRIES, -EIO, "STATUS_MORE_ENTRIES"}, 41 - {STATUS_NOT_ALL_ASSIGNED, -EIO, "STATUS_NOT_ALL_ASSIGNED"}, 42 - {STATUS_SOME_NOT_MAPPED, -EIO, "STATUS_SOME_NOT_MAPPED"}, 43 - {STATUS_OPLOCK_BREAK_IN_PROGRESS, -EIO, 44 - "STATUS_OPLOCK_BREAK_IN_PROGRESS"}, 45 - {STATUS_VOLUME_MOUNTED, -EIO, "STATUS_VOLUME_MOUNTED"}, 46 - {STATUS_RXACT_COMMITTED, -EIO, "STATUS_RXACT_COMMITTED"}, 47 - {STATUS_NOTIFY_CLEANUP, -EIO, "STATUS_NOTIFY_CLEANUP"}, 48 - {STATUS_NOTIFY_ENUM_DIR, -EIO, "STATUS_NOTIFY_ENUM_DIR"}, 49 - {STATUS_NO_QUOTAS_FOR_ACCOUNT, -EIO, "STATUS_NO_QUOTAS_FOR_ACCOUNT"}, 50 - {STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED, -EIO, 51 - "STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED"}, 52 - {STATUS_PAGE_FAULT_TRANSITION, -EIO, "STATUS_PAGE_FAULT_TRANSITION"}, 53 - {STATUS_PAGE_FAULT_DEMAND_ZERO, -EIO, "STATUS_PAGE_FAULT_DEMAND_ZERO"}, 54 - {STATUS_PAGE_FAULT_COPY_ON_WRITE, -EIO, 55 - "STATUS_PAGE_FAULT_COPY_ON_WRITE"}, 56 - {STATUS_PAGE_FAULT_GUARD_PAGE, -EIO, "STATUS_PAGE_FAULT_GUARD_PAGE"}, 57 - {STATUS_PAGE_FAULT_PAGING_FILE, -EIO, "STATUS_PAGE_FAULT_PAGING_FILE"}, 58 - {STATUS_CACHE_PAGE_LOCKED, -EIO, "STATUS_CACHE_PAGE_LOCKED"}, 59 - {STATUS_CRASH_DUMP, -EIO, "STATUS_CRASH_DUMP"}, 60 - {STATUS_BUFFER_ALL_ZEROS, -EIO, "STATUS_BUFFER_ALL_ZEROS"}, 61 - {STATUS_REPARSE_OBJECT, -EIO, "STATUS_REPARSE_OBJECT"}, 62 - {STATUS_RESOURCE_REQUIREMENTS_CHANGED, -EIO, 63 - "STATUS_RESOURCE_REQUIREMENTS_CHANGED"}, 64 - {STATUS_TRANSLATION_COMPLETE, -EIO, "STATUS_TRANSLATION_COMPLETE"}, 65 - {STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY, -EIO, 66 - "STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY"}, 67 - {STATUS_NOTHING_TO_TERMINATE, -EIO, "STATUS_NOTHING_TO_TERMINATE"}, 68 - {STATUS_PROCESS_NOT_IN_JOB, -EIO, "STATUS_PROCESS_NOT_IN_JOB"}, 69 - {STATUS_PROCESS_IN_JOB, -EIO, "STATUS_PROCESS_IN_JOB"}, 70 - {STATUS_VOLSNAP_HIBERNATE_READY, -EIO, 71 - "STATUS_VOLSNAP_HIBERNATE_READY"}, 72 - {STATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY, -EIO, 73 - "STATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY"}, 74 - {STATUS_INTERRUPT_VECTOR_ALREADY_CONNECTED, -EIO, 75 - "STATUS_INTERRUPT_VECTOR_ALREADY_CONNECTED"}, 76 - {STATUS_INTERRUPT_STILL_CONNECTED, -EIO, 77 - "STATUS_INTERRUPT_STILL_CONNECTED"}, 78 - {STATUS_PROCESS_CLONED, -EIO, "STATUS_PROCESS_CLONED"}, 79 - {STATUS_FILE_LOCKED_WITH_ONLY_READERS, -EIO, 80 - "STATUS_FILE_LOCKED_WITH_ONLY_READERS"}, 81 - {STATUS_FILE_LOCKED_WITH_WRITERS, -EIO, 82 - "STATUS_FILE_LOCKED_WITH_WRITERS"}, 83 - {STATUS_RESOURCEMANAGER_READ_ONLY, -EROFS, 84 - "STATUS_RESOURCEMANAGER_READ_ONLY"}, 85 - {STATUS_WAIT_FOR_OPLOCK, -EIO, "STATUS_WAIT_FOR_OPLOCK"}, 86 - {DBG_EXCEPTION_HANDLED, -EIO, "DBG_EXCEPTION_HANDLED"}, 87 - {DBG_CONTINUE, -EIO, "DBG_CONTINUE"}, 88 - {STATUS_FLT_IO_COMPLETE, -EIO, "STATUS_FLT_IO_COMPLETE"}, 89 - {STATUS_OBJECT_NAME_EXISTS, -EIO, "STATUS_OBJECT_NAME_EXISTS"}, 90 - {STATUS_THREAD_WAS_SUSPENDED, -EIO, "STATUS_THREAD_WAS_SUSPENDED"}, 91 - {STATUS_WORKING_SET_LIMIT_RANGE, -EIO, 92 - "STATUS_WORKING_SET_LIMIT_RANGE"}, 93 - {STATUS_IMAGE_NOT_AT_BASE, -EIO, "STATUS_IMAGE_NOT_AT_BASE"}, 94 - {STATUS_RXACT_STATE_CREATED, -EIO, "STATUS_RXACT_STATE_CREATED"}, 95 - {STATUS_SEGMENT_NOTIFICATION, -EIO, "STATUS_SEGMENT_NOTIFICATION"}, 96 - {STATUS_LOCAL_USER_SESSION_KEY, -EIO, "STATUS_LOCAL_USER_SESSION_KEY"}, 97 - {STATUS_BAD_CURRENT_DIRECTORY, -EIO, "STATUS_BAD_CURRENT_DIRECTORY"}, 98 - {STATUS_SERIAL_MORE_WRITES, -EIO, "STATUS_SERIAL_MORE_WRITES"}, 99 - {STATUS_REGISTRY_RECOVERED, -EIO, "STATUS_REGISTRY_RECOVERED"}, 100 - {STATUS_FT_READ_RECOVERY_FROM_BACKUP, -EIO, 101 - "STATUS_FT_READ_RECOVERY_FROM_BACKUP"}, 102 - {STATUS_FT_WRITE_RECOVERY, -EIO, "STATUS_FT_WRITE_RECOVERY"}, 103 - {STATUS_SERIAL_COUNTER_TIMEOUT, -ETIMEDOUT, 104 - "STATUS_SERIAL_COUNTER_TIMEOUT"}, 105 - {STATUS_NULL_LM_PASSWORD, -EIO, "STATUS_NULL_LM_PASSWORD"}, 106 - {STATUS_IMAGE_MACHINE_TYPE_MISMATCH, -EIO, 107 - "STATUS_IMAGE_MACHINE_TYPE_MISMATCH"}, 108 - {STATUS_RECEIVE_PARTIAL, -EIO, "STATUS_RECEIVE_PARTIAL"}, 109 - {STATUS_RECEIVE_EXPEDITED, -EIO, "STATUS_RECEIVE_EXPEDITED"}, 110 - {STATUS_RECEIVE_PARTIAL_EXPEDITED, -EIO, 111 - "STATUS_RECEIVE_PARTIAL_EXPEDITED"}, 112 - {STATUS_EVENT_DONE, -EIO, "STATUS_EVENT_DONE"}, 113 - {STATUS_EVENT_PENDING, -EIO, "STATUS_EVENT_PENDING"}, 114 - {STATUS_CHECKING_FILE_SYSTEM, -EIO, "STATUS_CHECKING_FILE_SYSTEM"}, 115 - {STATUS_FATAL_APP_EXIT, -EIO, "STATUS_FATAL_APP_EXIT"}, 116 - {STATUS_PREDEFINED_HANDLE, -EIO, "STATUS_PREDEFINED_HANDLE"}, 117 - {STATUS_WAS_UNLOCKED, -EIO, "STATUS_WAS_UNLOCKED"}, 118 - {STATUS_SERVICE_NOTIFICATION, -EIO, "STATUS_SERVICE_NOTIFICATION"}, 119 - {STATUS_WAS_LOCKED, -EIO, "STATUS_WAS_LOCKED"}, 120 - {STATUS_LOG_HARD_ERROR, -EIO, "STATUS_LOG_HARD_ERROR"}, 121 - {STATUS_ALREADY_WIN32, -EIO, "STATUS_ALREADY_WIN32"}, 122 - {STATUS_WX86_UNSIMULATE, -EIO, "STATUS_WX86_UNSIMULATE"}, 123 - {STATUS_WX86_CONTINUE, -EIO, "STATUS_WX86_CONTINUE"}, 124 - {STATUS_WX86_SINGLE_STEP, -EIO, "STATUS_WX86_SINGLE_STEP"}, 125 - {STATUS_WX86_BREAKPOINT, -EIO, "STATUS_WX86_BREAKPOINT"}, 126 - {STATUS_WX86_EXCEPTION_CONTINUE, -EIO, 127 - "STATUS_WX86_EXCEPTION_CONTINUE"}, 128 - {STATUS_WX86_EXCEPTION_LASTCHANCE, -EIO, 129 - "STATUS_WX86_EXCEPTION_LASTCHANCE"}, 130 - {STATUS_WX86_EXCEPTION_CHAIN, -EIO, "STATUS_WX86_EXCEPTION_CHAIN"}, 131 - {STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE, -EIO, 132 - "STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE"}, 133 - {STATUS_NO_YIELD_PERFORMED, -EIO, "STATUS_NO_YIELD_PERFORMED"}, 134 - {STATUS_TIMER_RESUME_IGNORED, -EIO, "STATUS_TIMER_RESUME_IGNORED"}, 135 - {STATUS_ARBITRATION_UNHANDLED, -EIO, "STATUS_ARBITRATION_UNHANDLED"}, 136 - {STATUS_CARDBUS_NOT_SUPPORTED, -ENOSYS, "STATUS_CARDBUS_NOT_SUPPORTED"}, 137 - {STATUS_WX86_CREATEWX86TIB, -EIO, "STATUS_WX86_CREATEWX86TIB"}, 138 - {STATUS_MP_PROCESSOR_MISMATCH, -EIO, "STATUS_MP_PROCESSOR_MISMATCH"}, 139 - {STATUS_HIBERNATED, -EIO, "STATUS_HIBERNATED"}, 140 - {STATUS_RESUME_HIBERNATION, -EIO, "STATUS_RESUME_HIBERNATION"}, 141 - {STATUS_FIRMWARE_UPDATED, -EIO, "STATUS_FIRMWARE_UPDATED"}, 142 - {STATUS_DRIVERS_LEAKING_LOCKED_PAGES, -EIO, 143 - "STATUS_DRIVERS_LEAKING_LOCKED_PAGES"}, 144 - {STATUS_MESSAGE_RETRIEVED, -EIO, "STATUS_MESSAGE_RETRIEVED"}, 145 - {STATUS_SYSTEM_POWERSTATE_TRANSITION, -EIO, 146 - "STATUS_SYSTEM_POWERSTATE_TRANSITION"}, 147 - {STATUS_ALPC_CHECK_COMPLETION_LIST, -EIO, 148 - "STATUS_ALPC_CHECK_COMPLETION_LIST"}, 149 - {STATUS_SYSTEM_POWERSTATE_COMPLEX_TRANSITION, -EIO, 150 - "STATUS_SYSTEM_POWERSTATE_COMPLEX_TRANSITION"}, 151 - {STATUS_ACCESS_AUDIT_BY_POLICY, -EIO, "STATUS_ACCESS_AUDIT_BY_POLICY"}, 152 - {STATUS_ABANDON_HIBERFILE, -EIO, "STATUS_ABANDON_HIBERFILE"}, 153 - {STATUS_BIZRULES_NOT_ENABLED, -EIO, "STATUS_BIZRULES_NOT_ENABLED"}, 154 - {STATUS_WAKE_SYSTEM, -EIO, "STATUS_WAKE_SYSTEM"}, 155 - {STATUS_DS_SHUTTING_DOWN, -EIO, "STATUS_DS_SHUTTING_DOWN"}, 156 - {DBG_REPLY_LATER, -EIO, "DBG_REPLY_LATER"}, 157 - {DBG_UNABLE_TO_PROVIDE_HANDLE, -EIO, "DBG_UNABLE_TO_PROVIDE_HANDLE"}, 158 - {DBG_TERMINATE_THREAD, -EIO, "DBG_TERMINATE_THREAD"}, 159 - {DBG_TERMINATE_PROCESS, -EIO, "DBG_TERMINATE_PROCESS"}, 160 - {DBG_CONTROL_C, -EIO, "DBG_CONTROL_C"}, 161 - {DBG_PRINTEXCEPTION_C, -EIO, "DBG_PRINTEXCEPTION_C"}, 162 - {DBG_RIPEXCEPTION, -EIO, "DBG_RIPEXCEPTION"}, 163 - {DBG_CONTROL_BREAK, -EIO, "DBG_CONTROL_BREAK"}, 164 - {DBG_COMMAND_EXCEPTION, -EIO, "DBG_COMMAND_EXCEPTION"}, 165 - {RPC_NT_UUID_LOCAL_ONLY, -EIO, "RPC_NT_UUID_LOCAL_ONLY"}, 166 - {RPC_NT_SEND_INCOMPLETE, -EIO, "RPC_NT_SEND_INCOMPLETE"}, 167 - {STATUS_CTX_CDM_CONNECT, -EIO, "STATUS_CTX_CDM_CONNECT"}, 168 - {STATUS_CTX_CDM_DISCONNECT, -EIO, "STATUS_CTX_CDM_DISCONNECT"}, 169 - {STATUS_SXS_RELEASE_ACTIVATION_CONTEXT, -EIO, 170 - "STATUS_SXS_RELEASE_ACTIVATION_CONTEXT"}, 171 - {STATUS_RECOVERY_NOT_NEEDED, -EIO, "STATUS_RECOVERY_NOT_NEEDED"}, 172 - {STATUS_RM_ALREADY_STARTED, -EIO, "STATUS_RM_ALREADY_STARTED"}, 173 - {STATUS_LOG_NO_RESTART, -EIO, "STATUS_LOG_NO_RESTART"}, 174 - {STATUS_VIDEO_DRIVER_DEBUG_REPORT_REQUEST, -EIO, 175 - "STATUS_VIDEO_DRIVER_DEBUG_REPORT_REQUEST"}, 176 - {STATUS_GRAPHICS_PARTIAL_DATA_POPULATED, -EIO, 177 - "STATUS_GRAPHICS_PARTIAL_DATA_POPULATED"}, 178 - {STATUS_GRAPHICS_DRIVER_MISMATCH, -EIO, 179 - "STATUS_GRAPHICS_DRIVER_MISMATCH"}, 180 - {STATUS_GRAPHICS_MODE_NOT_PINNED, -EIO, 181 - "STATUS_GRAPHICS_MODE_NOT_PINNED"}, 182 - {STATUS_GRAPHICS_NO_PREFERRED_MODE, -EIO, 183 - "STATUS_GRAPHICS_NO_PREFERRED_MODE"}, 184 - {STATUS_GRAPHICS_DATASET_IS_EMPTY, -EIO, 185 - "STATUS_GRAPHICS_DATASET_IS_EMPTY"}, 186 - {STATUS_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET, -EIO, 187 - "STATUS_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET"}, 188 - {STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED, -EIO, 189 - "STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED"}, 190 - {STATUS_GRAPHICS_UNKNOWN_CHILD_STATUS, -EIO, 191 - "STATUS_GRAPHICS_UNKNOWN_CHILD_STATUS"}, 192 - {STATUS_GRAPHICS_LEADLINK_START_DEFERRED, -EIO, 193 - "STATUS_GRAPHICS_LEADLINK_START_DEFERRED"}, 194 - {STATUS_GRAPHICS_POLLING_TOO_FREQUENTLY, -EIO, 195 - "STATUS_GRAPHICS_POLLING_TOO_FREQUENTLY"}, 196 - {STATUS_GRAPHICS_START_DEFERRED, -EIO, 197 - "STATUS_GRAPHICS_START_DEFERRED"}, 198 - {STATUS_NDIS_INDICATION_REQUIRED, -EIO, 199 - "STATUS_NDIS_INDICATION_REQUIRED"}, 200 - {STATUS_GUARD_PAGE_VIOLATION, -EIO, "STATUS_GUARD_PAGE_VIOLATION"}, 201 - {STATUS_DATATYPE_MISALIGNMENT, -EIO, "STATUS_DATATYPE_MISALIGNMENT"}, 202 - {STATUS_BREAKPOINT, -EIO, "STATUS_BREAKPOINT"}, 203 - {STATUS_SINGLE_STEP, -EIO, "STATUS_SINGLE_STEP"}, 204 - {STATUS_BUFFER_OVERFLOW, -E2BIG, "STATUS_BUFFER_OVERFLOW"}, 205 - {STATUS_NO_MORE_FILES, -ENODATA, "STATUS_NO_MORE_FILES"}, 206 - {STATUS_WAKE_SYSTEM_DEBUGGER, -EIO, "STATUS_WAKE_SYSTEM_DEBUGGER"}, 207 - {STATUS_HANDLES_CLOSED, -EIO, "STATUS_HANDLES_CLOSED"}, 208 - {STATUS_NO_INHERITANCE, -EIO, "STATUS_NO_INHERITANCE"}, 209 - {STATUS_GUID_SUBSTITUTION_MADE, -EIO, "STATUS_GUID_SUBSTITUTION_MADE"}, 210 - {STATUS_PARTIAL_COPY, -EIO, "STATUS_PARTIAL_COPY"}, 211 - {STATUS_DEVICE_PAPER_EMPTY, -EIO, "STATUS_DEVICE_PAPER_EMPTY"}, 212 - {STATUS_DEVICE_POWERED_OFF, -EIO, "STATUS_DEVICE_POWERED_OFF"}, 213 - {STATUS_DEVICE_OFF_LINE, -EIO, "STATUS_DEVICE_OFF_LINE"}, 214 - {STATUS_DEVICE_BUSY, -EBUSY, "STATUS_DEVICE_BUSY"}, 215 - {STATUS_NO_MORE_EAS, -EIO, "STATUS_NO_MORE_EAS"}, 216 - {STATUS_INVALID_EA_NAME, -EINVAL, "STATUS_INVALID_EA_NAME"}, 217 - {STATUS_EA_LIST_INCONSISTENT, -EIO, "STATUS_EA_LIST_INCONSISTENT"}, 218 - {STATUS_INVALID_EA_FLAG, -EINVAL, "STATUS_INVALID_EA_FLAG"}, 219 - {STATUS_VERIFY_REQUIRED, -EIO, "STATUS_VERIFY_REQUIRED"}, 220 - {STATUS_EXTRANEOUS_INFORMATION, -EIO, "STATUS_EXTRANEOUS_INFORMATION"}, 221 - {STATUS_RXACT_COMMIT_NECESSARY, -EIO, "STATUS_RXACT_COMMIT_NECESSARY"}, 222 - {STATUS_NO_MORE_ENTRIES, -EIO, "STATUS_NO_MORE_ENTRIES"}, 223 - {STATUS_FILEMARK_DETECTED, -EIO, "STATUS_FILEMARK_DETECTED"}, 224 - {STATUS_MEDIA_CHANGED, -EIO, "STATUS_MEDIA_CHANGED"}, 225 - {STATUS_BUS_RESET, -EIO, "STATUS_BUS_RESET"}, 226 - {STATUS_END_OF_MEDIA, -EIO, "STATUS_END_OF_MEDIA"}, 227 - {STATUS_BEGINNING_OF_MEDIA, -EIO, "STATUS_BEGINNING_OF_MEDIA"}, 228 - {STATUS_MEDIA_CHECK, -EIO, "STATUS_MEDIA_CHECK"}, 229 - {STATUS_SETMARK_DETECTED, -EIO, "STATUS_SETMARK_DETECTED"}, 230 - {STATUS_NO_DATA_DETECTED, -EIO, "STATUS_NO_DATA_DETECTED"}, 231 - {STATUS_REDIRECTOR_HAS_OPEN_HANDLES, -EIO, 232 - "STATUS_REDIRECTOR_HAS_OPEN_HANDLES"}, 233 - {STATUS_SERVER_HAS_OPEN_HANDLES, -EIO, 234 - "STATUS_SERVER_HAS_OPEN_HANDLES"}, 235 - {STATUS_ALREADY_DISCONNECTED, -EIO, "STATUS_ALREADY_DISCONNECTED"}, 236 - {STATUS_LONGJUMP, -EIO, "STATUS_LONGJUMP"}, 237 - {STATUS_CLEANER_CARTRIDGE_INSTALLED, -EIO, 238 - "STATUS_CLEANER_CARTRIDGE_INSTALLED"}, 239 - {STATUS_PLUGPLAY_QUERY_VETOED, -EIO, "STATUS_PLUGPLAY_QUERY_VETOED"}, 240 - {STATUS_UNWIND_CONSOLIDATE, -EIO, "STATUS_UNWIND_CONSOLIDATE"}, 241 - {STATUS_REGISTRY_HIVE_RECOVERED, -EIO, 242 - "STATUS_REGISTRY_HIVE_RECOVERED"}, 243 - {STATUS_DLL_MIGHT_BE_INSECURE, -EIO, "STATUS_DLL_MIGHT_BE_INSECURE"}, 244 - {STATUS_DLL_MIGHT_BE_INCOMPATIBLE, -EIO, 245 - "STATUS_DLL_MIGHT_BE_INCOMPATIBLE"}, 246 - {STATUS_STOPPED_ON_SYMLINK, -EOPNOTSUPP, "STATUS_STOPPED_ON_SYMLINK"}, 247 - {STATUS_IO_REPARSE_TAG_NOT_HANDLED, -EOPNOTSUPP, 248 - "STATUS_REPARSE_NOT_HANDLED"}, 249 - {STATUS_DEVICE_REQUIRES_CLEANING, -EIO, 250 - "STATUS_DEVICE_REQUIRES_CLEANING"}, 251 - {STATUS_DEVICE_DOOR_OPEN, -EIO, "STATUS_DEVICE_DOOR_OPEN"}, 252 - {STATUS_DATA_LOST_REPAIR, -EIO, "STATUS_DATA_LOST_REPAIR"}, 253 - {DBG_EXCEPTION_NOT_HANDLED, -EIO, "DBG_EXCEPTION_NOT_HANDLED"}, 254 - {STATUS_CLUSTER_NODE_ALREADY_UP, -EIO, 255 - "STATUS_CLUSTER_NODE_ALREADY_UP"}, 256 - {STATUS_CLUSTER_NODE_ALREADY_DOWN, -EIO, 257 - "STATUS_CLUSTER_NODE_ALREADY_DOWN"}, 258 - {STATUS_CLUSTER_NETWORK_ALREADY_ONLINE, -EIO, 259 - "STATUS_CLUSTER_NETWORK_ALREADY_ONLINE"}, 260 - {STATUS_CLUSTER_NETWORK_ALREADY_OFFLINE, -EIO, 261 - "STATUS_CLUSTER_NETWORK_ALREADY_OFFLINE"}, 262 - {STATUS_CLUSTER_NODE_ALREADY_MEMBER, -EIO, 263 - "STATUS_CLUSTER_NODE_ALREADY_MEMBER"}, 264 - {STATUS_COULD_NOT_RESIZE_LOG, -EIO, "STATUS_COULD_NOT_RESIZE_LOG"}, 265 - {STATUS_NO_TXF_METADATA, -EIO, "STATUS_NO_TXF_METADATA"}, 266 - {STATUS_CANT_RECOVER_WITH_HANDLE_OPEN, -EIO, 267 - "STATUS_CANT_RECOVER_WITH_HANDLE_OPEN"}, 268 - {STATUS_TXF_METADATA_ALREADY_PRESENT, -EIO, 269 - "STATUS_TXF_METADATA_ALREADY_PRESENT"}, 270 - {STATUS_TRANSACTION_SCOPE_CALLBACKS_NOT_SET, -EIO, 271 - "STATUS_TRANSACTION_SCOPE_CALLBACKS_NOT_SET"}, 272 - {STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD_RECOVERED, -EIO, 273 - "STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD_RECOVERED"}, 274 - {STATUS_FLT_BUFFER_TOO_SMALL, -ENOBUFS, "STATUS_FLT_BUFFER_TOO_SMALL"}, 275 - {STATUS_FVE_PARTIAL_METADATA, -EIO, "STATUS_FVE_PARTIAL_METADATA"}, 276 - {STATUS_UNSUCCESSFUL, -EIO, "STATUS_UNSUCCESSFUL"}, 277 - {STATUS_NOT_IMPLEMENTED, -EOPNOTSUPP, "STATUS_NOT_IMPLEMENTED"}, 278 - {STATUS_INVALID_INFO_CLASS, -EIO, "STATUS_INVALID_INFO_CLASS"}, 279 - {STATUS_INFO_LENGTH_MISMATCH, -EIO, "STATUS_INFO_LENGTH_MISMATCH"}, 280 - {STATUS_ACCESS_VIOLATION, -EACCES, "STATUS_ACCESS_VIOLATION"}, 281 - {STATUS_IN_PAGE_ERROR, -EFAULT, "STATUS_IN_PAGE_ERROR"}, 282 - {STATUS_PAGEFILE_QUOTA, -EDQUOT, "STATUS_PAGEFILE_QUOTA"}, 283 - {STATUS_INVALID_HANDLE, -EBADF, "STATUS_INVALID_HANDLE"}, 284 - {STATUS_BAD_INITIAL_STACK, -EIO, "STATUS_BAD_INITIAL_STACK"}, 285 - {STATUS_BAD_INITIAL_PC, -EIO, "STATUS_BAD_INITIAL_PC"}, 286 - {STATUS_INVALID_CID, -EIO, "STATUS_INVALID_CID"}, 287 - {STATUS_TIMER_NOT_CANCELED, -EIO, "STATUS_TIMER_NOT_CANCELED"}, 288 - {STATUS_INVALID_PARAMETER, -EINVAL, "STATUS_INVALID_PARAMETER"}, 289 - {STATUS_NO_SUCH_DEVICE, -ENODEV, "STATUS_NO_SUCH_DEVICE"}, 290 - {STATUS_NO_SUCH_FILE, -ENOENT, "STATUS_NO_SUCH_FILE"}, 291 - {STATUS_INVALID_DEVICE_REQUEST, -EOPNOTSUPP, "STATUS_INVALID_DEVICE_REQUEST"}, 292 - {STATUS_END_OF_FILE, -ENODATA, "STATUS_END_OF_FILE"}, 293 - {STATUS_WRONG_VOLUME, -EIO, "STATUS_WRONG_VOLUME"}, 294 - {STATUS_NO_MEDIA_IN_DEVICE, -EIO, "STATUS_NO_MEDIA_IN_DEVICE"}, 295 - {STATUS_UNRECOGNIZED_MEDIA, -EIO, "STATUS_UNRECOGNIZED_MEDIA"}, 296 - {STATUS_NONEXISTENT_SECTOR, -EIO, "STATUS_NONEXISTENT_SECTOR"}, 297 - {STATUS_MORE_PROCESSING_REQUIRED, -EIO, 298 - "STATUS_MORE_PROCESSING_REQUIRED"}, 299 - {STATUS_NO_MEMORY, -EREMOTEIO, "STATUS_NO_MEMORY"}, 300 - {STATUS_CONFLICTING_ADDRESSES, -EADDRINUSE, 301 - "STATUS_CONFLICTING_ADDRESSES"}, 302 - {STATUS_NOT_MAPPED_VIEW, -EIO, "STATUS_NOT_MAPPED_VIEW"}, 303 - {STATUS_UNABLE_TO_FREE_VM, -EIO, "STATUS_UNABLE_TO_FREE_VM"}, 304 - {STATUS_UNABLE_TO_DELETE_SECTION, -EIO, 305 - "STATUS_UNABLE_TO_DELETE_SECTION"}, 306 - {STATUS_INVALID_SYSTEM_SERVICE, -EIO, "STATUS_INVALID_SYSTEM_SERVICE"}, 307 - {STATUS_ILLEGAL_INSTRUCTION, -EIO, "STATUS_ILLEGAL_INSTRUCTION"}, 308 - {STATUS_INVALID_LOCK_SEQUENCE, -EIO, "STATUS_INVALID_LOCK_SEQUENCE"}, 309 - {STATUS_INVALID_VIEW_SIZE, -EIO, "STATUS_INVALID_VIEW_SIZE"}, 310 - {STATUS_INVALID_FILE_FOR_SECTION, -EIO, 311 - "STATUS_INVALID_FILE_FOR_SECTION"}, 312 - {STATUS_ALREADY_COMMITTED, -EIO, "STATUS_ALREADY_COMMITTED"}, 313 - {STATUS_ACCESS_DENIED, -EACCES, "STATUS_ACCESS_DENIED"}, 314 - {STATUS_BUFFER_TOO_SMALL, -EIO, "STATUS_BUFFER_TOO_SMALL"}, 315 - {STATUS_OBJECT_TYPE_MISMATCH, -EIO, "STATUS_OBJECT_TYPE_MISMATCH"}, 316 - {STATUS_NONCONTINUABLE_EXCEPTION, -EIO, 317 - "STATUS_NONCONTINUABLE_EXCEPTION"}, 318 - {STATUS_INVALID_DISPOSITION, -EIO, "STATUS_INVALID_DISPOSITION"}, 319 - {STATUS_UNWIND, -EIO, "STATUS_UNWIND"}, 320 - {STATUS_BAD_STACK, -EIO, "STATUS_BAD_STACK"}, 321 - {STATUS_INVALID_UNWIND_TARGET, -EIO, "STATUS_INVALID_UNWIND_TARGET"}, 322 - {STATUS_NOT_LOCKED, -EIO, "STATUS_NOT_LOCKED"}, 323 - {STATUS_PARITY_ERROR, -EIO, "STATUS_PARITY_ERROR"}, 324 - {STATUS_UNABLE_TO_DECOMMIT_VM, -EIO, "STATUS_UNABLE_TO_DECOMMIT_VM"}, 325 - {STATUS_NOT_COMMITTED, -EIO, "STATUS_NOT_COMMITTED"}, 326 - {STATUS_INVALID_PORT_ATTRIBUTES, -EIO, 327 - "STATUS_INVALID_PORT_ATTRIBUTES"}, 328 - {STATUS_PORT_MESSAGE_TOO_LONG, -EIO, "STATUS_PORT_MESSAGE_TOO_LONG"}, 329 - {STATUS_INVALID_PARAMETER_MIX, -EINVAL, "STATUS_INVALID_PARAMETER_MIX"}, 330 - {STATUS_INVALID_QUOTA_LOWER, -EIO, "STATUS_INVALID_QUOTA_LOWER"}, 331 - {STATUS_DISK_CORRUPT_ERROR, -EIO, "STATUS_DISK_CORRUPT_ERROR"}, 332 - {STATUS_OBJECT_NAME_INVALID, -ENOENT, "STATUS_OBJECT_NAME_INVALID"}, 333 - {STATUS_OBJECT_NAME_NOT_FOUND, -ENOENT, "STATUS_OBJECT_NAME_NOT_FOUND"}, 334 - {STATUS_OBJECT_NAME_COLLISION, -EEXIST, "STATUS_OBJECT_NAME_COLLISION"}, 335 - {STATUS_PORT_DISCONNECTED, -EIO, "STATUS_PORT_DISCONNECTED"}, 336 - {STATUS_DEVICE_ALREADY_ATTACHED, -EIO, 337 - "STATUS_DEVICE_ALREADY_ATTACHED"}, 338 - {STATUS_OBJECT_PATH_INVALID, -ENOTDIR, "STATUS_OBJECT_PATH_INVALID"}, 339 - {STATUS_OBJECT_PATH_NOT_FOUND, -ENOENT, "STATUS_OBJECT_PATH_NOT_FOUND"}, 340 - {STATUS_OBJECT_PATH_SYNTAX_BAD, -EIO, "STATUS_OBJECT_PATH_SYNTAX_BAD"}, 341 - {STATUS_DATA_OVERRUN, -EIO, "STATUS_DATA_OVERRUN"}, 342 - {STATUS_DATA_LATE_ERROR, -EIO, "STATUS_DATA_LATE_ERROR"}, 343 - {STATUS_DATA_ERROR, -EIO, "STATUS_DATA_ERROR"}, 344 - {STATUS_CRC_ERROR, -EIO, "STATUS_CRC_ERROR"}, 345 - {STATUS_SECTION_TOO_BIG, -EIO, "STATUS_SECTION_TOO_BIG"}, 346 - {STATUS_PORT_CONNECTION_REFUSED, -ECONNREFUSED, 347 - "STATUS_PORT_CONNECTION_REFUSED"}, 348 - {STATUS_INVALID_PORT_HANDLE, -EIO, "STATUS_INVALID_PORT_HANDLE"}, 349 - {STATUS_SHARING_VIOLATION, -EBUSY, "STATUS_SHARING_VIOLATION"}, 350 - {STATUS_QUOTA_EXCEEDED, -EDQUOT, "STATUS_QUOTA_EXCEEDED"}, 351 - {STATUS_INVALID_PAGE_PROTECTION, -EIO, 352 - "STATUS_INVALID_PAGE_PROTECTION"}, 353 - {STATUS_MUTANT_NOT_OWNED, -EIO, "STATUS_MUTANT_NOT_OWNED"}, 354 - {STATUS_SEMAPHORE_LIMIT_EXCEEDED, -EIO, 355 - "STATUS_SEMAPHORE_LIMIT_EXCEEDED"}, 356 - {STATUS_PORT_ALREADY_SET, -EIO, "STATUS_PORT_ALREADY_SET"}, 357 - {STATUS_SECTION_NOT_IMAGE, -EIO, "STATUS_SECTION_NOT_IMAGE"}, 358 - {STATUS_SUSPEND_COUNT_EXCEEDED, -EIO, "STATUS_SUSPEND_COUNT_EXCEEDED"}, 359 - {STATUS_THREAD_IS_TERMINATING, -EIO, "STATUS_THREAD_IS_TERMINATING"}, 360 - {STATUS_BAD_WORKING_SET_LIMIT, -EIO, "STATUS_BAD_WORKING_SET_LIMIT"}, 361 - {STATUS_INCOMPATIBLE_FILE_MAP, -EIO, "STATUS_INCOMPATIBLE_FILE_MAP"}, 362 - {STATUS_SECTION_PROTECTION, -EIO, "STATUS_SECTION_PROTECTION"}, 363 - {STATUS_EAS_NOT_SUPPORTED, -EOPNOTSUPP, "STATUS_EAS_NOT_SUPPORTED"}, 364 - {STATUS_EA_TOO_LARGE, -EIO, "STATUS_EA_TOO_LARGE"}, 365 - {STATUS_NONEXISTENT_EA_ENTRY, -EIO, "STATUS_NONEXISTENT_EA_ENTRY"}, 366 - {STATUS_NO_EAS_ON_FILE, -ENODATA, "STATUS_NO_EAS_ON_FILE"}, 367 - {STATUS_EA_CORRUPT_ERROR, -EIO, "STATUS_EA_CORRUPT_ERROR"}, 368 - {STATUS_FILE_LOCK_CONFLICT, -EACCES, "STATUS_FILE_LOCK_CONFLICT"}, 369 - {STATUS_LOCK_NOT_GRANTED, -EACCES, "STATUS_LOCK_NOT_GRANTED"}, 370 - {STATUS_DELETE_PENDING, -ENOENT, "STATUS_DELETE_PENDING"}, 371 - {STATUS_CTL_FILE_NOT_SUPPORTED, -ENOSYS, 372 - "STATUS_CTL_FILE_NOT_SUPPORTED"}, 373 - {STATUS_UNKNOWN_REVISION, -EIO, "STATUS_UNKNOWN_REVISION"}, 374 - {STATUS_REVISION_MISMATCH, -EIO, "STATUS_REVISION_MISMATCH"}, 375 - {STATUS_INVALID_OWNER, -EIO, "STATUS_INVALID_OWNER"}, 376 - {STATUS_INVALID_PRIMARY_GROUP, -EIO, "STATUS_INVALID_PRIMARY_GROUP"}, 377 - {STATUS_NO_IMPERSONATION_TOKEN, -EIO, "STATUS_NO_IMPERSONATION_TOKEN"}, 378 - {STATUS_CANT_DISABLE_MANDATORY, -EIO, "STATUS_CANT_DISABLE_MANDATORY"}, 379 - {STATUS_NO_LOGON_SERVERS, -EIO, "STATUS_NO_LOGON_SERVERS"}, 380 - {STATUS_NO_SUCH_LOGON_SESSION, -EIO, "STATUS_NO_SUCH_LOGON_SESSION"}, 381 - {STATUS_NO_SUCH_PRIVILEGE, -EIO, "STATUS_NO_SUCH_PRIVILEGE"}, 382 - {STATUS_PRIVILEGE_NOT_HELD, -EPERM, "STATUS_PRIVILEGE_NOT_HELD"}, 383 - {STATUS_INVALID_ACCOUNT_NAME, -EIO, "STATUS_INVALID_ACCOUNT_NAME"}, 384 - {STATUS_USER_EXISTS, -EIO, "STATUS_USER_EXISTS"}, 385 - {STATUS_NO_SUCH_USER, -EIO, "STATUS_NO_SUCH_USER"}, 386 - {STATUS_GROUP_EXISTS, -EIO, "STATUS_GROUP_EXISTS"}, 387 - {STATUS_NO_SUCH_GROUP, -EIO, "STATUS_NO_SUCH_GROUP"}, 388 - {STATUS_MEMBER_IN_GROUP, -EIO, "STATUS_MEMBER_IN_GROUP"}, 389 - {STATUS_MEMBER_NOT_IN_GROUP, -EIO, "STATUS_MEMBER_NOT_IN_GROUP"}, 390 - {STATUS_LAST_ADMIN, -EIO, "STATUS_LAST_ADMIN"}, 391 - {STATUS_WRONG_PASSWORD, -EACCES, "STATUS_WRONG_PASSWORD"}, 392 - {STATUS_ILL_FORMED_PASSWORD, -EINVAL, "STATUS_ILL_FORMED_PASSWORD"}, 393 - {STATUS_PASSWORD_RESTRICTION, -EACCES, "STATUS_PASSWORD_RESTRICTION"}, 394 - {STATUS_LOGON_FAILURE, -EACCES, "STATUS_LOGON_FAILURE"}, 395 - {STATUS_ACCOUNT_RESTRICTION, -EACCES, "STATUS_ACCOUNT_RESTRICTION"}, 396 - {STATUS_INVALID_LOGON_HOURS, -EACCES, "STATUS_INVALID_LOGON_HOURS"}, 397 - {STATUS_INVALID_WORKSTATION, -EACCES, "STATUS_INVALID_WORKSTATION"}, 398 - {STATUS_PASSWORD_EXPIRED, -EKEYEXPIRED, "STATUS_PASSWORD_EXPIRED"}, 399 - {STATUS_ACCOUNT_DISABLED, -EKEYREVOKED, "STATUS_ACCOUNT_DISABLED"}, 400 - {STATUS_NONE_MAPPED, -EIO, "STATUS_NONE_MAPPED"}, 401 - {STATUS_TOO_MANY_LUIDS_REQUESTED, -EIO, 402 - "STATUS_TOO_MANY_LUIDS_REQUESTED"}, 403 - {STATUS_LUIDS_EXHAUSTED, -EIO, "STATUS_LUIDS_EXHAUSTED"}, 404 - {STATUS_INVALID_SUB_AUTHORITY, -EIO, "STATUS_INVALID_SUB_AUTHORITY"}, 405 - {STATUS_INVALID_ACL, -EIO, "STATUS_INVALID_ACL"}, 406 - {STATUS_INVALID_SID, -EIO, "STATUS_INVALID_SID"}, 407 - {STATUS_INVALID_SECURITY_DESCR, -EIO, "STATUS_INVALID_SECURITY_DESCR"}, 408 - {STATUS_PROCEDURE_NOT_FOUND, -EIO, "STATUS_PROCEDURE_NOT_FOUND"}, 409 - {STATUS_INVALID_IMAGE_FORMAT, -EIO, "STATUS_INVALID_IMAGE_FORMAT"}, 410 - {STATUS_NO_TOKEN, -EIO, "STATUS_NO_TOKEN"}, 411 - {STATUS_BAD_INHERITANCE_ACL, -EIO, "STATUS_BAD_INHERITANCE_ACL"}, 412 - {STATUS_RANGE_NOT_LOCKED, -EIO, "STATUS_RANGE_NOT_LOCKED"}, 413 - {STATUS_DISK_FULL, -ENOSPC, "STATUS_DISK_FULL"}, 414 - {STATUS_SERVER_DISABLED, -EIO, "STATUS_SERVER_DISABLED"}, 415 - {STATUS_SERVER_NOT_DISABLED, -EIO, "STATUS_SERVER_NOT_DISABLED"}, 416 - {STATUS_TOO_MANY_GUIDS_REQUESTED, -EIO, 417 - "STATUS_TOO_MANY_GUIDS_REQUESTED"}, 418 - {STATUS_GUIDS_EXHAUSTED, -EIO, "STATUS_GUIDS_EXHAUSTED"}, 419 - {STATUS_INVALID_ID_AUTHORITY, -EIO, "STATUS_INVALID_ID_AUTHORITY"}, 420 - {STATUS_AGENTS_EXHAUSTED, -EIO, "STATUS_AGENTS_EXHAUSTED"}, 421 - {STATUS_INVALID_VOLUME_LABEL, -EIO, "STATUS_INVALID_VOLUME_LABEL"}, 422 - {STATUS_SECTION_NOT_EXTENDED, -EIO, "STATUS_SECTION_NOT_EXTENDED"}, 423 - {STATUS_NOT_MAPPED_DATA, -EIO, "STATUS_NOT_MAPPED_DATA"}, 424 - {STATUS_RESOURCE_DATA_NOT_FOUND, -EIO, 425 - "STATUS_RESOURCE_DATA_NOT_FOUND"}, 426 - {STATUS_RESOURCE_TYPE_NOT_FOUND, -EIO, 427 - "STATUS_RESOURCE_TYPE_NOT_FOUND"}, 428 - {STATUS_RESOURCE_NAME_NOT_FOUND, -EIO, 429 - "STATUS_RESOURCE_NAME_NOT_FOUND"}, 430 - {STATUS_ARRAY_BOUNDS_EXCEEDED, -EIO, "STATUS_ARRAY_BOUNDS_EXCEEDED"}, 431 - {STATUS_FLOAT_DENORMAL_OPERAND, -EIO, "STATUS_FLOAT_DENORMAL_OPERAND"}, 432 - {STATUS_FLOAT_DIVIDE_BY_ZERO, -EIO, "STATUS_FLOAT_DIVIDE_BY_ZERO"}, 433 - {STATUS_FLOAT_INEXACT_RESULT, -EIO, "STATUS_FLOAT_INEXACT_RESULT"}, 434 - {STATUS_FLOAT_INVALID_OPERATION, -EIO, 435 - "STATUS_FLOAT_INVALID_OPERATION"}, 436 - {STATUS_FLOAT_OVERFLOW, -EIO, "STATUS_FLOAT_OVERFLOW"}, 437 - {STATUS_FLOAT_STACK_CHECK, -EIO, "STATUS_FLOAT_STACK_CHECK"}, 438 - {STATUS_FLOAT_UNDERFLOW, -EIO, "STATUS_FLOAT_UNDERFLOW"}, 439 - {STATUS_INTEGER_DIVIDE_BY_ZERO, -EIO, "STATUS_INTEGER_DIVIDE_BY_ZERO"}, 440 - {STATUS_INTEGER_OVERFLOW, -EIO, "STATUS_INTEGER_OVERFLOW"}, 441 - {STATUS_PRIVILEGED_INSTRUCTION, -EIO, "STATUS_PRIVILEGED_INSTRUCTION"}, 442 - {STATUS_TOO_MANY_PAGING_FILES, -EIO, "STATUS_TOO_MANY_PAGING_FILES"}, 443 - {STATUS_FILE_INVALID, -EIO, "STATUS_FILE_INVALID"}, 444 - {STATUS_ALLOTTED_SPACE_EXCEEDED, -EIO, 445 - "STATUS_ALLOTTED_SPACE_EXCEEDED"}, 446 - {STATUS_INSUFFICIENT_RESOURCES, -EAGAIN, 447 - "STATUS_INSUFFICIENT_RESOURCES"}, 448 - {STATUS_DFS_EXIT_PATH_FOUND, -EIO, "STATUS_DFS_EXIT_PATH_FOUND"}, 449 - {STATUS_DEVICE_DATA_ERROR, -EIO, "STATUS_DEVICE_DATA_ERROR"}, 450 - {STATUS_DEVICE_NOT_CONNECTED, -EIO, "STATUS_DEVICE_NOT_CONNECTED"}, 451 - {STATUS_DEVICE_POWER_FAILURE, -EIO, "STATUS_DEVICE_POWER_FAILURE"}, 452 - {STATUS_FREE_VM_NOT_AT_BASE, -EIO, "STATUS_FREE_VM_NOT_AT_BASE"}, 453 - {STATUS_MEMORY_NOT_ALLOCATED, -EFAULT, "STATUS_MEMORY_NOT_ALLOCATED"}, 454 - {STATUS_WORKING_SET_QUOTA, -EIO, "STATUS_WORKING_SET_QUOTA"}, 455 - {STATUS_MEDIA_WRITE_PROTECTED, -EROFS, "STATUS_MEDIA_WRITE_PROTECTED"}, 456 - {STATUS_DEVICE_NOT_READY, -EIO, "STATUS_DEVICE_NOT_READY"}, 457 - {STATUS_INVALID_GROUP_ATTRIBUTES, -EIO, 458 - "STATUS_INVALID_GROUP_ATTRIBUTES"}, 459 - {STATUS_BAD_IMPERSONATION_LEVEL, -EIO, 460 - "STATUS_BAD_IMPERSONATION_LEVEL"}, 461 - {STATUS_CANT_OPEN_ANONYMOUS, -EIO, "STATUS_CANT_OPEN_ANONYMOUS"}, 462 - {STATUS_BAD_VALIDATION_CLASS, -EIO, "STATUS_BAD_VALIDATION_CLASS"}, 463 - {STATUS_BAD_TOKEN_TYPE, -EIO, "STATUS_BAD_TOKEN_TYPE"}, 464 - {STATUS_BAD_MASTER_BOOT_RECORD, -EIO, "STATUS_BAD_MASTER_BOOT_RECORD"}, 465 - {STATUS_INSTRUCTION_MISALIGNMENT, -EIO, 466 - "STATUS_INSTRUCTION_MISALIGNMENT"}, 467 - {STATUS_INSTANCE_NOT_AVAILABLE, -EIO, "STATUS_INSTANCE_NOT_AVAILABLE"}, 468 - {STATUS_PIPE_NOT_AVAILABLE, -EIO, "STATUS_PIPE_NOT_AVAILABLE"}, 469 - {STATUS_INVALID_PIPE_STATE, -EIO, "STATUS_INVALID_PIPE_STATE"}, 470 - {STATUS_PIPE_BUSY, -EBUSY, "STATUS_PIPE_BUSY"}, 471 - {STATUS_ILLEGAL_FUNCTION, -EIO, "STATUS_ILLEGAL_FUNCTION"}, 472 - {STATUS_PIPE_DISCONNECTED, -EPIPE, "STATUS_PIPE_DISCONNECTED"}, 473 - {STATUS_PIPE_CLOSING, -EIO, "STATUS_PIPE_CLOSING"}, 474 - {STATUS_PIPE_CONNECTED, -EIO, "STATUS_PIPE_CONNECTED"}, 475 - {STATUS_PIPE_LISTENING, -EIO, "STATUS_PIPE_LISTENING"}, 476 - {STATUS_INVALID_READ_MODE, -EIO, "STATUS_INVALID_READ_MODE"}, 477 - {STATUS_IO_TIMEOUT, -EAGAIN, "STATUS_IO_TIMEOUT"}, 478 - {STATUS_FILE_FORCED_CLOSED, -EIO, "STATUS_FILE_FORCED_CLOSED"}, 479 - {STATUS_PROFILING_NOT_STARTED, -EIO, "STATUS_PROFILING_NOT_STARTED"}, 480 - {STATUS_PROFILING_NOT_STOPPED, -EIO, "STATUS_PROFILING_NOT_STOPPED"}, 481 - {STATUS_COULD_NOT_INTERPRET, -EIO, "STATUS_COULD_NOT_INTERPRET"}, 482 - {STATUS_FILE_IS_A_DIRECTORY, -EISDIR, "STATUS_FILE_IS_A_DIRECTORY"}, 483 - {STATUS_NOT_SUPPORTED, -EOPNOTSUPP, "STATUS_NOT_SUPPORTED"}, 484 - {STATUS_REMOTE_NOT_LISTENING, -EHOSTDOWN, 485 - "STATUS_REMOTE_NOT_LISTENING"}, 486 - {STATUS_DUPLICATE_NAME, -ENOTUNIQ, "STATUS_DUPLICATE_NAME"}, 487 - {STATUS_BAD_NETWORK_PATH, -EINVAL, "STATUS_BAD_NETWORK_PATH"}, 488 - {STATUS_NETWORK_BUSY, -EBUSY, "STATUS_NETWORK_BUSY"}, 489 - {STATUS_DEVICE_DOES_NOT_EXIST, -ENODEV, "STATUS_DEVICE_DOES_NOT_EXIST"}, 490 - {STATUS_TOO_MANY_COMMANDS, -EIO, "STATUS_TOO_MANY_COMMANDS"}, 491 - {STATUS_ADAPTER_HARDWARE_ERROR, -EIO, "STATUS_ADAPTER_HARDWARE_ERROR"}, 492 - {STATUS_INVALID_NETWORK_RESPONSE, -EIO, 493 - "STATUS_INVALID_NETWORK_RESPONSE"}, 494 - {STATUS_UNEXPECTED_NETWORK_ERROR, -EIO, 495 - "STATUS_UNEXPECTED_NETWORK_ERROR"}, 496 - {STATUS_BAD_REMOTE_ADAPTER, -EIO, "STATUS_BAD_REMOTE_ADAPTER"}, 497 - {STATUS_PRINT_QUEUE_FULL, -EIO, "STATUS_PRINT_QUEUE_FULL"}, 498 - {STATUS_NO_SPOOL_SPACE, -EIO, "STATUS_NO_SPOOL_SPACE"}, 499 - {STATUS_PRINT_CANCELLED, -EIO, "STATUS_PRINT_CANCELLED"}, 500 - {STATUS_NETWORK_NAME_DELETED, -EREMCHG, "STATUS_NETWORK_NAME_DELETED"}, 501 - {STATUS_NETWORK_ACCESS_DENIED, -EACCES, "STATUS_NETWORK_ACCESS_DENIED"}, 502 - {STATUS_BAD_DEVICE_TYPE, -EIO, "STATUS_BAD_DEVICE_TYPE"}, 503 - {STATUS_BAD_NETWORK_NAME, -ENOENT, "STATUS_BAD_NETWORK_NAME"}, 504 - {STATUS_TOO_MANY_NAMES, -EIO, "STATUS_TOO_MANY_NAMES"}, 505 - {STATUS_TOO_MANY_SESSIONS, -EIO, "STATUS_TOO_MANY_SESSIONS"}, 506 - {STATUS_SHARING_PAUSED, -EIO, "STATUS_SHARING_PAUSED"}, 507 - {STATUS_REQUEST_NOT_ACCEPTED, -EIO, "STATUS_REQUEST_NOT_ACCEPTED"}, 508 - {STATUS_REDIRECTOR_PAUSED, -EIO, "STATUS_REDIRECTOR_PAUSED"}, 509 - {STATUS_NET_WRITE_FAULT, -EIO, "STATUS_NET_WRITE_FAULT"}, 510 - {STATUS_PROFILING_AT_LIMIT, -EIO, "STATUS_PROFILING_AT_LIMIT"}, 511 - {STATUS_NOT_SAME_DEVICE, -EXDEV, "STATUS_NOT_SAME_DEVICE"}, 512 - {STATUS_FILE_RENAMED, -EIO, "STATUS_FILE_RENAMED"}, 513 - {STATUS_VIRTUAL_CIRCUIT_CLOSED, -EIO, "STATUS_VIRTUAL_CIRCUIT_CLOSED"}, 514 - {STATUS_NO_SECURITY_ON_OBJECT, -EIO, "STATUS_NO_SECURITY_ON_OBJECT"}, 515 - {STATUS_CANT_WAIT, -EIO, "STATUS_CANT_WAIT"}, 516 - {STATUS_PIPE_EMPTY, -EIO, "STATUS_PIPE_EMPTY"}, 517 - {STATUS_CANT_ACCESS_DOMAIN_INFO, -EIO, 518 - "STATUS_CANT_ACCESS_DOMAIN_INFO"}, 519 - {STATUS_CANT_TERMINATE_SELF, -EIO, "STATUS_CANT_TERMINATE_SELF"}, 520 - {STATUS_INVALID_SERVER_STATE, -EIO, "STATUS_INVALID_SERVER_STATE"}, 521 - {STATUS_INVALID_DOMAIN_STATE, -EIO, "STATUS_INVALID_DOMAIN_STATE"}, 522 - {STATUS_INVALID_DOMAIN_ROLE, -EIO, "STATUS_INVALID_DOMAIN_ROLE"}, 523 - {STATUS_NO_SUCH_DOMAIN, -EIO, "STATUS_NO_SUCH_DOMAIN"}, 524 - {STATUS_DOMAIN_EXISTS, -EIO, "STATUS_DOMAIN_EXISTS"}, 525 - {STATUS_DOMAIN_LIMIT_EXCEEDED, -EIO, "STATUS_DOMAIN_LIMIT_EXCEEDED"}, 526 - {STATUS_OPLOCK_NOT_GRANTED, -EIO, "STATUS_OPLOCK_NOT_GRANTED"}, 527 - {STATUS_INVALID_OPLOCK_PROTOCOL, -EIO, 528 - "STATUS_INVALID_OPLOCK_PROTOCOL"}, 529 - {STATUS_INTERNAL_DB_CORRUPTION, -EIO, "STATUS_INTERNAL_DB_CORRUPTION"}, 530 - {STATUS_INTERNAL_ERROR, -EIO, "STATUS_INTERNAL_ERROR"}, 531 - {STATUS_GENERIC_NOT_MAPPED, -EIO, "STATUS_GENERIC_NOT_MAPPED"}, 532 - {STATUS_BAD_DESCRIPTOR_FORMAT, -EIO, "STATUS_BAD_DESCRIPTOR_FORMAT"}, 533 - {STATUS_INVALID_USER_BUFFER, -EIO, "STATUS_INVALID_USER_BUFFER"}, 534 - {STATUS_UNEXPECTED_IO_ERROR, -EIO, "STATUS_UNEXPECTED_IO_ERROR"}, 535 - {STATUS_UNEXPECTED_MM_CREATE_ERR, -EIO, 536 - "STATUS_UNEXPECTED_MM_CREATE_ERR"}, 537 - {STATUS_UNEXPECTED_MM_MAP_ERROR, -EIO, 538 - "STATUS_UNEXPECTED_MM_MAP_ERROR"}, 539 - {STATUS_UNEXPECTED_MM_EXTEND_ERR, -EIO, 540 - "STATUS_UNEXPECTED_MM_EXTEND_ERR"}, 541 - {STATUS_NOT_LOGON_PROCESS, -EIO, "STATUS_NOT_LOGON_PROCESS"}, 542 - {STATUS_LOGON_SESSION_EXISTS, -EIO, "STATUS_LOGON_SESSION_EXISTS"}, 543 - {STATUS_INVALID_PARAMETER_1, -EINVAL, "STATUS_INVALID_PARAMETER_1"}, 544 - {STATUS_INVALID_PARAMETER_2, -EINVAL, "STATUS_INVALID_PARAMETER_2"}, 545 - {STATUS_INVALID_PARAMETER_3, -EINVAL, "STATUS_INVALID_PARAMETER_3"}, 546 - {STATUS_INVALID_PARAMETER_4, -EINVAL, "STATUS_INVALID_PARAMETER_4"}, 547 - {STATUS_INVALID_PARAMETER_5, -EINVAL, "STATUS_INVALID_PARAMETER_5"}, 548 - {STATUS_INVALID_PARAMETER_6, -EINVAL, "STATUS_INVALID_PARAMETER_6"}, 549 - {STATUS_INVALID_PARAMETER_7, -EINVAL, "STATUS_INVALID_PARAMETER_7"}, 550 - {STATUS_INVALID_PARAMETER_8, -EINVAL, "STATUS_INVALID_PARAMETER_8"}, 551 - {STATUS_INVALID_PARAMETER_9, -EINVAL, "STATUS_INVALID_PARAMETER_9"}, 552 - {STATUS_INVALID_PARAMETER_10, -EINVAL, "STATUS_INVALID_PARAMETER_10"}, 553 - {STATUS_INVALID_PARAMETER_11, -EINVAL, "STATUS_INVALID_PARAMETER_11"}, 554 - {STATUS_INVALID_PARAMETER_12, -EINVAL, "STATUS_INVALID_PARAMETER_12"}, 555 - {STATUS_REDIRECTOR_NOT_STARTED, -EIO, "STATUS_REDIRECTOR_NOT_STARTED"}, 556 - {STATUS_REDIRECTOR_STARTED, -EIO, "STATUS_REDIRECTOR_STARTED"}, 557 - {STATUS_STACK_OVERFLOW, -EIO, "STATUS_STACK_OVERFLOW"}, 558 - {STATUS_NO_SUCH_PACKAGE, -EIO, "STATUS_NO_SUCH_PACKAGE"}, 559 - {STATUS_BAD_FUNCTION_TABLE, -EIO, "STATUS_BAD_FUNCTION_TABLE"}, 560 - {STATUS_VARIABLE_NOT_FOUND, -EIO, "STATUS_VARIABLE_NOT_FOUND"}, 561 - {STATUS_DIRECTORY_NOT_EMPTY, -ENOTEMPTY, "STATUS_DIRECTORY_NOT_EMPTY"}, 562 - {STATUS_FILE_CORRUPT_ERROR, -EIO, "STATUS_FILE_CORRUPT_ERROR"}, 563 - {STATUS_NOT_A_DIRECTORY, -ENOTDIR, "STATUS_NOT_A_DIRECTORY"}, 564 - {STATUS_BAD_LOGON_SESSION_STATE, -EIO, 565 - "STATUS_BAD_LOGON_SESSION_STATE"}, 566 - {STATUS_LOGON_SESSION_COLLISION, -EIO, 567 - "STATUS_LOGON_SESSION_COLLISION"}, 568 - {STATUS_NAME_TOO_LONG, -ENAMETOOLONG, "STATUS_NAME_TOO_LONG"}, 569 - {STATUS_FILES_OPEN, -EIO, "STATUS_FILES_OPEN"}, 570 - {STATUS_CONNECTION_IN_USE, -EIO, "STATUS_CONNECTION_IN_USE"}, 571 - {STATUS_MESSAGE_NOT_FOUND, -EIO, "STATUS_MESSAGE_NOT_FOUND"}, 572 - {STATUS_PROCESS_IS_TERMINATING, -EIO, "STATUS_PROCESS_IS_TERMINATING"}, 573 - {STATUS_INVALID_LOGON_TYPE, -EIO, "STATUS_INVALID_LOGON_TYPE"}, 574 - {STATUS_NO_GUID_TRANSLATION, -EIO, "STATUS_NO_GUID_TRANSLATION"}, 575 - {STATUS_CANNOT_IMPERSONATE, -EIO, "STATUS_CANNOT_IMPERSONATE"}, 576 - {STATUS_IMAGE_ALREADY_LOADED, -EIO, "STATUS_IMAGE_ALREADY_LOADED"}, 577 - {STATUS_ABIOS_NOT_PRESENT, -EIO, "STATUS_ABIOS_NOT_PRESENT"}, 578 - {STATUS_ABIOS_LID_NOT_EXIST, -EIO, "STATUS_ABIOS_LID_NOT_EXIST"}, 579 - {STATUS_ABIOS_LID_ALREADY_OWNED, -EIO, 580 - "STATUS_ABIOS_LID_ALREADY_OWNED"}, 581 - {STATUS_ABIOS_NOT_LID_OWNER, -EIO, "STATUS_ABIOS_NOT_LID_OWNER"}, 582 - {STATUS_ABIOS_INVALID_COMMAND, -EIO, "STATUS_ABIOS_INVALID_COMMAND"}, 583 - {STATUS_ABIOS_INVALID_LID, -EIO, "STATUS_ABIOS_INVALID_LID"}, 584 - {STATUS_ABIOS_SELECTOR_NOT_AVAILABLE, -EIO, 585 - "STATUS_ABIOS_SELECTOR_NOT_AVAILABLE"}, 586 - {STATUS_ABIOS_INVALID_SELECTOR, -EIO, "STATUS_ABIOS_INVALID_SELECTOR"}, 587 - {STATUS_NO_LDT, -EIO, "STATUS_NO_LDT"}, 588 - {STATUS_INVALID_LDT_SIZE, -EIO, "STATUS_INVALID_LDT_SIZE"}, 589 - {STATUS_INVALID_LDT_OFFSET, -EIO, "STATUS_INVALID_LDT_OFFSET"}, 590 - {STATUS_INVALID_LDT_DESCRIPTOR, -EIO, "STATUS_INVALID_LDT_DESCRIPTOR"}, 591 - {STATUS_INVALID_IMAGE_NE_FORMAT, -EIO, 592 - "STATUS_INVALID_IMAGE_NE_FORMAT"}, 593 - {STATUS_RXACT_INVALID_STATE, -EIO, "STATUS_RXACT_INVALID_STATE"}, 594 - {STATUS_RXACT_COMMIT_FAILURE, -EIO, "STATUS_RXACT_COMMIT_FAILURE"}, 595 - {STATUS_MAPPED_FILE_SIZE_ZERO, -EIO, "STATUS_MAPPED_FILE_SIZE_ZERO"}, 596 - {STATUS_TOO_MANY_OPENED_FILES, -EMFILE, "STATUS_TOO_MANY_OPENED_FILES"}, 597 - {STATUS_CANCELLED, -EIO, "STATUS_CANCELLED"}, 598 - {STATUS_CANNOT_DELETE, -EACCES, "STATUS_CANNOT_DELETE"}, 599 - {STATUS_INVALID_COMPUTER_NAME, -EIO, "STATUS_INVALID_COMPUTER_NAME"}, 600 - {STATUS_FILE_DELETED, -EIO, "STATUS_FILE_DELETED"}, 601 - {STATUS_SPECIAL_ACCOUNT, -EIO, "STATUS_SPECIAL_ACCOUNT"}, 602 - {STATUS_SPECIAL_GROUP, -EIO, "STATUS_SPECIAL_GROUP"}, 603 - {STATUS_SPECIAL_USER, -EIO, "STATUS_SPECIAL_USER"}, 604 - {STATUS_MEMBERS_PRIMARY_GROUP, -EIO, "STATUS_MEMBERS_PRIMARY_GROUP"}, 605 - {STATUS_FILE_CLOSED, -EBADF, "STATUS_FILE_CLOSED"}, 606 - {STATUS_TOO_MANY_THREADS, -EIO, "STATUS_TOO_MANY_THREADS"}, 607 - {STATUS_THREAD_NOT_IN_PROCESS, -EIO, "STATUS_THREAD_NOT_IN_PROCESS"}, 608 - {STATUS_TOKEN_ALREADY_IN_USE, -EIO, "STATUS_TOKEN_ALREADY_IN_USE"}, 609 - {STATUS_PAGEFILE_QUOTA_EXCEEDED, -EDQUOT, 610 - "STATUS_PAGEFILE_QUOTA_EXCEEDED"}, 611 - {STATUS_COMMITMENT_LIMIT, -EIO, "STATUS_COMMITMENT_LIMIT"}, 612 - {STATUS_INVALID_IMAGE_LE_FORMAT, -EIO, 613 - "STATUS_INVALID_IMAGE_LE_FORMAT"}, 614 - {STATUS_INVALID_IMAGE_NOT_MZ, -EIO, "STATUS_INVALID_IMAGE_NOT_MZ"}, 615 - {STATUS_INVALID_IMAGE_PROTECT, -EIO, "STATUS_INVALID_IMAGE_PROTECT"}, 616 - {STATUS_INVALID_IMAGE_WIN_16, -EIO, "STATUS_INVALID_IMAGE_WIN_16"}, 617 - {STATUS_LOGON_SERVER_CONFLICT, -EIO, "STATUS_LOGON_SERVER_CONFLICT"}, 618 - {STATUS_TIME_DIFFERENCE_AT_DC, -EIO, "STATUS_TIME_DIFFERENCE_AT_DC"}, 619 - {STATUS_SYNCHRONIZATION_REQUIRED, -EIO, 620 - "STATUS_SYNCHRONIZATION_REQUIRED"}, 621 - {STATUS_DLL_NOT_FOUND, -ENOENT, "STATUS_DLL_NOT_FOUND"}, 622 - {STATUS_OPEN_FAILED, -EIO, "STATUS_OPEN_FAILED"}, 623 - {STATUS_IO_PRIVILEGE_FAILED, -EIO, "STATUS_IO_PRIVILEGE_FAILED"}, 624 - {STATUS_ORDINAL_NOT_FOUND, -EIO, "STATUS_ORDINAL_NOT_FOUND"}, 625 - {STATUS_ENTRYPOINT_NOT_FOUND, -EIO, "STATUS_ENTRYPOINT_NOT_FOUND"}, 626 - {STATUS_CONTROL_C_EXIT, -EIO, "STATUS_CONTROL_C_EXIT"}, 627 - {STATUS_LOCAL_DISCONNECT, -EIO, "STATUS_LOCAL_DISCONNECT"}, 628 - {STATUS_REMOTE_DISCONNECT, -ESHUTDOWN, "STATUS_REMOTE_DISCONNECT"}, 629 - {STATUS_REMOTE_RESOURCES, -EIO, "STATUS_REMOTE_RESOURCES"}, 630 - {STATUS_LINK_FAILED, -EXDEV, "STATUS_LINK_FAILED"}, 631 - {STATUS_LINK_TIMEOUT, -ETIMEDOUT, "STATUS_LINK_TIMEOUT"}, 632 - {STATUS_INVALID_CONNECTION, -EIO, "STATUS_INVALID_CONNECTION"}, 633 - {STATUS_INVALID_ADDRESS, -EIO, "STATUS_INVALID_ADDRESS"}, 634 - {STATUS_DLL_INIT_FAILED, -EIO, "STATUS_DLL_INIT_FAILED"}, 635 - {STATUS_MISSING_SYSTEMFILE, -EIO, "STATUS_MISSING_SYSTEMFILE"}, 636 - {STATUS_UNHANDLED_EXCEPTION, -EIO, "STATUS_UNHANDLED_EXCEPTION"}, 637 - {STATUS_APP_INIT_FAILURE, -EIO, "STATUS_APP_INIT_FAILURE"}, 638 - {STATUS_PAGEFILE_CREATE_FAILED, -EIO, "STATUS_PAGEFILE_CREATE_FAILED"}, 639 - {STATUS_NO_PAGEFILE, -EIO, "STATUS_NO_PAGEFILE"}, 640 - {STATUS_INVALID_LEVEL, -EIO, "STATUS_INVALID_LEVEL"}, 641 - {STATUS_WRONG_PASSWORD_CORE, -EIO, "STATUS_WRONG_PASSWORD_CORE"}, 642 - {STATUS_ILLEGAL_FLOAT_CONTEXT, -EIO, "STATUS_ILLEGAL_FLOAT_CONTEXT"}, 643 - {STATUS_PIPE_BROKEN, -EPIPE, "STATUS_PIPE_BROKEN"}, 644 - {STATUS_REGISTRY_CORRUPT, -EIO, "STATUS_REGISTRY_CORRUPT"}, 645 - {STATUS_REGISTRY_IO_FAILED, -EIO, "STATUS_REGISTRY_IO_FAILED"}, 646 - {STATUS_NO_EVENT_PAIR, -EIO, "STATUS_NO_EVENT_PAIR"}, 647 - {STATUS_UNRECOGNIZED_VOLUME, -EIO, "STATUS_UNRECOGNIZED_VOLUME"}, 648 - {STATUS_SERIAL_NO_DEVICE_INITED, -EIO, 649 - "STATUS_SERIAL_NO_DEVICE_INITED"}, 650 - {STATUS_NO_SUCH_ALIAS, -EIO, "STATUS_NO_SUCH_ALIAS"}, 651 - {STATUS_MEMBER_NOT_IN_ALIAS, -EIO, "STATUS_MEMBER_NOT_IN_ALIAS"}, 652 - {STATUS_MEMBER_IN_ALIAS, -EIO, "STATUS_MEMBER_IN_ALIAS"}, 653 - {STATUS_ALIAS_EXISTS, -EIO, "STATUS_ALIAS_EXISTS"}, 654 - {STATUS_LOGON_NOT_GRANTED, -EIO, "STATUS_LOGON_NOT_GRANTED"}, 655 - {STATUS_TOO_MANY_SECRETS, -EIO, "STATUS_TOO_MANY_SECRETS"}, 656 - {STATUS_SECRET_TOO_LONG, -EIO, "STATUS_SECRET_TOO_LONG"}, 657 - {STATUS_INTERNAL_DB_ERROR, -EIO, "STATUS_INTERNAL_DB_ERROR"}, 658 - {STATUS_FULLSCREEN_MODE, -EIO, "STATUS_FULLSCREEN_MODE"}, 659 - {STATUS_TOO_MANY_CONTEXT_IDS, -EIO, "STATUS_TOO_MANY_CONTEXT_IDS"}, 660 - {STATUS_LOGON_TYPE_NOT_GRANTED, -EIO, "STATUS_LOGON_TYPE_NOT_GRANTED"}, 661 - {STATUS_NOT_REGISTRY_FILE, -EIO, "STATUS_NOT_REGISTRY_FILE"}, 662 - {STATUS_NT_CROSS_ENCRYPTION_REQUIRED, -EIO, 663 - "STATUS_NT_CROSS_ENCRYPTION_REQUIRED"}, 664 - {STATUS_DOMAIN_CTRLR_CONFIG_ERROR, -EIO, 665 - "STATUS_DOMAIN_CTRLR_CONFIG_ERROR"}, 666 - {STATUS_FT_MISSING_MEMBER, -EIO, "STATUS_FT_MISSING_MEMBER"}, 667 - {STATUS_ILL_FORMED_SERVICE_ENTRY, -EIO, 668 - "STATUS_ILL_FORMED_SERVICE_ENTRY"}, 669 - {STATUS_ILLEGAL_CHARACTER, -EIO, "STATUS_ILLEGAL_CHARACTER"}, 670 - {STATUS_UNMAPPABLE_CHARACTER, -EIO, "STATUS_UNMAPPABLE_CHARACTER"}, 671 - {STATUS_UNDEFINED_CHARACTER, -EIO, "STATUS_UNDEFINED_CHARACTER"}, 672 - {STATUS_FLOPPY_VOLUME, -EIO, "STATUS_FLOPPY_VOLUME"}, 673 - {STATUS_FLOPPY_ID_MARK_NOT_FOUND, -EIO, 674 - "STATUS_FLOPPY_ID_MARK_NOT_FOUND"}, 675 - {STATUS_FLOPPY_WRONG_CYLINDER, -EIO, "STATUS_FLOPPY_WRONG_CYLINDER"}, 676 - {STATUS_FLOPPY_UNKNOWN_ERROR, -EIO, "STATUS_FLOPPY_UNKNOWN_ERROR"}, 677 - {STATUS_FLOPPY_BAD_REGISTERS, -EIO, "STATUS_FLOPPY_BAD_REGISTERS"}, 678 - {STATUS_DISK_RECALIBRATE_FAILED, -EIO, 679 - "STATUS_DISK_RECALIBRATE_FAILED"}, 680 - {STATUS_DISK_OPERATION_FAILED, -EIO, "STATUS_DISK_OPERATION_FAILED"}, 681 - {STATUS_DISK_RESET_FAILED, -EIO, "STATUS_DISK_RESET_FAILED"}, 682 - {STATUS_SHARED_IRQ_BUSY, -EBUSY, "STATUS_SHARED_IRQ_BUSY"}, 683 - {STATUS_FT_ORPHANING, -EIO, "STATUS_FT_ORPHANING"}, 684 - {STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT, -EIO, 685 - "STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT"}, 686 - {STATUS_PARTITION_FAILURE, -EIO, "STATUS_PARTITION_FAILURE"}, 687 - {STATUS_INVALID_BLOCK_LENGTH, -EIO, "STATUS_INVALID_BLOCK_LENGTH"}, 688 - {STATUS_DEVICE_NOT_PARTITIONED, -EIO, "STATUS_DEVICE_NOT_PARTITIONED"}, 689 - {STATUS_UNABLE_TO_LOCK_MEDIA, -EIO, "STATUS_UNABLE_TO_LOCK_MEDIA"}, 690 - {STATUS_UNABLE_TO_UNLOAD_MEDIA, -EIO, "STATUS_UNABLE_TO_UNLOAD_MEDIA"}, 691 - {STATUS_EOM_OVERFLOW, -EIO, "STATUS_EOM_OVERFLOW"}, 692 - {STATUS_NO_MEDIA, -EIO, "STATUS_NO_MEDIA"}, 693 - {STATUS_NO_SUCH_MEMBER, -EIO, "STATUS_NO_SUCH_MEMBER"}, 694 - {STATUS_INVALID_MEMBER, -EIO, "STATUS_INVALID_MEMBER"}, 695 - {STATUS_KEY_DELETED, -EIO, "STATUS_KEY_DELETED"}, 696 - {STATUS_NO_LOG_SPACE, -EIO, "STATUS_NO_LOG_SPACE"}, 697 - {STATUS_TOO_MANY_SIDS, -EIO, "STATUS_TOO_MANY_SIDS"}, 698 - {STATUS_LM_CROSS_ENCRYPTION_REQUIRED, -EIO, 699 - "STATUS_LM_CROSS_ENCRYPTION_REQUIRED"}, 700 - {STATUS_KEY_HAS_CHILDREN, -EIO, "STATUS_KEY_HAS_CHILDREN"}, 701 - {STATUS_CHILD_MUST_BE_VOLATILE, -EIO, "STATUS_CHILD_MUST_BE_VOLATILE"}, 702 - {STATUS_DEVICE_CONFIGURATION_ERROR, -EIO, 703 - "STATUS_DEVICE_CONFIGURATION_ERROR"}, 704 - {STATUS_DRIVER_INTERNAL_ERROR, -EIO, "STATUS_DRIVER_INTERNAL_ERROR"}, 705 - {STATUS_INVALID_DEVICE_STATE, -EIO, "STATUS_INVALID_DEVICE_STATE"}, 706 - {STATUS_IO_DEVICE_ERROR, -EIO, "STATUS_IO_DEVICE_ERROR"}, 707 - {STATUS_DEVICE_PROTOCOL_ERROR, -EIO, "STATUS_DEVICE_PROTOCOL_ERROR"}, 708 - {STATUS_BACKUP_CONTROLLER, -EIO, "STATUS_BACKUP_CONTROLLER"}, 709 - {STATUS_LOG_FILE_FULL, -EIO, "STATUS_LOG_FILE_FULL"}, 710 - {STATUS_TOO_LATE, -EIO, "STATUS_TOO_LATE"}, 711 - {STATUS_NO_TRUST_LSA_SECRET, -EIO, "STATUS_NO_TRUST_LSA_SECRET"}, 712 - {STATUS_NO_TRUST_SAM_ACCOUNT, -EIO, "STATUS_NO_TRUST_SAM_ACCOUNT"}, 713 - {STATUS_TRUSTED_DOMAIN_FAILURE, -EIO, "STATUS_TRUSTED_DOMAIN_FAILURE"}, 714 - {STATUS_TRUSTED_RELATIONSHIP_FAILURE, -EIO, 715 - "STATUS_TRUSTED_RELATIONSHIP_FAILURE"}, 716 - {STATUS_EVENTLOG_FILE_CORRUPT, -EIO, "STATUS_EVENTLOG_FILE_CORRUPT"}, 717 - {STATUS_EVENTLOG_CANT_START, -EIO, "STATUS_EVENTLOG_CANT_START"}, 718 - {STATUS_TRUST_FAILURE, -EIO, "STATUS_TRUST_FAILURE"}, 719 - {STATUS_MUTANT_LIMIT_EXCEEDED, -EIO, "STATUS_MUTANT_LIMIT_EXCEEDED"}, 720 - {STATUS_NETLOGON_NOT_STARTED, -EIO, "STATUS_NETLOGON_NOT_STARTED"}, 721 - {STATUS_ACCOUNT_EXPIRED, -EKEYEXPIRED, "STATUS_ACCOUNT_EXPIRED"}, 722 - {STATUS_POSSIBLE_DEADLOCK, -EIO, "STATUS_POSSIBLE_DEADLOCK"}, 723 - {STATUS_NETWORK_CREDENTIAL_CONFLICT, -EIO, 724 - "STATUS_NETWORK_CREDENTIAL_CONFLICT"}, 725 - {STATUS_REMOTE_SESSION_LIMIT, -EIO, "STATUS_REMOTE_SESSION_LIMIT"}, 726 - {STATUS_EVENTLOG_FILE_CHANGED, -EIO, "STATUS_EVENTLOG_FILE_CHANGED"}, 727 - {STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT, -EIO, 728 - "STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT"}, 729 - {STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT, -EIO, 730 - "STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT"}, 731 - {STATUS_NOLOGON_SERVER_TRUST_ACCOUNT, -EIO, 732 - "STATUS_NOLOGON_SERVER_TRUST_ACCOUNT"}, 733 - {STATUS_DOMAIN_TRUST_INCONSISTENT, -EIO, 734 - "STATUS_DOMAIN_TRUST_INCONSISTENT"}, 735 - {STATUS_FS_DRIVER_REQUIRED, -EOPNOTSUPP, "STATUS_FS_DRIVER_REQUIRED"}, 736 - {STATUS_IMAGE_ALREADY_LOADED_AS_DLL, -EIO, 737 - "STATUS_IMAGE_ALREADY_LOADED_AS_DLL"}, 738 - {STATUS_INVALID_LOCK_RANGE, -EIO, "STATUS_INVALID_LOCK_RANGE"}, 739 - {STATUS_NETWORK_OPEN_RESTRICTION, -EIO, 740 - "STATUS_NETWORK_OPEN_RESTRICTION"}, 741 - {STATUS_NO_USER_SESSION_KEY, -EIO, "STATUS_NO_USER_SESSION_KEY"}, 742 - {STATUS_USER_SESSION_DELETED, -EIO, "STATUS_USER_SESSION_DELETED"}, 743 - {STATUS_RESOURCE_LANG_NOT_FOUND, -EIO, 744 - "STATUS_RESOURCE_LANG_NOT_FOUND"}, 745 - {STATUS_INSUFF_SERVER_RESOURCES, -EIO, 746 - "STATUS_INSUFF_SERVER_RESOURCES"}, 747 - {STATUS_INVALID_BUFFER_SIZE, -EIO, "STATUS_INVALID_BUFFER_SIZE"}, 748 - {STATUS_INVALID_ADDRESS_COMPONENT, -EIO, 749 - "STATUS_INVALID_ADDRESS_COMPONENT"}, 750 - {STATUS_INVALID_ADDRESS_WILDCARD, -EIO, 751 - "STATUS_INVALID_ADDRESS_WILDCARD"}, 752 - {STATUS_TOO_MANY_ADDRESSES, -EIO, "STATUS_TOO_MANY_ADDRESSES"}, 753 - {STATUS_ADDRESS_ALREADY_EXISTS, -EADDRINUSE, 754 - "STATUS_ADDRESS_ALREADY_EXISTS"}, 755 - {STATUS_ADDRESS_CLOSED, -EIO, "STATUS_ADDRESS_CLOSED"}, 756 - {STATUS_CONNECTION_DISCONNECTED, -ECONNABORTED, 757 - "STATUS_CONNECTION_DISCONNECTED"}, 758 - {STATUS_CONNECTION_RESET, -ENETRESET, "STATUS_CONNECTION_RESET"}, 759 - {STATUS_TOO_MANY_NODES, -EIO, "STATUS_TOO_MANY_NODES"}, 760 - {STATUS_TRANSACTION_ABORTED, -EIO, "STATUS_TRANSACTION_ABORTED"}, 761 - {STATUS_TRANSACTION_TIMED_OUT, -EIO, "STATUS_TRANSACTION_TIMED_OUT"}, 762 - {STATUS_TRANSACTION_NO_RELEASE, -EIO, "STATUS_TRANSACTION_NO_RELEASE"}, 763 - {STATUS_TRANSACTION_NO_MATCH, -EIO, "STATUS_TRANSACTION_NO_MATCH"}, 764 - {STATUS_TRANSACTION_RESPONDED, -EIO, "STATUS_TRANSACTION_RESPONDED"}, 765 - {STATUS_TRANSACTION_INVALID_ID, -EIO, "STATUS_TRANSACTION_INVALID_ID"}, 766 - {STATUS_TRANSACTION_INVALID_TYPE, -EIO, 767 - "STATUS_TRANSACTION_INVALID_TYPE"}, 768 - {STATUS_NOT_SERVER_SESSION, -EIO, "STATUS_NOT_SERVER_SESSION"}, 769 - {STATUS_NOT_CLIENT_SESSION, -EIO, "STATUS_NOT_CLIENT_SESSION"}, 770 - {STATUS_CANNOT_LOAD_REGISTRY_FILE, -EIO, 771 - "STATUS_CANNOT_LOAD_REGISTRY_FILE"}, 772 - {STATUS_DEBUG_ATTACH_FAILED, -EIO, "STATUS_DEBUG_ATTACH_FAILED"}, 773 - {STATUS_SYSTEM_PROCESS_TERMINATED, -EIO, 774 - "STATUS_SYSTEM_PROCESS_TERMINATED"}, 775 - {STATUS_DATA_NOT_ACCEPTED, -EIO, "STATUS_DATA_NOT_ACCEPTED"}, 776 - {STATUS_NO_BROWSER_SERVERS_FOUND, -EIO, 777 - "STATUS_NO_BROWSER_SERVERS_FOUND"}, 778 - {STATUS_VDM_HARD_ERROR, -EIO, "STATUS_VDM_HARD_ERROR"}, 779 - {STATUS_DRIVER_CANCEL_TIMEOUT, -EIO, "STATUS_DRIVER_CANCEL_TIMEOUT"}, 780 - {STATUS_REPLY_MESSAGE_MISMATCH, -EIO, "STATUS_REPLY_MESSAGE_MISMATCH"}, 781 - {STATUS_MAPPED_ALIGNMENT, -EIO, "STATUS_MAPPED_ALIGNMENT"}, 782 - {STATUS_IMAGE_CHECKSUM_MISMATCH, -EIO, 783 - "STATUS_IMAGE_CHECKSUM_MISMATCH"}, 784 - {STATUS_LOST_WRITEBEHIND_DATA, -EIO, "STATUS_LOST_WRITEBEHIND_DATA"}, 785 - {STATUS_CLIENT_SERVER_PARAMETERS_INVALID, -EIO, 786 - "STATUS_CLIENT_SERVER_PARAMETERS_INVALID"}, 787 - {STATUS_PASSWORD_MUST_CHANGE, -EIO, "STATUS_PASSWORD_MUST_CHANGE"}, 788 - {STATUS_NOT_FOUND, -ENOENT, "STATUS_NOT_FOUND"}, 789 - {STATUS_NOT_TINY_STREAM, -EIO, "STATUS_NOT_TINY_STREAM"}, 790 - {STATUS_RECOVERY_FAILURE, -EIO, "STATUS_RECOVERY_FAILURE"}, 791 - {STATUS_STACK_OVERFLOW_READ, -EIO, "STATUS_STACK_OVERFLOW_READ"}, 792 - {STATUS_FAIL_CHECK, -EIO, "STATUS_FAIL_CHECK"}, 793 - {STATUS_DUPLICATE_OBJECTID, -EIO, "STATUS_DUPLICATE_OBJECTID"}, 794 - {STATUS_OBJECTID_EXISTS, -EIO, "STATUS_OBJECTID_EXISTS"}, 795 - {STATUS_CONVERT_TO_LARGE, -EIO, "STATUS_CONVERT_TO_LARGE"}, 796 - {STATUS_RETRY, -EAGAIN, "STATUS_RETRY"}, 797 - {STATUS_FOUND_OUT_OF_SCOPE, -EIO, "STATUS_FOUND_OUT_OF_SCOPE"}, 798 - {STATUS_ALLOCATE_BUCKET, -EIO, "STATUS_ALLOCATE_BUCKET"}, 799 - {STATUS_PROPSET_NOT_FOUND, -EIO, "STATUS_PROPSET_NOT_FOUND"}, 800 - {STATUS_MARSHALL_OVERFLOW, -EIO, "STATUS_MARSHALL_OVERFLOW"}, 801 - {STATUS_INVALID_VARIANT, -EIO, "STATUS_INVALID_VARIANT"}, 802 - {STATUS_DOMAIN_CONTROLLER_NOT_FOUND, -EIO, 803 - "STATUS_DOMAIN_CONTROLLER_NOT_FOUND"}, 804 - {STATUS_ACCOUNT_LOCKED_OUT, -EACCES, "STATUS_ACCOUNT_LOCKED_OUT"}, 805 - {STATUS_HANDLE_NOT_CLOSABLE, -EIO, "STATUS_HANDLE_NOT_CLOSABLE"}, 806 - {STATUS_CONNECTION_REFUSED, -EIO, "STATUS_CONNECTION_REFUSED"}, 807 - {STATUS_GRACEFUL_DISCONNECT, -EIO, "STATUS_GRACEFUL_DISCONNECT"}, 808 - {STATUS_ADDRESS_ALREADY_ASSOCIATED, -EIO, 809 - "STATUS_ADDRESS_ALREADY_ASSOCIATED"}, 810 - {STATUS_ADDRESS_NOT_ASSOCIATED, -EIO, "STATUS_ADDRESS_NOT_ASSOCIATED"}, 811 - {STATUS_CONNECTION_INVALID, -EIO, "STATUS_CONNECTION_INVALID"}, 812 - {STATUS_CONNECTION_ACTIVE, -EIO, "STATUS_CONNECTION_ACTIVE"}, 813 - {STATUS_NETWORK_UNREACHABLE, -ENETUNREACH, 814 - "STATUS_NETWORK_UNREACHABLE"}, 815 - {STATUS_HOST_UNREACHABLE, -EHOSTDOWN, "STATUS_HOST_UNREACHABLE"}, 816 - {STATUS_PROTOCOL_UNREACHABLE, -ENETUNREACH, 817 - "STATUS_PROTOCOL_UNREACHABLE"}, 818 - {STATUS_PORT_UNREACHABLE, -ENETUNREACH, "STATUS_PORT_UNREACHABLE"}, 819 - {STATUS_REQUEST_ABORTED, -EIO, "STATUS_REQUEST_ABORTED"}, 820 - {STATUS_CONNECTION_ABORTED, -ECONNABORTED, "STATUS_CONNECTION_ABORTED"}, 821 - {STATUS_BAD_COMPRESSION_BUFFER, -EIO, "STATUS_BAD_COMPRESSION_BUFFER"}, 822 - {STATUS_USER_MAPPED_FILE, -EIO, "STATUS_USER_MAPPED_FILE"}, 823 - {STATUS_AUDIT_FAILED, -EIO, "STATUS_AUDIT_FAILED"}, 824 - {STATUS_TIMER_RESOLUTION_NOT_SET, -EIO, 825 - "STATUS_TIMER_RESOLUTION_NOT_SET"}, 826 - {STATUS_CONNECTION_COUNT_LIMIT, -EIO, "STATUS_CONNECTION_COUNT_LIMIT"}, 827 - {STATUS_LOGIN_TIME_RESTRICTION, -EACCES, 828 - "STATUS_LOGIN_TIME_RESTRICTION"}, 829 - {STATUS_LOGIN_WKSTA_RESTRICTION, -EACCES, 830 - "STATUS_LOGIN_WKSTA_RESTRICTION"}, 831 - {STATUS_IMAGE_MP_UP_MISMATCH, -EIO, "STATUS_IMAGE_MP_UP_MISMATCH"}, 832 - {STATUS_INSUFFICIENT_LOGON_INFO, -EIO, 833 - "STATUS_INSUFFICIENT_LOGON_INFO"}, 834 - {STATUS_BAD_DLL_ENTRYPOINT, -EIO, "STATUS_BAD_DLL_ENTRYPOINT"}, 835 - {STATUS_BAD_SERVICE_ENTRYPOINT, -EIO, "STATUS_BAD_SERVICE_ENTRYPOINT"}, 836 - {STATUS_LPC_REPLY_LOST, -EIO, "STATUS_LPC_REPLY_LOST"}, 837 - {STATUS_IP_ADDRESS_CONFLICT1, -EIO, "STATUS_IP_ADDRESS_CONFLICT1"}, 838 - {STATUS_IP_ADDRESS_CONFLICT2, -EIO, "STATUS_IP_ADDRESS_CONFLICT2"}, 839 - {STATUS_REGISTRY_QUOTA_LIMIT, -EDQUOT, "STATUS_REGISTRY_QUOTA_LIMIT"}, 840 - {STATUS_PATH_NOT_COVERED, -EREMOTE, "STATUS_PATH_NOT_COVERED"}, 841 - {STATUS_NO_CALLBACK_ACTIVE, -EIO, "STATUS_NO_CALLBACK_ACTIVE"}, 842 - {STATUS_LICENSE_QUOTA_EXCEEDED, -EACCES, 843 - "STATUS_LICENSE_QUOTA_EXCEEDED"}, 844 - {STATUS_PWD_TOO_SHORT, -EIO, "STATUS_PWD_TOO_SHORT"}, 845 - {STATUS_PWD_TOO_RECENT, -EIO, "STATUS_PWD_TOO_RECENT"}, 846 - {STATUS_PWD_HISTORY_CONFLICT, -EIO, "STATUS_PWD_HISTORY_CONFLICT"}, 847 - {STATUS_PLUGPLAY_NO_DEVICE, -EIO, "STATUS_PLUGPLAY_NO_DEVICE"}, 848 - {STATUS_UNSUPPORTED_COMPRESSION, -EIO, 849 - "STATUS_UNSUPPORTED_COMPRESSION"}, 850 - {STATUS_INVALID_HW_PROFILE, -EIO, "STATUS_INVALID_HW_PROFILE"}, 851 - {STATUS_INVALID_PLUGPLAY_DEVICE_PATH, -EIO, 852 - "STATUS_INVALID_PLUGPLAY_DEVICE_PATH"}, 853 - {STATUS_DRIVER_ORDINAL_NOT_FOUND, -EIO, 854 - "STATUS_DRIVER_ORDINAL_NOT_FOUND"}, 855 - {STATUS_DRIVER_ENTRYPOINT_NOT_FOUND, -EIO, 856 - "STATUS_DRIVER_ENTRYPOINT_NOT_FOUND"}, 857 - {STATUS_RESOURCE_NOT_OWNED, -EIO, "STATUS_RESOURCE_NOT_OWNED"}, 858 - {STATUS_TOO_MANY_LINKS, -EMLINK, "STATUS_TOO_MANY_LINKS"}, 859 - {STATUS_QUOTA_LIST_INCONSISTENT, -EIO, 860 - "STATUS_QUOTA_LIST_INCONSISTENT"}, 861 - {STATUS_FILE_IS_OFFLINE, -EIO, "STATUS_FILE_IS_OFFLINE"}, 862 - {STATUS_EVALUATION_EXPIRATION, -EIO, "STATUS_EVALUATION_EXPIRATION"}, 863 - {STATUS_ILLEGAL_DLL_RELOCATION, -EIO, "STATUS_ILLEGAL_DLL_RELOCATION"}, 864 - {STATUS_LICENSE_VIOLATION, -EIO, "STATUS_LICENSE_VIOLATION"}, 865 - {STATUS_DLL_INIT_FAILED_LOGOFF, -EIO, "STATUS_DLL_INIT_FAILED_LOGOFF"}, 866 - {STATUS_DRIVER_UNABLE_TO_LOAD, -EIO, "STATUS_DRIVER_UNABLE_TO_LOAD"}, 867 - {STATUS_DFS_UNAVAILABLE, -EIO, "STATUS_DFS_UNAVAILABLE"}, 868 - {STATUS_VOLUME_DISMOUNTED, -EIO, "STATUS_VOLUME_DISMOUNTED"}, 869 - {STATUS_WX86_INTERNAL_ERROR, -EIO, "STATUS_WX86_INTERNAL_ERROR"}, 870 - {STATUS_WX86_FLOAT_STACK_CHECK, -EIO, "STATUS_WX86_FLOAT_STACK_CHECK"}, 871 - {STATUS_VALIDATE_CONTINUE, -EIO, "STATUS_VALIDATE_CONTINUE"}, 872 - {STATUS_NO_MATCH, -EIO, "STATUS_NO_MATCH"}, 873 - {STATUS_NO_MORE_MATCHES, -EIO, "STATUS_NO_MORE_MATCHES"}, 874 - {STATUS_NOT_A_REPARSE_POINT, -ENODATA, "STATUS_NOT_A_REPARSE_POINT"}, 875 - {STATUS_IO_REPARSE_TAG_INVALID, -EIO, "STATUS_IO_REPARSE_TAG_INVALID"}, 876 - {STATUS_IO_REPARSE_TAG_MISMATCH, -EIO, 877 - "STATUS_IO_REPARSE_TAG_MISMATCH"}, 878 - {STATUS_IO_REPARSE_DATA_INVALID, -EIO, 879 - "STATUS_IO_REPARSE_DATA_INVALID"}, 880 - {STATUS_REPARSE_POINT_NOT_RESOLVED, -EIO, 881 - "STATUS_REPARSE_POINT_NOT_RESOLVED"}, 882 - {STATUS_DIRECTORY_IS_A_REPARSE_POINT, -EIO, 883 - "STATUS_DIRECTORY_IS_A_REPARSE_POINT"}, 884 - {STATUS_RANGE_LIST_CONFLICT, -EIO, "STATUS_RANGE_LIST_CONFLICT"}, 885 - {STATUS_SOURCE_ELEMENT_EMPTY, -EIO, "STATUS_SOURCE_ELEMENT_EMPTY"}, 886 - {STATUS_DESTINATION_ELEMENT_FULL, -EIO, 887 - "STATUS_DESTINATION_ELEMENT_FULL"}, 888 - {STATUS_ILLEGAL_ELEMENT_ADDRESS, -EIO, 889 - "STATUS_ILLEGAL_ELEMENT_ADDRESS"}, 890 - {STATUS_MAGAZINE_NOT_PRESENT, -EIO, "STATUS_MAGAZINE_NOT_PRESENT"}, 891 - {STATUS_REINITIALIZATION_NEEDED, -EIO, 892 - "STATUS_REINITIALIZATION_NEEDED"}, 893 - {STATUS_ENCRYPTION_FAILED, -EIO, "STATUS_ENCRYPTION_FAILED"}, 894 - {STATUS_DECRYPTION_FAILED, -EIO, "STATUS_DECRYPTION_FAILED"}, 895 - {STATUS_RANGE_NOT_FOUND, -EIO, "STATUS_RANGE_NOT_FOUND"}, 896 - {STATUS_NO_RECOVERY_POLICY, -EIO, "STATUS_NO_RECOVERY_POLICY"}, 897 - {STATUS_NO_EFS, -EIO, "STATUS_NO_EFS"}, 898 - {STATUS_WRONG_EFS, -EIO, "STATUS_WRONG_EFS"}, 899 - {STATUS_NO_USER_KEYS, -EIO, "STATUS_NO_USER_KEYS"}, 900 - {STATUS_FILE_NOT_ENCRYPTED, -EIO, "STATUS_FILE_NOT_ENCRYPTED"}, 901 - {STATUS_NOT_EXPORT_FORMAT, -EIO, "STATUS_NOT_EXPORT_FORMAT"}, 902 - {STATUS_FILE_ENCRYPTED, -EIO, "STATUS_FILE_ENCRYPTED"}, 903 - {STATUS_WMI_GUID_NOT_FOUND, -EIO, "STATUS_WMI_GUID_NOT_FOUND"}, 904 - {STATUS_WMI_INSTANCE_NOT_FOUND, -EIO, "STATUS_WMI_INSTANCE_NOT_FOUND"}, 905 - {STATUS_WMI_ITEMID_NOT_FOUND, -EIO, "STATUS_WMI_ITEMID_NOT_FOUND"}, 906 - {STATUS_WMI_TRY_AGAIN, -EIO, "STATUS_WMI_TRY_AGAIN"}, 907 - {STATUS_SHARED_POLICY, -EIO, "STATUS_SHARED_POLICY"}, 908 - {STATUS_POLICY_OBJECT_NOT_FOUND, -EIO, 909 - "STATUS_POLICY_OBJECT_NOT_FOUND"}, 910 - {STATUS_POLICY_ONLY_IN_DS, -EIO, "STATUS_POLICY_ONLY_IN_DS"}, 911 - {STATUS_VOLUME_NOT_UPGRADED, -EIO, "STATUS_VOLUME_NOT_UPGRADED"}, 912 - {STATUS_REMOTE_STORAGE_NOT_ACTIVE, -EIO, 913 - "STATUS_REMOTE_STORAGE_NOT_ACTIVE"}, 914 - {STATUS_REMOTE_STORAGE_MEDIA_ERROR, -EIO, 915 - "STATUS_REMOTE_STORAGE_MEDIA_ERROR"}, 916 - {STATUS_NO_TRACKING_SERVICE, -EIO, "STATUS_NO_TRACKING_SERVICE"}, 917 - {STATUS_SERVER_SID_MISMATCH, -EIO, "STATUS_SERVER_SID_MISMATCH"}, 918 - {STATUS_DS_NO_ATTRIBUTE_OR_VALUE, -EIO, 919 - "STATUS_DS_NO_ATTRIBUTE_OR_VALUE"}, 920 - {STATUS_DS_INVALID_ATTRIBUTE_SYNTAX, -EIO, 921 - "STATUS_DS_INVALID_ATTRIBUTE_SYNTAX"}, 922 - {STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED, -EIO, 923 - "STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED"}, 924 - {STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS, -EIO, 925 - "STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS"}, 926 - {STATUS_DS_BUSY, -EBUSY, "STATUS_DS_BUSY"}, 927 - {STATUS_DS_UNAVAILABLE, -EIO, "STATUS_DS_UNAVAILABLE"}, 928 - {STATUS_DS_NO_RIDS_ALLOCATED, -EIO, "STATUS_DS_NO_RIDS_ALLOCATED"}, 929 - {STATUS_DS_NO_MORE_RIDS, -EIO, "STATUS_DS_NO_MORE_RIDS"}, 930 - {STATUS_DS_INCORRECT_ROLE_OWNER, -EIO, 931 - "STATUS_DS_INCORRECT_ROLE_OWNER"}, 932 - {STATUS_DS_RIDMGR_INIT_ERROR, -EIO, "STATUS_DS_RIDMGR_INIT_ERROR"}, 933 - {STATUS_DS_OBJ_CLASS_VIOLATION, -EIO, "STATUS_DS_OBJ_CLASS_VIOLATION"}, 934 - {STATUS_DS_CANT_ON_NON_LEAF, -EIO, "STATUS_DS_CANT_ON_NON_LEAF"}, 935 - {STATUS_DS_CANT_ON_RDN, -EIO, "STATUS_DS_CANT_ON_RDN"}, 936 - {STATUS_DS_CANT_MOD_OBJ_CLASS, -EIO, "STATUS_DS_CANT_MOD_OBJ_CLASS"}, 937 - {STATUS_DS_CROSS_DOM_MOVE_FAILED, -EIO, 938 - "STATUS_DS_CROSS_DOM_MOVE_FAILED"}, 939 - {STATUS_DS_GC_NOT_AVAILABLE, -EIO, "STATUS_DS_GC_NOT_AVAILABLE"}, 940 - {STATUS_DIRECTORY_SERVICE_REQUIRED, -EIO, 941 - "STATUS_DIRECTORY_SERVICE_REQUIRED"}, 942 - {STATUS_REPARSE_ATTRIBUTE_CONFLICT, -EIO, 943 - "STATUS_REPARSE_ATTRIBUTE_CONFLICT"}, 944 - {STATUS_CANT_ENABLE_DENY_ONLY, -EIO, "STATUS_CANT_ENABLE_DENY_ONLY"}, 945 - {STATUS_FLOAT_MULTIPLE_FAULTS, -EIO, "STATUS_FLOAT_MULTIPLE_FAULTS"}, 946 - {STATUS_FLOAT_MULTIPLE_TRAPS, -EIO, "STATUS_FLOAT_MULTIPLE_TRAPS"}, 947 - {STATUS_DEVICE_REMOVED, -EIO, "STATUS_DEVICE_REMOVED"}, 948 - {STATUS_JOURNAL_DELETE_IN_PROGRESS, -EIO, 949 - "STATUS_JOURNAL_DELETE_IN_PROGRESS"}, 950 - {STATUS_JOURNAL_NOT_ACTIVE, -EIO, "STATUS_JOURNAL_NOT_ACTIVE"}, 951 - {STATUS_NOINTERFACE, -EIO, "STATUS_NOINTERFACE"}, 952 - {STATUS_DS_ADMIN_LIMIT_EXCEEDED, -EIO, 953 - "STATUS_DS_ADMIN_LIMIT_EXCEEDED"}, 954 - {STATUS_DRIVER_FAILED_SLEEP, -EIO, "STATUS_DRIVER_FAILED_SLEEP"}, 955 - {STATUS_MUTUAL_AUTHENTICATION_FAILED, -EIO, 956 - "STATUS_MUTUAL_AUTHENTICATION_FAILED"}, 957 - {STATUS_CORRUPT_SYSTEM_FILE, -EIO, "STATUS_CORRUPT_SYSTEM_FILE"}, 958 - {STATUS_DATATYPE_MISALIGNMENT_ERROR, -EIO, 959 - "STATUS_DATATYPE_MISALIGNMENT_ERROR"}, 960 - {STATUS_WMI_READ_ONLY, -EROFS, "STATUS_WMI_READ_ONLY"}, 961 - {STATUS_WMI_SET_FAILURE, -EIO, "STATUS_WMI_SET_FAILURE"}, 962 - {STATUS_COMMITMENT_MINIMUM, -EIO, "STATUS_COMMITMENT_MINIMUM"}, 963 - {STATUS_REG_NAT_CONSUMPTION, -EIO, "STATUS_REG_NAT_CONSUMPTION"}, 964 - {STATUS_TRANSPORT_FULL, -EIO, "STATUS_TRANSPORT_FULL"}, 965 - {STATUS_DS_SAM_INIT_FAILURE, -EIO, "STATUS_DS_SAM_INIT_FAILURE"}, 966 - {STATUS_ONLY_IF_CONNECTED, -EIO, "STATUS_ONLY_IF_CONNECTED"}, 967 - {STATUS_DS_SENSITIVE_GROUP_VIOLATION, -EIO, 968 - "STATUS_DS_SENSITIVE_GROUP_VIOLATION"}, 969 - {STATUS_PNP_RESTART_ENUMERATION, -EIO, 970 - "STATUS_PNP_RESTART_ENUMERATION"}, 971 - {STATUS_JOURNAL_ENTRY_DELETED, -EIO, "STATUS_JOURNAL_ENTRY_DELETED"}, 972 - {STATUS_DS_CANT_MOD_PRIMARYGROUPID, -EIO, 973 - "STATUS_DS_CANT_MOD_PRIMARYGROUPID"}, 974 - {STATUS_SYSTEM_IMAGE_BAD_SIGNATURE, -EIO, 975 - "STATUS_SYSTEM_IMAGE_BAD_SIGNATURE"}, 976 - {STATUS_PNP_REBOOT_REQUIRED, -EIO, "STATUS_PNP_REBOOT_REQUIRED"}, 977 - {STATUS_POWER_STATE_INVALID, -EIO, "STATUS_POWER_STATE_INVALID"}, 978 - {STATUS_DS_INVALID_GROUP_TYPE, -EIO, "STATUS_DS_INVALID_GROUP_TYPE"}, 979 - {STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN, -EIO, 980 - "STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN"}, 981 - {STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN, -EIO, 982 - "STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN"}, 983 - {STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER, -EIO, 984 - "STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER"}, 985 - {STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER, -EIO, 986 - "STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER"}, 987 - {STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER, -EIO, 988 - "STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER"}, 989 - {STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER, -EIO, 990 - "STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER"}, 991 - {STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER, -EIO, 992 - "STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER"}, 993 - {STATUS_DS_HAVE_PRIMARY_MEMBERS, -EIO, 994 - "STATUS_DS_HAVE_PRIMARY_MEMBERS"}, 995 - {STATUS_WMI_NOT_SUPPORTED, -EOPNOTSUPP, "STATUS_WMI_NOT_SUPPORTED"}, 996 - {STATUS_INSUFFICIENT_POWER, -EIO, "STATUS_INSUFFICIENT_POWER"}, 997 - {STATUS_SAM_NEED_BOOTKEY_PASSWORD, -EIO, 998 - "STATUS_SAM_NEED_BOOTKEY_PASSWORD"}, 999 - {STATUS_SAM_NEED_BOOTKEY_FLOPPY, -EIO, 1000 - "STATUS_SAM_NEED_BOOTKEY_FLOPPY"}, 1001 - {STATUS_DS_CANT_START, -EIO, "STATUS_DS_CANT_START"}, 1002 - {STATUS_DS_INIT_FAILURE, -EIO, "STATUS_DS_INIT_FAILURE"}, 1003 - {STATUS_SAM_INIT_FAILURE, -EIO, "STATUS_SAM_INIT_FAILURE"}, 1004 - {STATUS_DS_GC_REQUIRED, -EIO, "STATUS_DS_GC_REQUIRED"}, 1005 - {STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY, -EIO, 1006 - "STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY"}, 1007 - {STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS, -EIO, 1008 - "STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS"}, 1009 - {STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED, -EDQUOT, 1010 - "STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED"}, 1011 - {STATUS_MULTIPLE_FAULT_VIOLATION, -EIO, 1012 - "STATUS_MULTIPLE_FAULT_VIOLATION"}, 1013 - {STATUS_CURRENT_DOMAIN_NOT_ALLOWED, -EIO, 1014 - "STATUS_CURRENT_DOMAIN_NOT_ALLOWED"}, 1015 - {STATUS_CANNOT_MAKE, -EIO, "STATUS_CANNOT_MAKE"}, 1016 - {STATUS_SYSTEM_SHUTDOWN, -EIO, "STATUS_SYSTEM_SHUTDOWN"}, 1017 - {STATUS_DS_INIT_FAILURE_CONSOLE, -EIO, 1018 - "STATUS_DS_INIT_FAILURE_CONSOLE"}, 1019 - {STATUS_DS_SAM_INIT_FAILURE_CONSOLE, -EIO, 1020 - "STATUS_DS_SAM_INIT_FAILURE_CONSOLE"}, 1021 - {STATUS_UNFINISHED_CONTEXT_DELETED, -EIO, 1022 - "STATUS_UNFINISHED_CONTEXT_DELETED"}, 1023 - {STATUS_NO_TGT_REPLY, -EIO, "STATUS_NO_TGT_REPLY"}, 1024 - /* Note that ENOATTTR and ENODATA are the same errno */ 1025 - {STATUS_OBJECTID_NOT_FOUND, -ENODATA, "STATUS_OBJECTID_NOT_FOUND"}, 1026 - {STATUS_NO_IP_ADDRESSES, -EIO, "STATUS_NO_IP_ADDRESSES"}, 1027 - {STATUS_WRONG_CREDENTIAL_HANDLE, -EIO, 1028 - "STATUS_WRONG_CREDENTIAL_HANDLE"}, 1029 - {STATUS_CRYPTO_SYSTEM_INVALID, -EIO, "STATUS_CRYPTO_SYSTEM_INVALID"}, 1030 - {STATUS_MAX_REFERRALS_EXCEEDED, -EIO, "STATUS_MAX_REFERRALS_EXCEEDED"}, 1031 - {STATUS_MUST_BE_KDC, -EIO, "STATUS_MUST_BE_KDC"}, 1032 - {STATUS_STRONG_CRYPTO_NOT_SUPPORTED, -EIO, 1033 - "STATUS_STRONG_CRYPTO_NOT_SUPPORTED"}, 1034 - {STATUS_TOO_MANY_PRINCIPALS, -EIO, "STATUS_TOO_MANY_PRINCIPALS"}, 1035 - {STATUS_NO_PA_DATA, -EIO, "STATUS_NO_PA_DATA"}, 1036 - {STATUS_PKINIT_NAME_MISMATCH, -EIO, "STATUS_PKINIT_NAME_MISMATCH"}, 1037 - {STATUS_SMARTCARD_LOGON_REQUIRED, -EIO, 1038 - "STATUS_SMARTCARD_LOGON_REQUIRED"}, 1039 - {STATUS_KDC_INVALID_REQUEST, -EIO, "STATUS_KDC_INVALID_REQUEST"}, 1040 - {STATUS_KDC_UNABLE_TO_REFER, -EIO, "STATUS_KDC_UNABLE_TO_REFER"}, 1041 - {STATUS_KDC_UNKNOWN_ETYPE, -EIO, "STATUS_KDC_UNKNOWN_ETYPE"}, 1042 - {STATUS_SHUTDOWN_IN_PROGRESS, -EIO, "STATUS_SHUTDOWN_IN_PROGRESS"}, 1043 - {STATUS_SERVER_SHUTDOWN_IN_PROGRESS, -EIO, 1044 - "STATUS_SERVER_SHUTDOWN_IN_PROGRESS"}, 1045 - {STATUS_NOT_SUPPORTED_ON_SBS, -EOPNOTSUPP, 1046 - "STATUS_NOT_SUPPORTED_ON_SBS"}, 1047 - {STATUS_WMI_GUID_DISCONNECTED, -EIO, "STATUS_WMI_GUID_DISCONNECTED"}, 1048 - {STATUS_WMI_ALREADY_DISABLED, -EIO, "STATUS_WMI_ALREADY_DISABLED"}, 1049 - {STATUS_WMI_ALREADY_ENABLED, -EIO, "STATUS_WMI_ALREADY_ENABLED"}, 1050 - {STATUS_MFT_TOO_FRAGMENTED, -EIO, "STATUS_MFT_TOO_FRAGMENTED"}, 1051 - {STATUS_COPY_PROTECTION_FAILURE, -EIO, 1052 - "STATUS_COPY_PROTECTION_FAILURE"}, 1053 - {STATUS_CSS_AUTHENTICATION_FAILURE, -EIO, 1054 - "STATUS_CSS_AUTHENTICATION_FAILURE"}, 1055 - {STATUS_CSS_KEY_NOT_PRESENT, -EIO, "STATUS_CSS_KEY_NOT_PRESENT"}, 1056 - {STATUS_CSS_KEY_NOT_ESTABLISHED, -EIO, 1057 - "STATUS_CSS_KEY_NOT_ESTABLISHED"}, 1058 - {STATUS_CSS_SCRAMBLED_SECTOR, -EIO, "STATUS_CSS_SCRAMBLED_SECTOR"}, 1059 - {STATUS_CSS_REGION_MISMATCH, -EIO, "STATUS_CSS_REGION_MISMATCH"}, 1060 - {STATUS_CSS_RESETS_EXHAUSTED, -EIO, "STATUS_CSS_RESETS_EXHAUSTED"}, 1061 - {STATUS_PKINIT_FAILURE, -EIO, "STATUS_PKINIT_FAILURE"}, 1062 - {STATUS_SMARTCARD_SUBSYSTEM_FAILURE, -EIO, 1063 - "STATUS_SMARTCARD_SUBSYSTEM_FAILURE"}, 1064 - {STATUS_NO_KERB_KEY, -EIO, "STATUS_NO_KERB_KEY"}, 1065 - {STATUS_HOST_DOWN, -EIO, "STATUS_HOST_DOWN"}, 1066 - {STATUS_UNSUPPORTED_PREAUTH, -EIO, "STATUS_UNSUPPORTED_PREAUTH"}, 1067 - {STATUS_EFS_ALG_BLOB_TOO_BIG, -EIO, "STATUS_EFS_ALG_BLOB_TOO_BIG"}, 1068 - {STATUS_PORT_NOT_SET, -EIO, "STATUS_PORT_NOT_SET"}, 1069 - {STATUS_DEBUGGER_INACTIVE, -EIO, "STATUS_DEBUGGER_INACTIVE"}, 1070 - {STATUS_DS_VERSION_CHECK_FAILURE, -EIO, 1071 - "STATUS_DS_VERSION_CHECK_FAILURE"}, 1072 - {STATUS_AUDITING_DISABLED, -EIO, "STATUS_AUDITING_DISABLED"}, 1073 - {STATUS_PRENT4_MACHINE_ACCOUNT, -EIO, "STATUS_PRENT4_MACHINE_ACCOUNT"}, 1074 - {STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER, -EIO, 1075 - "STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER"}, 1076 - {STATUS_INVALID_IMAGE_WIN_32, -EIO, "STATUS_INVALID_IMAGE_WIN_32"}, 1077 - {STATUS_INVALID_IMAGE_WIN_64, -EIO, "STATUS_INVALID_IMAGE_WIN_64"}, 1078 - {STATUS_BAD_BINDINGS, -EIO, "STATUS_BAD_BINDINGS"}, 1079 - {STATUS_NETWORK_SESSION_EXPIRED, -EIO, 1080 - "STATUS_NETWORK_SESSION_EXPIRED"}, 1081 - {STATUS_APPHELP_BLOCK, -EIO, "STATUS_APPHELP_BLOCK"}, 1082 - {STATUS_ALL_SIDS_FILTERED, -EIO, "STATUS_ALL_SIDS_FILTERED"}, 1083 - {STATUS_NOT_SAFE_MODE_DRIVER, -EIO, "STATUS_NOT_SAFE_MODE_DRIVER"}, 1084 - {STATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT, -EACCES, 1085 - "STATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT"}, 1086 - {STATUS_ACCESS_DISABLED_BY_POLICY_PATH, -EACCES, 1087 - "STATUS_ACCESS_DISABLED_BY_POLICY_PATH"}, 1088 - {STATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER, -EACCES, 1089 - "STATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER"}, 1090 - {STATUS_ACCESS_DISABLED_BY_POLICY_OTHER, -EACCES, 1091 - "STATUS_ACCESS_DISABLED_BY_POLICY_OTHER"}, 1092 - {STATUS_FAILED_DRIVER_ENTRY, -EIO, "STATUS_FAILED_DRIVER_ENTRY"}, 1093 - {STATUS_DEVICE_ENUMERATION_ERROR, -EIO, 1094 - "STATUS_DEVICE_ENUMERATION_ERROR"}, 1095 - {STATUS_MOUNT_POINT_NOT_RESOLVED, -EIO, 1096 - "STATUS_MOUNT_POINT_NOT_RESOLVED"}, 1097 - {STATUS_INVALID_DEVICE_OBJECT_PARAMETER, -EIO, 1098 - "STATUS_INVALID_DEVICE_OBJECT_PARAMETER"}, 1099 - {STATUS_MCA_OCCURED, -EIO, "STATUS_MCA_OCCURED"}, 1100 - {STATUS_DRIVER_BLOCKED_CRITICAL, -EIO, 1101 - "STATUS_DRIVER_BLOCKED_CRITICAL"}, 1102 - {STATUS_DRIVER_BLOCKED, -EIO, "STATUS_DRIVER_BLOCKED"}, 1103 - {STATUS_DRIVER_DATABASE_ERROR, -EIO, "STATUS_DRIVER_DATABASE_ERROR"}, 1104 - {STATUS_SYSTEM_HIVE_TOO_LARGE, -EIO, "STATUS_SYSTEM_HIVE_TOO_LARGE"}, 1105 - {STATUS_INVALID_IMPORT_OF_NON_DLL, -EIO, 1106 - "STATUS_INVALID_IMPORT_OF_NON_DLL"}, 1107 - {STATUS_NO_SECRETS, -EIO, "STATUS_NO_SECRETS"}, 1108 - {STATUS_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY, -EACCES, 1109 - "STATUS_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY"}, 1110 - {STATUS_FAILED_STACK_SWITCH, -EIO, "STATUS_FAILED_STACK_SWITCH"}, 1111 - {STATUS_HEAP_CORRUPTION, -EIO, "STATUS_HEAP_CORRUPTION"}, 1112 - {STATUS_SMARTCARD_WRONG_PIN, -EIO, "STATUS_SMARTCARD_WRONG_PIN"}, 1113 - {STATUS_SMARTCARD_CARD_BLOCKED, -EIO, "STATUS_SMARTCARD_CARD_BLOCKED"}, 1114 - {STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED, -EIO, 1115 - "STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED"}, 1116 - {STATUS_SMARTCARD_NO_CARD, -EIO, "STATUS_SMARTCARD_NO_CARD"}, 1117 - {STATUS_SMARTCARD_NO_KEY_CONTAINER, -EIO, 1118 - "STATUS_SMARTCARD_NO_KEY_CONTAINER"}, 1119 - {STATUS_SMARTCARD_NO_CERTIFICATE, -EIO, 1120 - "STATUS_SMARTCARD_NO_CERTIFICATE"}, 1121 - {STATUS_SMARTCARD_NO_KEYSET, -EIO, "STATUS_SMARTCARD_NO_KEYSET"}, 1122 - {STATUS_SMARTCARD_IO_ERROR, -EIO, "STATUS_SMARTCARD_IO_ERROR"}, 1123 - {STATUS_DOWNGRADE_DETECTED, -EIO, "STATUS_DOWNGRADE_DETECTED"}, 1124 - {STATUS_SMARTCARD_CERT_REVOKED, -EIO, "STATUS_SMARTCARD_CERT_REVOKED"}, 1125 - {STATUS_ISSUING_CA_UNTRUSTED, -EIO, "STATUS_ISSUING_CA_UNTRUSTED"}, 1126 - {STATUS_REVOCATION_OFFLINE_C, -EIO, "STATUS_REVOCATION_OFFLINE_C"}, 1127 - {STATUS_PKINIT_CLIENT_FAILURE, -EIO, "STATUS_PKINIT_CLIENT_FAILURE"}, 1128 - {STATUS_SMARTCARD_CERT_EXPIRED, -EIO, "STATUS_SMARTCARD_CERT_EXPIRED"}, 1129 - {STATUS_DRIVER_FAILED_PRIOR_UNLOAD, -EIO, 1130 - "STATUS_DRIVER_FAILED_PRIOR_UNLOAD"}, 1131 - {STATUS_SMARTCARD_SILENT_CONTEXT, -EIO, 1132 - "STATUS_SMARTCARD_SILENT_CONTEXT"}, 1133 - {STATUS_PER_USER_TRUST_QUOTA_EXCEEDED, -EDQUOT, 1134 - "STATUS_PER_USER_TRUST_QUOTA_EXCEEDED"}, 1135 - {STATUS_ALL_USER_TRUST_QUOTA_EXCEEDED, -EDQUOT, 1136 - "STATUS_ALL_USER_TRUST_QUOTA_EXCEEDED"}, 1137 - {STATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED, -EDQUOT, 1138 - "STATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED"}, 1139 - {STATUS_DS_NAME_NOT_UNIQUE, -EIO, "STATUS_DS_NAME_NOT_UNIQUE"}, 1140 - {STATUS_DS_DUPLICATE_ID_FOUND, -EIO, "STATUS_DS_DUPLICATE_ID_FOUND"}, 1141 - {STATUS_DS_GROUP_CONVERSION_ERROR, -EIO, 1142 - "STATUS_DS_GROUP_CONVERSION_ERROR"}, 1143 - {STATUS_VOLSNAP_PREPARE_HIBERNATE, -EIO, 1144 - "STATUS_VOLSNAP_PREPARE_HIBERNATE"}, 1145 - {STATUS_USER2USER_REQUIRED, -EIO, "STATUS_USER2USER_REQUIRED"}, 1146 - {STATUS_STACK_BUFFER_OVERRUN, -EIO, "STATUS_STACK_BUFFER_OVERRUN"}, 1147 - {STATUS_NO_S4U_PROT_SUPPORT, -EIO, "STATUS_NO_S4U_PROT_SUPPORT"}, 1148 - {STATUS_CROSSREALM_DELEGATION_FAILURE, -EIO, 1149 - "STATUS_CROSSREALM_DELEGATION_FAILURE"}, 1150 - {STATUS_REVOCATION_OFFLINE_KDC, -EIO, "STATUS_REVOCATION_OFFLINE_KDC"}, 1151 - {STATUS_ISSUING_CA_UNTRUSTED_KDC, -EIO, 1152 - "STATUS_ISSUING_CA_UNTRUSTED_KDC"}, 1153 - {STATUS_KDC_CERT_EXPIRED, -EIO, "STATUS_KDC_CERT_EXPIRED"}, 1154 - {STATUS_KDC_CERT_REVOKED, -EIO, "STATUS_KDC_CERT_REVOKED"}, 1155 - {STATUS_PARAMETER_QUOTA_EXCEEDED, -EDQUOT, 1156 - "STATUS_PARAMETER_QUOTA_EXCEEDED"}, 1157 - {STATUS_HIBERNATION_FAILURE, -EIO, "STATUS_HIBERNATION_FAILURE"}, 1158 - {STATUS_DELAY_LOAD_FAILED, -EIO, "STATUS_DELAY_LOAD_FAILED"}, 1159 - {STATUS_AUTHENTICATION_FIREWALL_FAILED, -EIO, 1160 - "STATUS_AUTHENTICATION_FIREWALL_FAILED"}, 1161 - {STATUS_VDM_DISALLOWED, -EIO, "STATUS_VDM_DISALLOWED"}, 1162 - {STATUS_HUNG_DISPLAY_DRIVER_THREAD, -EIO, 1163 - "STATUS_HUNG_DISPLAY_DRIVER_THREAD"}, 1164 - {STATUS_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE, -EIO, 1165 - "STATUS_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE"}, 1166 - {STATUS_INVALID_CRUNTIME_PARAMETER, -EIO, 1167 - "STATUS_INVALID_CRUNTIME_PARAMETER"}, 1168 - {STATUS_NTLM_BLOCKED, -EIO, "STATUS_NTLM_BLOCKED"}, 1169 - {STATUS_ASSERTION_FAILURE, -EIO, "STATUS_ASSERTION_FAILURE"}, 1170 - {STATUS_VERIFIER_STOP, -EIO, "STATUS_VERIFIER_STOP"}, 1171 - {STATUS_CALLBACK_POP_STACK, -EIO, "STATUS_CALLBACK_POP_STACK"}, 1172 - {STATUS_INCOMPATIBLE_DRIVER_BLOCKED, -EIO, 1173 - "STATUS_INCOMPATIBLE_DRIVER_BLOCKED"}, 1174 - {STATUS_HIVE_UNLOADED, -EIO, "STATUS_HIVE_UNLOADED"}, 1175 - {STATUS_COMPRESSION_DISABLED, -EIO, "STATUS_COMPRESSION_DISABLED"}, 1176 - {STATUS_FILE_SYSTEM_LIMITATION, -EIO, "STATUS_FILE_SYSTEM_LIMITATION"}, 1177 - {STATUS_INVALID_IMAGE_HASH, -EIO, "STATUS_INVALID_IMAGE_HASH"}, 1178 - {STATUS_NOT_CAPABLE, -EIO, "STATUS_NOT_CAPABLE"}, 1179 - {STATUS_REQUEST_OUT_OF_SEQUENCE, -EIO, 1180 - "STATUS_REQUEST_OUT_OF_SEQUENCE"}, 1181 - {STATUS_IMPLEMENTATION_LIMIT, -EIO, "STATUS_IMPLEMENTATION_LIMIT"}, 1182 - {STATUS_ELEVATION_REQUIRED, -EIO, "STATUS_ELEVATION_REQUIRED"}, 1183 - {STATUS_BEYOND_VDL, -EIO, "STATUS_BEYOND_VDL"}, 1184 - {STATUS_ENCOUNTERED_WRITE_IN_PROGRESS, -EIO, 1185 - "STATUS_ENCOUNTERED_WRITE_IN_PROGRESS"}, 1186 - {STATUS_PTE_CHANGED, -EIO, "STATUS_PTE_CHANGED"}, 1187 - {STATUS_PURGE_FAILED, -EIO, "STATUS_PURGE_FAILED"}, 1188 - {STATUS_CRED_REQUIRES_CONFIRMATION, -EIO, 1189 - "STATUS_CRED_REQUIRES_CONFIRMATION"}, 1190 - {STATUS_CS_ENCRYPTION_INVALID_SERVER_RESPONSE, -EIO, 1191 - "STATUS_CS_ENCRYPTION_INVALID_SERVER_RESPONSE"}, 1192 - {STATUS_CS_ENCRYPTION_UNSUPPORTED_SERVER, -EIO, 1193 - "STATUS_CS_ENCRYPTION_UNSUPPORTED_SERVER"}, 1194 - {STATUS_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE, -EIO, 1195 - "STATUS_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE"}, 1196 - {STATUS_CS_ENCRYPTION_NEW_ENCRYPTED_FILE, -EIO, 1197 - "STATUS_CS_ENCRYPTION_NEW_ENCRYPTED_FILE"}, 1198 - {STATUS_CS_ENCRYPTION_FILE_NOT_CSE, -EIO, 1199 - "STATUS_CS_ENCRYPTION_FILE_NOT_CSE"}, 1200 - {STATUS_INVALID_LABEL, -EIO, "STATUS_INVALID_LABEL"}, 1201 - {STATUS_DRIVER_PROCESS_TERMINATED, -EIO, 1202 - "STATUS_DRIVER_PROCESS_TERMINATED"}, 1203 - {STATUS_AMBIGUOUS_SYSTEM_DEVICE, -EIO, 1204 - "STATUS_AMBIGUOUS_SYSTEM_DEVICE"}, 1205 - {STATUS_SYSTEM_DEVICE_NOT_FOUND, -EIO, 1206 - "STATUS_SYSTEM_DEVICE_NOT_FOUND"}, 1207 - {STATUS_RESTART_BOOT_APPLICATION, -EIO, 1208 - "STATUS_RESTART_BOOT_APPLICATION"}, 1209 - {STATUS_INVALID_TASK_NAME, -EIO, "STATUS_INVALID_TASK_NAME"}, 1210 - {STATUS_INVALID_TASK_INDEX, -EIO, "STATUS_INVALID_TASK_INDEX"}, 1211 - {STATUS_THREAD_ALREADY_IN_TASK, -EIO, "STATUS_THREAD_ALREADY_IN_TASK"}, 1212 - {STATUS_CALLBACK_BYPASS, -EIO, "STATUS_CALLBACK_BYPASS"}, 1213 - {STATUS_SERVER_UNAVAILABLE, -EAGAIN, "STATUS_SERVER_UNAVAILABLE"}, 1214 - {STATUS_FILE_NOT_AVAILABLE, -EAGAIN, "STATUS_FILE_NOT_AVAILABLE"}, 1215 - {STATUS_PORT_CLOSED, -EIO, "STATUS_PORT_CLOSED"}, 1216 - {STATUS_MESSAGE_LOST, -EIO, "STATUS_MESSAGE_LOST"}, 1217 - {STATUS_INVALID_MESSAGE, -EIO, "STATUS_INVALID_MESSAGE"}, 1218 - {STATUS_REQUEST_CANCELED, -EIO, "STATUS_REQUEST_CANCELED"}, 1219 - {STATUS_RECURSIVE_DISPATCH, -EIO, "STATUS_RECURSIVE_DISPATCH"}, 1220 - {STATUS_LPC_RECEIVE_BUFFER_EXPECTED, -EIO, 1221 - "STATUS_LPC_RECEIVE_BUFFER_EXPECTED"}, 1222 - {STATUS_LPC_INVALID_CONNECTION_USAGE, -EIO, 1223 - "STATUS_LPC_INVALID_CONNECTION_USAGE"}, 1224 - {STATUS_LPC_REQUESTS_NOT_ALLOWED, -EIO, 1225 - "STATUS_LPC_REQUESTS_NOT_ALLOWED"}, 1226 - {STATUS_RESOURCE_IN_USE, -EIO, "STATUS_RESOURCE_IN_USE"}, 1227 - {STATUS_HARDWARE_MEMORY_ERROR, -EIO, "STATUS_HARDWARE_MEMORY_ERROR"}, 1228 - {STATUS_THREADPOOL_HANDLE_EXCEPTION, -EIO, 1229 - "STATUS_THREADPOOL_HANDLE_EXCEPTION"}, 1230 - {STATUS_THREADPOOL_SET_EVENT_ON_COMPLETION_FAILED, -EIO, 1231 - "STATUS_THREADPOOL_SET_EVENT_ON_COMPLETION_FAILED"}, 1232 - {STATUS_THREADPOOL_RELEASE_SEMAPHORE_ON_COMPLETION_FAILED, -EIO, 1233 - "STATUS_THREADPOOL_RELEASE_SEMAPHORE_ON_COMPLETION_FAILED"}, 1234 - {STATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED, -EIO, 1235 - "STATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED"}, 1236 - {STATUS_THREADPOOL_FREE_LIBRARY_ON_COMPLETION_FAILED, -EIO, 1237 - "STATUS_THREADPOOL_FREE_LIBRARY_ON_COMPLETION_FAILED"}, 1238 - {STATUS_THREADPOOL_RELEASED_DURING_OPERATION, -EIO, 1239 - "STATUS_THREADPOOL_RELEASED_DURING_OPERATION"}, 1240 - {STATUS_CALLBACK_RETURNED_WHILE_IMPERSONATING, -EIO, 1241 - "STATUS_CALLBACK_RETURNED_WHILE_IMPERSONATING"}, 1242 - {STATUS_APC_RETURNED_WHILE_IMPERSONATING, -EIO, 1243 - "STATUS_APC_RETURNED_WHILE_IMPERSONATING"}, 1244 - {STATUS_PROCESS_IS_PROTECTED, -EIO, "STATUS_PROCESS_IS_PROTECTED"}, 1245 - {STATUS_MCA_EXCEPTION, -EIO, "STATUS_MCA_EXCEPTION"}, 1246 - {STATUS_CERTIFICATE_MAPPING_NOT_UNIQUE, -EIO, 1247 - "STATUS_CERTIFICATE_MAPPING_NOT_UNIQUE"}, 1248 - {STATUS_SYMLINK_CLASS_DISABLED, -EIO, "STATUS_SYMLINK_CLASS_DISABLED"}, 1249 - {STATUS_INVALID_IDN_NORMALIZATION, -EIO, 1250 - "STATUS_INVALID_IDN_NORMALIZATION"}, 1251 - {STATUS_NO_UNICODE_TRANSLATION, -EIO, "STATUS_NO_UNICODE_TRANSLATION"}, 1252 - {STATUS_ALREADY_REGISTERED, -EIO, "STATUS_ALREADY_REGISTERED"}, 1253 - {STATUS_CONTEXT_MISMATCH, -EIO, "STATUS_CONTEXT_MISMATCH"}, 1254 - {STATUS_PORT_ALREADY_HAS_COMPLETION_LIST, -EIO, 1255 - "STATUS_PORT_ALREADY_HAS_COMPLETION_LIST"}, 1256 - {STATUS_CALLBACK_RETURNED_THREAD_PRIORITY, -EIO, 1257 - "STATUS_CALLBACK_RETURNED_THREAD_PRIORITY"}, 1258 - {STATUS_INVALID_THREAD, -EIO, "STATUS_INVALID_THREAD"}, 1259 - {STATUS_CALLBACK_RETURNED_TRANSACTION, -EIO, 1260 - "STATUS_CALLBACK_RETURNED_TRANSACTION"}, 1261 - {STATUS_CALLBACK_RETURNED_LDR_LOCK, -EIO, 1262 - "STATUS_CALLBACK_RETURNED_LDR_LOCK"}, 1263 - {STATUS_CALLBACK_RETURNED_LANG, -EIO, "STATUS_CALLBACK_RETURNED_LANG"}, 1264 - {STATUS_CALLBACK_RETURNED_PRI_BACK, -EIO, 1265 - "STATUS_CALLBACK_RETURNED_PRI_BACK"}, 1266 - {STATUS_CALLBACK_RETURNED_THREAD_AFFINITY, -EIO, 1267 - "STATUS_CALLBACK_RETURNED_THREAD_AFFINITY"}, 1268 - {STATUS_DISK_REPAIR_DISABLED, -EIO, "STATUS_DISK_REPAIR_DISABLED"}, 1269 - {STATUS_DS_DOMAIN_RENAME_IN_PROGRESS, -EIO, 1270 - "STATUS_DS_DOMAIN_RENAME_IN_PROGRESS"}, 1271 - {STATUS_DISK_QUOTA_EXCEEDED, -EDQUOT, "STATUS_DISK_QUOTA_EXCEEDED"}, 1272 - {STATUS_CONTENT_BLOCKED, -EIO, "STATUS_CONTENT_BLOCKED"}, 1273 - {STATUS_BAD_CLUSTERS, -EIO, "STATUS_BAD_CLUSTERS"}, 1274 - {STATUS_VOLUME_DIRTY, -EIO, "STATUS_VOLUME_DIRTY"}, 1275 - {STATUS_FILE_CHECKED_OUT, -EIO, "STATUS_FILE_CHECKED_OUT"}, 1276 - {STATUS_CHECKOUT_REQUIRED, -EIO, "STATUS_CHECKOUT_REQUIRED"}, 1277 - {STATUS_BAD_FILE_TYPE, -EIO, "STATUS_BAD_FILE_TYPE"}, 1278 - {STATUS_FILE_TOO_LARGE, -EIO, "STATUS_FILE_TOO_LARGE"}, 1279 - {STATUS_FORMS_AUTH_REQUIRED, -EIO, "STATUS_FORMS_AUTH_REQUIRED"}, 1280 - {STATUS_VIRUS_INFECTED, -EIO, "STATUS_VIRUS_INFECTED"}, 1281 - {STATUS_VIRUS_DELETED, -EIO, "STATUS_VIRUS_DELETED"}, 1282 - {STATUS_BAD_MCFG_TABLE, -EIO, "STATUS_BAD_MCFG_TABLE"}, 1283 - {STATUS_WOW_ASSERTION, -EIO, "STATUS_WOW_ASSERTION"}, 1284 - {STATUS_INVALID_SIGNATURE, -EIO, "STATUS_INVALID_SIGNATURE"}, 1285 - {STATUS_HMAC_NOT_SUPPORTED, -EIO, "STATUS_HMAC_NOT_SUPPORTED"}, 1286 - {STATUS_IPSEC_QUEUE_OVERFLOW, -EIO, "STATUS_IPSEC_QUEUE_OVERFLOW"}, 1287 - {STATUS_ND_QUEUE_OVERFLOW, -EIO, "STATUS_ND_QUEUE_OVERFLOW"}, 1288 - {STATUS_HOPLIMIT_EXCEEDED, -EIO, "STATUS_HOPLIMIT_EXCEEDED"}, 1289 - {STATUS_PROTOCOL_NOT_SUPPORTED, -EOPNOTSUPP, 1290 - "STATUS_PROTOCOL_NOT_SUPPORTED"}, 1291 - {STATUS_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED, -EIO, 1292 - "STATUS_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED"}, 1293 - {STATUS_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR, -EIO, 1294 - "STATUS_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR"}, 1295 - {STATUS_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR, -EIO, 1296 - "STATUS_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR"}, 1297 - {STATUS_XML_PARSE_ERROR, -EIO, "STATUS_XML_PARSE_ERROR"}, 1298 - {STATUS_XMLDSIG_ERROR, -EIO, "STATUS_XMLDSIG_ERROR"}, 1299 - {STATUS_WRONG_COMPARTMENT, -EIO, "STATUS_WRONG_COMPARTMENT"}, 1300 - {STATUS_AUTHIP_FAILURE, -EIO, "STATUS_AUTHIP_FAILURE"}, 1301 - {DBG_NO_STATE_CHANGE, -EIO, "DBG_NO_STATE_CHANGE"}, 1302 - {DBG_APP_NOT_IDLE, -EIO, "DBG_APP_NOT_IDLE"}, 1303 - {RPC_NT_INVALID_STRING_BINDING, -EIO, "RPC_NT_INVALID_STRING_BINDING"}, 1304 - {RPC_NT_WRONG_KIND_OF_BINDING, -EIO, "RPC_NT_WRONG_KIND_OF_BINDING"}, 1305 - {RPC_NT_INVALID_BINDING, -EIO, "RPC_NT_INVALID_BINDING"}, 1306 - {RPC_NT_PROTSEQ_NOT_SUPPORTED, -EOPNOTSUPP, 1307 - "RPC_NT_PROTSEQ_NOT_SUPPORTED"}, 1308 - {RPC_NT_INVALID_RPC_PROTSEQ, -EIO, "RPC_NT_INVALID_RPC_PROTSEQ"}, 1309 - {RPC_NT_INVALID_STRING_UUID, -EIO, "RPC_NT_INVALID_STRING_UUID"}, 1310 - {RPC_NT_INVALID_ENDPOINT_FORMAT, -EIO, 1311 - "RPC_NT_INVALID_ENDPOINT_FORMAT"}, 1312 - {RPC_NT_INVALID_NET_ADDR, -EIO, "RPC_NT_INVALID_NET_ADDR"}, 1313 - {RPC_NT_NO_ENDPOINT_FOUND, -EIO, "RPC_NT_NO_ENDPOINT_FOUND"}, 1314 - {RPC_NT_INVALID_TIMEOUT, -EINVAL, "RPC_NT_INVALID_TIMEOUT"}, 1315 - {RPC_NT_OBJECT_NOT_FOUND, -ENOENT, "RPC_NT_OBJECT_NOT_FOUND"}, 1316 - {RPC_NT_ALREADY_REGISTERED, -EIO, "RPC_NT_ALREADY_REGISTERED"}, 1317 - {RPC_NT_TYPE_ALREADY_REGISTERED, -EIO, 1318 - "RPC_NT_TYPE_ALREADY_REGISTERED"}, 1319 - {RPC_NT_ALREADY_LISTENING, -EIO, "RPC_NT_ALREADY_LISTENING"}, 1320 - {RPC_NT_NO_PROTSEQS_REGISTERED, -EIO, "RPC_NT_NO_PROTSEQS_REGISTERED"}, 1321 - {RPC_NT_NOT_LISTENING, -EIO, "RPC_NT_NOT_LISTENING"}, 1322 - {RPC_NT_UNKNOWN_MGR_TYPE, -EIO, "RPC_NT_UNKNOWN_MGR_TYPE"}, 1323 - {RPC_NT_UNKNOWN_IF, -EIO, "RPC_NT_UNKNOWN_IF"}, 1324 - {RPC_NT_NO_BINDINGS, -EIO, "RPC_NT_NO_BINDINGS"}, 1325 - {RPC_NT_NO_PROTSEQS, -EIO, "RPC_NT_NO_PROTSEQS"}, 1326 - {RPC_NT_CANT_CREATE_ENDPOINT, -EIO, "RPC_NT_CANT_CREATE_ENDPOINT"}, 1327 - {RPC_NT_OUT_OF_RESOURCES, -EIO, "RPC_NT_OUT_OF_RESOURCES"}, 1328 - {RPC_NT_SERVER_UNAVAILABLE, -EIO, "RPC_NT_SERVER_UNAVAILABLE"}, 1329 - {RPC_NT_SERVER_TOO_BUSY, -EBUSY, "RPC_NT_SERVER_TOO_BUSY"}, 1330 - {RPC_NT_INVALID_NETWORK_OPTIONS, -EIO, 1331 - "RPC_NT_INVALID_NETWORK_OPTIONS"}, 1332 - {RPC_NT_NO_CALL_ACTIVE, -EIO, "RPC_NT_NO_CALL_ACTIVE"}, 1333 - {RPC_NT_CALL_FAILED, -EIO, "RPC_NT_CALL_FAILED"}, 1334 - {RPC_NT_CALL_FAILED_DNE, -EIO, "RPC_NT_CALL_FAILED_DNE"}, 1335 - {RPC_NT_PROTOCOL_ERROR, -EIO, "RPC_NT_PROTOCOL_ERROR"}, 1336 - {RPC_NT_UNSUPPORTED_TRANS_SYN, -EIO, "RPC_NT_UNSUPPORTED_TRANS_SYN"}, 1337 - {RPC_NT_UNSUPPORTED_TYPE, -EIO, "RPC_NT_UNSUPPORTED_TYPE"}, 1338 - {RPC_NT_INVALID_TAG, -EIO, "RPC_NT_INVALID_TAG"}, 1339 - {RPC_NT_INVALID_BOUND, -EIO, "RPC_NT_INVALID_BOUND"}, 1340 - {RPC_NT_NO_ENTRY_NAME, -EIO, "RPC_NT_NO_ENTRY_NAME"}, 1341 - {RPC_NT_INVALID_NAME_SYNTAX, -EIO, "RPC_NT_INVALID_NAME_SYNTAX"}, 1342 - {RPC_NT_UNSUPPORTED_NAME_SYNTAX, -EIO, 1343 - "RPC_NT_UNSUPPORTED_NAME_SYNTAX"}, 1344 - {RPC_NT_UUID_NO_ADDRESS, -EIO, "RPC_NT_UUID_NO_ADDRESS"}, 1345 - {RPC_NT_DUPLICATE_ENDPOINT, -ENOTUNIQ, "RPC_NT_DUPLICATE_ENDPOINT"}, 1346 - {RPC_NT_UNKNOWN_AUTHN_TYPE, -EIO, "RPC_NT_UNKNOWN_AUTHN_TYPE"}, 1347 - {RPC_NT_MAX_CALLS_TOO_SMALL, -EIO, "RPC_NT_MAX_CALLS_TOO_SMALL"}, 1348 - {RPC_NT_STRING_TOO_LONG, -EIO, "RPC_NT_STRING_TOO_LONG"}, 1349 - {RPC_NT_PROTSEQ_NOT_FOUND, -EIO, "RPC_NT_PROTSEQ_NOT_FOUND"}, 1350 - {RPC_NT_PROCNUM_OUT_OF_RANGE, -EIO, "RPC_NT_PROCNUM_OUT_OF_RANGE"}, 1351 - {RPC_NT_BINDING_HAS_NO_AUTH, -EIO, "RPC_NT_BINDING_HAS_NO_AUTH"}, 1352 - {RPC_NT_UNKNOWN_AUTHN_SERVICE, -EIO, "RPC_NT_UNKNOWN_AUTHN_SERVICE"}, 1353 - {RPC_NT_UNKNOWN_AUTHN_LEVEL, -EIO, "RPC_NT_UNKNOWN_AUTHN_LEVEL"}, 1354 - {RPC_NT_INVALID_AUTH_IDENTITY, -EIO, "RPC_NT_INVALID_AUTH_IDENTITY"}, 1355 - {RPC_NT_UNKNOWN_AUTHZ_SERVICE, -EIO, "RPC_NT_UNKNOWN_AUTHZ_SERVICE"}, 1356 - {EPT_NT_INVALID_ENTRY, -EIO, "EPT_NT_INVALID_ENTRY"}, 1357 - {EPT_NT_CANT_PERFORM_OP, -EIO, "EPT_NT_CANT_PERFORM_OP"}, 1358 - {EPT_NT_NOT_REGISTERED, -EIO, "EPT_NT_NOT_REGISTERED"}, 1359 - {RPC_NT_NOTHING_TO_EXPORT, -EIO, "RPC_NT_NOTHING_TO_EXPORT"}, 1360 - {RPC_NT_INCOMPLETE_NAME, -EIO, "RPC_NT_INCOMPLETE_NAME"}, 1361 - {RPC_NT_INVALID_VERS_OPTION, -EIO, "RPC_NT_INVALID_VERS_OPTION"}, 1362 - {RPC_NT_NO_MORE_MEMBERS, -EIO, "RPC_NT_NO_MORE_MEMBERS"}, 1363 - {RPC_NT_NOT_ALL_OBJS_UNEXPORTED, -EIO, 1364 - "RPC_NT_NOT_ALL_OBJS_UNEXPORTED"}, 1365 - {RPC_NT_INTERFACE_NOT_FOUND, -EIO, "RPC_NT_INTERFACE_NOT_FOUND"}, 1366 - {RPC_NT_ENTRY_ALREADY_EXISTS, -EIO, "RPC_NT_ENTRY_ALREADY_EXISTS"}, 1367 - {RPC_NT_ENTRY_NOT_FOUND, -EIO, "RPC_NT_ENTRY_NOT_FOUND"}, 1368 - {RPC_NT_NAME_SERVICE_UNAVAILABLE, -EIO, 1369 - "RPC_NT_NAME_SERVICE_UNAVAILABLE"}, 1370 - {RPC_NT_INVALID_NAF_ID, -EIO, "RPC_NT_INVALID_NAF_ID"}, 1371 - {RPC_NT_CANNOT_SUPPORT, -EOPNOTSUPP, "RPC_NT_CANNOT_SUPPORT"}, 1372 - {RPC_NT_NO_CONTEXT_AVAILABLE, -EIO, "RPC_NT_NO_CONTEXT_AVAILABLE"}, 1373 - {RPC_NT_INTERNAL_ERROR, -EIO, "RPC_NT_INTERNAL_ERROR"}, 1374 - {RPC_NT_ZERO_DIVIDE, -EIO, "RPC_NT_ZERO_DIVIDE"}, 1375 - {RPC_NT_ADDRESS_ERROR, -EIO, "RPC_NT_ADDRESS_ERROR"}, 1376 - {RPC_NT_FP_DIV_ZERO, -EIO, "RPC_NT_FP_DIV_ZERO"}, 1377 - {RPC_NT_FP_UNDERFLOW, -EIO, "RPC_NT_FP_UNDERFLOW"}, 1378 - {RPC_NT_FP_OVERFLOW, -EIO, "RPC_NT_FP_OVERFLOW"}, 1379 - {RPC_NT_CALL_IN_PROGRESS, -EIO, "RPC_NT_CALL_IN_PROGRESS"}, 1380 - {RPC_NT_NO_MORE_BINDINGS, -EIO, "RPC_NT_NO_MORE_BINDINGS"}, 1381 - {RPC_NT_GROUP_MEMBER_NOT_FOUND, -EIO, "RPC_NT_GROUP_MEMBER_NOT_FOUND"}, 1382 - {EPT_NT_CANT_CREATE, -EIO, "EPT_NT_CANT_CREATE"}, 1383 - {RPC_NT_INVALID_OBJECT, -EIO, "RPC_NT_INVALID_OBJECT"}, 1384 - {RPC_NT_NO_INTERFACES, -EIO, "RPC_NT_NO_INTERFACES"}, 1385 - {RPC_NT_CALL_CANCELLED, -EIO, "RPC_NT_CALL_CANCELLED"}, 1386 - {RPC_NT_BINDING_INCOMPLETE, -EIO, "RPC_NT_BINDING_INCOMPLETE"}, 1387 - {RPC_NT_COMM_FAILURE, -EIO, "RPC_NT_COMM_FAILURE"}, 1388 - {RPC_NT_UNSUPPORTED_AUTHN_LEVEL, -EIO, 1389 - "RPC_NT_UNSUPPORTED_AUTHN_LEVEL"}, 1390 - {RPC_NT_NO_PRINC_NAME, -EIO, "RPC_NT_NO_PRINC_NAME"}, 1391 - {RPC_NT_NOT_RPC_ERROR, -EIO, "RPC_NT_NOT_RPC_ERROR"}, 1392 - {RPC_NT_SEC_PKG_ERROR, -EIO, "RPC_NT_SEC_PKG_ERROR"}, 1393 - {RPC_NT_NOT_CANCELLED, -EIO, "RPC_NT_NOT_CANCELLED"}, 1394 - {RPC_NT_INVALID_ASYNC_HANDLE, -EIO, "RPC_NT_INVALID_ASYNC_HANDLE"}, 1395 - {RPC_NT_INVALID_ASYNC_CALL, -EIO, "RPC_NT_INVALID_ASYNC_CALL"}, 1396 - {RPC_NT_PROXY_ACCESS_DENIED, -EACCES, "RPC_NT_PROXY_ACCESS_DENIED"}, 1397 - {RPC_NT_NO_MORE_ENTRIES, -EIO, "RPC_NT_NO_MORE_ENTRIES"}, 1398 - {RPC_NT_SS_CHAR_TRANS_OPEN_FAIL, -EIO, 1399 - "RPC_NT_SS_CHAR_TRANS_OPEN_FAIL"}, 1400 - {RPC_NT_SS_CHAR_TRANS_SHORT_FILE, -EIO, 1401 - "RPC_NT_SS_CHAR_TRANS_SHORT_FILE"}, 1402 - {RPC_NT_SS_IN_NULL_CONTEXT, -EIO, "RPC_NT_SS_IN_NULL_CONTEXT"}, 1403 - {RPC_NT_SS_CONTEXT_MISMATCH, -EIO, "RPC_NT_SS_CONTEXT_MISMATCH"}, 1404 - {RPC_NT_SS_CONTEXT_DAMAGED, -EIO, "RPC_NT_SS_CONTEXT_DAMAGED"}, 1405 - {RPC_NT_SS_HANDLES_MISMATCH, -EIO, "RPC_NT_SS_HANDLES_MISMATCH"}, 1406 - {RPC_NT_SS_CANNOT_GET_CALL_HANDLE, -EIO, 1407 - "RPC_NT_SS_CANNOT_GET_CALL_HANDLE"}, 1408 - {RPC_NT_NULL_REF_POINTER, -EIO, "RPC_NT_NULL_REF_POINTER"}, 1409 - {RPC_NT_ENUM_VALUE_OUT_OF_RANGE, -EIO, 1410 - "RPC_NT_ENUM_VALUE_OUT_OF_RANGE"}, 1411 - {RPC_NT_BYTE_COUNT_TOO_SMALL, -EIO, "RPC_NT_BYTE_COUNT_TOO_SMALL"}, 1412 - {RPC_NT_BAD_STUB_DATA, -EIO, "RPC_NT_BAD_STUB_DATA"}, 1413 - {RPC_NT_INVALID_ES_ACTION, -EIO, "RPC_NT_INVALID_ES_ACTION"}, 1414 - {RPC_NT_WRONG_ES_VERSION, -EIO, "RPC_NT_WRONG_ES_VERSION"}, 1415 - {RPC_NT_WRONG_STUB_VERSION, -EIO, "RPC_NT_WRONG_STUB_VERSION"}, 1416 - {RPC_NT_INVALID_PIPE_OBJECT, -EIO, "RPC_NT_INVALID_PIPE_OBJECT"}, 1417 - {RPC_NT_INVALID_PIPE_OPERATION, -EIO, "RPC_NT_INVALID_PIPE_OPERATION"}, 1418 - {RPC_NT_WRONG_PIPE_VERSION, -EIO, "RPC_NT_WRONG_PIPE_VERSION"}, 1419 - {RPC_NT_PIPE_CLOSED, -EIO, "RPC_NT_PIPE_CLOSED"}, 1420 - {RPC_NT_PIPE_DISCIPLINE_ERROR, -EIO, "RPC_NT_PIPE_DISCIPLINE_ERROR"}, 1421 - {RPC_NT_PIPE_EMPTY, -EIO, "RPC_NT_PIPE_EMPTY"}, 1422 - {STATUS_PNP_BAD_MPS_TABLE, -EIO, "STATUS_PNP_BAD_MPS_TABLE"}, 1423 - {STATUS_PNP_TRANSLATION_FAILED, -EIO, "STATUS_PNP_TRANSLATION_FAILED"}, 1424 - {STATUS_PNP_IRQ_TRANSLATION_FAILED, -EIO, 1425 - "STATUS_PNP_IRQ_TRANSLATION_FAILED"}, 1426 - {STATUS_PNP_INVALID_ID, -EIO, "STATUS_PNP_INVALID_ID"}, 1427 - {STATUS_IO_REISSUE_AS_CACHED, -EIO, "STATUS_IO_REISSUE_AS_CACHED"}, 1428 - {STATUS_CTX_WINSTATION_NAME_INVALID, -EIO, 1429 - "STATUS_CTX_WINSTATION_NAME_INVALID"}, 1430 - {STATUS_CTX_INVALID_PD, -EIO, "STATUS_CTX_INVALID_PD"}, 1431 - {STATUS_CTX_PD_NOT_FOUND, -EIO, "STATUS_CTX_PD_NOT_FOUND"}, 1432 - {STATUS_CTX_CLOSE_PENDING, -EIO, "STATUS_CTX_CLOSE_PENDING"}, 1433 - {STATUS_CTX_NO_OUTBUF, -EIO, "STATUS_CTX_NO_OUTBUF"}, 1434 - {STATUS_CTX_MODEM_INF_NOT_FOUND, -EIO, 1435 - "STATUS_CTX_MODEM_INF_NOT_FOUND"}, 1436 - {STATUS_CTX_INVALID_MODEMNAME, -EIO, "STATUS_CTX_INVALID_MODEMNAME"}, 1437 - {STATUS_CTX_RESPONSE_ERROR, -EIO, "STATUS_CTX_RESPONSE_ERROR"}, 1438 - {STATUS_CTX_MODEM_RESPONSE_TIMEOUT, -ETIMEDOUT, 1439 - "STATUS_CTX_MODEM_RESPONSE_TIMEOUT"}, 1440 - {STATUS_CTX_MODEM_RESPONSE_NO_CARRIER, -EIO, 1441 - "STATUS_CTX_MODEM_RESPONSE_NO_CARRIER"}, 1442 - {STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE, -EIO, 1443 - "STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE"}, 1444 - {STATUS_CTX_MODEM_RESPONSE_BUSY, -EBUSY, 1445 - "STATUS_CTX_MODEM_RESPONSE_BUSY"}, 1446 - {STATUS_CTX_MODEM_RESPONSE_VOICE, -EIO, 1447 - "STATUS_CTX_MODEM_RESPONSE_VOICE"}, 1448 - {STATUS_CTX_TD_ERROR, -EIO, "STATUS_CTX_TD_ERROR"}, 1449 - {STATUS_CTX_LICENSE_CLIENT_INVALID, -EIO, 1450 - "STATUS_CTX_LICENSE_CLIENT_INVALID"}, 1451 - {STATUS_CTX_LICENSE_NOT_AVAILABLE, -EIO, 1452 - "STATUS_CTX_LICENSE_NOT_AVAILABLE"}, 1453 - {STATUS_CTX_LICENSE_EXPIRED, -EIO, "STATUS_CTX_LICENSE_EXPIRED"}, 1454 - {STATUS_CTX_WINSTATION_NOT_FOUND, -EIO, 1455 - "STATUS_CTX_WINSTATION_NOT_FOUND"}, 1456 - {STATUS_CTX_WINSTATION_NAME_COLLISION, -EIO, 1457 - "STATUS_CTX_WINSTATION_NAME_COLLISION"}, 1458 - {STATUS_CTX_WINSTATION_BUSY, -EBUSY, "STATUS_CTX_WINSTATION_BUSY"}, 1459 - {STATUS_CTX_BAD_VIDEO_MODE, -EIO, "STATUS_CTX_BAD_VIDEO_MODE"}, 1460 - {STATUS_CTX_GRAPHICS_INVALID, -EIO, "STATUS_CTX_GRAPHICS_INVALID"}, 1461 - {STATUS_CTX_NOT_CONSOLE, -EIO, "STATUS_CTX_NOT_CONSOLE"}, 1462 - {STATUS_CTX_CLIENT_QUERY_TIMEOUT, -EIO, 1463 - "STATUS_CTX_CLIENT_QUERY_TIMEOUT"}, 1464 - {STATUS_CTX_CONSOLE_DISCONNECT, -EIO, "STATUS_CTX_CONSOLE_DISCONNECT"}, 1465 - {STATUS_CTX_CONSOLE_CONNECT, -EIO, "STATUS_CTX_CONSOLE_CONNECT"}, 1466 - {STATUS_CTX_SHADOW_DENIED, -EIO, "STATUS_CTX_SHADOW_DENIED"}, 1467 - {STATUS_CTX_WINSTATION_ACCESS_DENIED, -EACCES, 1468 - "STATUS_CTX_WINSTATION_ACCESS_DENIED"}, 1469 - {STATUS_CTX_INVALID_WD, -EIO, "STATUS_CTX_INVALID_WD"}, 1470 - {STATUS_CTX_WD_NOT_FOUND, -EIO, "STATUS_CTX_WD_NOT_FOUND"}, 1471 - {STATUS_CTX_SHADOW_INVALID, -EIO, "STATUS_CTX_SHADOW_INVALID"}, 1472 - {STATUS_CTX_SHADOW_DISABLED, -EIO, "STATUS_CTX_SHADOW_DISABLED"}, 1473 - {STATUS_RDP_PROTOCOL_ERROR, -EIO, "STATUS_RDP_PROTOCOL_ERROR"}, 1474 - {STATUS_CTX_CLIENT_LICENSE_NOT_SET, -EIO, 1475 - "STATUS_CTX_CLIENT_LICENSE_NOT_SET"}, 1476 - {STATUS_CTX_CLIENT_LICENSE_IN_USE, -EIO, 1477 - "STATUS_CTX_CLIENT_LICENSE_IN_USE"}, 1478 - {STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE, -EIO, 1479 - "STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE"}, 1480 - {STATUS_CTX_SHADOW_NOT_RUNNING, -EIO, "STATUS_CTX_SHADOW_NOT_RUNNING"}, 1481 - {STATUS_CTX_LOGON_DISABLED, -EIO, "STATUS_CTX_LOGON_DISABLED"}, 1482 - {STATUS_CTX_SECURITY_LAYER_ERROR, -EIO, 1483 - "STATUS_CTX_SECURITY_LAYER_ERROR"}, 1484 - {STATUS_TS_INCOMPATIBLE_SESSIONS, -EIO, 1485 - "STATUS_TS_INCOMPATIBLE_SESSIONS"}, 1486 - {STATUS_MUI_FILE_NOT_FOUND, -EIO, "STATUS_MUI_FILE_NOT_FOUND"}, 1487 - {STATUS_MUI_INVALID_FILE, -EIO, "STATUS_MUI_INVALID_FILE"}, 1488 - {STATUS_MUI_INVALID_RC_CONFIG, -EIO, "STATUS_MUI_INVALID_RC_CONFIG"}, 1489 - {STATUS_MUI_INVALID_LOCALE_NAME, -EIO, 1490 - "STATUS_MUI_INVALID_LOCALE_NAME"}, 1491 - {STATUS_MUI_INVALID_ULTIMATEFALLBACK_NAME, -EIO, 1492 - "STATUS_MUI_INVALID_ULTIMATEFALLBACK_NAME"}, 1493 - {STATUS_MUI_FILE_NOT_LOADED, -EIO, "STATUS_MUI_FILE_NOT_LOADED"}, 1494 - {STATUS_RESOURCE_ENUM_USER_STOP, -EIO, 1495 - "STATUS_RESOURCE_ENUM_USER_STOP"}, 1496 - {STATUS_CLUSTER_INVALID_NODE, -EIO, "STATUS_CLUSTER_INVALID_NODE"}, 1497 - {STATUS_CLUSTER_NODE_EXISTS, -EIO, "STATUS_CLUSTER_NODE_EXISTS"}, 1498 - {STATUS_CLUSTER_JOIN_IN_PROGRESS, -EIO, 1499 - "STATUS_CLUSTER_JOIN_IN_PROGRESS"}, 1500 - {STATUS_CLUSTER_NODE_NOT_FOUND, -EIO, "STATUS_CLUSTER_NODE_NOT_FOUND"}, 1501 - {STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND, -EIO, 1502 - "STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND"}, 1503 - {STATUS_CLUSTER_NETWORK_EXISTS, -EIO, "STATUS_CLUSTER_NETWORK_EXISTS"}, 1504 - {STATUS_CLUSTER_NETWORK_NOT_FOUND, -EIO, 1505 - "STATUS_CLUSTER_NETWORK_NOT_FOUND"}, 1506 - {STATUS_CLUSTER_NETINTERFACE_EXISTS, -EIO, 1507 - "STATUS_CLUSTER_NETINTERFACE_EXISTS"}, 1508 - {STATUS_CLUSTER_NETINTERFACE_NOT_FOUND, -EIO, 1509 - "STATUS_CLUSTER_NETINTERFACE_NOT_FOUND"}, 1510 - {STATUS_CLUSTER_INVALID_REQUEST, -EIO, 1511 - "STATUS_CLUSTER_INVALID_REQUEST"}, 1512 - {STATUS_CLUSTER_INVALID_NETWORK_PROVIDER, -EIO, 1513 - "STATUS_CLUSTER_INVALID_NETWORK_PROVIDER"}, 1514 - {STATUS_CLUSTER_NODE_DOWN, -EIO, "STATUS_CLUSTER_NODE_DOWN"}, 1515 - {STATUS_CLUSTER_NODE_UNREACHABLE, -EIO, 1516 - "STATUS_CLUSTER_NODE_UNREACHABLE"}, 1517 - {STATUS_CLUSTER_NODE_NOT_MEMBER, -EIO, 1518 - "STATUS_CLUSTER_NODE_NOT_MEMBER"}, 1519 - {STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS, -EIO, 1520 - "STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS"}, 1521 - {STATUS_CLUSTER_INVALID_NETWORK, -EIO, 1522 - "STATUS_CLUSTER_INVALID_NETWORK"}, 1523 - {STATUS_CLUSTER_NO_NET_ADAPTERS, -EIO, 1524 - "STATUS_CLUSTER_NO_NET_ADAPTERS"}, 1525 - {STATUS_CLUSTER_NODE_UP, -EIO, "STATUS_CLUSTER_NODE_UP"}, 1526 - {STATUS_CLUSTER_NODE_PAUSED, -EIO, "STATUS_CLUSTER_NODE_PAUSED"}, 1527 - {STATUS_CLUSTER_NODE_NOT_PAUSED, -EIO, 1528 - "STATUS_CLUSTER_NODE_NOT_PAUSED"}, 1529 - {STATUS_CLUSTER_NO_SECURITY_CONTEXT, -EIO, 1530 - "STATUS_CLUSTER_NO_SECURITY_CONTEXT"}, 1531 - {STATUS_CLUSTER_NETWORK_NOT_INTERNAL, -EIO, 1532 - "STATUS_CLUSTER_NETWORK_NOT_INTERNAL"}, 1533 - {STATUS_CLUSTER_POISONED, -EIO, "STATUS_CLUSTER_POISONED"}, 1534 - {STATUS_ACPI_INVALID_OPCODE, -EIO, "STATUS_ACPI_INVALID_OPCODE"}, 1535 - {STATUS_ACPI_STACK_OVERFLOW, -EIO, "STATUS_ACPI_STACK_OVERFLOW"}, 1536 - {STATUS_ACPI_ASSERT_FAILED, -EIO, "STATUS_ACPI_ASSERT_FAILED"}, 1537 - {STATUS_ACPI_INVALID_INDEX, -EIO, "STATUS_ACPI_INVALID_INDEX"}, 1538 - {STATUS_ACPI_INVALID_ARGUMENT, -EIO, "STATUS_ACPI_INVALID_ARGUMENT"}, 1539 - {STATUS_ACPI_FATAL, -EIO, "STATUS_ACPI_FATAL"}, 1540 - {STATUS_ACPI_INVALID_SUPERNAME, -EIO, "STATUS_ACPI_INVALID_SUPERNAME"}, 1541 - {STATUS_ACPI_INVALID_ARGTYPE, -EIO, "STATUS_ACPI_INVALID_ARGTYPE"}, 1542 - {STATUS_ACPI_INVALID_OBJTYPE, -EIO, "STATUS_ACPI_INVALID_OBJTYPE"}, 1543 - {STATUS_ACPI_INVALID_TARGETTYPE, -EIO, 1544 - "STATUS_ACPI_INVALID_TARGETTYPE"}, 1545 - {STATUS_ACPI_INCORRECT_ARGUMENT_COUNT, -EIO, 1546 - "STATUS_ACPI_INCORRECT_ARGUMENT_COUNT"}, 1547 - {STATUS_ACPI_ADDRESS_NOT_MAPPED, -EIO, 1548 - "STATUS_ACPI_ADDRESS_NOT_MAPPED"}, 1549 - {STATUS_ACPI_INVALID_EVENTTYPE, -EIO, "STATUS_ACPI_INVALID_EVENTTYPE"}, 1550 - {STATUS_ACPI_HANDLER_COLLISION, -EIO, "STATUS_ACPI_HANDLER_COLLISION"}, 1551 - {STATUS_ACPI_INVALID_DATA, -EIO, "STATUS_ACPI_INVALID_DATA"}, 1552 - {STATUS_ACPI_INVALID_REGION, -EIO, "STATUS_ACPI_INVALID_REGION"}, 1553 - {STATUS_ACPI_INVALID_ACCESS_SIZE, -EIO, 1554 - "STATUS_ACPI_INVALID_ACCESS_SIZE"}, 1555 - {STATUS_ACPI_ACQUIRE_GLOBAL_LOCK, -EIO, 1556 - "STATUS_ACPI_ACQUIRE_GLOBAL_LOCK"}, 1557 - {STATUS_ACPI_ALREADY_INITIALIZED, -EIO, 1558 - "STATUS_ACPI_ALREADY_INITIALIZED"}, 1559 - {STATUS_ACPI_NOT_INITIALIZED, -EIO, "STATUS_ACPI_NOT_INITIALIZED"}, 1560 - {STATUS_ACPI_INVALID_MUTEX_LEVEL, -EIO, 1561 - "STATUS_ACPI_INVALID_MUTEX_LEVEL"}, 1562 - {STATUS_ACPI_MUTEX_NOT_OWNED, -EIO, "STATUS_ACPI_MUTEX_NOT_OWNED"}, 1563 - {STATUS_ACPI_MUTEX_NOT_OWNER, -EIO, "STATUS_ACPI_MUTEX_NOT_OWNER"}, 1564 - {STATUS_ACPI_RS_ACCESS, -EIO, "STATUS_ACPI_RS_ACCESS"}, 1565 - {STATUS_ACPI_INVALID_TABLE, -EIO, "STATUS_ACPI_INVALID_TABLE"}, 1566 - {STATUS_ACPI_REG_HANDLER_FAILED, -EIO, 1567 - "STATUS_ACPI_REG_HANDLER_FAILED"}, 1568 - {STATUS_ACPI_POWER_REQUEST_FAILED, -EIO, 1569 - "STATUS_ACPI_POWER_REQUEST_FAILED"}, 1570 - {STATUS_SXS_SECTION_NOT_FOUND, -EIO, "STATUS_SXS_SECTION_NOT_FOUND"}, 1571 - {STATUS_SXS_CANT_GEN_ACTCTX, -EIO, "STATUS_SXS_CANT_GEN_ACTCTX"}, 1572 - {STATUS_SXS_INVALID_ACTCTXDATA_FORMAT, -EIO, 1573 - "STATUS_SXS_INVALID_ACTCTXDATA_FORMAT"}, 1574 - {STATUS_SXS_ASSEMBLY_NOT_FOUND, -EIO, "STATUS_SXS_ASSEMBLY_NOT_FOUND"}, 1575 - {STATUS_SXS_MANIFEST_FORMAT_ERROR, -EIO, 1576 - "STATUS_SXS_MANIFEST_FORMAT_ERROR"}, 1577 - {STATUS_SXS_MANIFEST_PARSE_ERROR, -EIO, 1578 - "STATUS_SXS_MANIFEST_PARSE_ERROR"}, 1579 - {STATUS_SXS_ACTIVATION_CONTEXT_DISABLED, -EIO, 1580 - "STATUS_SXS_ACTIVATION_CONTEXT_DISABLED"}, 1581 - {STATUS_SXS_KEY_NOT_FOUND, -EIO, "STATUS_SXS_KEY_NOT_FOUND"}, 1582 - {STATUS_SXS_VERSION_CONFLICT, -EIO, "STATUS_SXS_VERSION_CONFLICT"}, 1583 - {STATUS_SXS_WRONG_SECTION_TYPE, -EIO, "STATUS_SXS_WRONG_SECTION_TYPE"}, 1584 - {STATUS_SXS_THREAD_QUERIES_DISABLED, -EIO, 1585 - "STATUS_SXS_THREAD_QUERIES_DISABLED"}, 1586 - {STATUS_SXS_ASSEMBLY_MISSING, -EIO, "STATUS_SXS_ASSEMBLY_MISSING"}, 1587 - {STATUS_SXS_PROCESS_DEFAULT_ALREADY_SET, -EIO, 1588 - "STATUS_SXS_PROCESS_DEFAULT_ALREADY_SET"}, 1589 - {STATUS_SXS_EARLY_DEACTIVATION, -EIO, "STATUS_SXS_EARLY_DEACTIVATION"}, 1590 - {STATUS_SXS_INVALID_DEACTIVATION, -EIO, 1591 - "STATUS_SXS_INVALID_DEACTIVATION"}, 1592 - {STATUS_SXS_MULTIPLE_DEACTIVATION, -EIO, 1593 - "STATUS_SXS_MULTIPLE_DEACTIVATION"}, 1594 - {STATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY, -EIO, 1595 - "STATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY"}, 1596 - {STATUS_SXS_PROCESS_TERMINATION_REQUESTED, -EIO, 1597 - "STATUS_SXS_PROCESS_TERMINATION_REQUESTED"}, 1598 - {STATUS_SXS_CORRUPT_ACTIVATION_STACK, -EIO, 1599 - "STATUS_SXS_CORRUPT_ACTIVATION_STACK"}, 1600 - {STATUS_SXS_CORRUPTION, -EIO, "STATUS_SXS_CORRUPTION"}, 1601 - {STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE, -EIO, 1602 - "STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE"}, 1603 - {STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME, -EIO, 1604 - "STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME"}, 1605 - {STATUS_SXS_IDENTITY_DUPLICATE_ATTRIBUTE, -EIO, 1606 - "STATUS_SXS_IDENTITY_DUPLICATE_ATTRIBUTE"}, 1607 - {STATUS_SXS_IDENTITY_PARSE_ERROR, -EIO, 1608 - "STATUS_SXS_IDENTITY_PARSE_ERROR"}, 1609 - {STATUS_SXS_COMPONENT_STORE_CORRUPT, -EIO, 1610 - "STATUS_SXS_COMPONENT_STORE_CORRUPT"}, 1611 - {STATUS_SXS_FILE_HASH_MISMATCH, -EIO, "STATUS_SXS_FILE_HASH_MISMATCH"}, 1612 - {STATUS_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT, -EIO, 1613 - "STATUS_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT"}, 1614 - {STATUS_SXS_IDENTITIES_DIFFERENT, -EIO, 1615 - "STATUS_SXS_IDENTITIES_DIFFERENT"}, 1616 - {STATUS_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT, -EIO, 1617 - "STATUS_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT"}, 1618 - {STATUS_SXS_FILE_NOT_PART_OF_ASSEMBLY, -EIO, 1619 - "STATUS_SXS_FILE_NOT_PART_OF_ASSEMBLY"}, 1620 - {STATUS_ADVANCED_INSTALLER_FAILED, -EIO, 1621 - "STATUS_ADVANCED_INSTALLER_FAILED"}, 1622 - {STATUS_XML_ENCODING_MISMATCH, -EIO, "STATUS_XML_ENCODING_MISMATCH"}, 1623 - {STATUS_SXS_MANIFEST_TOO_BIG, -EIO, "STATUS_SXS_MANIFEST_TOO_BIG"}, 1624 - {STATUS_SXS_SETTING_NOT_REGISTERED, -EIO, 1625 - "STATUS_SXS_SETTING_NOT_REGISTERED"}, 1626 - {STATUS_SXS_TRANSACTION_CLOSURE_INCOMPLETE, -EIO, 1627 - "STATUS_SXS_TRANSACTION_CLOSURE_INCOMPLETE"}, 1628 - {STATUS_SMI_PRIMITIVE_INSTALLER_FAILED, -EIO, 1629 - "STATUS_SMI_PRIMITIVE_INSTALLER_FAILED"}, 1630 - {STATUS_GENERIC_COMMAND_FAILED, -EIO, "STATUS_GENERIC_COMMAND_FAILED"}, 1631 - {STATUS_SXS_FILE_HASH_MISSING, -EIO, "STATUS_SXS_FILE_HASH_MISSING"}, 1632 - {STATUS_TRANSACTIONAL_CONFLICT, -EIO, "STATUS_TRANSACTIONAL_CONFLICT"}, 1633 - {STATUS_INVALID_TRANSACTION, -EIO, "STATUS_INVALID_TRANSACTION"}, 1634 - {STATUS_TRANSACTION_NOT_ACTIVE, -EIO, "STATUS_TRANSACTION_NOT_ACTIVE"}, 1635 - {STATUS_TM_INITIALIZATION_FAILED, -EIO, 1636 - "STATUS_TM_INITIALIZATION_FAILED"}, 1637 - {STATUS_RM_NOT_ACTIVE, -EIO, "STATUS_RM_NOT_ACTIVE"}, 1638 - {STATUS_RM_METADATA_CORRUPT, -EIO, "STATUS_RM_METADATA_CORRUPT"}, 1639 - {STATUS_TRANSACTION_NOT_JOINED, -EIO, "STATUS_TRANSACTION_NOT_JOINED"}, 1640 - {STATUS_DIRECTORY_NOT_RM, -EIO, "STATUS_DIRECTORY_NOT_RM"}, 1641 - {STATUS_TRANSACTIONS_UNSUPPORTED_REMOTE, -EIO, 1642 - "STATUS_TRANSACTIONS_UNSUPPORTED_REMOTE"}, 1643 - {STATUS_LOG_RESIZE_INVALID_SIZE, -EIO, 1644 - "STATUS_LOG_RESIZE_INVALID_SIZE"}, 1645 - {STATUS_REMOTE_FILE_VERSION_MISMATCH, -EIO, 1646 - "STATUS_REMOTE_FILE_VERSION_MISMATCH"}, 1647 - {STATUS_CRM_PROTOCOL_ALREADY_EXISTS, -EIO, 1648 - "STATUS_CRM_PROTOCOL_ALREADY_EXISTS"}, 1649 - {STATUS_TRANSACTION_PROPAGATION_FAILED, -EIO, 1650 - "STATUS_TRANSACTION_PROPAGATION_FAILED"}, 1651 - {STATUS_CRM_PROTOCOL_NOT_FOUND, -EIO, "STATUS_CRM_PROTOCOL_NOT_FOUND"}, 1652 - {STATUS_TRANSACTION_SUPERIOR_EXISTS, -EIO, 1653 - "STATUS_TRANSACTION_SUPERIOR_EXISTS"}, 1654 - {STATUS_TRANSACTION_REQUEST_NOT_VALID, -EIO, 1655 - "STATUS_TRANSACTION_REQUEST_NOT_VALID"}, 1656 - {STATUS_TRANSACTION_NOT_REQUESTED, -EIO, 1657 - "STATUS_TRANSACTION_NOT_REQUESTED"}, 1658 - {STATUS_TRANSACTION_ALREADY_ABORTED, -EIO, 1659 - "STATUS_TRANSACTION_ALREADY_ABORTED"}, 1660 - {STATUS_TRANSACTION_ALREADY_COMMITTED, -EIO, 1661 - "STATUS_TRANSACTION_ALREADY_COMMITTED"}, 1662 - {STATUS_TRANSACTION_INVALID_MARSHALL_BUFFER, -EIO, 1663 - "STATUS_TRANSACTION_INVALID_MARSHALL_BUFFER"}, 1664 - {STATUS_CURRENT_TRANSACTION_NOT_VALID, -EIO, 1665 - "STATUS_CURRENT_TRANSACTION_NOT_VALID"}, 1666 - {STATUS_LOG_GROWTH_FAILED, -EIO, "STATUS_LOG_GROWTH_FAILED"}, 1667 - {STATUS_OBJECT_NO_LONGER_EXISTS, -EIO, 1668 - "STATUS_OBJECT_NO_LONGER_EXISTS"}, 1669 - {STATUS_STREAM_MINIVERSION_NOT_FOUND, -EIO, 1670 - "STATUS_STREAM_MINIVERSION_NOT_FOUND"}, 1671 - {STATUS_STREAM_MINIVERSION_NOT_VALID, -EIO, 1672 - "STATUS_STREAM_MINIVERSION_NOT_VALID"}, 1673 - {STATUS_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION, -EIO, 1674 - "STATUS_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION"}, 1675 - {STATUS_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT, -EIO, 1676 - "STATUS_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT"}, 1677 - {STATUS_CANT_CREATE_MORE_STREAM_MINIVERSIONS, -EIO, 1678 - "STATUS_CANT_CREATE_MORE_STREAM_MINIVERSIONS"}, 1679 - {STATUS_HANDLE_NO_LONGER_VALID, -EIO, "STATUS_HANDLE_NO_LONGER_VALID"}, 1680 - {STATUS_LOG_CORRUPTION_DETECTED, -EIO, 1681 - "STATUS_LOG_CORRUPTION_DETECTED"}, 1682 - {STATUS_RM_DISCONNECTED, -EIO, "STATUS_RM_DISCONNECTED"}, 1683 - {STATUS_ENLISTMENT_NOT_SUPERIOR, -EIO, 1684 - "STATUS_ENLISTMENT_NOT_SUPERIOR"}, 1685 - {STATUS_FILE_IDENTITY_NOT_PERSISTENT, -EIO, 1686 - "STATUS_FILE_IDENTITY_NOT_PERSISTENT"}, 1687 - {STATUS_CANT_BREAK_TRANSACTIONAL_DEPENDENCY, -EIO, 1688 - "STATUS_CANT_BREAK_TRANSACTIONAL_DEPENDENCY"}, 1689 - {STATUS_CANT_CROSS_RM_BOUNDARY, -EIO, "STATUS_CANT_CROSS_RM_BOUNDARY"}, 1690 - {STATUS_TXF_DIR_NOT_EMPTY, -EIO, "STATUS_TXF_DIR_NOT_EMPTY"}, 1691 - {STATUS_INDOUBT_TRANSACTIONS_EXIST, -EIO, 1692 - "STATUS_INDOUBT_TRANSACTIONS_EXIST"}, 1693 - {STATUS_TM_VOLATILE, -EIO, "STATUS_TM_VOLATILE"}, 1694 - {STATUS_ROLLBACK_TIMER_EXPIRED, -EIO, "STATUS_ROLLBACK_TIMER_EXPIRED"}, 1695 - {STATUS_TXF_ATTRIBUTE_CORRUPT, -EIO, "STATUS_TXF_ATTRIBUTE_CORRUPT"}, 1696 - {STATUS_EFS_NOT_ALLOWED_IN_TRANSACTION, -EIO, 1697 - "STATUS_EFS_NOT_ALLOWED_IN_TRANSACTION"}, 1698 - {STATUS_TRANSACTIONAL_OPEN_NOT_ALLOWED, -EIO, 1699 - "STATUS_TRANSACTIONAL_OPEN_NOT_ALLOWED"}, 1700 - {STATUS_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE, -EIO, 1701 - "STATUS_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE"}, 1702 - {STATUS_TRANSACTION_REQUIRED_PROMOTION, -EIO, 1703 - "STATUS_TRANSACTION_REQUIRED_PROMOTION"}, 1704 - {STATUS_CANNOT_EXECUTE_FILE_IN_TRANSACTION, -EIO, 1705 - "STATUS_CANNOT_EXECUTE_FILE_IN_TRANSACTION"}, 1706 - {STATUS_TRANSACTIONS_NOT_FROZEN, -EIO, 1707 - "STATUS_TRANSACTIONS_NOT_FROZEN"}, 1708 - {STATUS_TRANSACTION_FREEZE_IN_PROGRESS, -EIO, 1709 - "STATUS_TRANSACTION_FREEZE_IN_PROGRESS"}, 1710 - {STATUS_NOT_SNAPSHOT_VOLUME, -EIO, "STATUS_NOT_SNAPSHOT_VOLUME"}, 1711 - {STATUS_NO_SAVEPOINT_WITH_OPEN_FILES, -EIO, 1712 - "STATUS_NO_SAVEPOINT_WITH_OPEN_FILES"}, 1713 - {STATUS_SPARSE_NOT_ALLOWED_IN_TRANSACTION, -EIO, 1714 - "STATUS_SPARSE_NOT_ALLOWED_IN_TRANSACTION"}, 1715 - {STATUS_TM_IDENTITY_MISMATCH, -EIO, "STATUS_TM_IDENTITY_MISMATCH"}, 1716 - {STATUS_FLOATED_SECTION, -EIO, "STATUS_FLOATED_SECTION"}, 1717 - {STATUS_CANNOT_ACCEPT_TRANSACTED_WORK, -EIO, 1718 - "STATUS_CANNOT_ACCEPT_TRANSACTED_WORK"}, 1719 - {STATUS_CANNOT_ABORT_TRANSACTIONS, -EIO, 1720 - "STATUS_CANNOT_ABORT_TRANSACTIONS"}, 1721 - {STATUS_TRANSACTION_NOT_FOUND, -EIO, "STATUS_TRANSACTION_NOT_FOUND"}, 1722 - {STATUS_RESOURCEMANAGER_NOT_FOUND, -EIO, 1723 - "STATUS_RESOURCEMANAGER_NOT_FOUND"}, 1724 - {STATUS_ENLISTMENT_NOT_FOUND, -EIO, "STATUS_ENLISTMENT_NOT_FOUND"}, 1725 - {STATUS_TRANSACTIONMANAGER_NOT_FOUND, -EIO, 1726 - "STATUS_TRANSACTIONMANAGER_NOT_FOUND"}, 1727 - {STATUS_TRANSACTIONMANAGER_NOT_ONLINE, -EIO, 1728 - "STATUS_TRANSACTIONMANAGER_NOT_ONLINE"}, 1729 - {STATUS_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION, -EIO, 1730 - "STATUS_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION"}, 1731 - {STATUS_TRANSACTION_NOT_ROOT, -EIO, "STATUS_TRANSACTION_NOT_ROOT"}, 1732 - {STATUS_TRANSACTION_OBJECT_EXPIRED, -EIO, 1733 - "STATUS_TRANSACTION_OBJECT_EXPIRED"}, 1734 - {STATUS_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION, -EIO, 1735 - "STATUS_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION"}, 1736 - {STATUS_TRANSACTION_RESPONSE_NOT_ENLISTED, -EIO, 1737 - "STATUS_TRANSACTION_RESPONSE_NOT_ENLISTED"}, 1738 - {STATUS_TRANSACTION_RECORD_TOO_LONG, -EIO, 1739 - "STATUS_TRANSACTION_RECORD_TOO_LONG"}, 1740 - {STATUS_NO_LINK_TRACKING_IN_TRANSACTION, -EIO, 1741 - "STATUS_NO_LINK_TRACKING_IN_TRANSACTION"}, 1742 - {STATUS_OPERATION_NOT_SUPPORTED_IN_TRANSACTION, -EOPNOTSUPP, 1743 - "STATUS_OPERATION_NOT_SUPPORTED_IN_TRANSACTION"}, 1744 - {STATUS_TRANSACTION_INTEGRITY_VIOLATED, -EIO, 1745 - "STATUS_TRANSACTION_INTEGRITY_VIOLATED"}, 1746 - {STATUS_LOG_SECTOR_INVALID, -EIO, "STATUS_LOG_SECTOR_INVALID"}, 1747 - {STATUS_LOG_SECTOR_PARITY_INVALID, -EIO, 1748 - "STATUS_LOG_SECTOR_PARITY_INVALID"}, 1749 - {STATUS_LOG_SECTOR_REMAPPED, -EIO, "STATUS_LOG_SECTOR_REMAPPED"}, 1750 - {STATUS_LOG_BLOCK_INCOMPLETE, -EIO, "STATUS_LOG_BLOCK_INCOMPLETE"}, 1751 - {STATUS_LOG_INVALID_RANGE, -EIO, "STATUS_LOG_INVALID_RANGE"}, 1752 - {STATUS_LOG_BLOCKS_EXHAUSTED, -EIO, "STATUS_LOG_BLOCKS_EXHAUSTED"}, 1753 - {STATUS_LOG_READ_CONTEXT_INVALID, -EIO, 1754 - "STATUS_LOG_READ_CONTEXT_INVALID"}, 1755 - {STATUS_LOG_RESTART_INVALID, -EIO, "STATUS_LOG_RESTART_INVALID"}, 1756 - {STATUS_LOG_BLOCK_VERSION, -EIO, "STATUS_LOG_BLOCK_VERSION"}, 1757 - {STATUS_LOG_BLOCK_INVALID, -EIO, "STATUS_LOG_BLOCK_INVALID"}, 1758 - {STATUS_LOG_READ_MODE_INVALID, -EIO, "STATUS_LOG_READ_MODE_INVALID"}, 1759 - {STATUS_LOG_METADATA_CORRUPT, -EIO, "STATUS_LOG_METADATA_CORRUPT"}, 1760 - {STATUS_LOG_METADATA_INVALID, -EIO, "STATUS_LOG_METADATA_INVALID"}, 1761 - {STATUS_LOG_METADATA_INCONSISTENT, -EIO, 1762 - "STATUS_LOG_METADATA_INCONSISTENT"}, 1763 - {STATUS_LOG_RESERVATION_INVALID, -EIO, 1764 - "STATUS_LOG_RESERVATION_INVALID"}, 1765 - {STATUS_LOG_CANT_DELETE, -EIO, "STATUS_LOG_CANT_DELETE"}, 1766 - {STATUS_LOG_CONTAINER_LIMIT_EXCEEDED, -EIO, 1767 - "STATUS_LOG_CONTAINER_LIMIT_EXCEEDED"}, 1768 - {STATUS_LOG_START_OF_LOG, -EIO, "STATUS_LOG_START_OF_LOG"}, 1769 - {STATUS_LOG_POLICY_ALREADY_INSTALLED, -EIO, 1770 - "STATUS_LOG_POLICY_ALREADY_INSTALLED"}, 1771 - {STATUS_LOG_POLICY_NOT_INSTALLED, -EIO, 1772 - "STATUS_LOG_POLICY_NOT_INSTALLED"}, 1773 - {STATUS_LOG_POLICY_INVALID, -EIO, "STATUS_LOG_POLICY_INVALID"}, 1774 - {STATUS_LOG_POLICY_CONFLICT, -EIO, "STATUS_LOG_POLICY_CONFLICT"}, 1775 - {STATUS_LOG_PINNED_ARCHIVE_TAIL, -EIO, 1776 - "STATUS_LOG_PINNED_ARCHIVE_TAIL"}, 1777 - {STATUS_LOG_RECORD_NONEXISTENT, -EIO, "STATUS_LOG_RECORD_NONEXISTENT"}, 1778 - {STATUS_LOG_RECORDS_RESERVED_INVALID, -EIO, 1779 - "STATUS_LOG_RECORDS_RESERVED_INVALID"}, 1780 - {STATUS_LOG_SPACE_RESERVED_INVALID, -EIO, 1781 - "STATUS_LOG_SPACE_RESERVED_INVALID"}, 1782 - {STATUS_LOG_TAIL_INVALID, -EIO, "STATUS_LOG_TAIL_INVALID"}, 1783 - {STATUS_LOG_FULL, -EIO, "STATUS_LOG_FULL"}, 1784 - {STATUS_LOG_MULTIPLEXED, -EIO, "STATUS_LOG_MULTIPLEXED"}, 1785 - {STATUS_LOG_DEDICATED, -EIO, "STATUS_LOG_DEDICATED"}, 1786 - {STATUS_LOG_ARCHIVE_NOT_IN_PROGRESS, -EIO, 1787 - "STATUS_LOG_ARCHIVE_NOT_IN_PROGRESS"}, 1788 - {STATUS_LOG_ARCHIVE_IN_PROGRESS, -EIO, 1789 - "STATUS_LOG_ARCHIVE_IN_PROGRESS"}, 1790 - {STATUS_LOG_EPHEMERAL, -EIO, "STATUS_LOG_EPHEMERAL"}, 1791 - {STATUS_LOG_NOT_ENOUGH_CONTAINERS, -EIO, 1792 - "STATUS_LOG_NOT_ENOUGH_CONTAINERS"}, 1793 - {STATUS_LOG_CLIENT_ALREADY_REGISTERED, -EIO, 1794 - "STATUS_LOG_CLIENT_ALREADY_REGISTERED"}, 1795 - {STATUS_LOG_CLIENT_NOT_REGISTERED, -EIO, 1796 - "STATUS_LOG_CLIENT_NOT_REGISTERED"}, 1797 - {STATUS_LOG_FULL_HANDLER_IN_PROGRESS, -EIO, 1798 - "STATUS_LOG_FULL_HANDLER_IN_PROGRESS"}, 1799 - {STATUS_LOG_CONTAINER_READ_FAILED, -EIO, 1800 - "STATUS_LOG_CONTAINER_READ_FAILED"}, 1801 - {STATUS_LOG_CONTAINER_WRITE_FAILED, -EIO, 1802 - "STATUS_LOG_CONTAINER_WRITE_FAILED"}, 1803 - {STATUS_LOG_CONTAINER_OPEN_FAILED, -EIO, 1804 - "STATUS_LOG_CONTAINER_OPEN_FAILED"}, 1805 - {STATUS_LOG_CONTAINER_STATE_INVALID, -EIO, 1806 - "STATUS_LOG_CONTAINER_STATE_INVALID"}, 1807 - {STATUS_LOG_STATE_INVALID, -EIO, "STATUS_LOG_STATE_INVALID"}, 1808 - {STATUS_LOG_PINNED, -EIO, "STATUS_LOG_PINNED"}, 1809 - {STATUS_LOG_METADATA_FLUSH_FAILED, -EIO, 1810 - "STATUS_LOG_METADATA_FLUSH_FAILED"}, 1811 - {STATUS_LOG_INCONSISTENT_SECURITY, -EIO, 1812 - "STATUS_LOG_INCONSISTENT_SECURITY"}, 1813 - {STATUS_LOG_APPENDED_FLUSH_FAILED, -EIO, 1814 - "STATUS_LOG_APPENDED_FLUSH_FAILED"}, 1815 - {STATUS_LOG_PINNED_RESERVATION, -EIO, "STATUS_LOG_PINNED_RESERVATION"}, 1816 - {STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD, -EIO, 1817 - "STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD"}, 1818 - {STATUS_FLT_NO_HANDLER_DEFINED, -EIO, "STATUS_FLT_NO_HANDLER_DEFINED"}, 1819 - {STATUS_FLT_CONTEXT_ALREADY_DEFINED, -EIO, 1820 - "STATUS_FLT_CONTEXT_ALREADY_DEFINED"}, 1821 - {STATUS_FLT_INVALID_ASYNCHRONOUS_REQUEST, -EIO, 1822 - "STATUS_FLT_INVALID_ASYNCHRONOUS_REQUEST"}, 1823 - {STATUS_FLT_DISALLOW_FAST_IO, -EIO, "STATUS_FLT_DISALLOW_FAST_IO"}, 1824 - {STATUS_FLT_INVALID_NAME_REQUEST, -EIO, 1825 - "STATUS_FLT_INVALID_NAME_REQUEST"}, 1826 - {STATUS_FLT_NOT_SAFE_TO_POST_OPERATION, -EIO, 1827 - "STATUS_FLT_NOT_SAFE_TO_POST_OPERATION"}, 1828 - {STATUS_FLT_NOT_INITIALIZED, -EIO, "STATUS_FLT_NOT_INITIALIZED"}, 1829 - {STATUS_FLT_FILTER_NOT_READY, -EIO, "STATUS_FLT_FILTER_NOT_READY"}, 1830 - {STATUS_FLT_POST_OPERATION_CLEANUP, -EIO, 1831 - "STATUS_FLT_POST_OPERATION_CLEANUP"}, 1832 - {STATUS_FLT_INTERNAL_ERROR, -EIO, "STATUS_FLT_INTERNAL_ERROR"}, 1833 - {STATUS_FLT_DELETING_OBJECT, -EIO, "STATUS_FLT_DELETING_OBJECT"}, 1834 - {STATUS_FLT_MUST_BE_NONPAGED_POOL, -EIO, 1835 - "STATUS_FLT_MUST_BE_NONPAGED_POOL"}, 1836 - {STATUS_FLT_DUPLICATE_ENTRY, -EIO, "STATUS_FLT_DUPLICATE_ENTRY"}, 1837 - {STATUS_FLT_CBDQ_DISABLED, -EIO, "STATUS_FLT_CBDQ_DISABLED"}, 1838 - {STATUS_FLT_DO_NOT_ATTACH, -EIO, "STATUS_FLT_DO_NOT_ATTACH"}, 1839 - {STATUS_FLT_DO_NOT_DETACH, -EIO, "STATUS_FLT_DO_NOT_DETACH"}, 1840 - {STATUS_FLT_INSTANCE_ALTITUDE_COLLISION, -EIO, 1841 - "STATUS_FLT_INSTANCE_ALTITUDE_COLLISION"}, 1842 - {STATUS_FLT_INSTANCE_NAME_COLLISION, -EIO, 1843 - "STATUS_FLT_INSTANCE_NAME_COLLISION"}, 1844 - {STATUS_FLT_FILTER_NOT_FOUND, -EIO, "STATUS_FLT_FILTER_NOT_FOUND"}, 1845 - {STATUS_FLT_VOLUME_NOT_FOUND, -EIO, "STATUS_FLT_VOLUME_NOT_FOUND"}, 1846 - {STATUS_FLT_INSTANCE_NOT_FOUND, -EIO, "STATUS_FLT_INSTANCE_NOT_FOUND"}, 1847 - {STATUS_FLT_CONTEXT_ALLOCATION_NOT_FOUND, -EIO, 1848 - "STATUS_FLT_CONTEXT_ALLOCATION_NOT_FOUND"}, 1849 - {STATUS_FLT_INVALID_CONTEXT_REGISTRATION, -EIO, 1850 - "STATUS_FLT_INVALID_CONTEXT_REGISTRATION"}, 1851 - {STATUS_FLT_NAME_CACHE_MISS, -EIO, "STATUS_FLT_NAME_CACHE_MISS"}, 1852 - {STATUS_FLT_NO_DEVICE_OBJECT, -EIO, "STATUS_FLT_NO_DEVICE_OBJECT"}, 1853 - {STATUS_FLT_VOLUME_ALREADY_MOUNTED, -EIO, 1854 - "STATUS_FLT_VOLUME_ALREADY_MOUNTED"}, 1855 - {STATUS_FLT_ALREADY_ENLISTED, -EIO, "STATUS_FLT_ALREADY_ENLISTED"}, 1856 - {STATUS_FLT_CONTEXT_ALREADY_LINKED, -EIO, 1857 - "STATUS_FLT_CONTEXT_ALREADY_LINKED"}, 1858 - {STATUS_FLT_NO_WAITER_FOR_REPLY, -EIO, 1859 - "STATUS_FLT_NO_WAITER_FOR_REPLY"}, 1860 - {STATUS_MONITOR_NO_DESCRIPTOR, -EIO, "STATUS_MONITOR_NO_DESCRIPTOR"}, 1861 - {STATUS_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT, -EIO, 1862 - "STATUS_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT"}, 1863 - {STATUS_MONITOR_INVALID_DESCRIPTOR_CHECKSUM, -EIO, 1864 - "STATUS_MONITOR_INVALID_DESCRIPTOR_CHECKSUM"}, 1865 - {STATUS_MONITOR_INVALID_STANDARD_TIMING_BLOCK, -EIO, 1866 - "STATUS_MONITOR_INVALID_STANDARD_TIMING_BLOCK"}, 1867 - {STATUS_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED, -EIO, 1868 - "STATUS_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED"}, 1869 - {STATUS_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK, -EIO, 1870 - "STATUS_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK"}, 1871 - {STATUS_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK, -EIO, 1872 - "STATUS_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK"}, 1873 - {STATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA, -EIO, 1874 - "STATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA"}, 1875 - {STATUS_MONITOR_INVALID_DETAILED_TIMING_BLOCK, -EIO, 1876 - "STATUS_MONITOR_INVALID_DETAILED_TIMING_BLOCK"}, 1877 - {STATUS_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER, -EIO, 1878 - "STATUS_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER"}, 1879 - {STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER, -EIO, 1880 - "STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER"}, 1881 - {STATUS_GRAPHICS_INVALID_DISPLAY_ADAPTER, -EIO, 1882 - "STATUS_GRAPHICS_INVALID_DISPLAY_ADAPTER"}, 1883 - {STATUS_GRAPHICS_ADAPTER_WAS_RESET, -EIO, 1884 - "STATUS_GRAPHICS_ADAPTER_WAS_RESET"}, 1885 - {STATUS_GRAPHICS_INVALID_DRIVER_MODEL, -EIO, 1886 - "STATUS_GRAPHICS_INVALID_DRIVER_MODEL"}, 1887 - {STATUS_GRAPHICS_PRESENT_MODE_CHANGED, -EIO, 1888 - "STATUS_GRAPHICS_PRESENT_MODE_CHANGED"}, 1889 - {STATUS_GRAPHICS_PRESENT_OCCLUDED, -EIO, 1890 - "STATUS_GRAPHICS_PRESENT_OCCLUDED"}, 1891 - {STATUS_GRAPHICS_PRESENT_DENIED, -EIO, 1892 - "STATUS_GRAPHICS_PRESENT_DENIED"}, 1893 - {STATUS_GRAPHICS_CANNOTCOLORCONVERT, -EIO, 1894 - "STATUS_GRAPHICS_CANNOTCOLORCONVERT"}, 1895 - {STATUS_GRAPHICS_NO_VIDEO_MEMORY, -EIO, 1896 - "STATUS_GRAPHICS_NO_VIDEO_MEMORY"}, 1897 - {STATUS_GRAPHICS_CANT_LOCK_MEMORY, -EIO, 1898 - "STATUS_GRAPHICS_CANT_LOCK_MEMORY"}, 1899 - {STATUS_GRAPHICS_ALLOCATION_BUSY, -EBUSY, 1900 - "STATUS_GRAPHICS_ALLOCATION_BUSY"}, 1901 - {STATUS_GRAPHICS_TOO_MANY_REFERENCES, -EIO, 1902 - "STATUS_GRAPHICS_TOO_MANY_REFERENCES"}, 1903 - {STATUS_GRAPHICS_TRY_AGAIN_LATER, -EIO, 1904 - "STATUS_GRAPHICS_TRY_AGAIN_LATER"}, 1905 - {STATUS_GRAPHICS_TRY_AGAIN_NOW, -EIO, "STATUS_GRAPHICS_TRY_AGAIN_NOW"}, 1906 - {STATUS_GRAPHICS_ALLOCATION_INVALID, -EIO, 1907 - "STATUS_GRAPHICS_ALLOCATION_INVALID"}, 1908 - {STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE, -EIO, 1909 - "STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE"}, 1910 - {STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED, -EIO, 1911 - "STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED"}, 1912 - {STATUS_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION, -EIO, 1913 - "STATUS_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION"}, 1914 - {STATUS_GRAPHICS_INVALID_ALLOCATION_USAGE, -EIO, 1915 - "STATUS_GRAPHICS_INVALID_ALLOCATION_USAGE"}, 1916 - {STATUS_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION, -EIO, 1917 - "STATUS_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION"}, 1918 - {STATUS_GRAPHICS_ALLOCATION_CLOSED, -EIO, 1919 - "STATUS_GRAPHICS_ALLOCATION_CLOSED"}, 1920 - {STATUS_GRAPHICS_INVALID_ALLOCATION_INSTANCE, -EIO, 1921 - "STATUS_GRAPHICS_INVALID_ALLOCATION_INSTANCE"}, 1922 - {STATUS_GRAPHICS_INVALID_ALLOCATION_HANDLE, -EIO, 1923 - "STATUS_GRAPHICS_INVALID_ALLOCATION_HANDLE"}, 1924 - {STATUS_GRAPHICS_WRONG_ALLOCATION_DEVICE, -EIO, 1925 - "STATUS_GRAPHICS_WRONG_ALLOCATION_DEVICE"}, 1926 - {STATUS_GRAPHICS_ALLOCATION_CONTENT_LOST, -EIO, 1927 - "STATUS_GRAPHICS_ALLOCATION_CONTENT_LOST"}, 1928 - {STATUS_GRAPHICS_GPU_EXCEPTION_ON_DEVICE, -EIO, 1929 - "STATUS_GRAPHICS_GPU_EXCEPTION_ON_DEVICE"}, 1930 - {STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY, -EIO, 1931 - "STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY"}, 1932 - {STATUS_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED, -EIO, 1933 - "STATUS_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED"}, 1934 - {STATUS_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED, -EIO, 1935 - "STATUS_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED"}, 1936 - {STATUS_GRAPHICS_INVALID_VIDPN, -EIO, "STATUS_GRAPHICS_INVALID_VIDPN"}, 1937 - {STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE, -EIO, 1938 - "STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE"}, 1939 - {STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET, -EIO, 1940 - "STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET"}, 1941 - {STATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED, -EIO, 1942 - "STATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED"}, 1943 - {STATUS_GRAPHICS_INVALID_VIDPN_SOURCEMODESET, -EIO, 1944 - "STATUS_GRAPHICS_INVALID_VIDPN_SOURCEMODESET"}, 1945 - {STATUS_GRAPHICS_INVALID_VIDPN_TARGETMODESET, -EIO, 1946 - "STATUS_GRAPHICS_INVALID_VIDPN_TARGETMODESET"}, 1947 - {STATUS_GRAPHICS_INVALID_FREQUENCY, -EIO, 1948 - "STATUS_GRAPHICS_INVALID_FREQUENCY"}, 1949 - {STATUS_GRAPHICS_INVALID_ACTIVE_REGION, -EIO, 1950 - "STATUS_GRAPHICS_INVALID_ACTIVE_REGION"}, 1951 - {STATUS_GRAPHICS_INVALID_TOTAL_REGION, -EIO, 1952 - "STATUS_GRAPHICS_INVALID_TOTAL_REGION"}, 1953 - {STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE, -EIO, 1954 - "STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE"}, 1955 - {STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE, -EIO, 1956 - "STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE"}, 1957 - {STATUS_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET, -EIO, 1958 - "STATUS_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET"}, 1959 - {STATUS_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY, -EIO, 1960 - "STATUS_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY"}, 1961 - {STATUS_GRAPHICS_MODE_ALREADY_IN_MODESET, -EIO, 1962 - "STATUS_GRAPHICS_MODE_ALREADY_IN_MODESET"}, 1963 - {STATUS_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET, -EIO, 1964 - "STATUS_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET"}, 1965 - {STATUS_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET, -EIO, 1966 - "STATUS_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET"}, 1967 - {STATUS_GRAPHICS_SOURCE_ALREADY_IN_SET, -EIO, 1968 - "STATUS_GRAPHICS_SOURCE_ALREADY_IN_SET"}, 1969 - {STATUS_GRAPHICS_TARGET_ALREADY_IN_SET, -EIO, 1970 - "STATUS_GRAPHICS_TARGET_ALREADY_IN_SET"}, 1971 - {STATUS_GRAPHICS_INVALID_VIDPN_PRESENT_PATH, -EIO, 1972 - "STATUS_GRAPHICS_INVALID_VIDPN_PRESENT_PATH"}, 1973 - {STATUS_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY, -EIO, 1974 - "STATUS_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY"}, 1975 - {STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET, -EIO, 1976 - "STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET"}, 1977 - {STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE, -EIO, 1978 - "STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE"}, 1979 - {STATUS_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET, -EIO, 1980 - "STATUS_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET"}, 1981 - {STATUS_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET, -EIO, 1982 - "STATUS_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET"}, 1983 - {STATUS_GRAPHICS_STALE_MODESET, -EIO, "STATUS_GRAPHICS_STALE_MODESET"}, 1984 - {STATUS_GRAPHICS_INVALID_MONITOR_SOURCEMODESET, -EIO, 1985 - "STATUS_GRAPHICS_INVALID_MONITOR_SOURCEMODESET"}, 1986 - {STATUS_GRAPHICS_INVALID_MONITOR_SOURCE_MODE, -EIO, 1987 - "STATUS_GRAPHICS_INVALID_MONITOR_SOURCE_MODE"}, 1988 - {STATUS_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN, -EIO, 1989 - "STATUS_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN"}, 1990 - {STATUS_GRAPHICS_MODE_ID_MUST_BE_UNIQUE, -EIO, 1991 - "STATUS_GRAPHICS_MODE_ID_MUST_BE_UNIQUE"}, 1992 - {STATUS_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION, -EIO, 1993 - "STATUS_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION"}, 1994 - {STATUS_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES, -EIO, 1995 - "STATUS_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES"}, 1996 - {STATUS_GRAPHICS_PATH_NOT_IN_TOPOLOGY, -EIO, 1997 - "STATUS_GRAPHICS_PATH_NOT_IN_TOPOLOGY"}, 1998 - {STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE, -EIO, 1999 - "STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE"}, 2000 - {STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET, -EIO, 2001 - "STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET"}, 2002 - {STATUS_GRAPHICS_INVALID_MONITORDESCRIPTORSET, -EIO, 2003 - "STATUS_GRAPHICS_INVALID_MONITORDESCRIPTORSET"}, 2004 - {STATUS_GRAPHICS_INVALID_MONITORDESCRIPTOR, -EIO, 2005 - "STATUS_GRAPHICS_INVALID_MONITORDESCRIPTOR"}, 2006 - {STATUS_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET, -EIO, 2007 - "STATUS_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET"}, 2008 - {STATUS_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET, -EIO, 2009 - "STATUS_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET"}, 2010 - {STATUS_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE, -EIO, 2011 - "STATUS_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE"}, 2012 - {STATUS_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE, -EIO, 2013 - "STATUS_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE"}, 2014 - {STATUS_GRAPHICS_RESOURCES_NOT_RELATED, -EIO, 2015 - "STATUS_GRAPHICS_RESOURCES_NOT_RELATED"}, 2016 - {STATUS_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE, -EIO, 2017 - "STATUS_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE"}, 2018 - {STATUS_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE, -EIO, 2019 - "STATUS_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE"}, 2020 - {STATUS_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET, -EIO, 2021 - "STATUS_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET"}, 2022 - {STATUS_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER, -EIO, 2023 - "STATUS_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER"}, 2024 - {STATUS_GRAPHICS_NO_VIDPNMGR, -EIO, "STATUS_GRAPHICS_NO_VIDPNMGR"}, 2025 - {STATUS_GRAPHICS_NO_ACTIVE_VIDPN, -EIO, 2026 - "STATUS_GRAPHICS_NO_ACTIVE_VIDPN"}, 2027 - {STATUS_GRAPHICS_STALE_VIDPN_TOPOLOGY, -EIO, 2028 - "STATUS_GRAPHICS_STALE_VIDPN_TOPOLOGY"}, 2029 - {STATUS_GRAPHICS_MONITOR_NOT_CONNECTED, -EIO, 2030 - "STATUS_GRAPHICS_MONITOR_NOT_CONNECTED"}, 2031 - {STATUS_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY, -EIO, 2032 - "STATUS_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY"}, 2033 - {STATUS_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE, -EIO, 2034 - "STATUS_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE"}, 2035 - {STATUS_GRAPHICS_INVALID_VISIBLEREGION_SIZE, -EIO, 2036 - "STATUS_GRAPHICS_INVALID_VISIBLEREGION_SIZE"}, 2037 - {STATUS_GRAPHICS_INVALID_STRIDE, -EIO, 2038 - "STATUS_GRAPHICS_INVALID_STRIDE"}, 2039 - {STATUS_GRAPHICS_INVALID_PIXELFORMAT, -EIO, 2040 - "STATUS_GRAPHICS_INVALID_PIXELFORMAT"}, 2041 - {STATUS_GRAPHICS_INVALID_COLORBASIS, -EIO, 2042 - "STATUS_GRAPHICS_INVALID_COLORBASIS"}, 2043 - {STATUS_GRAPHICS_INVALID_PIXELVALUEACCESSMODE, -EIO, 2044 - "STATUS_GRAPHICS_INVALID_PIXELVALUEACCESSMODE"}, 2045 - {STATUS_GRAPHICS_TARGET_NOT_IN_TOPOLOGY, -EIO, 2046 - "STATUS_GRAPHICS_TARGET_NOT_IN_TOPOLOGY"}, 2047 - {STATUS_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT, -EIO, 2048 - "STATUS_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT"}, 2049 - {STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE, -EIO, 2050 - "STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE"}, 2051 - {STATUS_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN, -EIO, 2052 - "STATUS_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN"}, 2053 - {STATUS_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL, -EIO, 2054 - "STATUS_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL"}, 2055 - {STATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION, -EIO, 2056 - "STATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION"}, 2057 - {STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED, 2058 - -EIO, 2059 - "STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED"}, 2060 - {STATUS_GRAPHICS_INVALID_GAMMA_RAMP, -EIO, 2061 - "STATUS_GRAPHICS_INVALID_GAMMA_RAMP"}, 2062 - {STATUS_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED, -EIO, 2063 - "STATUS_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED"}, 2064 - {STATUS_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED, -EIO, 2065 - "STATUS_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED"}, 2066 - {STATUS_GRAPHICS_MODE_NOT_IN_MODESET, -EIO, 2067 - "STATUS_GRAPHICS_MODE_NOT_IN_MODESET"}, 2068 - {STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON, -EIO, 2069 - "STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON"}, 2070 - {STATUS_GRAPHICS_INVALID_PATH_CONTENT_TYPE, -EIO, 2071 - "STATUS_GRAPHICS_INVALID_PATH_CONTENT_TYPE"}, 2072 - {STATUS_GRAPHICS_INVALID_COPYPROTECTION_TYPE, -EIO, 2073 - "STATUS_GRAPHICS_INVALID_COPYPROTECTION_TYPE"}, 2074 - {STATUS_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS, -EIO, 2075 - "STATUS_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS"}, 2076 - {STATUS_GRAPHICS_INVALID_SCANLINE_ORDERING, -EIO, 2077 - "STATUS_GRAPHICS_INVALID_SCANLINE_ORDERING"}, 2078 - {STATUS_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED, -EIO, 2079 - "STATUS_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED"}, 2080 - {STATUS_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS, -EIO, 2081 - "STATUS_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS"}, 2082 - {STATUS_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT, -EIO, 2083 - "STATUS_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT"}, 2084 - {STATUS_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM, -EIO, 2085 - "STATUS_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM"}, 2086 - {STATUS_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN, -EIO, 2087 - "STATUS_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN"}, 2088 - {STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT, -EIO, 2089 - "STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT"}, 2090 - {STATUS_GRAPHICS_MAX_NUM_PATHS_REACHED, -EIO, 2091 - "STATUS_GRAPHICS_MAX_NUM_PATHS_REACHED"}, 2092 - {STATUS_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION, -EIO, 2093 - "STATUS_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION"}, 2094 - {STATUS_GRAPHICS_INVALID_CLIENT_TYPE, -EIO, 2095 - "STATUS_GRAPHICS_INVALID_CLIENT_TYPE"}, 2096 - {STATUS_GRAPHICS_CLIENTVIDPN_NOT_SET, -EIO, 2097 - "STATUS_GRAPHICS_CLIENTVIDPN_NOT_SET"}, 2098 - {STATUS_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED, -EIO, 2099 - "STATUS_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED"}, 2100 - {STATUS_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED, -EIO, 2101 - "STATUS_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED"}, 2102 - {STATUS_GRAPHICS_NOT_A_LINKED_ADAPTER, -EIO, 2103 - "STATUS_GRAPHICS_NOT_A_LINKED_ADAPTER"}, 2104 - {STATUS_GRAPHICS_LEADLINK_NOT_ENUMERATED, -EIO, 2105 - "STATUS_GRAPHICS_LEADLINK_NOT_ENUMERATED"}, 2106 - {STATUS_GRAPHICS_CHAINLINKS_NOT_ENUMERATED, -EIO, 2107 - "STATUS_GRAPHICS_CHAINLINKS_NOT_ENUMERATED"}, 2108 - {STATUS_GRAPHICS_ADAPTER_CHAIN_NOT_READY, -EIO, 2109 - "STATUS_GRAPHICS_ADAPTER_CHAIN_NOT_READY"}, 2110 - {STATUS_GRAPHICS_CHAINLINKS_NOT_STARTED, -EIO, 2111 - "STATUS_GRAPHICS_CHAINLINKS_NOT_STARTED"}, 2112 - {STATUS_GRAPHICS_CHAINLINKS_NOT_POWERED_ON, -EIO, 2113 - "STATUS_GRAPHICS_CHAINLINKS_NOT_POWERED_ON"}, 2114 - {STATUS_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE, -EIO, 2115 - "STATUS_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE"}, 2116 - {STATUS_GRAPHICS_NOT_POST_DEVICE_DRIVER, -EIO, 2117 - "STATUS_GRAPHICS_NOT_POST_DEVICE_DRIVER"}, 2118 - {STATUS_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED, -EIO, 2119 - "STATUS_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED"}, 2120 - {STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS, 2121 - -EIO, 2122 - "STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS"}, 2123 - {STATUS_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST, -EIO, 2124 - "STATUS_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST"}, 2125 - {STATUS_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR, -EIO, 2126 - "STATUS_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR"}, 2127 - {STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS, -EIO, 2128 - "STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS"}, 2129 - {STATUS_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED, -EIO, 2130 - "STATUS_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED"}, 2131 - {STATUS_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST, -EIO, 2132 - "STATUS_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST"}, 2133 - {STATUS_GRAPHICS_OPM_NOT_SUPPORTED, -EIO, 2134 - "STATUS_GRAPHICS_OPM_NOT_SUPPORTED"}, 2135 - {STATUS_GRAPHICS_COPP_NOT_SUPPORTED, -EIO, 2136 - "STATUS_GRAPHICS_COPP_NOT_SUPPORTED"}, 2137 - {STATUS_GRAPHICS_UAB_NOT_SUPPORTED, -EIO, 2138 - "STATUS_GRAPHICS_UAB_NOT_SUPPORTED"}, 2139 - {STATUS_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS, -EIO, 2140 - "STATUS_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS"}, 2141 - {STATUS_GRAPHICS_OPM_PARAMETER_ARRAY_TOO_SMALL, -EIO, 2142 - "STATUS_GRAPHICS_OPM_PARAMETER_ARRAY_TOO_SMALL"}, 2143 - {STATUS_GRAPHICS_OPM_NO_PROTECTED_OUTPUTS_EXIST, -EIO, 2144 - "STATUS_GRAPHICS_OPM_NO_PROTECTED_OUTPUTS_EXIST"}, 2145 - {STATUS_GRAPHICS_PVP_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME, -EIO, 2146 - "STATUS_GRAPHICS_PVP_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME"}, 2147 - {STATUS_GRAPHICS_PVP_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP, -EIO, 2148 - "STATUS_GRAPHICS_PVP_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP"}, 2149 - {STATUS_GRAPHICS_PVP_MIRRORING_DEVICES_NOT_SUPPORTED, -EIO, 2150 - "STATUS_GRAPHICS_PVP_MIRRORING_DEVICES_NOT_SUPPORTED"}, 2151 - {STATUS_GRAPHICS_OPM_INVALID_POINTER, -EIO, 2152 - "STATUS_GRAPHICS_OPM_INVALID_POINTER"}, 2153 - {STATUS_GRAPHICS_OPM_INTERNAL_ERROR, -EIO, 2154 - "STATUS_GRAPHICS_OPM_INTERNAL_ERROR"}, 2155 - {STATUS_GRAPHICS_OPM_INVALID_HANDLE, -EIO, 2156 - "STATUS_GRAPHICS_OPM_INVALID_HANDLE"}, 2157 - {STATUS_GRAPHICS_PVP_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE, -EIO, 2158 - "STATUS_GRAPHICS_PVP_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE"}, 2159 - {STATUS_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH, -EIO, 2160 - "STATUS_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH"}, 2161 - {STATUS_GRAPHICS_OPM_SPANNING_MODE_ENABLED, -EIO, 2162 - "STATUS_GRAPHICS_OPM_SPANNING_MODE_ENABLED"}, 2163 - {STATUS_GRAPHICS_OPM_THEATER_MODE_ENABLED, -EIO, 2164 - "STATUS_GRAPHICS_OPM_THEATER_MODE_ENABLED"}, 2165 - {STATUS_GRAPHICS_PVP_HFS_FAILED, -EIO, 2166 - "STATUS_GRAPHICS_PVP_HFS_FAILED"}, 2167 - {STATUS_GRAPHICS_OPM_INVALID_SRM, -EIO, 2168 - "STATUS_GRAPHICS_OPM_INVALID_SRM"}, 2169 - {STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP, -EIO, 2170 - "STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP"}, 2171 - {STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP, -EIO, 2172 - "STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP"}, 2173 - {STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA, -EIO, 2174 - "STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA"}, 2175 - {STATUS_GRAPHICS_OPM_HDCP_SRM_NEVER_SET, -EIO, 2176 - "STATUS_GRAPHICS_OPM_HDCP_SRM_NEVER_SET"}, 2177 - {STATUS_GRAPHICS_OPM_RESOLUTION_TOO_HIGH, -EIO, 2178 - "STATUS_GRAPHICS_OPM_RESOLUTION_TOO_HIGH"}, 2179 - {STATUS_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE, -EIO, 2180 - "STATUS_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE"}, 2181 - {STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_NO_LONGER_EXISTS, -EIO, 2182 - "STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_NO_LONGER_EXISTS"}, 2183 - {STATUS_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS, -EIO, 2184 - "STATUS_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS"}, 2185 - {STATUS_GRAPHICS_I2C_NOT_SUPPORTED, -EIO, 2186 - "STATUS_GRAPHICS_I2C_NOT_SUPPORTED"}, 2187 - {STATUS_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST, -EIO, 2188 - "STATUS_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST"}, 2189 - {STATUS_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA, -EIO, 2190 - "STATUS_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA"}, 2191 - {STATUS_GRAPHICS_I2C_ERROR_RECEIVING_DATA, -EIO, 2192 - "STATUS_GRAPHICS_I2C_ERROR_RECEIVING_DATA"}, 2193 - {STATUS_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED, -EIO, 2194 - "STATUS_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED"}, 2195 - {STATUS_GRAPHICS_DDCCI_INVALID_DATA, -EIO, 2196 - "STATUS_GRAPHICS_DDCCI_INVALID_DATA"}, 2197 - {STATUS_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE, 2198 - -EIO, 2199 - "STATUS_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE"}, 2200 - {STATUS_GRAPHICS_DDCCI_INVALID_CAPABILITIES_STRING, -EIO, 2201 - "STATUS_GRAPHICS_DDCCI_INVALID_CAPABILITIES_STRING"}, 2202 - {STATUS_GRAPHICS_MCA_INTERNAL_ERROR, -EIO, 2203 - "STATUS_GRAPHICS_MCA_INTERNAL_ERROR"}, 2204 - {STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND, -EIO, 2205 - "STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND"}, 2206 - {STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH, -EIO, 2207 - "STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH"}, 2208 - {STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM, -EIO, 2209 - "STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM"}, 2210 - {STATUS_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE, -EIO, 2211 - "STATUS_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE"}, 2212 - {STATUS_GRAPHICS_MONITOR_NO_LONGER_EXISTS, -EIO, 2213 - "STATUS_GRAPHICS_MONITOR_NO_LONGER_EXISTS"}, 2214 - {STATUS_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED, -EIO, 2215 - "STATUS_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED"}, 2216 - {STATUS_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME, -EIO, 2217 - "STATUS_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME"}, 2218 - {STATUS_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP, -EIO, 2219 - "STATUS_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP"}, 2220 - {STATUS_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED, -EIO, 2221 - "STATUS_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED"}, 2222 - {STATUS_GRAPHICS_INVALID_POINTER, -EIO, 2223 - "STATUS_GRAPHICS_INVALID_POINTER"}, 2224 - {STATUS_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE, -EIO, 2225 - "STATUS_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE"}, 2226 - {STATUS_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL, -EIO, 2227 - "STATUS_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL"}, 2228 - {STATUS_GRAPHICS_INTERNAL_ERROR, -EIO, 2229 - "STATUS_GRAPHICS_INTERNAL_ERROR"}, 2230 - {STATUS_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS, -EIO, 2231 - "STATUS_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS"}, 2232 - {STATUS_FVE_LOCKED_VOLUME, -EIO, "STATUS_FVE_LOCKED_VOLUME"}, 2233 - {STATUS_FVE_NOT_ENCRYPTED, -EIO, "STATUS_FVE_NOT_ENCRYPTED"}, 2234 - {STATUS_FVE_BAD_INFORMATION, -EIO, "STATUS_FVE_BAD_INFORMATION"}, 2235 - {STATUS_FVE_TOO_SMALL, -EIO, "STATUS_FVE_TOO_SMALL"}, 2236 - {STATUS_FVE_FAILED_WRONG_FS, -EIO, "STATUS_FVE_FAILED_WRONG_FS"}, 2237 - {STATUS_FVE_FAILED_BAD_FS, -EIO, "STATUS_FVE_FAILED_BAD_FS"}, 2238 - {STATUS_FVE_FS_NOT_EXTENDED, -EIO, "STATUS_FVE_FS_NOT_EXTENDED"}, 2239 - {STATUS_FVE_FS_MOUNTED, -EIO, "STATUS_FVE_FS_MOUNTED"}, 2240 - {STATUS_FVE_NO_LICENSE, -EIO, "STATUS_FVE_NO_LICENSE"}, 2241 - {STATUS_FVE_ACTION_NOT_ALLOWED, -EIO, "STATUS_FVE_ACTION_NOT_ALLOWED"}, 2242 - {STATUS_FVE_BAD_DATA, -EIO, "STATUS_FVE_BAD_DATA"}, 2243 - {STATUS_FVE_VOLUME_NOT_BOUND, -EIO, "STATUS_FVE_VOLUME_NOT_BOUND"}, 2244 - {STATUS_FVE_NOT_DATA_VOLUME, -EIO, "STATUS_FVE_NOT_DATA_VOLUME"}, 2245 - {STATUS_FVE_CONV_READ_ERROR, -EIO, "STATUS_FVE_CONV_READ_ERROR"}, 2246 - {STATUS_FVE_CONV_WRITE_ERROR, -EIO, "STATUS_FVE_CONV_WRITE_ERROR"}, 2247 - {STATUS_FVE_OVERLAPPED_UPDATE, -EIO, "STATUS_FVE_OVERLAPPED_UPDATE"}, 2248 - {STATUS_FVE_FAILED_SECTOR_SIZE, -EIO, "STATUS_FVE_FAILED_SECTOR_SIZE"}, 2249 - {STATUS_FVE_FAILED_AUTHENTICATION, -EIO, 2250 - "STATUS_FVE_FAILED_AUTHENTICATION"}, 2251 - {STATUS_FVE_NOT_OS_VOLUME, -EIO, "STATUS_FVE_NOT_OS_VOLUME"}, 2252 - {STATUS_FVE_KEYFILE_NOT_FOUND, -EIO, "STATUS_FVE_KEYFILE_NOT_FOUND"}, 2253 - {STATUS_FVE_KEYFILE_INVALID, -EIO, "STATUS_FVE_KEYFILE_INVALID"}, 2254 - {STATUS_FVE_KEYFILE_NO_VMK, -EIO, "STATUS_FVE_KEYFILE_NO_VMK"}, 2255 - {STATUS_FVE_TPM_DISABLED, -EIO, "STATUS_FVE_TPM_DISABLED"}, 2256 - {STATUS_FVE_TPM_SRK_AUTH_NOT_ZERO, -EIO, 2257 - "STATUS_FVE_TPM_SRK_AUTH_NOT_ZERO"}, 2258 - {STATUS_FVE_TPM_INVALID_PCR, -EIO, "STATUS_FVE_TPM_INVALID_PCR"}, 2259 - {STATUS_FVE_TPM_NO_VMK, -EIO, "STATUS_FVE_TPM_NO_VMK"}, 2260 - {STATUS_FVE_PIN_INVALID, -EIO, "STATUS_FVE_PIN_INVALID"}, 2261 - {STATUS_FVE_AUTH_INVALID_APPLICATION, -EIO, 2262 - "STATUS_FVE_AUTH_INVALID_APPLICATION"}, 2263 - {STATUS_FVE_AUTH_INVALID_CONFIG, -EIO, 2264 - "STATUS_FVE_AUTH_INVALID_CONFIG"}, 2265 - {STATUS_FVE_DEBUGGER_ENABLED, -EIO, "STATUS_FVE_DEBUGGER_ENABLED"}, 2266 - {STATUS_FVE_DRY_RUN_FAILED, -EIO, "STATUS_FVE_DRY_RUN_FAILED"}, 2267 - {STATUS_FVE_BAD_METADATA_POINTER, -EIO, 2268 - "STATUS_FVE_BAD_METADATA_POINTER"}, 2269 - {STATUS_FVE_OLD_METADATA_COPY, -EIO, "STATUS_FVE_OLD_METADATA_COPY"}, 2270 - {STATUS_FVE_REBOOT_REQUIRED, -EIO, "STATUS_FVE_REBOOT_REQUIRED"}, 2271 - {STATUS_FVE_RAW_ACCESS, -EIO, "STATUS_FVE_RAW_ACCESS"}, 2272 - {STATUS_FVE_RAW_BLOCKED, -EIO, "STATUS_FVE_RAW_BLOCKED"}, 2273 - {STATUS_FWP_CALLOUT_NOT_FOUND, -EIO, "STATUS_FWP_CALLOUT_NOT_FOUND"}, 2274 - {STATUS_FWP_CONDITION_NOT_FOUND, -EIO, 2275 - "STATUS_FWP_CONDITION_NOT_FOUND"}, 2276 - {STATUS_FWP_FILTER_NOT_FOUND, -EIO, "STATUS_FWP_FILTER_NOT_FOUND"}, 2277 - {STATUS_FWP_LAYER_NOT_FOUND, -EIO, "STATUS_FWP_LAYER_NOT_FOUND"}, 2278 - {STATUS_FWP_PROVIDER_NOT_FOUND, -EIO, "STATUS_FWP_PROVIDER_NOT_FOUND"}, 2279 - {STATUS_FWP_PROVIDER_CONTEXT_NOT_FOUND, -EIO, 2280 - "STATUS_FWP_PROVIDER_CONTEXT_NOT_FOUND"}, 2281 - {STATUS_FWP_SUBLAYER_NOT_FOUND, -EIO, "STATUS_FWP_SUBLAYER_NOT_FOUND"}, 2282 - {STATUS_FWP_NOT_FOUND, -EIO, "STATUS_FWP_NOT_FOUND"}, 2283 - {STATUS_FWP_ALREADY_EXISTS, -EIO, "STATUS_FWP_ALREADY_EXISTS"}, 2284 - {STATUS_FWP_IN_USE, -EIO, "STATUS_FWP_IN_USE"}, 2285 - {STATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS, -EIO, 2286 - "STATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS"}, 2287 - {STATUS_FWP_WRONG_SESSION, -EIO, "STATUS_FWP_WRONG_SESSION"}, 2288 - {STATUS_FWP_NO_TXN_IN_PROGRESS, -EIO, "STATUS_FWP_NO_TXN_IN_PROGRESS"}, 2289 - {STATUS_FWP_TXN_IN_PROGRESS, -EIO, "STATUS_FWP_TXN_IN_PROGRESS"}, 2290 - {STATUS_FWP_TXN_ABORTED, -EIO, "STATUS_FWP_TXN_ABORTED"}, 2291 - {STATUS_FWP_SESSION_ABORTED, -EIO, "STATUS_FWP_SESSION_ABORTED"}, 2292 - {STATUS_FWP_INCOMPATIBLE_TXN, -EIO, "STATUS_FWP_INCOMPATIBLE_TXN"}, 2293 - {STATUS_FWP_TIMEOUT, -ETIMEDOUT, "STATUS_FWP_TIMEOUT"}, 2294 - {STATUS_FWP_NET_EVENTS_DISABLED, -EIO, 2295 - "STATUS_FWP_NET_EVENTS_DISABLED"}, 2296 - {STATUS_FWP_INCOMPATIBLE_LAYER, -EIO, "STATUS_FWP_INCOMPATIBLE_LAYER"}, 2297 - {STATUS_FWP_KM_CLIENTS_ONLY, -EIO, "STATUS_FWP_KM_CLIENTS_ONLY"}, 2298 - {STATUS_FWP_LIFETIME_MISMATCH, -EIO, "STATUS_FWP_LIFETIME_MISMATCH"}, 2299 - {STATUS_FWP_BUILTIN_OBJECT, -EIO, "STATUS_FWP_BUILTIN_OBJECT"}, 2300 - {STATUS_FWP_TOO_MANY_BOOTTIME_FILTERS, -EIO, 2301 - "STATUS_FWP_TOO_MANY_BOOTTIME_FILTERS or STATUS_FWP_TOO_MANY_CALLOUTS"}, 2302 - {STATUS_FWP_TOO_MANY_CALLOUTS, -EIO, 2303 - "STATUS_FWP_TOO_MANY_BOOTTIME_FILTERS or STATUS_FWP_TOO_MANY_CALLOUTS"}, 2304 - {STATUS_FWP_NOTIFICATION_DROPPED, -EIO, 2305 - "STATUS_FWP_NOTIFICATION_DROPPED"}, 2306 - {STATUS_FWP_TRAFFIC_MISMATCH, -EIO, "STATUS_FWP_TRAFFIC_MISMATCH"}, 2307 - {STATUS_FWP_INCOMPATIBLE_SA_STATE, -EIO, 2308 - "STATUS_FWP_INCOMPATIBLE_SA_STATE"}, 2309 - {STATUS_FWP_NULL_POINTER, -EIO, "STATUS_FWP_NULL_POINTER"}, 2310 - {STATUS_FWP_INVALID_ENUMERATOR, -EIO, "STATUS_FWP_INVALID_ENUMERATOR"}, 2311 - {STATUS_FWP_INVALID_FLAGS, -EIO, "STATUS_FWP_INVALID_FLAGS"}, 2312 - {STATUS_FWP_INVALID_NET_MASK, -EIO, "STATUS_FWP_INVALID_NET_MASK"}, 2313 - {STATUS_FWP_INVALID_RANGE, -EIO, "STATUS_FWP_INVALID_RANGE"}, 2314 - {STATUS_FWP_INVALID_INTERVAL, -EIO, "STATUS_FWP_INVALID_INTERVAL"}, 2315 - {STATUS_FWP_ZERO_LENGTH_ARRAY, -EIO, "STATUS_FWP_ZERO_LENGTH_ARRAY"}, 2316 - {STATUS_FWP_NULL_DISPLAY_NAME, -EIO, "STATUS_FWP_NULL_DISPLAY_NAME"}, 2317 - {STATUS_FWP_INVALID_ACTION_TYPE, -EIO, 2318 - "STATUS_FWP_INVALID_ACTION_TYPE"}, 2319 - {STATUS_FWP_INVALID_WEIGHT, -EIO, "STATUS_FWP_INVALID_WEIGHT"}, 2320 - {STATUS_FWP_MATCH_TYPE_MISMATCH, -EIO, 2321 - "STATUS_FWP_MATCH_TYPE_MISMATCH"}, 2322 - {STATUS_FWP_TYPE_MISMATCH, -EIO, "STATUS_FWP_TYPE_MISMATCH"}, 2323 - {STATUS_FWP_OUT_OF_BOUNDS, -EIO, "STATUS_FWP_OUT_OF_BOUNDS"}, 2324 - {STATUS_FWP_RESERVED, -EIO, "STATUS_FWP_RESERVED"}, 2325 - {STATUS_FWP_DUPLICATE_CONDITION, -EIO, 2326 - "STATUS_FWP_DUPLICATE_CONDITION"}, 2327 - {STATUS_FWP_DUPLICATE_KEYMOD, -EIO, "STATUS_FWP_DUPLICATE_KEYMOD"}, 2328 - {STATUS_FWP_ACTION_INCOMPATIBLE_WITH_LAYER, -EIO, 2329 - "STATUS_FWP_ACTION_INCOMPATIBLE_WITH_LAYER"}, 2330 - {STATUS_FWP_ACTION_INCOMPATIBLE_WITH_SUBLAYER, -EIO, 2331 - "STATUS_FWP_ACTION_INCOMPATIBLE_WITH_SUBLAYER"}, 2332 - {STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_LAYER, -EIO, 2333 - "STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_LAYER"}, 2334 - {STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_CALLOUT, -EIO, 2335 - "STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_CALLOUT"}, 2336 - {STATUS_FWP_INCOMPATIBLE_AUTH_METHOD, -EIO, 2337 - "STATUS_FWP_INCOMPATIBLE_AUTH_METHOD"}, 2338 - {STATUS_FWP_INCOMPATIBLE_DH_GROUP, -EIO, 2339 - "STATUS_FWP_INCOMPATIBLE_DH_GROUP"}, 2340 - {STATUS_FWP_EM_NOT_SUPPORTED, -EOPNOTSUPP, 2341 - "STATUS_FWP_EM_NOT_SUPPORTED"}, 2342 - {STATUS_FWP_NEVER_MATCH, -EIO, "STATUS_FWP_NEVER_MATCH"}, 2343 - {STATUS_FWP_PROVIDER_CONTEXT_MISMATCH, -EIO, 2344 - "STATUS_FWP_PROVIDER_CONTEXT_MISMATCH"}, 2345 - {STATUS_FWP_INVALID_PARAMETER, -EIO, "STATUS_FWP_INVALID_PARAMETER"}, 2346 - {STATUS_FWP_TOO_MANY_SUBLAYERS, -EIO, "STATUS_FWP_TOO_MANY_SUBLAYERS"}, 2347 - {STATUS_FWP_CALLOUT_NOTIFICATION_FAILED, -EIO, 2348 - "STATUS_FWP_CALLOUT_NOTIFICATION_FAILED"}, 2349 - {STATUS_FWP_INCOMPATIBLE_AUTH_CONFIG, -EIO, 2350 - "STATUS_FWP_INCOMPATIBLE_AUTH_CONFIG"}, 2351 - {STATUS_FWP_INCOMPATIBLE_CIPHER_CONFIG, -EIO, 2352 - "STATUS_FWP_INCOMPATIBLE_CIPHER_CONFIG"}, 2353 - {STATUS_FWP_TCPIP_NOT_READY, -EIO, "STATUS_FWP_TCPIP_NOT_READY"}, 2354 - {STATUS_FWP_INJECT_HANDLE_CLOSING, -EIO, 2355 - "STATUS_FWP_INJECT_HANDLE_CLOSING"}, 2356 - {STATUS_FWP_INJECT_HANDLE_STALE, -EIO, 2357 - "STATUS_FWP_INJECT_HANDLE_STALE"}, 2358 - {STATUS_FWP_CANNOT_PEND, -EIO, "STATUS_FWP_CANNOT_PEND"}, 2359 - {STATUS_NDIS_CLOSING, -EIO, "STATUS_NDIS_CLOSING"}, 2360 - {STATUS_NDIS_BAD_VERSION, -EIO, "STATUS_NDIS_BAD_VERSION"}, 2361 - {STATUS_NDIS_BAD_CHARACTERISTICS, -EIO, 2362 - "STATUS_NDIS_BAD_CHARACTERISTICS"}, 2363 - {STATUS_NDIS_ADAPTER_NOT_FOUND, -EIO, "STATUS_NDIS_ADAPTER_NOT_FOUND"}, 2364 - {STATUS_NDIS_OPEN_FAILED, -EIO, "STATUS_NDIS_OPEN_FAILED"}, 2365 - {STATUS_NDIS_DEVICE_FAILED, -EIO, "STATUS_NDIS_DEVICE_FAILED"}, 2366 - {STATUS_NDIS_MULTICAST_FULL, -EIO, "STATUS_NDIS_MULTICAST_FULL"}, 2367 - {STATUS_NDIS_MULTICAST_EXISTS, -EIO, "STATUS_NDIS_MULTICAST_EXISTS"}, 2368 - {STATUS_NDIS_MULTICAST_NOT_FOUND, -EIO, 2369 - "STATUS_NDIS_MULTICAST_NOT_FOUND"}, 2370 - {STATUS_NDIS_REQUEST_ABORTED, -EIO, "STATUS_NDIS_REQUEST_ABORTED"}, 2371 - {STATUS_NDIS_RESET_IN_PROGRESS, -EIO, "STATUS_NDIS_RESET_IN_PROGRESS"}, 2372 - {STATUS_NDIS_INVALID_PACKET, -EIO, "STATUS_NDIS_INVALID_PACKET"}, 2373 - {STATUS_NDIS_INVALID_DEVICE_REQUEST, -EIO, 2374 - "STATUS_NDIS_INVALID_DEVICE_REQUEST"}, 2375 - {STATUS_NDIS_ADAPTER_NOT_READY, -EIO, "STATUS_NDIS_ADAPTER_NOT_READY"}, 2376 - {STATUS_NDIS_INVALID_LENGTH, -EIO, "STATUS_NDIS_INVALID_LENGTH"}, 2377 - {STATUS_NDIS_INVALID_DATA, -EIO, "STATUS_NDIS_INVALID_DATA"}, 2378 - {STATUS_NDIS_BUFFER_TOO_SHORT, -ENOBUFS, 2379 - "STATUS_NDIS_BUFFER_TOO_SHORT"}, 2380 - {STATUS_NDIS_INVALID_OID, -EIO, "STATUS_NDIS_INVALID_OID"}, 2381 - {STATUS_NDIS_ADAPTER_REMOVED, -EIO, "STATUS_NDIS_ADAPTER_REMOVED"}, 2382 - {STATUS_NDIS_UNSUPPORTED_MEDIA, -EIO, "STATUS_NDIS_UNSUPPORTED_MEDIA"}, 2383 - {STATUS_NDIS_GROUP_ADDRESS_IN_USE, -EIO, 2384 - "STATUS_NDIS_GROUP_ADDRESS_IN_USE"}, 2385 - {STATUS_NDIS_FILE_NOT_FOUND, -EIO, "STATUS_NDIS_FILE_NOT_FOUND"}, 2386 - {STATUS_NDIS_ERROR_READING_FILE, -EIO, 2387 - "STATUS_NDIS_ERROR_READING_FILE"}, 2388 - {STATUS_NDIS_ALREADY_MAPPED, -EIO, "STATUS_NDIS_ALREADY_MAPPED"}, 2389 - {STATUS_NDIS_RESOURCE_CONFLICT, -EIO, "STATUS_NDIS_RESOURCE_CONFLICT"}, 2390 - {STATUS_NDIS_MEDIA_DISCONNECTED, -EIO, 2391 - "STATUS_NDIS_MEDIA_DISCONNECTED"}, 2392 - {STATUS_NDIS_INVALID_ADDRESS, -EIO, "STATUS_NDIS_INVALID_ADDRESS"}, 2393 - {STATUS_NDIS_PAUSED, -EIO, "STATUS_NDIS_PAUSED"}, 2394 - {STATUS_NDIS_INTERFACE_NOT_FOUND, -EIO, 2395 - "STATUS_NDIS_INTERFACE_NOT_FOUND"}, 2396 - {STATUS_NDIS_UNSUPPORTED_REVISION, -EIO, 2397 - "STATUS_NDIS_UNSUPPORTED_REVISION"}, 2398 - {STATUS_NDIS_INVALID_PORT, -EIO, "STATUS_NDIS_INVALID_PORT"}, 2399 - {STATUS_NDIS_INVALID_PORT_STATE, -EIO, 2400 - "STATUS_NDIS_INVALID_PORT_STATE"}, 2401 - {STATUS_NDIS_LOW_POWER_STATE, -EIO, "STATUS_NDIS_LOW_POWER_STATE"}, 2402 - {STATUS_NDIS_NOT_SUPPORTED, -ENOSYS, "STATUS_NDIS_NOT_SUPPORTED"}, 2403 - {STATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED, -EIO, 2404 - "STATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED"}, 2405 - {STATUS_NDIS_DOT11_MEDIA_IN_USE, -EIO, 2406 - "STATUS_NDIS_DOT11_MEDIA_IN_USE"}, 2407 - {STATUS_NDIS_DOT11_POWER_STATE_INVALID, -EIO, 2408 - "STATUS_NDIS_DOT11_POWER_STATE_INVALID"}, 2409 - {STATUS_IPSEC_BAD_SPI, -EIO, "STATUS_IPSEC_BAD_SPI"}, 2410 - {STATUS_IPSEC_SA_LIFETIME_EXPIRED, -EIO, 2411 - "STATUS_IPSEC_SA_LIFETIME_EXPIRED"}, 2412 - {STATUS_IPSEC_WRONG_SA, -EIO, "STATUS_IPSEC_WRONG_SA"}, 2413 - {STATUS_IPSEC_REPLAY_CHECK_FAILED, -EIO, 2414 - "STATUS_IPSEC_REPLAY_CHECK_FAILED"}, 2415 - {STATUS_IPSEC_INVALID_PACKET, -EIO, "STATUS_IPSEC_INVALID_PACKET"}, 2416 - {STATUS_IPSEC_INTEGRITY_CHECK_FAILED, -EIO, 2417 - "STATUS_IPSEC_INTEGRITY_CHECK_FAILED"}, 2418 - {STATUS_IPSEC_CLEAR_TEXT_DROP, -EIO, "STATUS_IPSEC_CLEAR_TEXT_DROP"}, 2419 - {STATUS_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP, -EIO, 2420 - "STATUS_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP"}, 26 + /* 27 + * Automatically generated by the `gen_smb2_mapping` script, 28 + * sorted by NT status code (cpu-endian, ascending) 29 + */ 30 + #include "smb2_mapping_table.c" 2421 31 }; 32 + 33 + static __always_inline int cmp_smb2_status(const void *_key, const void *_pivot) 34 + { 35 + __u32 key = *(__u32 *)_key; 36 + const struct status_to_posix_error *pivot = _pivot; 37 + 38 + if (key < pivot->smb2_status) 39 + return -1; 40 + if (key > pivot->smb2_status) 41 + return 1; 42 + return 0; 43 + } 44 + 45 + static const struct status_to_posix_error *smb2_get_err_map(__u32 smb2_status) 46 + { 47 + const struct status_to_posix_error *err_map; 48 + 49 + err_map = __inline_bsearch(&smb2_status, smb2_error_map_table, 50 + ARRAY_SIZE(smb2_error_map_table), 51 + sizeof(struct status_to_posix_error), 52 + cmp_smb2_status); 53 + return err_map; 54 + } 2422 55 2423 56 int 2424 57 map_smb2_to_linux_error(char *buf, bool log_err) 2425 58 { 2426 59 struct smb2_hdr *shdr = (struct smb2_hdr *)buf; 2427 - unsigned int i; 2428 60 int rc = -EIO; 2429 61 __le32 smb2err = shdr->Status; 62 + const struct status_to_posix_error *err_map; 2430 63 2431 64 if (smb2err == 0) { 2432 65 trace_smb3_cmd_done(le32_to_cpu(shdr->Id.SyncId.TreeId), ··· 73 2440 (smb2err != STATUS_END_OF_FILE)) || 74 2441 (cifsFYI & CIFS_RC); 75 2442 76 - for (i = 0; i < sizeof(smb2_error_map_table) / 77 - sizeof(struct status_to_posix_error); i++) { 78 - if (smb2_error_map_table[i].smb2_status == smb2err) { 79 - if (log_err) 80 - pr_notice("Status code returned 0x%08x %s\n", smb2err, 81 - smb2_error_map_table[i].status_string); 82 - rc = smb2_error_map_table[i].posix_error; 83 - break; 84 - } 85 - } 2443 + err_map = smb2_get_err_map(le32_to_cpu(smb2err)); 2444 + if (!err_map) 2445 + goto out; 86 2446 2447 + rc = err_map->posix_error; 2448 + if (log_err) 2449 + pr_notice("Status code returned 0x%08x %s\n", 2450 + err_map->smb2_status, err_map->status_string); 2451 + 2452 + out: 87 2453 /* on error mapping not found - return EIO */ 88 2454 89 2455 cifs_dbg(FYI, "Mapping SMB2 status code 0x%08x to POSIX err %d\n", 90 - __le32_to_cpu(smb2err), rc); 2456 + le32_to_cpu(smb2err), rc); 91 2457 92 2458 trace_smb3_cmd_err(le32_to_cpu(shdr->Id.SyncId.TreeId), 93 2459 le64_to_cpu(shdr->SessionId), ··· 97 2465 smb_EIO1(smb_eio_trace_smb2_received_error, le32_to_cpu(smb2err)); 98 2466 return rc; 99 2467 } 2468 + 2469 + int __init smb2_init_maperror(void) 2470 + { 2471 + unsigned int i; 2472 + 2473 + /* Check whether the array is sorted in ascending order */ 2474 + for (i = 1; i < ARRAY_SIZE(smb2_error_map_table); i++) { 2475 + if (smb2_error_map_table[i].smb2_status >= 2476 + smb2_error_map_table[i - 1].smb2_status) 2477 + continue; 2478 + 2479 + pr_err("smb2_error_map_table array order is incorrect\n"); 2480 + return -EINVAL; 2481 + } 2482 + 2483 + return 0; 2484 + } 2485 + 2486 + #define SMB_CLIENT_KUNIT_AVAILABLE \ 2487 + ((IS_MODULE(CONFIG_CIFS) && IS_ENABLED(CONFIG_KUNIT)) || \ 2488 + (IS_BUILTIN(CONFIG_CIFS) && IS_BUILTIN(CONFIG_KUNIT))) 2489 + 2490 + #if SMB_CLIENT_KUNIT_AVAILABLE && IS_ENABLED(CONFIG_SMB_KUNIT_TESTS) 2491 + #include "smb2maperror_test.c" 2492 + #endif /* CONFIG_SMB_KUNIT_TESTS */
+45
fs/smb/client/smb2maperror_test.c
··· 1 + // SPDX-License-Identifier: LGPL-2.1 2 + /* 3 + * 4 + * KUnit tests of SMB2 maperror 5 + * 6 + * Copyright (C) 2025 KylinSoft Co., Ltd. All rights reserved. 7 + * Author(s): ChenXiaoSong <chenxiaosong@kylinos.cn> 8 + * 9 + */ 10 + 11 + #include <kunit/test.h> 12 + 13 + static void 14 + test_cmp_map(struct kunit *test, const struct status_to_posix_error *expect) 15 + { 16 + const struct status_to_posix_error *result; 17 + 18 + result = smb2_get_err_map(expect->smb2_status); 19 + KUNIT_EXPECT_PTR_NE(test, NULL, result); 20 + KUNIT_EXPECT_EQ(test, expect->smb2_status, result->smb2_status); 21 + KUNIT_EXPECT_EQ(test, expect->posix_error, result->posix_error); 22 + KUNIT_EXPECT_STREQ(test, expect->status_string, result->status_string); 23 + } 24 + 25 + static void maperror_test_check_search(struct kunit *test) 26 + { 27 + unsigned int i; 28 + 29 + for (i = 0; i < ARRAY_SIZE(smb2_error_map_table); i++) 30 + test_cmp_map(test, &smb2_error_map_table[i]); 31 + } 32 + 33 + static struct kunit_case maperror_test_cases[] = { 34 + KUNIT_CASE(maperror_test_check_search), 35 + {} 36 + }; 37 + 38 + static struct kunit_suite maperror_suite = { 39 + .name = "smb2_maperror", 40 + .test_cases = maperror_test_cases, 41 + }; 42 + 43 + kunit_test_suite(maperror_suite); 44 + 45 + MODULE_LICENSE("GPL");
+3 -3
fs/smb/client/smb2misc.c
··· 820 820 int rc; 821 821 822 822 cifs_dbg(FYI, "%s: tc_count=%d\n", __func__, tcon->tc_count); 823 - spin_lock(&cifs_tcp_ses_lock); 823 + spin_lock(&tcon->tc_lock); 824 824 if (tcon->tc_count <= 0) { 825 825 struct TCP_Server_Info *server = NULL; 826 826 827 827 trace_smb3_tcon_ref(tcon->debug_id, tcon->tc_count, 828 828 netfs_trace_tcon_ref_see_cancelled_close); 829 829 WARN_ONCE(tcon->tc_count < 0, "tcon refcount is negative"); 830 - spin_unlock(&cifs_tcp_ses_lock); 830 + spin_unlock(&tcon->tc_lock); 831 831 832 832 if (tcon->ses) { 833 833 server = tcon->ses->server; ··· 841 841 tcon->tc_count++; 842 842 trace_smb3_tcon_ref(tcon->debug_id, tcon->tc_count, 843 843 netfs_trace_tcon_ref_get_cancelled_close); 844 - spin_unlock(&cifs_tcp_ses_lock); 844 + spin_unlock(&tcon->tc_lock); 845 845 846 846 rc = __smb2_handle_cancelled_cmd(tcon, SMB2_CLOSE_HE, 0, 847 847 persistent_fid, volatile_fid);
+35 -24
fs/smb/client/smb2ops.c
··· 637 637 p = buf; 638 638 639 639 spin_lock(&ses->iface_lock); 640 - /* do not query too frequently, this time with lock held */ 641 - if (ses->iface_last_update && 642 - time_before(jiffies, ses->iface_last_update + 643 - (SMB_INTERFACE_POLL_INTERVAL * HZ))) { 644 - spin_unlock(&ses->iface_lock); 645 - return 0; 646 - } 647 640 648 641 /* 649 642 * Go through iface_list and mark them as inactive ··· 659 666 "Empty network interface list returned by server %s\n", 660 667 ses->server->hostname); 661 668 rc = -EOPNOTSUPP; 662 - ses->iface_last_update = jiffies; 663 669 goto out; 664 670 } 665 671 ··· 787 795 + sizeof(p->Next) && p->Next)) 788 796 cifs_dbg(VFS, "%s: incomplete interface info\n", __func__); 789 797 790 - ses->iface_last_update = jiffies; 791 - 792 798 out: 793 799 /* 794 800 * Go through the list again and put the inactive entries ··· 815 825 struct TCP_Server_Info *pserver; 816 826 817 827 /* do not query too frequently */ 828 + spin_lock(&ses->iface_lock); 818 829 if (ses->iface_last_update && 819 830 time_before(jiffies, ses->iface_last_update + 820 - (SMB_INTERFACE_POLL_INTERVAL * HZ))) 831 + (SMB_INTERFACE_POLL_INTERVAL * HZ))) { 832 + spin_unlock(&ses->iface_lock); 821 833 return 0; 834 + } 835 + 836 + ses->iface_last_update = jiffies; 837 + 838 + spin_unlock(&ses->iface_lock); 822 839 823 840 rc = SMB2_ioctl(xid, tcon, NO_FILE_ID, NO_FILE_ID, 824 841 FSCTL_QUERY_NETWORK_INTERFACE_INFO, ··· 1181 1184 struct smb2_file_full_ea_info *ea; 1182 1185 struct smb2_query_info_rsp *rsp; 1183 1186 int rc, used_len = 0; 1184 - int retries = 0, cur_sleep = 1; 1187 + int retries = 0, cur_sleep = 0; 1185 1188 1186 1189 replay_again: 1187 1190 /* reinitialize for possible replay */ ··· 1311 1314 smb2_set_related(&rqst[2]); 1312 1315 1313 1316 if (retries) { 1317 + /* Back-off before retry */ 1318 + if (cur_sleep) 1319 + msleep(cur_sleep); 1314 1320 smb2_set_replay(server, &rqst[0]); 1315 1321 smb2_set_replay(server, &rqst[1]); 1316 1322 smb2_set_replay(server, &rqst[2]); ··· 1582 1582 void *data[2]; 1583 1583 int create_options = is_dir ? CREATE_NOT_FILE : CREATE_NOT_DIR; 1584 1584 void (*free_req1_func)(struct smb_rqst *r); 1585 - int retries = 0, cur_sleep = 1; 1585 + int retries = 0, cur_sleep = 0; 1586 1586 1587 1587 replay_again: 1588 1588 /* reinitialize for possible replay */ ··· 1731 1731 smb2_set_related(&rqst[2]); 1732 1732 1733 1733 if (retries) { 1734 + /* Back-off before retry */ 1735 + if (cur_sleep) 1736 + msleep(cur_sleep); 1734 1737 smb2_set_replay(server, &rqst[0]); 1735 1738 smb2_set_replay(server, &rqst[1]); 1736 1739 smb2_set_replay(server, &rqst[2]); ··· 2449 2446 struct smb2_query_directory_rsp *qd_rsp = NULL; 2450 2447 struct smb2_create_rsp *op_rsp = NULL; 2451 2448 struct TCP_Server_Info *server; 2452 - int retries = 0, cur_sleep = 1; 2449 + int retries = 0, cur_sleep = 0; 2453 2450 2454 2451 replay_again: 2455 2452 /* reinitialize for possible replay */ ··· 2507 2504 smb2_set_related(&rqst[1]); 2508 2505 2509 2506 if (retries) { 2507 + /* Back-off before retry */ 2508 + if (cur_sleep) 2509 + msleep(cur_sleep); 2510 2510 smb2_set_replay(server, &rqst[0]); 2511 2511 smb2_set_replay(server, &rqst[1]); 2512 2512 } ··· 2786 2780 return false; 2787 2781 2788 2782 if (tcon->retry || (*pretries)++ < tcon->ses->server->retrans) { 2789 - msleep(*pcur_sleep); 2790 - (*pcur_sleep) = ((*pcur_sleep) << 1); 2791 - if ((*pcur_sleep) > CIFS_MAX_SLEEP) 2792 - (*pcur_sleep) = CIFS_MAX_SLEEP; 2783 + /* Update sleep time for exponential backoff */ 2784 + if (!(*pcur_sleep)) 2785 + (*pcur_sleep) = 1; 2786 + else { 2787 + (*pcur_sleep) = ((*pcur_sleep) << 1); 2788 + if ((*pcur_sleep) > CIFS_MAX_SLEEP) 2789 + (*pcur_sleep) = CIFS_MAX_SLEEP; 2790 + } 2793 2791 return true; 2794 2792 } 2795 2793 ··· 2824 2814 int rc; 2825 2815 __le16 *utf16_path; 2826 2816 struct cached_fid *cfid; 2827 - int retries = 0, cur_sleep = 1; 2817 + int retries = 0, cur_sleep = 0; 2828 2818 2829 2819 replay_again: 2830 2820 /* reinitialize for possible replay */ ··· 2914 2904 smb2_set_related(&rqst[2]); 2915 2905 2916 2906 if (retries) { 2907 + /* Back-off before retry */ 2908 + if (cur_sleep) 2909 + msleep(cur_sleep); 2917 2910 if (!cfid) { 2918 2911 smb2_set_replay(server, &rqst[0]); 2919 2912 smb2_set_replay(server, &rqst[2]); ··· 3104 3091 struct cifs_tcon, 3105 3092 tcon_list); 3106 3093 if (tcon) { 3094 + spin_lock(&tcon->tc_lock); 3107 3095 tcon->tc_count++; 3096 + spin_unlock(&tcon->tc_lock); 3108 3097 trace_smb3_tcon_ref(tcon->debug_id, tcon->tc_count, 3109 3098 netfs_trace_tcon_ref_get_dfs_refer); 3110 3099 } ··· 3175 3160 out: 3176 3161 if (tcon && !tcon->ipc) { 3177 3162 /* ipc tcons are not refcounted */ 3178 - spin_lock(&cifs_tcp_ses_lock); 3179 - tcon->tc_count--; 3163 + cifs_put_tcon(tcon, netfs_trace_tcon_ref_put_dfs_refer); 3180 3164 trace_smb3_tcon_ref(tcon->debug_id, tcon->tc_count, 3181 3165 netfs_trace_tcon_ref_dec_dfs_refer); 3182 - /* tc_count can never go negative */ 3183 - WARN_ON(tcon->tc_count < 0); 3184 - spin_unlock(&cifs_tcp_ses_lock); 3185 3166 } 3186 3167 kfree(utf16_path); 3187 3168 kfree(dfs_req);
+159 -36
fs/smb/client/smb2pdu.c
··· 32 32 #include "cifs_unicode.h" 33 33 #include "cifs_debug.h" 34 34 #include "ntlmssp.h" 35 + #include "../common/smbfsctl.h" 35 36 #include "../common/smb2status.h" 36 37 #include "smb2glob.h" 37 - #include "cifspdu.h" 38 38 #include "cifs_spnego.h" 39 39 #include "../common/smbdirect/smbdirect.h" 40 40 #include "smbdirect.h" ··· 2904 2904 unsigned int total_len; 2905 2905 __le16 *utf16_path = NULL; 2906 2906 struct TCP_Server_Info *server; 2907 - int retries = 0, cur_sleep = 1; 2907 + int retries = 0, cur_sleep = 0; 2908 2908 2909 2909 replay_again: 2910 2910 /* reinitialize for possible replay */ ··· 3016 3016 trace_smb3_posix_mkdir_enter(xid, tcon->tid, ses->Suid, full_path, CREATE_NOT_FILE, 3017 3017 FILE_WRITE_ATTRIBUTES); 3018 3018 3019 - if (retries) 3019 + if (retries) { 3020 + /* Back-off before retry */ 3021 + if (cur_sleep) 3022 + msleep(cur_sleep); 3020 3023 smb2_set_replay(server, &rqst); 3024 + } 3021 3025 3022 3026 /* resource #4: response buffer */ 3023 3027 rc = cifs_send_recv(xid, ses, server, ··· 3269 3265 int resp_buftype = CIFS_NO_BUFFER; 3270 3266 int rc = 0; 3271 3267 int flags = 0; 3272 - int retries = 0, cur_sleep = 1; 3268 + int retries = 0, cur_sleep = 0; 3273 3269 3274 3270 replay_again: 3275 3271 /* reinitialize for possible replay */ ··· 3297 3293 trace_smb3_open_enter(xid, tcon->tid, tcon->ses->Suid, oparms->path, 3298 3294 oparms->create_options, oparms->desired_access); 3299 3295 3300 - if (retries) 3296 + if (retries) { 3297 + /* Back-off before retry */ 3298 + if (cur_sleep) 3299 + msleep(cur_sleep); 3301 3300 smb2_set_replay(server, &rqst); 3301 + } 3302 3302 3303 3303 rc = cifs_send_recv(xid, ses, server, 3304 3304 &rqst, &resp_buftype, flags, ··· 3486 3478 int resp_buftype = CIFS_NO_BUFFER; 3487 3479 int rc = 0; 3488 3480 int flags = 0; 3489 - int retries = 0, cur_sleep = 1; 3481 + int retries = 0, cur_sleep = 0; 3490 3482 3491 3483 if (!tcon) 3492 3484 return smb_EIO(smb_eio_trace_null_pointers); ··· 3526 3518 if (rc) 3527 3519 goto ioctl_exit; 3528 3520 3529 - if (retries) 3521 + if (retries) { 3522 + /* Back-off before retry */ 3523 + if (cur_sleep) 3524 + msleep(cur_sleep); 3530 3525 smb2_set_replay(server, &rqst); 3526 + } 3531 3527 3532 3528 rc = cifs_send_recv(xid, ses, server, 3533 3529 &rqst, &resp_buftype, flags, ··· 3687 3675 int rc = 0; 3688 3676 int flags = 0; 3689 3677 bool query_attrs = false; 3690 - int retries = 0, cur_sleep = 1; 3678 + int retries = 0, cur_sleep = 0; 3691 3679 3692 3680 replay_again: 3693 3681 /* reinitialize for possible replay */ ··· 3719 3707 if (rc) 3720 3708 goto close_exit; 3721 3709 3722 - if (retries) 3710 + if (retries) { 3711 + /* Back-off before retry */ 3712 + if (cur_sleep) 3713 + msleep(cur_sleep); 3723 3714 smb2_set_replay(server, &rqst); 3715 + } 3724 3716 3725 3717 rc = cifs_send_recv(xid, ses, server, 3726 3718 &rqst, &resp_buftype, flags, &rsp_iov); ··· 3894 3878 struct TCP_Server_Info *server; 3895 3879 int flags = 0; 3896 3880 bool allocated = false; 3897 - int retries = 0, cur_sleep = 1; 3881 + int retries = 0, cur_sleep = 0; 3898 3882 3899 3883 cifs_dbg(FYI, "Query Info\n"); 3900 3884 ··· 3928 3912 trace_smb3_query_info_enter(xid, persistent_fid, tcon->tid, 3929 3913 ses->Suid, info_class, (__u32)info_type); 3930 3914 3931 - if (retries) 3915 + if (retries) { 3916 + /* Back-off before retry */ 3917 + if (cur_sleep) 3918 + msleep(cur_sleep); 3932 3919 smb2_set_replay(server, &rqst); 3920 + } 3933 3921 3934 3922 rc = cifs_send_recv(xid, ses, server, 3935 3923 &rqst, &resp_buftype, flags, &rsp_iov); ··· 4089 4069 int resp_buftype = CIFS_NO_BUFFER; 4090 4070 int flags = 0; 4091 4071 int rc = 0; 4092 - int retries = 0, cur_sleep = 1; 4072 + int retries = 0, cur_sleep = 0; 4093 4073 4094 4074 replay_again: 4095 4075 /* reinitialize for possible replay */ ··· 4120 4100 trace_smb3_notify_enter(xid, persistent_fid, tcon->tid, ses->Suid, 4121 4101 (u8)watch_tree, completion_filter); 4122 4102 4123 - if (retries) 4103 + if (retries) { 4104 + /* Back-off before retry */ 4105 + if (cur_sleep) 4106 + msleep(cur_sleep); 4124 4107 smb2_set_replay(server, &rqst); 4108 + } 4125 4109 4126 4110 rc = cifs_send_recv(xid, ses, server, 4127 4111 &rqst, &resp_buftype, flags, &rsp_iov); ··· 4263 4239 4264 4240 list_for_each_entry(tcon, &ses->tcon_list, tcon_list) { 4265 4241 if (tcon->need_reconnect || tcon->need_reopen_files) { 4242 + spin_lock(&tcon->tc_lock); 4266 4243 tcon->tc_count++; 4244 + spin_unlock(&tcon->tc_lock); 4267 4245 trace_smb3_tcon_ref(tcon->debug_id, tcon->tc_count, 4268 4246 netfs_trace_tcon_ref_get_reconnect_server); 4269 4247 list_add_tail(&tcon->rlist, &tmp_list); ··· 4431 4405 int resp_buftype = CIFS_NO_BUFFER; 4432 4406 int flags = 0; 4433 4407 int rc = 0; 4434 - int retries = 0, cur_sleep = 1; 4408 + int retries = 0, cur_sleep = 0; 4435 4409 4436 4410 replay_again: 4437 4411 /* reinitialize for possible replay */ ··· 4457 4431 4458 4432 trace_smb3_flush_enter(xid, persistent_fid, tcon->tid, ses->Suid); 4459 4433 4460 - if (retries) 4434 + if (retries) { 4435 + /* Back-off before retry */ 4436 + if (cur_sleep) 4437 + msleep(cur_sleep); 4461 4438 smb2_set_replay(server, &rqst); 4439 + } 4462 4440 4463 4441 rc = cifs_send_recv(xid, ses, server, 4464 4442 &rqst, &resp_buftype, flags, &rsp_iov); ··· 4652 4622 4653 4623 iov_iter_truncate(&rqst.rq_iter, rdata->got_bytes); 4654 4624 rc = smb2_verify_signature(&rqst, server); 4655 - if (rc) 4625 + if (rc) { 4656 4626 cifs_tcon_dbg(VFS, "SMB signature verification returned error = %d\n", 4657 - rc); 4627 + rc); 4628 + rdata->subreq.error = rc; 4629 + rdata->result = rc; 4630 + 4631 + if (is_replayable_error(rc)) { 4632 + trace_netfs_sreq(&rdata->subreq, netfs_sreq_trace_io_retry_needed); 4633 + __set_bit(NETFS_SREQ_NEED_RETRY, &rdata->subreq.flags); 4634 + } else 4635 + trace_netfs_sreq(&rdata->subreq, netfs_sreq_trace_io_bad); 4636 + } else 4637 + trace_netfs_sreq(&rdata->subreq, netfs_sreq_trace_io_progress); 4658 4638 } 4659 4639 /* FIXME: should this be counted toward the initiating task? */ 4660 4640 task_io_account_read(rdata->got_bytes); ··· 4740 4700 if (rdata->got_bytes) 4741 4701 __set_bit(NETFS_SREQ_MADE_PROGRESS, &rdata->subreq.flags); 4742 4702 } 4703 + 4704 + /* see if we need to retry */ 4705 + if (is_replayable_error(rdata->result) && 4706 + smb2_should_replay(tcon, 4707 + &rdata->retries, 4708 + &rdata->cur_sleep)) 4709 + rdata->replay = true; 4710 + 4743 4711 trace_smb3_rw_credits(rreq_debug_id, subreq_debug_index, rdata->credits.value, 4744 4712 server->credits, server->in_flight, 4745 4713 0, cifs_trace_rw_credits_read_response_clear); ··· 4796 4748 rc = smb2_new_read_req( 4797 4749 (void **) &buf, &total_len, &io_parms, rdata, 0, 0); 4798 4750 if (rc) 4799 - return rc; 4751 + goto out; 4800 4752 4801 4753 if (smb3_encryption_required(io_parms.tcon)) 4802 4754 flags |= CIFS_TRANSFORM_REQ; ··· 4807 4759 rdata->result = 0; 4808 4760 4809 4761 shdr = (struct smb2_hdr *)buf; 4762 + 4763 + if (rdata->replay) { 4764 + /* Back-off before retry */ 4765 + if (rdata->cur_sleep) 4766 + msleep(rdata->cur_sleep); 4767 + smb2_set_replay(server, &rqst); 4768 + } 4810 4769 4811 4770 if (rdata->credits.value > 0) { 4812 4771 shdr->CreditCharge = cpu_to_le16(DIV_ROUND_UP(io_parms.length, ··· 4850 4795 4851 4796 async_readv_out: 4852 4797 cifs_small_buf_release(buf); 4798 + 4799 + out: 4800 + /* if the send error is retryable, let netfs know about it */ 4801 + if (is_replayable_error(rc) && 4802 + smb2_should_replay(tcon, 4803 + &rdata->retries, 4804 + &rdata->cur_sleep)) { 4805 + trace_netfs_sreq(&rdata->subreq, netfs_sreq_trace_io_retry_needed); 4806 + __set_bit(NETFS_SREQ_NEED_RETRY, &rdata->subreq.flags); 4807 + } 4808 + 4853 4809 return rc; 4854 4810 } 4855 4811 ··· 4974 4908 4975 4909 switch (mid->mid_state) { 4976 4910 case MID_RESPONSE_RECEIVED: 4977 - trace_netfs_sreq(&wdata->subreq, netfs_sreq_trace_io_progress); 4978 4911 credits.value = le16_to_cpu(rsp->hdr.CreditRequest); 4979 4912 credits.instance = server->reconnect_instance; 4980 4913 result = smb2_check_receive(mid, server, 0); 4981 4914 if (result != 0) { 4982 - trace_netfs_sreq(&wdata->subreq, netfs_sreq_trace_io_bad); 4915 + if (is_replayable_error(result)) { 4916 + trace_netfs_sreq(&wdata->subreq, netfs_sreq_trace_io_retry_needed); 4917 + __set_bit(NETFS_SREQ_NEED_RETRY, &wdata->subreq.flags); 4918 + } else { 4919 + wdata->subreq.error = result; 4920 + trace_netfs_sreq(&wdata->subreq, netfs_sreq_trace_io_bad); 4921 + } 4983 4922 break; 4984 4923 } 4924 + trace_netfs_sreq(&wdata->subreq, netfs_sreq_trace_io_progress); 4985 4925 4986 4926 written = le32_to_cpu(rsp->DataLength); 4987 4927 /* ··· 5002 4930 cifs_stats_bytes_written(tcon, written); 5003 4931 5004 4932 if (written < wdata->subreq.len) { 5005 - wdata->result = -ENOSPC; 4933 + result = -ENOSPC; 5006 4934 } else if (written > 0) { 5007 4935 wdata->subreq.len = written; 5008 4936 __set_bit(NETFS_SREQ_MADE_PROGRESS, &wdata->subreq.flags); ··· 5044 4972 } 5045 4973 #endif 5046 4974 if (result) { 4975 + wdata->result = result; 5047 4976 cifs_stats_fail_inc(tcon, SMB2_WRITE_HE); 5048 4977 trace_smb3_write_err(wdata->rreq->debug_id, 5049 4978 wdata->subreq.debug_index, ··· 5067 4994 server->credits, server->in_flight, 5068 4995 0, cifs_trace_rw_credits_write_response_clear); 5069 4996 wdata->credits.value = 0; 4997 + 4998 + /* see if we need to retry */ 4999 + if (is_replayable_error(wdata->result) && 5000 + smb2_should_replay(tcon, 5001 + &wdata->retries, 5002 + &wdata->cur_sleep)) 5003 + wdata->replay = true; 5004 + 5070 5005 cifs_write_subrequest_terminated(wdata, result ?: written); 5071 5006 release_mid(server, mid); 5072 5007 trace_smb3_rw_credits(rreq_debug_id, subreq_debug_index, 0, ··· 5193 5112 } 5194 5113 #endif 5195 5114 5196 - if (wdata->subreq.retry_count > 0) 5115 + if (wdata->replay) { 5116 + /* Back-off before retry */ 5117 + if (wdata->cur_sleep) 5118 + msleep(wdata->cur_sleep); 5197 5119 smb2_set_replay(server, &rqst); 5120 + } 5198 5121 5199 5122 cifs_dbg(FYI, "async write at %llu %u bytes iter=%zx\n", 5200 5123 io_parms->offset, io_parms->length, iov_iter_count(&wdata->subreq.io_iter)); ··· 5244 5159 async_writev_out: 5245 5160 cifs_small_buf_release(req); 5246 5161 out: 5162 + /* if the send error is retryable, let netfs know about it */ 5163 + if (is_replayable_error(rc) && 5164 + smb2_should_replay(tcon, 5165 + &wdata->retries, 5166 + &wdata->cur_sleep)) { 5167 + wdata->replay = true; 5168 + trace_netfs_sreq(&wdata->subreq, netfs_sreq_trace_io_retry_needed); 5169 + __set_bit(NETFS_SREQ_NEED_RETRY, &wdata->subreq.flags); 5170 + } 5171 + 5247 5172 if (rc) { 5248 5173 trace_smb3_rw_credits(wdata->rreq->debug_id, 5249 5174 wdata->subreq.debug_index, ··· 5285 5190 int flags = 0; 5286 5191 unsigned int total_len; 5287 5192 struct TCP_Server_Info *server; 5288 - int retries = 0, cur_sleep = 1; 5193 + int retries = 0, cur_sleep = 0; 5289 5194 5290 5195 replay_again: 5291 5196 /* reinitialize for possible replay */ ··· 5333 5238 rqst.rq_iov = iov; 5334 5239 rqst.rq_nvec = n_vec + 1; 5335 5240 5336 - if (retries) 5241 + if (retries) { 5242 + /* Back-off before retry */ 5243 + if (cur_sleep) 5244 + msleep(cur_sleep); 5337 5245 smb2_set_replay(server, &rqst); 5246 + } 5338 5247 5339 5248 rc = cifs_send_recv(xid, io_parms->tcon->ses, server, 5340 5249 &rqst, ··· 5689 5590 struct cifs_ses *ses = tcon->ses; 5690 5591 struct TCP_Server_Info *server; 5691 5592 int flags = 0; 5692 - int retries = 0, cur_sleep = 1; 5593 + int retries = 0, cur_sleep = 0; 5693 5594 5694 5595 replay_again: 5695 5596 /* reinitialize for possible replay */ ··· 5714 5615 if (rc) 5715 5616 goto qdir_exit; 5716 5617 5717 - if (retries) 5618 + if (retries) { 5619 + /* Back-off before retry */ 5620 + if (cur_sleep) 5621 + msleep(cur_sleep); 5718 5622 smb2_set_replay(server, &rqst); 5623 + } 5719 5624 5720 5625 rc = cifs_send_recv(xid, ses, server, 5721 5626 &rqst, &resp_buftype, flags, &rsp_iov); ··· 5828 5725 struct cifs_ses *ses = tcon->ses; 5829 5726 struct TCP_Server_Info *server; 5830 5727 int flags = 0; 5831 - int retries = 0, cur_sleep = 1; 5728 + int retries = 0, cur_sleep = 0; 5832 5729 5833 5730 replay_again: 5834 5731 /* reinitialize for possible replay */ ··· 5861 5758 return rc; 5862 5759 } 5863 5760 5864 - if (retries) 5761 + if (retries) { 5762 + /* Back-off before retry */ 5763 + if (cur_sleep) 5764 + msleep(cur_sleep); 5865 5765 smb2_set_replay(server, &rqst); 5766 + } 5866 5767 5867 5768 rc = cifs_send_recv(xid, ses, server, 5868 5769 &rqst, &resp_buftype, flags, ··· 5945 5838 struct kvec iov[1]; 5946 5839 struct kvec rsp_iov; 5947 5840 int resp_buf_type; 5948 - int retries = 0, cur_sleep = 1; 5841 + int retries = 0, cur_sleep = 0; 5949 5842 5950 5843 replay_again: 5951 5844 /* reinitialize for possible replay */ ··· 5975 5868 rqst.rq_iov = iov; 5976 5869 rqst.rq_nvec = 1; 5977 5870 5978 - if (retries) 5871 + if (retries) { 5872 + /* Back-off before retry */ 5873 + if (cur_sleep) 5874 + msleep(cur_sleep); 5979 5875 smb2_set_replay(server, &rqst); 5876 + } 5980 5877 5981 5878 rc = cifs_send_recv(xid, ses, server, 5982 5879 &rqst, &resp_buf_type, flags, &rsp_iov); ··· 6082 5971 struct TCP_Server_Info *server; 6083 5972 FILE_SYSTEM_POSIX_INFO *info = NULL; 6084 5973 int flags = 0; 6085 - int retries = 0, cur_sleep = 1; 5974 + int retries = 0, cur_sleep = 0; 6086 5975 6087 5976 replay_again: 6088 5977 /* reinitialize for possible replay */ ··· 6103 5992 rqst.rq_iov = &iov; 6104 5993 rqst.rq_nvec = 1; 6105 5994 6106 - if (retries) 5995 + if (retries) { 5996 + /* Back-off before retry */ 5997 + if (cur_sleep) 5998 + msleep(cur_sleep); 6107 5999 smb2_set_replay(server, &rqst); 6000 + } 6108 6001 6109 6002 rc = cifs_send_recv(xid, ses, server, 6110 6003 &rqst, &resp_buftype, flags, &rsp_iov); ··· 6151 6036 struct TCP_Server_Info *server; 6152 6037 unsigned int rsp_len, offset; 6153 6038 int flags = 0; 6154 - int retries = 0, cur_sleep = 1; 6039 + int retries = 0, cur_sleep = 0; 6155 6040 6156 6041 replay_again: 6157 6042 /* reinitialize for possible replay */ ··· 6188 6073 rqst.rq_iov = &iov; 6189 6074 rqst.rq_nvec = 1; 6190 6075 6191 - if (retries) 6076 + if (retries) { 6077 + /* Back-off before retry */ 6078 + if (cur_sleep) 6079 + msleep(cur_sleep); 6192 6080 smb2_set_replay(server, &rqst); 6081 + } 6193 6082 6194 6083 rc = cifs_send_recv(xid, ses, server, 6195 6084 &rqst, &resp_buftype, flags, &rsp_iov); ··· 6255 6136 int flags = CIFS_NO_RSP_BUF; 6256 6137 unsigned int total_len; 6257 6138 struct TCP_Server_Info *server; 6258 - int retries = 0, cur_sleep = 1; 6139 + int retries = 0, cur_sleep = 0; 6259 6140 6260 6141 replay_again: 6261 6142 /* reinitialize for possible replay */ ··· 6291 6172 rqst.rq_iov = iov; 6292 6173 rqst.rq_nvec = 2; 6293 6174 6294 - if (retries) 6175 + if (retries) { 6176 + /* Back-off before retry */ 6177 + if (cur_sleep) 6178 + msleep(cur_sleep); 6295 6179 smb2_set_replay(server, &rqst); 6180 + } 6296 6181 6297 6182 rc = cifs_send_recv(xid, tcon->ses, server, 6298 6183 &rqst, &resp_buf_type, flags,
+217 -252
fs/smb/client/smb2proto.h
··· 22 22 * All Prototypes 23 23 ***************************************************************** 24 24 */ 25 - extern int map_smb2_to_linux_error(char *buf, bool log_err); 26 - extern int smb2_check_message(char *buf, unsigned int pdu_len, unsigned int length, 27 - struct TCP_Server_Info *server); 28 - extern unsigned int smb2_calc_size(void *buf); 29 - extern char *smb2_get_data_area_len(int *off, int *len, 30 - struct smb2_hdr *shdr); 31 - extern __le16 *cifs_convert_path_to_utf16(const char *from, 32 - struct cifs_sb_info *cifs_sb); 25 + int map_smb2_to_linux_error(char *buf, bool log_err); 26 + int smb2_init_maperror(void); 27 + int smb2_check_message(char *buf, unsigned int pdu_len, unsigned int len, 28 + struct TCP_Server_Info *server); 29 + unsigned int smb2_calc_size(void *buf); 30 + char *smb2_get_data_area_len(int *off, int *len, struct smb2_hdr *shdr); 31 + __le16 *cifs_convert_path_to_utf16(const char *from, 32 + struct cifs_sb_info *cifs_sb); 33 33 34 - extern int smb2_verify_signature(struct smb_rqst *, struct TCP_Server_Info *); 35 - extern int smb2_check_receive(struct mid_q_entry *mid, 36 - struct TCP_Server_Info *server, bool log_error); 37 - extern struct mid_q_entry *smb2_setup_request(struct cifs_ses *ses, 38 - struct TCP_Server_Info *, 39 - struct smb_rqst *rqst); 40 - extern struct mid_q_entry *smb2_setup_async_request( 41 - struct TCP_Server_Info *server, struct smb_rqst *rqst); 42 - extern struct cifs_tcon *smb2_find_smb_tcon(struct TCP_Server_Info *server, 43 - __u64 ses_id, __u32 tid); 44 - extern __le32 smb2_get_lease_state(struct cifsInodeInfo *cinode); 45 - extern bool smb2_is_valid_oplock_break(char *buffer, 46 - struct TCP_Server_Info *srv); 47 - extern int smb3_handle_read_data(struct TCP_Server_Info *server, 48 - struct mid_q_entry *mid); 34 + int smb2_verify_signature(struct smb_rqst *rqst, 35 + struct TCP_Server_Info *server); 36 + int smb2_check_receive(struct mid_q_entry *mid, struct TCP_Server_Info *server, 37 + bool log_error); 38 + struct mid_q_entry *smb2_setup_request(struct cifs_ses *ses, 39 + struct TCP_Server_Info *server, 40 + struct smb_rqst *rqst); 41 + struct mid_q_entry *smb2_setup_async_request(struct TCP_Server_Info *server, 42 + struct smb_rqst *rqst); 43 + struct cifs_tcon *smb2_find_smb_tcon(struct TCP_Server_Info *server, 44 + __u64 ses_id, __u32 tid); 45 + __le32 smb2_get_lease_state(struct cifsInodeInfo *cinode); 46 + bool smb2_is_valid_oplock_break(char *buffer, struct TCP_Server_Info *server); 47 + int smb3_handle_read_data(struct TCP_Server_Info *server, 48 + struct mid_q_entry *mid); 49 49 struct inode *smb2_create_reparse_inode(struct cifs_open_info_data *data, 50 - struct super_block *sb, 51 - const unsigned int xid, 52 - struct cifs_tcon *tcon, 53 - const char *full_path, 54 - bool directory, 55 - struct kvec *reparse_iov, 56 - struct kvec *xattr_iov); 57 - int smb2_query_reparse_point(const unsigned int xid, 58 - struct cifs_tcon *tcon, 50 + struct super_block *sb, 51 + const unsigned int xid, 52 + struct cifs_tcon *tcon, 53 + const char *full_path, bool directory, 54 + struct kvec *reparse_iov, 55 + struct kvec *xattr_iov); 56 + int smb2_query_reparse_point(const unsigned int xid, struct cifs_tcon *tcon, 59 57 struct cifs_sb_info *cifs_sb, 60 - const char *full_path, 61 - u32 *tag, struct kvec *rsp, 58 + const char *full_path, u32 *tag, struct kvec *rsp, 62 59 int *rsp_buftype); 63 - int smb2_query_path_info(const unsigned int xid, 64 - struct cifs_tcon *tcon, 65 - struct cifs_sb_info *cifs_sb, 66 - const char *full_path, 60 + int smb2_query_path_info(const unsigned int xid, struct cifs_tcon *tcon, 61 + struct cifs_sb_info *cifs_sb, const char *full_path, 67 62 struct cifs_open_info_data *data); 68 - extern int smb2_set_path_size(const unsigned int xid, struct cifs_tcon *tcon, 69 - const char *full_path, __u64 size, 70 - struct cifs_sb_info *cifs_sb, bool set_alloc, 71 - struct dentry *dentry); 72 - extern int smb2_set_file_info(struct inode *inode, const char *full_path, 73 - FILE_BASIC_INFO *buf, const unsigned int xid); 74 - extern int smb311_posix_mkdir(const unsigned int xid, struct inode *inode, 75 - umode_t mode, struct cifs_tcon *tcon, 76 - const char *full_path, 77 - struct cifs_sb_info *cifs_sb); 78 - extern int smb2_mkdir(const unsigned int xid, struct inode *inode, 79 - umode_t mode, struct cifs_tcon *tcon, 80 - const char *name, struct cifs_sb_info *cifs_sb); 81 - extern void smb2_mkdir_setinfo(struct inode *inode, const char *full_path, 82 - struct cifs_sb_info *cifs_sb, 83 - struct cifs_tcon *tcon, const unsigned int xid); 84 - extern int smb2_rmdir(const unsigned int xid, struct cifs_tcon *tcon, 85 - const char *name, struct cifs_sb_info *cifs_sb); 86 - extern int smb2_unlink(const unsigned int xid, struct cifs_tcon *tcon, 87 - const char *name, struct cifs_sb_info *cifs_sb, 88 - struct dentry *dentry); 89 - int smb2_rename_path(const unsigned int xid, 90 - struct cifs_tcon *tcon, 91 - struct dentry *source_dentry, 92 - const char *from_name, const char *to_name, 93 - struct cifs_sb_info *cifs_sb); 94 - int smb2_create_hardlink(const unsigned int xid, 95 - struct cifs_tcon *tcon, 96 - struct dentry *source_dentry, 97 - const char *from_name, const char *to_name, 98 - struct cifs_sb_info *cifs_sb); 99 - extern int smb3_create_mf_symlink(unsigned int xid, struct cifs_tcon *tcon, 100 - struct cifs_sb_info *cifs_sb, const unsigned char *path, 101 - char *pbuf, unsigned int *pbytes_written); 102 - extern int smb3_query_mf_symlink(unsigned int xid, struct cifs_tcon *tcon, 63 + int smb2_set_path_size(const unsigned int xid, struct cifs_tcon *tcon, 64 + const char *full_path, __u64 size, 65 + struct cifs_sb_info *cifs_sb, bool set_alloc, 66 + struct dentry *dentry); 67 + int smb2_set_file_info(struct inode *inode, const char *full_path, 68 + FILE_BASIC_INFO *buf, const unsigned int xid); 69 + int smb311_posix_mkdir(const unsigned int xid, struct inode *inode, 70 + umode_t mode, struct cifs_tcon *tcon, 71 + const char *full_path, struct cifs_sb_info *cifs_sb); 72 + int smb2_mkdir(const unsigned int xid, struct inode *parent_inode, 73 + umode_t mode, struct cifs_tcon *tcon, const char *name, 74 + struct cifs_sb_info *cifs_sb); 75 + void smb2_mkdir_setinfo(struct inode *inode, const char *name, 76 + struct cifs_sb_info *cifs_sb, struct cifs_tcon *tcon, 77 + const unsigned int xid); 78 + int smb2_rmdir(const unsigned int xid, struct cifs_tcon *tcon, 79 + const char *name, struct cifs_sb_info *cifs_sb); 80 + int smb2_unlink(const unsigned int xid, struct cifs_tcon *tcon, 81 + const char *name, struct cifs_sb_info *cifs_sb, 82 + struct dentry *dentry); 83 + int smb2_rename_path(const unsigned int xid, struct cifs_tcon *tcon, 84 + struct dentry *source_dentry, const char *from_name, 85 + const char *to_name, struct cifs_sb_info *cifs_sb); 86 + int smb2_create_hardlink(const unsigned int xid, struct cifs_tcon *tcon, 87 + struct dentry *source_dentry, const char *from_name, 88 + const char *to_name, struct cifs_sb_info *cifs_sb); 89 + int smb3_create_mf_symlink(unsigned int xid, struct cifs_tcon *tcon, 90 + struct cifs_sb_info *cifs_sb, 91 + const unsigned char *path, char *pbuf, 92 + unsigned int *pbytes_written); 93 + int smb3_query_mf_symlink(unsigned int xid, struct cifs_tcon *tcon, 103 94 struct cifs_sb_info *cifs_sb, 104 95 const unsigned char *path, char *pbuf, 105 96 unsigned int *pbytes_read); 106 - int smb2_fix_symlink_target_type(char **target, bool directory, struct cifs_sb_info *cifs_sb); 97 + int smb2_fix_symlink_target_type(char **target, bool directory, 98 + struct cifs_sb_info *cifs_sb); 107 99 int smb2_parse_native_symlink(char **target, const char *buf, unsigned int len, 108 - bool relative, 109 - const char *full_path, 100 + bool relative, const char *full_path, 110 101 struct cifs_sb_info *cifs_sb); 111 102 int smb2_parse_symlink_response(struct cifs_sb_info *cifs_sb, 112 - const struct kvec *iov, 113 - const char *full_path, 103 + const struct kvec *iov, const char *full_path, 114 104 char **path); 115 - int smb2_open_file(const unsigned int xid, struct cifs_open_parms *oparms, __u32 *oplock, 116 - void *buf); 117 - extern int smb2_unlock_range(struct cifsFileInfo *cfile, 118 - struct file_lock *flock, const unsigned int xid); 119 - extern int smb2_push_mandatory_locks(struct cifsFileInfo *cfile); 120 - extern void smb2_reconnect_server(struct work_struct *work); 121 - extern int smb3_crypto_aead_allocate(struct TCP_Server_Info *server); 122 - extern unsigned long smb_rqst_len(struct TCP_Server_Info *server, 123 - struct smb_rqst *rqst); 124 - extern void smb2_set_next_command(struct cifs_tcon *tcon, 125 - struct smb_rqst *rqst); 126 - extern void smb2_set_related(struct smb_rqst *rqst); 127 - extern void smb2_set_replay(struct TCP_Server_Info *server, 128 - struct smb_rqst *rqst); 129 - extern bool smb2_should_replay(struct cifs_tcon *tcon, 130 - int *pretries, 131 - int *pcur_sleep); 105 + int smb2_open_file(const unsigned int xid, struct cifs_open_parms *oparms, 106 + __u32 *oplock, void *buf); 107 + int smb2_unlock_range(struct cifsFileInfo *cfile, struct file_lock *flock, 108 + const unsigned int xid); 109 + int smb2_push_mandatory_locks(struct cifsFileInfo *cfile); 110 + void smb2_reconnect_server(struct work_struct *work); 111 + int smb3_crypto_aead_allocate(struct TCP_Server_Info *server); 112 + unsigned long smb_rqst_len(struct TCP_Server_Info *server, 113 + struct smb_rqst *rqst); 114 + void smb2_set_next_command(struct cifs_tcon *tcon, struct smb_rqst *rqst); 115 + void smb2_set_related(struct smb_rqst *rqst); 116 + void smb2_set_replay(struct TCP_Server_Info *server, struct smb_rqst *rqst); 117 + bool smb2_should_replay(struct cifs_tcon *tcon, int *pretries, 118 + int *pcur_sleep); 132 119 133 120 /* 134 121 * SMB2 Worker functions - most of protocol specific implementation details 135 122 * are contained within these calls. 136 123 */ 137 - extern int SMB2_negotiate(const unsigned int xid, 138 - struct cifs_ses *ses, 139 - struct TCP_Server_Info *server); 140 - extern int SMB2_sess_setup(const unsigned int xid, struct cifs_ses *ses, 141 - struct TCP_Server_Info *server, 142 - const struct nls_table *nls_cp); 143 - extern int SMB2_logoff(const unsigned int xid, struct cifs_ses *ses); 144 - extern int SMB2_tcon(const unsigned int xid, struct cifs_ses *ses, 145 - const char *tree, struct cifs_tcon *tcon, 146 - const struct nls_table *); 147 - extern int SMB2_tdis(const unsigned int xid, struct cifs_tcon *tcon); 148 - extern int SMB2_open(const unsigned int xid, struct cifs_open_parms *oparms, 149 - __le16 *path, __u8 *oplock, 150 - struct smb2_file_all_info *buf, 151 - struct create_posix_rsp *posix, 152 - struct kvec *err_iov, int *resp_buftype); 153 - extern int SMB2_open_init(struct cifs_tcon *tcon, 154 - struct TCP_Server_Info *server, 155 - struct smb_rqst *rqst, 156 - __u8 *oplock, struct cifs_open_parms *oparms, 157 - __le16 *path); 158 - extern void SMB2_open_free(struct smb_rqst *rqst); 159 - extern int SMB2_ioctl(const unsigned int xid, struct cifs_tcon *tcon, 160 - u64 persistent_fid, u64 volatile_fid, u32 opcode, 161 - char *in_data, u32 indatalen, u32 maxoutlen, 162 - char **out_data, u32 *plen /* returned data len */); 163 - extern int SMB2_ioctl_init(struct cifs_tcon *tcon, 164 - struct TCP_Server_Info *server, 165 - struct smb_rqst *rqst, 166 - u64 persistent_fid, u64 volatile_fid, u32 opcode, 167 - char *in_data, u32 indatalen, 168 - __u32 max_response_size); 169 - extern void SMB2_ioctl_free(struct smb_rqst *rqst); 170 - extern int SMB2_change_notify(const unsigned int xid, struct cifs_tcon *tcon, 171 - u64 persistent_fid, u64 volatile_fid, bool watch_tree, 172 - u32 completion_filter, u32 max_out_data_len, 173 - char **out_data, u32 *plen /* returned data len */); 124 + int SMB2_negotiate(const unsigned int xid, struct cifs_ses *ses, 125 + struct TCP_Server_Info *server); 126 + int SMB2_sess_setup(const unsigned int xid, struct cifs_ses *ses, 127 + struct TCP_Server_Info *server, 128 + const struct nls_table *nls_cp); 129 + int SMB2_logoff(const unsigned int xid, struct cifs_ses *ses); 130 + int SMB2_tcon(const unsigned int xid, struct cifs_ses *ses, const char *tree, 131 + struct cifs_tcon *tcon, const struct nls_table *cp); 132 + int SMB2_tdis(const unsigned int xid, struct cifs_tcon *tcon); 133 + int SMB2_open(const unsigned int xid, struct cifs_open_parms *oparms, 134 + __le16 *path, __u8 *oplock, struct smb2_file_all_info *buf, 135 + struct create_posix_rsp *posix, struct kvec *err_iov, 136 + int *buftype); 137 + int SMB2_open_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server, 138 + struct smb_rqst *rqst, __u8 *oplock, 139 + struct cifs_open_parms *oparms, __le16 *path); 140 + void SMB2_open_free(struct smb_rqst *rqst); 141 + int SMB2_ioctl(const unsigned int xid, struct cifs_tcon *tcon, 142 + u64 persistent_fid, u64 volatile_fid, u32 opcode, char *in_data, 143 + u32 indatalen, u32 max_out_data_len, char **out_data, 144 + u32 *plen /* returned data len */); 145 + int SMB2_ioctl_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server, 146 + struct smb_rqst *rqst, u64 persistent_fid, 147 + u64 volatile_fid, u32 opcode, char *in_data, u32 indatalen, 148 + __u32 max_response_size); 149 + void SMB2_ioctl_free(struct smb_rqst *rqst); 150 + int SMB2_change_notify(const unsigned int xid, struct cifs_tcon *tcon, 151 + u64 persistent_fid, u64 volatile_fid, bool watch_tree, 152 + u32 completion_filter, u32 max_out_data_len, 153 + char **out_data, u32 *plen /* returned data len */); 174 154 175 - extern int __SMB2_close(const unsigned int xid, struct cifs_tcon *tcon, 176 - u64 persistent_fid, u64 volatile_fid, 177 - struct smb2_file_network_open_info *pbuf); 178 - extern int SMB2_close(const unsigned int xid, struct cifs_tcon *tcon, 179 - u64 persistent_file_id, u64 volatile_file_id); 180 - extern int SMB2_close_init(struct cifs_tcon *tcon, 181 - struct TCP_Server_Info *server, 182 - struct smb_rqst *rqst, 183 - u64 persistent_fid, u64 volatile_fid, 184 - bool query_attrs); 185 - extern void SMB2_close_free(struct smb_rqst *rqst); 186 - extern int SMB2_flush(const unsigned int xid, struct cifs_tcon *tcon, 187 - u64 persistent_file_id, u64 volatile_file_id); 188 - extern int SMB2_flush_init(const unsigned int xid, struct smb_rqst *rqst, 189 - struct cifs_tcon *tcon, 190 - struct TCP_Server_Info *server, 191 - u64 persistent_file_id, u64 volatile_file_id); 192 - extern void SMB2_flush_free(struct smb_rqst *rqst); 193 - extern int SMB311_posix_query_info(const unsigned int xid, struct cifs_tcon *tcon, 194 - u64 persistent_fid, u64 volatile_fid, struct smb311_posix_qinfo *data, u32 *plen); 195 - extern int SMB2_query_info(const unsigned int xid, struct cifs_tcon *tcon, 196 - u64 persistent_file_id, u64 volatile_file_id, 197 - struct smb2_file_all_info *data); 198 - extern int SMB2_query_info_init(struct cifs_tcon *tcon, 199 - struct TCP_Server_Info *server, 200 - struct smb_rqst *rqst, 201 - u64 persistent_fid, u64 volatile_fid, 202 - u8 info_class, u8 info_type, 203 - u32 additional_info, size_t output_len, 204 - size_t input_len, void *input); 205 - extern void SMB2_query_info_free(struct smb_rqst *rqst); 206 - extern int SMB2_query_acl(const unsigned int xid, struct cifs_tcon *tcon, 207 - u64 persistent_file_id, u64 volatile_file_id, 208 - void **data, unsigned int *plen, u32 info); 209 - extern int SMB2_get_srv_num(const unsigned int xid, struct cifs_tcon *tcon, 155 + int __SMB2_close(const unsigned int xid, struct cifs_tcon *tcon, 156 + u64 persistent_fid, u64 volatile_fid, 157 + struct smb2_file_network_open_info *pbuf); 158 + int SMB2_close(const unsigned int xid, struct cifs_tcon *tcon, 159 + u64 persistent_fid, u64 volatile_fid); 160 + int SMB2_close_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server, 161 + struct smb_rqst *rqst, u64 persistent_fid, 162 + u64 volatile_fid, bool query_attrs); 163 + void SMB2_close_free(struct smb_rqst *rqst); 164 + int SMB2_flush(const unsigned int xid, struct cifs_tcon *tcon, 165 + u64 persistent_fid, u64 volatile_fid); 166 + int SMB2_flush_init(const unsigned int xid, struct smb_rqst *rqst, 167 + struct cifs_tcon *tcon, struct TCP_Server_Info *server, 168 + u64 persistent_fid, u64 volatile_fid); 169 + void SMB2_flush_free(struct smb_rqst *rqst); 170 + int SMB311_posix_query_info(const unsigned int xid, struct cifs_tcon *tcon, 210 171 u64 persistent_fid, u64 volatile_fid, 211 - __le64 *uniqueid); 212 - extern int smb2_async_readv(struct cifs_io_subrequest *rdata); 213 - extern int SMB2_read(const unsigned int xid, struct cifs_io_parms *io_parms, 214 - unsigned int *nbytes, char **buf, int *buf_type); 215 - extern void smb2_async_writev(struct cifs_io_subrequest *wdata); 216 - extern int SMB2_write(const unsigned int xid, struct cifs_io_parms *io_parms, 217 - unsigned int *nbytes, struct kvec *iov, int n_vec); 218 - extern int SMB2_echo(struct TCP_Server_Info *server); 219 - extern int SMB2_query_directory(const unsigned int xid, struct cifs_tcon *tcon, 220 - u64 persistent_fid, u64 volatile_fid, int index, 221 - struct cifs_search_info *srch_inf); 222 - extern int SMB2_query_directory_init(unsigned int xid, struct cifs_tcon *tcon, 223 - struct TCP_Server_Info *server, 224 - struct smb_rqst *rqst, 225 - u64 persistent_fid, u64 volatile_fid, 226 - int index, int info_level); 227 - extern void SMB2_query_directory_free(struct smb_rqst *rqst); 228 - extern int SMB2_set_eof(const unsigned int xid, struct cifs_tcon *tcon, 229 - u64 persistent_fid, u64 volatile_fid, u32 pid, 230 - loff_t new_eof); 231 - extern int SMB2_set_info_init(struct cifs_tcon *tcon, 172 + struct smb311_posix_qinfo *data, u32 *plen); 173 + int SMB2_query_info(const unsigned int xid, struct cifs_tcon *tcon, 174 + u64 persistent_fid, u64 volatile_fid, 175 + struct smb2_file_all_info *data); 176 + int SMB2_query_info_init(struct cifs_tcon *tcon, 177 + struct TCP_Server_Info *server, struct smb_rqst *rqst, 178 + u64 persistent_fid, u64 volatile_fid, u8 info_class, 179 + u8 info_type, u32 additional_info, size_t output_len, 180 + size_t input_len, void *input); 181 + void SMB2_query_info_free(struct smb_rqst *rqst); 182 + int SMB2_query_acl(const unsigned int xid, struct cifs_tcon *tcon, 183 + u64 persistent_fid, u64 volatile_fid, void **data, 184 + u32 *plen, u32 extra_info); 185 + int SMB2_get_srv_num(const unsigned int xid, struct cifs_tcon *tcon, 186 + u64 persistent_fid, u64 volatile_fid, __le64 *uniqueid); 187 + int smb2_async_readv(struct cifs_io_subrequest *rdata); 188 + int SMB2_read(const unsigned int xid, struct cifs_io_parms *io_parms, 189 + unsigned int *nbytes, char **buf, int *buf_type); 190 + void smb2_async_writev(struct cifs_io_subrequest *wdata); 191 + int SMB2_write(const unsigned int xid, struct cifs_io_parms *io_parms, 192 + unsigned int *nbytes, struct kvec *iov, int n_vec); 193 + int SMB2_echo(struct TCP_Server_Info *server); 194 + int SMB2_query_directory(const unsigned int xid, struct cifs_tcon *tcon, 195 + u64 persistent_fid, u64 volatile_fid, int index, 196 + struct cifs_search_info *srch_inf); 197 + int SMB2_query_directory_init(const unsigned int xid, struct cifs_tcon *tcon, 232 198 struct TCP_Server_Info *server, 233 - struct smb_rqst *rqst, 234 - u64 persistent_fid, u64 volatile_fid, u32 pid, 235 - u8 info_class, u8 info_type, u32 additional_info, 236 - void **data, unsigned int *size); 237 - extern void SMB2_set_info_free(struct smb_rqst *rqst); 238 - extern int SMB2_set_acl(const unsigned int xid, struct cifs_tcon *tcon, 239 - u64 persistent_fid, u64 volatile_fid, 240 - struct smb_ntsd *pnntsd, int pacllen, int aclflag); 241 - extern int SMB2_set_ea(const unsigned int xid, struct cifs_tcon *tcon, 242 - u64 persistent_fid, u64 volatile_fid, 243 - struct smb2_file_full_ea_info *buf, int len); 244 - extern int SMB2_set_compression(const unsigned int xid, struct cifs_tcon *tcon, 245 - u64 persistent_fid, u64 volatile_fid); 246 - extern int SMB2_oplock_break(const unsigned int xid, struct cifs_tcon *tcon, 247 - const u64 persistent_fid, const u64 volatile_fid, 248 - const __u8 oplock_level); 249 - extern int smb2_handle_cancelled_close(struct cifs_tcon *tcon, 250 - __u64 persistent_fid, 251 - __u64 volatile_fid); 252 - extern int smb2_handle_cancelled_mid(struct mid_q_entry *mid, struct TCP_Server_Info *server); 199 + struct smb_rqst *rqst, u64 persistent_fid, 200 + u64 volatile_fid, int index, int info_level); 201 + void SMB2_query_directory_free(struct smb_rqst *rqst); 202 + int SMB2_set_eof(const unsigned int xid, struct cifs_tcon *tcon, 203 + u64 persistent_fid, u64 volatile_fid, u32 pid, 204 + loff_t new_eof); 205 + int SMB2_set_info_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server, 206 + struct smb_rqst *rqst, u64 persistent_fid, 207 + u64 volatile_fid, u32 pid, u8 info_class, u8 info_type, 208 + u32 additional_info, void **data, unsigned int *size); 209 + void SMB2_set_info_free(struct smb_rqst *rqst); 210 + int SMB2_set_acl(const unsigned int xid, struct cifs_tcon *tcon, 211 + u64 persistent_fid, u64 volatile_fid, struct smb_ntsd *pnntsd, 212 + int pacllen, int aclflag); 213 + int SMB2_set_ea(const unsigned int xid, struct cifs_tcon *tcon, 214 + u64 persistent_fid, u64 volatile_fid, 215 + struct smb2_file_full_ea_info *buf, int len); 216 + int SMB2_set_compression(const unsigned int xid, struct cifs_tcon *tcon, 217 + u64 persistent_fid, u64 volatile_fid); 218 + int SMB2_oplock_break(const unsigned int xid, struct cifs_tcon *tcon, 219 + const u64 persistent_fid, const u64 volatile_fid, 220 + __u8 oplock_level); 221 + int smb2_handle_cancelled_close(struct cifs_tcon *tcon, __u64 persistent_fid, 222 + __u64 volatile_fid); 223 + int smb2_handle_cancelled_mid(struct mid_q_entry *mid, 224 + struct TCP_Server_Info *server); 253 225 void smb2_cancelled_close_fid(struct work_struct *work); 254 - extern int SMB311_posix_qfs_info(const unsigned int xid, struct cifs_tcon *tcon, 255 - u64 persistent_file_id, u64 volatile_file_id, 256 - struct kstatfs *FSData); 257 - extern int SMB2_QFS_attr(const unsigned int xid, struct cifs_tcon *tcon, 258 - u64 persistent_file_id, u64 volatile_file_id, int lvl); 259 - extern int SMB2_lock(const unsigned int xid, struct cifs_tcon *tcon, 260 - const __u64 persist_fid, const __u64 volatile_fid, 261 - const __u32 pid, const __u64 length, const __u64 offset, 262 - const __u32 lockFlags, const bool wait); 263 - extern int smb2_lockv(const unsigned int xid, struct cifs_tcon *tcon, 264 - const __u64 persist_fid, const __u64 volatile_fid, 265 - const __u32 pid, const __u32 num_lock, 266 - struct smb2_lock_element *buf); 267 - extern int SMB2_lease_break(const unsigned int xid, struct cifs_tcon *tcon, 268 - __u8 *lease_key, const __le32 lease_state); 269 - extern int smb3_validate_negotiate(const unsigned int, struct cifs_tcon *); 226 + int SMB311_posix_qfs_info(const unsigned int xid, struct cifs_tcon *tcon, 227 + u64 persistent_fid, u64 volatile_fid, 228 + struct kstatfs *fsdata); 229 + int SMB2_QFS_attr(const unsigned int xid, struct cifs_tcon *tcon, 230 + u64 persistent_fid, u64 volatile_fid, int level); 231 + int SMB2_lock(const unsigned int xid, struct cifs_tcon *tcon, 232 + const __u64 persist_fid, const __u64 volatile_fid, 233 + const __u32 pid, const __u64 length, const __u64 offset, 234 + const __u32 lock_flags, const bool wait); 235 + int smb2_lockv(const unsigned int xid, struct cifs_tcon *tcon, 236 + const __u64 persist_fid, const __u64 volatile_fid, 237 + const __u32 pid, const __u32 num_lock, 238 + struct smb2_lock_element *buf); 239 + int SMB2_lease_break(const unsigned int xid, struct cifs_tcon *tcon, 240 + __u8 *lease_key, const __le32 lease_state); 241 + int smb3_validate_negotiate(const unsigned int xid, struct cifs_tcon *tcon); 270 242 271 - extern enum securityEnum smb2_select_sectype(struct TCP_Server_Info *, 272 - enum securityEnum); 273 - int smb2_parse_contexts(struct TCP_Server_Info *server, 274 - struct kvec *rsp_iov, 275 - __u16 *epoch, 276 - char *lease_key, __u8 *oplock, 243 + enum securityEnum smb2_select_sectype(struct TCP_Server_Info *server, 244 + enum securityEnum requested); 245 + int smb2_parse_contexts(struct TCP_Server_Info *server, struct kvec *rsp_iov, 246 + __u16 *epoch, char *lease_key, __u8 *oplock, 277 247 struct smb2_file_all_info *buf, 278 248 struct create_posix_rsp *posix); 279 249 280 - extern int smb3_encryption_required(const struct cifs_tcon *tcon); 281 - extern int smb2_validate_iov(unsigned int offset, unsigned int buffer_length, 282 - struct kvec *iov, unsigned int min_buf_size); 283 - extern int smb2_validate_and_copy_iov(unsigned int offset, 284 - unsigned int buffer_length, 285 - struct kvec *iov, 286 - unsigned int minbufsize, char *data); 287 - extern void smb2_copy_fs_info_to_kstatfs( 288 - struct smb2_fs_full_size_info *pfs_inf, 289 - struct kstatfs *kst); 290 - extern int smb3_crypto_shash_allocate(struct TCP_Server_Info *server); 291 - extern void smb311_update_preauth_hash(struct cifs_ses *ses, 292 - struct TCP_Server_Info *server, 293 - struct kvec *iov, int nvec); 294 - extern int smb2_query_info_compound(const unsigned int xid, 295 - struct cifs_tcon *tcon, 296 - const char *path, u32 desired_access, 297 - u32 class, u32 type, u32 output_len, 298 - struct kvec *rsp, int *buftype, 299 - struct cifs_sb_info *cifs_sb); 250 + int smb3_encryption_required(const struct cifs_tcon *tcon); 251 + int smb2_validate_iov(unsigned int offset, unsigned int buffer_length, 252 + struct kvec *iov, unsigned int min_buf_size); 253 + int smb2_validate_and_copy_iov(unsigned int offset, unsigned int buffer_length, 254 + struct kvec *iov, unsigned int minbufsize, 255 + char *data); 256 + void smb2_copy_fs_info_to_kstatfs(struct smb2_fs_full_size_info *pfs_inf, 257 + struct kstatfs *kst); 258 + int smb3_crypto_shash_allocate(struct TCP_Server_Info *server); 259 + void smb311_update_preauth_hash(struct cifs_ses *ses, 260 + struct TCP_Server_Info *server, 261 + struct kvec *iov, int nvec); 262 + int smb2_query_info_compound(const unsigned int xid, struct cifs_tcon *tcon, 263 + const char *path, u32 desired_access, u32 class, 264 + u32 type, u32 output_len, struct kvec *rsp, 265 + int *buftype, struct cifs_sb_info *cifs_sb); 300 266 /* query path info from the server using SMB311 POSIX extensions*/ 301 267 int posix_info_parse(const void *beg, const void *end, 302 268 struct smb2_posix_info_parsed *out); 303 269 int posix_info_sid_size(const void *beg, const void *end); 304 - int smb2_rename_pending_delete(const char *full_path, 305 - struct dentry *dentry, 270 + int smb2_rename_pending_delete(const char *full_path, struct dentry *dentry, 306 271 const unsigned int xid); 307 272 308 273 #endif /* _SMB2PROTO_H */
-1
fs/smb/client/smbencrypt.c
··· 20 20 #include <linux/random.h> 21 21 #include "cifs_fs_sb.h" 22 22 #include "cifs_unicode.h" 23 - #include "cifspdu.h" 24 23 #include "cifsglob.h" 25 24 #include "cifs_debug.h" 26 25 #include "cifsproto.h"
+1 -1
fs/smb/client/smberr.h
··· 80 80 #define ERRinvparm 87 81 81 #define ERRdiskfull 112 82 82 #define ERRinvname 123 83 - #define ERRinvlevel 124 83 + #define ERRunknownlevel 124 84 84 #define ERRdirnotempty 145 85 85 #define ERRnotlocked 158 86 86 #define ERRcancelviolation 173
+1
fs/smb/client/trace.h
··· 189 189 EM(netfs_trace_tcon_ref_put_cancelled_close_fid, "PUT Cn-Fid") \ 190 190 EM(netfs_trace_tcon_ref_put_cancelled_mid, "PUT Cn-Mid") \ 191 191 EM(netfs_trace_tcon_ref_put_mnt_ctx, "PUT MntCtx") \ 192 + EM(netfs_trace_tcon_ref_put_dfs_refer, "PUT DfsRfr") \ 192 193 EM(netfs_trace_tcon_ref_put_reconnect_server, "PUT Reconn") \ 193 194 EM(netfs_trace_tcon_ref_put_tlink, "PUT Tlink ") \ 194 195 EM(netfs_trace_tcon_ref_see_cancelled_close, "SEE Cn-Cls") \
-1
fs/smb/client/transport.c
··· 23 23 #include <linux/sched/signal.h> 24 24 #include <linux/task_io_accounting_ops.h> 25 25 #include <linux/task_work.h> 26 - #include "cifspdu.h" 27 26 #include "cifsglob.h" 28 27 #include "cifsproto.h" 29 28 #include "cifs_debug.h"
-1
fs/smb/client/xattr.c
··· 11 11 #include <linux/slab.h> 12 12 #include <linux/xattr.h> 13 13 #include "cifsfs.h" 14 - #include "cifspdu.h" 15 14 #include "cifsglob.h" 16 15 #include "cifsproto.h" 17 16 #include "cifs_debug.h"
+3
fs/smb/common/smb2pdu.h
··· 2 2 #ifndef _COMMON_SMB2PDU_H 3 3 #define _COMMON_SMB2PDU_H 4 4 5 + #include <linux/types.h> 6 + #include <linux/build_bug.h> 7 + 5 8 /* 6 9 * Note that, due to trying to use names similar to the protocol specifications, 7 10 * there are many mixed case field names in the structures below. Although
+1755 -1744
fs/smb/common/smb2status.h
··· 9 9 * 10 10 */ 11 11 12 + #ifndef FS_SMB_COMMON_SMB2STATUS_H 13 + #define FS_SMB_COMMON_SMB2STATUS_H 14 + 12 15 /* 13 16 * 0 1 2 3 4 5 6 7 8 9 0 A B C D E F 0 1 2 3 4 5 6 7 8 9 A B C D E F 14 17 * SEV C N <-------Facility--------> <------Error Status Code------> ··· 30 27 __le32 Code; 31 28 }; 32 29 33 - #define STATUS_SUCCESS cpu_to_le32(0x00000000) 34 - #define STATUS_WAIT_0 cpu_to_le32(0x00000000) 35 - #define STATUS_WAIT_1 cpu_to_le32(0x00000001) 36 - #define STATUS_WAIT_2 cpu_to_le32(0x00000002) 37 - #define STATUS_WAIT_3 cpu_to_le32(0x00000003) 38 - #define STATUS_WAIT_63 cpu_to_le32(0x0000003F) 39 - #define STATUS_ABANDONED cpu_to_le32(0x00000080) 40 - #define STATUS_ABANDONED_WAIT_0 cpu_to_le32(0x00000080) 41 - #define STATUS_ABANDONED_WAIT_63 cpu_to_le32(0x000000BF) 42 - #define STATUS_USER_APC cpu_to_le32(0x000000C0) 43 - #define STATUS_KERNEL_APC cpu_to_le32(0x00000100) 44 - #define STATUS_ALERTED cpu_to_le32(0x00000101) 45 - #define STATUS_TIMEOUT cpu_to_le32(0x00000102) 46 - #define STATUS_PENDING cpu_to_le32(0x00000103) 47 - #define STATUS_REPARSE cpu_to_le32(0x00000104) 48 - #define STATUS_MORE_ENTRIES cpu_to_le32(0x00000105) 49 - #define STATUS_NOT_ALL_ASSIGNED cpu_to_le32(0x00000106) 50 - #define STATUS_SOME_NOT_MAPPED cpu_to_le32(0x00000107) 51 - #define STATUS_OPLOCK_BREAK_IN_PROGRESS cpu_to_le32(0x00000108) 52 - #define STATUS_VOLUME_MOUNTED cpu_to_le32(0x00000109) 53 - #define STATUS_RXACT_COMMITTED cpu_to_le32(0x0000010A) 54 - #define STATUS_NOTIFY_CLEANUP cpu_to_le32(0x0000010B) 55 - #define STATUS_NOTIFY_ENUM_DIR cpu_to_le32(0x0000010C) 56 - #define STATUS_NO_QUOTAS_FOR_ACCOUNT cpu_to_le32(0x0000010D) 57 - #define STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED cpu_to_le32(0x0000010E) 58 - #define STATUS_PAGE_FAULT_TRANSITION cpu_to_le32(0x00000110) 59 - #define STATUS_PAGE_FAULT_DEMAND_ZERO cpu_to_le32(0x00000111) 60 - #define STATUS_PAGE_FAULT_COPY_ON_WRITE cpu_to_le32(0x00000112) 61 - #define STATUS_PAGE_FAULT_GUARD_PAGE cpu_to_le32(0x00000113) 62 - #define STATUS_PAGE_FAULT_PAGING_FILE cpu_to_le32(0x00000114) 63 - #define STATUS_CACHE_PAGE_LOCKED cpu_to_le32(0x00000115) 64 - #define STATUS_CRASH_DUMP cpu_to_le32(0x00000116) 65 - #define STATUS_BUFFER_ALL_ZEROS cpu_to_le32(0x00000117) 66 - #define STATUS_REPARSE_OBJECT cpu_to_le32(0x00000118) 67 - #define STATUS_RESOURCE_REQUIREMENTS_CHANGED cpu_to_le32(0x00000119) 68 - #define STATUS_TRANSLATION_COMPLETE cpu_to_le32(0x00000120) 69 - #define STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY cpu_to_le32(0x00000121) 70 - #define STATUS_NOTHING_TO_TERMINATE cpu_to_le32(0x00000122) 71 - #define STATUS_PROCESS_NOT_IN_JOB cpu_to_le32(0x00000123) 72 - #define STATUS_PROCESS_IN_JOB cpu_to_le32(0x00000124) 73 - #define STATUS_VOLSNAP_HIBERNATE_READY cpu_to_le32(0x00000125) 74 - #define STATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY cpu_to_le32(0x00000126) 75 - #define STATUS_INTERRUPT_VECTOR_ALREADY_CONNECTED cpu_to_le32(0x00000127) 76 - #define STATUS_INTERRUPT_STILL_CONNECTED cpu_to_le32(0x00000128) 77 - #define STATUS_PROCESS_CLONED cpu_to_le32(0x00000129) 78 - #define STATUS_FILE_LOCKED_WITH_ONLY_READERS cpu_to_le32(0x0000012A) 79 - #define STATUS_FILE_LOCKED_WITH_WRITERS cpu_to_le32(0x0000012B) 80 - #define STATUS_RESOURCEMANAGER_READ_ONLY cpu_to_le32(0x00000202) 81 - #define STATUS_WAIT_FOR_OPLOCK cpu_to_le32(0x00000367) 82 - #define DBG_EXCEPTION_HANDLED cpu_to_le32(0x00010001) 83 - #define DBG_CONTINUE cpu_to_le32(0x00010002) 84 - #define STATUS_FLT_IO_COMPLETE cpu_to_le32(0x001C0001) 85 - #define STATUS_OBJECT_NAME_EXISTS cpu_to_le32(0x40000000) 86 - #define STATUS_THREAD_WAS_SUSPENDED cpu_to_le32(0x40000001) 87 - #define STATUS_WORKING_SET_LIMIT_RANGE cpu_to_le32(0x40000002) 88 - #define STATUS_IMAGE_NOT_AT_BASE cpu_to_le32(0x40000003) 89 - #define STATUS_RXACT_STATE_CREATED cpu_to_le32(0x40000004) 90 - #define STATUS_SEGMENT_NOTIFICATION cpu_to_le32(0x40000005) 91 - #define STATUS_LOCAL_USER_SESSION_KEY cpu_to_le32(0x40000006) 92 - #define STATUS_BAD_CURRENT_DIRECTORY cpu_to_le32(0x40000007) 93 - #define STATUS_SERIAL_MORE_WRITES cpu_to_le32(0x40000008) 94 - #define STATUS_REGISTRY_RECOVERED cpu_to_le32(0x40000009) 95 - #define STATUS_FT_READ_RECOVERY_FROM_BACKUP cpu_to_le32(0x4000000A) 96 - #define STATUS_FT_WRITE_RECOVERY cpu_to_le32(0x4000000B) 97 - #define STATUS_SERIAL_COUNTER_TIMEOUT cpu_to_le32(0x4000000C) 98 - #define STATUS_NULL_LM_PASSWORD cpu_to_le32(0x4000000D) 99 - #define STATUS_IMAGE_MACHINE_TYPE_MISMATCH cpu_to_le32(0x4000000E) 100 - #define STATUS_RECEIVE_PARTIAL cpu_to_le32(0x4000000F) 101 - #define STATUS_RECEIVE_EXPEDITED cpu_to_le32(0x40000010) 102 - #define STATUS_RECEIVE_PARTIAL_EXPEDITED cpu_to_le32(0x40000011) 103 - #define STATUS_EVENT_DONE cpu_to_le32(0x40000012) 104 - #define STATUS_EVENT_PENDING cpu_to_le32(0x40000013) 105 - #define STATUS_CHECKING_FILE_SYSTEM cpu_to_le32(0x40000014) 106 - #define STATUS_FATAL_APP_EXIT cpu_to_le32(0x40000015) 107 - #define STATUS_PREDEFINED_HANDLE cpu_to_le32(0x40000016) 108 - #define STATUS_WAS_UNLOCKED cpu_to_le32(0x40000017) 109 - #define STATUS_SERVICE_NOTIFICATION cpu_to_le32(0x40000018) 110 - #define STATUS_WAS_LOCKED cpu_to_le32(0x40000019) 111 - #define STATUS_LOG_HARD_ERROR cpu_to_le32(0x4000001A) 112 - #define STATUS_ALREADY_WIN32 cpu_to_le32(0x4000001B) 113 - #define STATUS_WX86_UNSIMULATE cpu_to_le32(0x4000001C) 114 - #define STATUS_WX86_CONTINUE cpu_to_le32(0x4000001D) 115 - #define STATUS_WX86_SINGLE_STEP cpu_to_le32(0x4000001E) 116 - #define STATUS_WX86_BREAKPOINT cpu_to_le32(0x4000001F) 117 - #define STATUS_WX86_EXCEPTION_CONTINUE cpu_to_le32(0x40000020) 118 - #define STATUS_WX86_EXCEPTION_LASTCHANCE cpu_to_le32(0x40000021) 119 - #define STATUS_WX86_EXCEPTION_CHAIN cpu_to_le32(0x40000022) 120 - #define STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE cpu_to_le32(0x40000023) 121 - #define STATUS_NO_YIELD_PERFORMED cpu_to_le32(0x40000024) 122 - #define STATUS_TIMER_RESUME_IGNORED cpu_to_le32(0x40000025) 123 - #define STATUS_ARBITRATION_UNHANDLED cpu_to_le32(0x40000026) 124 - #define STATUS_CARDBUS_NOT_SUPPORTED cpu_to_le32(0x40000027) 125 - #define STATUS_WX86_CREATEWX86TIB cpu_to_le32(0x40000028) 126 - #define STATUS_MP_PROCESSOR_MISMATCH cpu_to_le32(0x40000029) 127 - #define STATUS_HIBERNATED cpu_to_le32(0x4000002A) 128 - #define STATUS_RESUME_HIBERNATION cpu_to_le32(0x4000002B) 129 - #define STATUS_FIRMWARE_UPDATED cpu_to_le32(0x4000002C) 130 - #define STATUS_DRIVERS_LEAKING_LOCKED_PAGES cpu_to_le32(0x4000002D) 131 - #define STATUS_MESSAGE_RETRIEVED cpu_to_le32(0x4000002E) 132 - #define STATUS_SYSTEM_POWERSTATE_TRANSITION cpu_to_le32(0x4000002F) 133 - #define STATUS_ALPC_CHECK_COMPLETION_LIST cpu_to_le32(0x40000030) 134 - #define STATUS_SYSTEM_POWERSTATE_COMPLEX_TRANSITION cpu_to_le32(0x40000031) 135 - #define STATUS_ACCESS_AUDIT_BY_POLICY cpu_to_le32(0x40000032) 136 - #define STATUS_ABANDON_HIBERFILE cpu_to_le32(0x40000033) 137 - #define STATUS_BIZRULES_NOT_ENABLED cpu_to_le32(0x40000034) 138 - #define STATUS_WAKE_SYSTEM cpu_to_le32(0x40000294) 139 - #define STATUS_DS_SHUTTING_DOWN cpu_to_le32(0x40000370) 140 - #define DBG_REPLY_LATER cpu_to_le32(0x40010001) 141 - #define DBG_UNABLE_TO_PROVIDE_HANDLE cpu_to_le32(0x40010002) 142 - #define DBG_TERMINATE_THREAD cpu_to_le32(0x40010003) 143 - #define DBG_TERMINATE_PROCESS cpu_to_le32(0x40010004) 144 - #define DBG_CONTROL_C cpu_to_le32(0x40010005) 145 - #define DBG_PRINTEXCEPTION_C cpu_to_le32(0x40010006) 146 - #define DBG_RIPEXCEPTION cpu_to_le32(0x40010007) 147 - #define DBG_CONTROL_BREAK cpu_to_le32(0x40010008) 148 - #define DBG_COMMAND_EXCEPTION cpu_to_le32(0x40010009) 149 - #define RPC_NT_UUID_LOCAL_ONLY cpu_to_le32(0x40020056) 150 - #define RPC_NT_SEND_INCOMPLETE cpu_to_le32(0x400200AF) 151 - #define STATUS_CTX_CDM_CONNECT cpu_to_le32(0x400A0004) 152 - #define STATUS_CTX_CDM_DISCONNECT cpu_to_le32(0x400A0005) 153 - #define STATUS_SXS_RELEASE_ACTIVATION_CONTEXT cpu_to_le32(0x4015000D) 154 - #define STATUS_RECOVERY_NOT_NEEDED cpu_to_le32(0x40190034) 155 - #define STATUS_RM_ALREADY_STARTED cpu_to_le32(0x40190035) 156 - #define STATUS_LOG_NO_RESTART cpu_to_le32(0x401A000C) 157 - #define STATUS_VIDEO_DRIVER_DEBUG_REPORT_REQUEST cpu_to_le32(0x401B00EC) 158 - #define STATUS_GRAPHICS_PARTIAL_DATA_POPULATED cpu_to_le32(0x401E000A) 159 - #define STATUS_GRAPHICS_DRIVER_MISMATCH cpu_to_le32(0x401E0117) 160 - #define STATUS_GRAPHICS_MODE_NOT_PINNED cpu_to_le32(0x401E0307) 161 - #define STATUS_GRAPHICS_NO_PREFERRED_MODE cpu_to_le32(0x401E031E) 162 - #define STATUS_GRAPHICS_DATASET_IS_EMPTY cpu_to_le32(0x401E034B) 163 - #define STATUS_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET cpu_to_le32(0x401E034C) 164 - #define STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED cpu_to_le32(0x401E0351) 165 - #define STATUS_GRAPHICS_UNKNOWN_CHILD_STATUS cpu_to_le32(0x401E042F) 166 - #define STATUS_GRAPHICS_LEADLINK_START_DEFERRED cpu_to_le32(0x401E0437) 167 - #define STATUS_GRAPHICS_POLLING_TOO_FREQUENTLY cpu_to_le32(0x401E0439) 168 - #define STATUS_GRAPHICS_START_DEFERRED cpu_to_le32(0x401E043A) 169 - #define STATUS_NDIS_INDICATION_REQUIRED cpu_to_le32(0x40230001) 170 - #define STATUS_GUARD_PAGE_VIOLATION cpu_to_le32(0x80000001) 171 - #define STATUS_DATATYPE_MISALIGNMENT cpu_to_le32(0x80000002) 172 - #define STATUS_BREAKPOINT cpu_to_le32(0x80000003) 173 - #define STATUS_SINGLE_STEP cpu_to_le32(0x80000004) 174 - #define STATUS_BUFFER_OVERFLOW cpu_to_le32(0x80000005) 175 - #define STATUS_NO_MORE_FILES cpu_to_le32(0x80000006) 176 - #define STATUS_WAKE_SYSTEM_DEBUGGER cpu_to_le32(0x80000007) 177 - #define STATUS_HANDLES_CLOSED cpu_to_le32(0x8000000A) 178 - #define STATUS_NO_INHERITANCE cpu_to_le32(0x8000000B) 179 - #define STATUS_GUID_SUBSTITUTION_MADE cpu_to_le32(0x8000000C) 180 - #define STATUS_PARTIAL_COPY cpu_to_le32(0x8000000D) 181 - #define STATUS_DEVICE_PAPER_EMPTY cpu_to_le32(0x8000000E) 182 - #define STATUS_DEVICE_POWERED_OFF cpu_to_le32(0x8000000F) 183 - #define STATUS_DEVICE_OFF_LINE cpu_to_le32(0x80000010) 184 - #define STATUS_DEVICE_BUSY cpu_to_le32(0x80000011) 185 - #define STATUS_NO_MORE_EAS cpu_to_le32(0x80000012) 186 - #define STATUS_INVALID_EA_NAME cpu_to_le32(0x80000013) 187 - #define STATUS_EA_LIST_INCONSISTENT cpu_to_le32(0x80000014) 188 - #define STATUS_INVALID_EA_FLAG cpu_to_le32(0x80000015) 189 - #define STATUS_VERIFY_REQUIRED cpu_to_le32(0x80000016) 190 - #define STATUS_EXTRANEOUS_INFORMATION cpu_to_le32(0x80000017) 191 - #define STATUS_RXACT_COMMIT_NECESSARY cpu_to_le32(0x80000018) 192 - #define STATUS_NO_MORE_ENTRIES cpu_to_le32(0x8000001A) 193 - #define STATUS_FILEMARK_DETECTED cpu_to_le32(0x8000001B) 194 - #define STATUS_MEDIA_CHANGED cpu_to_le32(0x8000001C) 195 - #define STATUS_BUS_RESET cpu_to_le32(0x8000001D) 196 - #define STATUS_END_OF_MEDIA cpu_to_le32(0x8000001E) 197 - #define STATUS_BEGINNING_OF_MEDIA cpu_to_le32(0x8000001F) 198 - #define STATUS_MEDIA_CHECK cpu_to_le32(0x80000020) 199 - #define STATUS_SETMARK_DETECTED cpu_to_le32(0x80000021) 200 - #define STATUS_NO_DATA_DETECTED cpu_to_le32(0x80000022) 201 - #define STATUS_REDIRECTOR_HAS_OPEN_HANDLES cpu_to_le32(0x80000023) 202 - #define STATUS_SERVER_HAS_OPEN_HANDLES cpu_to_le32(0x80000024) 203 - #define STATUS_ALREADY_DISCONNECTED cpu_to_le32(0x80000025) 204 - #define STATUS_LONGJUMP cpu_to_le32(0x80000026) 205 - #define STATUS_CLEANER_CARTRIDGE_INSTALLED cpu_to_le32(0x80000027) 206 - #define STATUS_PLUGPLAY_QUERY_VETOED cpu_to_le32(0x80000028) 207 - #define STATUS_UNWIND_CONSOLIDATE cpu_to_le32(0x80000029) 208 - #define STATUS_REGISTRY_HIVE_RECOVERED cpu_to_le32(0x8000002A) 209 - #define STATUS_DLL_MIGHT_BE_INSECURE cpu_to_le32(0x8000002B) 210 - #define STATUS_DLL_MIGHT_BE_INCOMPATIBLE cpu_to_le32(0x8000002C) 211 - #define STATUS_STOPPED_ON_SYMLINK cpu_to_le32(0x8000002D) 212 - #define STATUS_DEVICE_REQUIRES_CLEANING cpu_to_le32(0x80000288) 213 - #define STATUS_DEVICE_DOOR_OPEN cpu_to_le32(0x80000289) 214 - #define STATUS_DATA_LOST_REPAIR cpu_to_le32(0x80000803) 215 - #define DBG_EXCEPTION_NOT_HANDLED cpu_to_le32(0x80010001) 216 - #define STATUS_CLUSTER_NODE_ALREADY_UP cpu_to_le32(0x80130001) 217 - #define STATUS_CLUSTER_NODE_ALREADY_DOWN cpu_to_le32(0x80130002) 218 - #define STATUS_CLUSTER_NETWORK_ALREADY_ONLINE cpu_to_le32(0x80130003) 219 - #define STATUS_CLUSTER_NETWORK_ALREADY_OFFLINE cpu_to_le32(0x80130004) 220 - #define STATUS_CLUSTER_NODE_ALREADY_MEMBER cpu_to_le32(0x80130005) 221 - #define STATUS_COULD_NOT_RESIZE_LOG cpu_to_le32(0x80190009) 222 - #define STATUS_NO_TXF_METADATA cpu_to_le32(0x80190029) 223 - #define STATUS_CANT_RECOVER_WITH_HANDLE_OPEN cpu_to_le32(0x80190031) 224 - #define STATUS_TXF_METADATA_ALREADY_PRESENT cpu_to_le32(0x80190041) 225 - #define STATUS_TRANSACTION_SCOPE_CALLBACKS_NOT_SET cpu_to_le32(0x80190042) 226 - #define STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD_RECOVERED cpu_to_le32(0x801B00EB) 227 - #define STATUS_FLT_BUFFER_TOO_SMALL cpu_to_le32(0x801C0001) 228 - #define STATUS_FVE_PARTIAL_METADATA cpu_to_le32(0x80210001) 229 - #define STATUS_UNSUCCESSFUL cpu_to_le32(0xC0000001) 230 - #define STATUS_NOT_IMPLEMENTED cpu_to_le32(0xC0000002) 231 - #define STATUS_INVALID_INFO_CLASS cpu_to_le32(0xC0000003) 232 - #define STATUS_INFO_LENGTH_MISMATCH cpu_to_le32(0xC0000004) 233 - #define STATUS_ACCESS_VIOLATION cpu_to_le32(0xC0000005) 234 - #define STATUS_IN_PAGE_ERROR cpu_to_le32(0xC0000006) 235 - #define STATUS_PAGEFILE_QUOTA cpu_to_le32(0xC0000007) 236 - #define STATUS_INVALID_HANDLE cpu_to_le32(0xC0000008) 237 - #define STATUS_BAD_INITIAL_STACK cpu_to_le32(0xC0000009) 238 - #define STATUS_BAD_INITIAL_PC cpu_to_le32(0xC000000A) 239 - #define STATUS_INVALID_CID cpu_to_le32(0xC000000B) 240 - #define STATUS_TIMER_NOT_CANCELED cpu_to_le32(0xC000000C) 241 - #define STATUS_INVALID_PARAMETER cpu_to_le32(0xC000000D) 242 - #define STATUS_NO_SUCH_DEVICE cpu_to_le32(0xC000000E) 243 - #define STATUS_NO_SUCH_FILE cpu_to_le32(0xC000000F) 244 - #define STATUS_INVALID_DEVICE_REQUEST cpu_to_le32(0xC0000010) 245 - #define STATUS_END_OF_FILE cpu_to_le32(0xC0000011) 246 - #define STATUS_WRONG_VOLUME cpu_to_le32(0xC0000012) 247 - #define STATUS_NO_MEDIA_IN_DEVICE cpu_to_le32(0xC0000013) 248 - #define STATUS_UNRECOGNIZED_MEDIA cpu_to_le32(0xC0000014) 249 - #define STATUS_NONEXISTENT_SECTOR cpu_to_le32(0xC0000015) 250 - #define STATUS_MORE_PROCESSING_REQUIRED cpu_to_le32(0xC0000016) 251 - #define STATUS_NO_MEMORY cpu_to_le32(0xC0000017) 252 - #define STATUS_CONFLICTING_ADDRESSES cpu_to_le32(0xC0000018) 253 - #define STATUS_NOT_MAPPED_VIEW cpu_to_le32(0xC0000019) 254 - #define STATUS_UNABLE_TO_FREE_VM cpu_to_le32(0xC000001A) 255 - #define STATUS_UNABLE_TO_DELETE_SECTION cpu_to_le32(0xC000001B) 256 - #define STATUS_INVALID_SYSTEM_SERVICE cpu_to_le32(0xC000001C) 257 - #define STATUS_ILLEGAL_INSTRUCTION cpu_to_le32(0xC000001D) 258 - #define STATUS_INVALID_LOCK_SEQUENCE cpu_to_le32(0xC000001E) 259 - #define STATUS_INVALID_VIEW_SIZE cpu_to_le32(0xC000001F) 260 - #define STATUS_INVALID_FILE_FOR_SECTION cpu_to_le32(0xC0000020) 261 - #define STATUS_ALREADY_COMMITTED cpu_to_le32(0xC0000021) 262 - #define STATUS_ACCESS_DENIED cpu_to_le32(0xC0000022) 263 - #define STATUS_BUFFER_TOO_SMALL cpu_to_le32(0xC0000023) 264 - #define STATUS_OBJECT_TYPE_MISMATCH cpu_to_le32(0xC0000024) 265 - #define STATUS_NONCONTINUABLE_EXCEPTION cpu_to_le32(0xC0000025) 266 - #define STATUS_INVALID_DISPOSITION cpu_to_le32(0xC0000026) 267 - #define STATUS_UNWIND cpu_to_le32(0xC0000027) 268 - #define STATUS_BAD_STACK cpu_to_le32(0xC0000028) 269 - #define STATUS_INVALID_UNWIND_TARGET cpu_to_le32(0xC0000029) 270 - #define STATUS_NOT_LOCKED cpu_to_le32(0xC000002A) 271 - #define STATUS_PARITY_ERROR cpu_to_le32(0xC000002B) 272 - #define STATUS_UNABLE_TO_DECOMMIT_VM cpu_to_le32(0xC000002C) 273 - #define STATUS_NOT_COMMITTED cpu_to_le32(0xC000002D) 274 - #define STATUS_INVALID_PORT_ATTRIBUTES cpu_to_le32(0xC000002E) 275 - #define STATUS_PORT_MESSAGE_TOO_LONG cpu_to_le32(0xC000002F) 276 - #define STATUS_INVALID_PARAMETER_MIX cpu_to_le32(0xC0000030) 277 - #define STATUS_INVALID_QUOTA_LOWER cpu_to_le32(0xC0000031) 278 - #define STATUS_DISK_CORRUPT_ERROR cpu_to_le32(0xC0000032) 279 - #define STATUS_OBJECT_NAME_INVALID cpu_to_le32(0xC0000033) 280 - #define STATUS_OBJECT_NAME_NOT_FOUND cpu_to_le32(0xC0000034) 281 - #define STATUS_OBJECT_NAME_COLLISION cpu_to_le32(0xC0000035) 282 - #define STATUS_PORT_DISCONNECTED cpu_to_le32(0xC0000037) 283 - #define STATUS_DEVICE_ALREADY_ATTACHED cpu_to_le32(0xC0000038) 284 - #define STATUS_OBJECT_PATH_INVALID cpu_to_le32(0xC0000039) 285 - #define STATUS_OBJECT_PATH_NOT_FOUND cpu_to_le32(0xC000003A) 286 - #define STATUS_OBJECT_PATH_SYNTAX_BAD cpu_to_le32(0xC000003B) 287 - #define STATUS_DATA_OVERRUN cpu_to_le32(0xC000003C) 288 - #define STATUS_DATA_LATE_ERROR cpu_to_le32(0xC000003D) 289 - #define STATUS_DATA_ERROR cpu_to_le32(0xC000003E) 290 - #define STATUS_CRC_ERROR cpu_to_le32(0xC000003F) 291 - #define STATUS_SECTION_TOO_BIG cpu_to_le32(0xC0000040) 292 - #define STATUS_PORT_CONNECTION_REFUSED cpu_to_le32(0xC0000041) 293 - #define STATUS_INVALID_PORT_HANDLE cpu_to_le32(0xC0000042) 294 - #define STATUS_SHARING_VIOLATION cpu_to_le32(0xC0000043) 295 - #define STATUS_QUOTA_EXCEEDED cpu_to_le32(0xC0000044) 296 - #define STATUS_INVALID_PAGE_PROTECTION cpu_to_le32(0xC0000045) 297 - #define STATUS_MUTANT_NOT_OWNED cpu_to_le32(0xC0000046) 298 - #define STATUS_SEMAPHORE_LIMIT_EXCEEDED cpu_to_le32(0xC0000047) 299 - #define STATUS_PORT_ALREADY_SET cpu_to_le32(0xC0000048) 300 - #define STATUS_SECTION_NOT_IMAGE cpu_to_le32(0xC0000049) 301 - #define STATUS_SUSPEND_COUNT_EXCEEDED cpu_to_le32(0xC000004A) 302 - #define STATUS_THREAD_IS_TERMINATING cpu_to_le32(0xC000004B) 303 - #define STATUS_BAD_WORKING_SET_LIMIT cpu_to_le32(0xC000004C) 304 - #define STATUS_INCOMPATIBLE_FILE_MAP cpu_to_le32(0xC000004D) 305 - #define STATUS_SECTION_PROTECTION cpu_to_le32(0xC000004E) 306 - #define STATUS_EAS_NOT_SUPPORTED cpu_to_le32(0xC000004F) 307 - #define STATUS_EA_TOO_LARGE cpu_to_le32(0xC0000050) 308 - #define STATUS_NONEXISTENT_EA_ENTRY cpu_to_le32(0xC0000051) 309 - #define STATUS_NO_EAS_ON_FILE cpu_to_le32(0xC0000052) 310 - #define STATUS_EA_CORRUPT_ERROR cpu_to_le32(0xC0000053) 311 - #define STATUS_FILE_LOCK_CONFLICT cpu_to_le32(0xC0000054) 312 - #define STATUS_LOCK_NOT_GRANTED cpu_to_le32(0xC0000055) 313 - #define STATUS_DELETE_PENDING cpu_to_le32(0xC0000056) 314 - #define STATUS_CTL_FILE_NOT_SUPPORTED cpu_to_le32(0xC0000057) 315 - #define STATUS_UNKNOWN_REVISION cpu_to_le32(0xC0000058) 316 - #define STATUS_REVISION_MISMATCH cpu_to_le32(0xC0000059) 317 - #define STATUS_INVALID_OWNER cpu_to_le32(0xC000005A) 318 - #define STATUS_INVALID_PRIMARY_GROUP cpu_to_le32(0xC000005B) 319 - #define STATUS_NO_IMPERSONATION_TOKEN cpu_to_le32(0xC000005C) 320 - #define STATUS_CANT_DISABLE_MANDATORY cpu_to_le32(0xC000005D) 321 - #define STATUS_NO_LOGON_SERVERS cpu_to_le32(0xC000005E) 322 - #define STATUS_NO_SUCH_LOGON_SESSION cpu_to_le32(0xC000005F) 323 - #define STATUS_NO_SUCH_PRIVILEGE cpu_to_le32(0xC0000060) 324 - #define STATUS_PRIVILEGE_NOT_HELD cpu_to_le32(0xC0000061) 325 - #define STATUS_INVALID_ACCOUNT_NAME cpu_to_le32(0xC0000062) 326 - #define STATUS_USER_EXISTS cpu_to_le32(0xC0000063) 327 - #define STATUS_NO_SUCH_USER cpu_to_le32(0xC0000064) 328 - #define STATUS_GROUP_EXISTS cpu_to_le32(0xC0000065) 329 - #define STATUS_NO_SUCH_GROUP cpu_to_le32(0xC0000066) 330 - #define STATUS_MEMBER_IN_GROUP cpu_to_le32(0xC0000067) 331 - #define STATUS_MEMBER_NOT_IN_GROUP cpu_to_le32(0xC0000068) 332 - #define STATUS_LAST_ADMIN cpu_to_le32(0xC0000069) 333 - #define STATUS_WRONG_PASSWORD cpu_to_le32(0xC000006A) 334 - #define STATUS_ILL_FORMED_PASSWORD cpu_to_le32(0xC000006B) 335 - #define STATUS_PASSWORD_RESTRICTION cpu_to_le32(0xC000006C) 336 - #define STATUS_LOGON_FAILURE cpu_to_le32(0xC000006D) 337 - #define STATUS_ACCOUNT_RESTRICTION cpu_to_le32(0xC000006E) 338 - #define STATUS_INVALID_LOGON_HOURS cpu_to_le32(0xC000006F) 339 - #define STATUS_INVALID_WORKSTATION cpu_to_le32(0xC0000070) 340 - #define STATUS_PASSWORD_EXPIRED cpu_to_le32(0xC0000071) 341 - #define STATUS_ACCOUNT_DISABLED cpu_to_le32(0xC0000072) 342 - #define STATUS_NONE_MAPPED cpu_to_le32(0xC0000073) 343 - #define STATUS_TOO_MANY_LUIDS_REQUESTED cpu_to_le32(0xC0000074) 344 - #define STATUS_LUIDS_EXHAUSTED cpu_to_le32(0xC0000075) 345 - #define STATUS_INVALID_SUB_AUTHORITY cpu_to_le32(0xC0000076) 346 - #define STATUS_INVALID_ACL cpu_to_le32(0xC0000077) 347 - #define STATUS_INVALID_SID cpu_to_le32(0xC0000078) 348 - #define STATUS_INVALID_SECURITY_DESCR cpu_to_le32(0xC0000079) 349 - #define STATUS_PROCEDURE_NOT_FOUND cpu_to_le32(0xC000007A) 350 - #define STATUS_INVALID_IMAGE_FORMAT cpu_to_le32(0xC000007B) 351 - #define STATUS_NO_TOKEN cpu_to_le32(0xC000007C) 352 - #define STATUS_BAD_INHERITANCE_ACL cpu_to_le32(0xC000007D) 353 - #define STATUS_RANGE_NOT_LOCKED cpu_to_le32(0xC000007E) 354 - #define STATUS_DISK_FULL cpu_to_le32(0xC000007F) 355 - #define STATUS_SERVER_DISABLED cpu_to_le32(0xC0000080) 356 - #define STATUS_SERVER_NOT_DISABLED cpu_to_le32(0xC0000081) 357 - #define STATUS_TOO_MANY_GUIDS_REQUESTED cpu_to_le32(0xC0000082) 358 - #define STATUS_GUIDS_EXHAUSTED cpu_to_le32(0xC0000083) 359 - #define STATUS_INVALID_ID_AUTHORITY cpu_to_le32(0xC0000084) 360 - #define STATUS_AGENTS_EXHAUSTED cpu_to_le32(0xC0000085) 361 - #define STATUS_INVALID_VOLUME_LABEL cpu_to_le32(0xC0000086) 362 - #define STATUS_SECTION_NOT_EXTENDED cpu_to_le32(0xC0000087) 363 - #define STATUS_NOT_MAPPED_DATA cpu_to_le32(0xC0000088) 364 - #define STATUS_RESOURCE_DATA_NOT_FOUND cpu_to_le32(0xC0000089) 365 - #define STATUS_RESOURCE_TYPE_NOT_FOUND cpu_to_le32(0xC000008A) 366 - #define STATUS_RESOURCE_NAME_NOT_FOUND cpu_to_le32(0xC000008B) 367 - #define STATUS_ARRAY_BOUNDS_EXCEEDED cpu_to_le32(0xC000008C) 368 - #define STATUS_FLOAT_DENORMAL_OPERAND cpu_to_le32(0xC000008D) 369 - #define STATUS_FLOAT_DIVIDE_BY_ZERO cpu_to_le32(0xC000008E) 370 - #define STATUS_FLOAT_INEXACT_RESULT cpu_to_le32(0xC000008F) 371 - #define STATUS_FLOAT_INVALID_OPERATION cpu_to_le32(0xC0000090) 372 - #define STATUS_FLOAT_OVERFLOW cpu_to_le32(0xC0000091) 373 - #define STATUS_FLOAT_STACK_CHECK cpu_to_le32(0xC0000092) 374 - #define STATUS_FLOAT_UNDERFLOW cpu_to_le32(0xC0000093) 375 - #define STATUS_INTEGER_DIVIDE_BY_ZERO cpu_to_le32(0xC0000094) 376 - #define STATUS_INTEGER_OVERFLOW cpu_to_le32(0xC0000095) 377 - #define STATUS_PRIVILEGED_INSTRUCTION cpu_to_le32(0xC0000096) 378 - #define STATUS_TOO_MANY_PAGING_FILES cpu_to_le32(0xC0000097) 379 - #define STATUS_FILE_INVALID cpu_to_le32(0xC0000098) 380 - #define STATUS_ALLOTTED_SPACE_EXCEEDED cpu_to_le32(0xC0000099) 381 - #define STATUS_INSUFFICIENT_RESOURCES cpu_to_le32(0xC000009A) 382 - #define STATUS_DFS_EXIT_PATH_FOUND cpu_to_le32(0xC000009B) 383 - #define STATUS_DEVICE_DATA_ERROR cpu_to_le32(0xC000009C) 384 - #define STATUS_DEVICE_NOT_CONNECTED cpu_to_le32(0xC000009D) 385 - #define STATUS_DEVICE_POWER_FAILURE cpu_to_le32(0xC000009E) 386 - #define STATUS_FREE_VM_NOT_AT_BASE cpu_to_le32(0xC000009F) 387 - #define STATUS_MEMORY_NOT_ALLOCATED cpu_to_le32(0xC00000A0) 388 - #define STATUS_WORKING_SET_QUOTA cpu_to_le32(0xC00000A1) 389 - #define STATUS_MEDIA_WRITE_PROTECTED cpu_to_le32(0xC00000A2) 390 - #define STATUS_DEVICE_NOT_READY cpu_to_le32(0xC00000A3) 391 - #define STATUS_INVALID_GROUP_ATTRIBUTES cpu_to_le32(0xC00000A4) 392 - #define STATUS_BAD_IMPERSONATION_LEVEL cpu_to_le32(0xC00000A5) 393 - #define STATUS_CANT_OPEN_ANONYMOUS cpu_to_le32(0xC00000A6) 394 - #define STATUS_BAD_VALIDATION_CLASS cpu_to_le32(0xC00000A7) 395 - #define STATUS_BAD_TOKEN_TYPE cpu_to_le32(0xC00000A8) 396 - #define STATUS_BAD_MASTER_BOOT_RECORD cpu_to_le32(0xC00000A9) 397 - #define STATUS_INSTRUCTION_MISALIGNMENT cpu_to_le32(0xC00000AA) 398 - #define STATUS_INSTANCE_NOT_AVAILABLE cpu_to_le32(0xC00000AB) 399 - #define STATUS_PIPE_NOT_AVAILABLE cpu_to_le32(0xC00000AC) 400 - #define STATUS_INVALID_PIPE_STATE cpu_to_le32(0xC00000AD) 401 - #define STATUS_PIPE_BUSY cpu_to_le32(0xC00000AE) 402 - #define STATUS_ILLEGAL_FUNCTION cpu_to_le32(0xC00000AF) 403 - #define STATUS_PIPE_DISCONNECTED cpu_to_le32(0xC00000B0) 404 - #define STATUS_PIPE_CLOSING cpu_to_le32(0xC00000B1) 405 - #define STATUS_PIPE_CONNECTED cpu_to_le32(0xC00000B2) 406 - #define STATUS_PIPE_LISTENING cpu_to_le32(0xC00000B3) 407 - #define STATUS_INVALID_READ_MODE cpu_to_le32(0xC00000B4) 408 - #define STATUS_IO_TIMEOUT cpu_to_le32(0xC00000B5) 409 - #define STATUS_FILE_FORCED_CLOSED cpu_to_le32(0xC00000B6) 410 - #define STATUS_PROFILING_NOT_STARTED cpu_to_le32(0xC00000B7) 411 - #define STATUS_PROFILING_NOT_STOPPED cpu_to_le32(0xC00000B8) 412 - #define STATUS_COULD_NOT_INTERPRET cpu_to_le32(0xC00000B9) 413 - #define STATUS_FILE_IS_A_DIRECTORY cpu_to_le32(0xC00000BA) 414 - #define STATUS_NOT_SUPPORTED cpu_to_le32(0xC00000BB) 415 - #define STATUS_REMOTE_NOT_LISTENING cpu_to_le32(0xC00000BC) 416 - #define STATUS_DUPLICATE_NAME cpu_to_le32(0xC00000BD) 417 - #define STATUS_BAD_NETWORK_PATH cpu_to_le32(0xC00000BE) 418 - #define STATUS_NETWORK_BUSY cpu_to_le32(0xC00000BF) 419 - #define STATUS_DEVICE_DOES_NOT_EXIST cpu_to_le32(0xC00000C0) 420 - #define STATUS_TOO_MANY_COMMANDS cpu_to_le32(0xC00000C1) 421 - #define STATUS_ADAPTER_HARDWARE_ERROR cpu_to_le32(0xC00000C2) 422 - #define STATUS_INVALID_NETWORK_RESPONSE cpu_to_le32(0xC00000C3) 423 - #define STATUS_UNEXPECTED_NETWORK_ERROR cpu_to_le32(0xC00000C4) 424 - #define STATUS_BAD_REMOTE_ADAPTER cpu_to_le32(0xC00000C5) 425 - #define STATUS_PRINT_QUEUE_FULL cpu_to_le32(0xC00000C6) 426 - #define STATUS_NO_SPOOL_SPACE cpu_to_le32(0xC00000C7) 427 - #define STATUS_PRINT_CANCELLED cpu_to_le32(0xC00000C8) 428 - #define STATUS_NETWORK_NAME_DELETED cpu_to_le32(0xC00000C9) 429 - #define STATUS_NETWORK_ACCESS_DENIED cpu_to_le32(0xC00000CA) 430 - #define STATUS_BAD_DEVICE_TYPE cpu_to_le32(0xC00000CB) 431 - #define STATUS_BAD_NETWORK_NAME cpu_to_le32(0xC00000CC) 432 - #define STATUS_TOO_MANY_NAMES cpu_to_le32(0xC00000CD) 433 - #define STATUS_TOO_MANY_SESSIONS cpu_to_le32(0xC00000CE) 434 - #define STATUS_SHARING_PAUSED cpu_to_le32(0xC00000CF) 435 - #define STATUS_REQUEST_NOT_ACCEPTED cpu_to_le32(0xC00000D0) 436 - #define STATUS_REDIRECTOR_PAUSED cpu_to_le32(0xC00000D1) 437 - #define STATUS_NET_WRITE_FAULT cpu_to_le32(0xC00000D2) 438 - #define STATUS_PROFILING_AT_LIMIT cpu_to_le32(0xC00000D3) 439 - #define STATUS_NOT_SAME_DEVICE cpu_to_le32(0xC00000D4) 440 - #define STATUS_FILE_RENAMED cpu_to_le32(0xC00000D5) 441 - #define STATUS_VIRTUAL_CIRCUIT_CLOSED cpu_to_le32(0xC00000D6) 442 - #define STATUS_NO_SECURITY_ON_OBJECT cpu_to_le32(0xC00000D7) 443 - #define STATUS_CANT_WAIT cpu_to_le32(0xC00000D8) 444 - #define STATUS_PIPE_EMPTY cpu_to_le32(0xC00000D9) 445 - #define STATUS_CANT_ACCESS_DOMAIN_INFO cpu_to_le32(0xC00000DA) 446 - #define STATUS_CANT_TERMINATE_SELF cpu_to_le32(0xC00000DB) 447 - #define STATUS_INVALID_SERVER_STATE cpu_to_le32(0xC00000DC) 448 - #define STATUS_INVALID_DOMAIN_STATE cpu_to_le32(0xC00000DD) 449 - #define STATUS_INVALID_DOMAIN_ROLE cpu_to_le32(0xC00000DE) 450 - #define STATUS_NO_SUCH_DOMAIN cpu_to_le32(0xC00000DF) 451 - #define STATUS_DOMAIN_EXISTS cpu_to_le32(0xC00000E0) 452 - #define STATUS_DOMAIN_LIMIT_EXCEEDED cpu_to_le32(0xC00000E1) 453 - #define STATUS_OPLOCK_NOT_GRANTED cpu_to_le32(0xC00000E2) 454 - #define STATUS_INVALID_OPLOCK_PROTOCOL cpu_to_le32(0xC00000E3) 455 - #define STATUS_INTERNAL_DB_CORRUPTION cpu_to_le32(0xC00000E4) 456 - #define STATUS_INTERNAL_ERROR cpu_to_le32(0xC00000E5) 457 - #define STATUS_GENERIC_NOT_MAPPED cpu_to_le32(0xC00000E6) 458 - #define STATUS_BAD_DESCRIPTOR_FORMAT cpu_to_le32(0xC00000E7) 459 - #define STATUS_INVALID_USER_BUFFER cpu_to_le32(0xC00000E8) 460 - #define STATUS_UNEXPECTED_IO_ERROR cpu_to_le32(0xC00000E9) 461 - #define STATUS_UNEXPECTED_MM_CREATE_ERR cpu_to_le32(0xC00000EA) 462 - #define STATUS_UNEXPECTED_MM_MAP_ERROR cpu_to_le32(0xC00000EB) 463 - #define STATUS_UNEXPECTED_MM_EXTEND_ERR cpu_to_le32(0xC00000EC) 464 - #define STATUS_NOT_LOGON_PROCESS cpu_to_le32(0xC00000ED) 465 - #define STATUS_LOGON_SESSION_EXISTS cpu_to_le32(0xC00000EE) 466 - #define STATUS_INVALID_PARAMETER_1 cpu_to_le32(0xC00000EF) 467 - #define STATUS_INVALID_PARAMETER_2 cpu_to_le32(0xC00000F0) 468 - #define STATUS_INVALID_PARAMETER_3 cpu_to_le32(0xC00000F1) 469 - #define STATUS_INVALID_PARAMETER_4 cpu_to_le32(0xC00000F2) 470 - #define STATUS_INVALID_PARAMETER_5 cpu_to_le32(0xC00000F3) 471 - #define STATUS_INVALID_PARAMETER_6 cpu_to_le32(0xC00000F4) 472 - #define STATUS_INVALID_PARAMETER_7 cpu_to_le32(0xC00000F5) 473 - #define STATUS_INVALID_PARAMETER_8 cpu_to_le32(0xC00000F6) 474 - #define STATUS_INVALID_PARAMETER_9 cpu_to_le32(0xC00000F7) 475 - #define STATUS_INVALID_PARAMETER_10 cpu_to_le32(0xC00000F8) 476 - #define STATUS_INVALID_PARAMETER_11 cpu_to_le32(0xC00000F9) 477 - #define STATUS_INVALID_PARAMETER_12 cpu_to_le32(0xC00000FA) 478 - #define STATUS_REDIRECTOR_NOT_STARTED cpu_to_le32(0xC00000FB) 479 - #define STATUS_REDIRECTOR_STARTED cpu_to_le32(0xC00000FC) 480 - #define STATUS_STACK_OVERFLOW cpu_to_le32(0xC00000FD) 481 - #define STATUS_NO_SUCH_PACKAGE cpu_to_le32(0xC00000FE) 482 - #define STATUS_BAD_FUNCTION_TABLE cpu_to_le32(0xC00000FF) 483 - #define STATUS_VARIABLE_NOT_FOUND cpu_to_le32(0xC0000100) 484 - #define STATUS_DIRECTORY_NOT_EMPTY cpu_to_le32(0xC0000101) 485 - #define STATUS_FILE_CORRUPT_ERROR cpu_to_le32(0xC0000102) 486 - #define STATUS_NOT_A_DIRECTORY cpu_to_le32(0xC0000103) 487 - #define STATUS_BAD_LOGON_SESSION_STATE cpu_to_le32(0xC0000104) 488 - #define STATUS_LOGON_SESSION_COLLISION cpu_to_le32(0xC0000105) 489 - #define STATUS_NAME_TOO_LONG cpu_to_le32(0xC0000106) 490 - #define STATUS_FILES_OPEN cpu_to_le32(0xC0000107) 491 - #define STATUS_CONNECTION_IN_USE cpu_to_le32(0xC0000108) 492 - #define STATUS_MESSAGE_NOT_FOUND cpu_to_le32(0xC0000109) 493 - #define STATUS_PROCESS_IS_TERMINATING cpu_to_le32(0xC000010A) 494 - #define STATUS_INVALID_LOGON_TYPE cpu_to_le32(0xC000010B) 495 - #define STATUS_NO_GUID_TRANSLATION cpu_to_le32(0xC000010C) 496 - #define STATUS_CANNOT_IMPERSONATE cpu_to_le32(0xC000010D) 497 - #define STATUS_IMAGE_ALREADY_LOADED cpu_to_le32(0xC000010E) 498 - #define STATUS_ABIOS_NOT_PRESENT cpu_to_le32(0xC000010F) 499 - #define STATUS_ABIOS_LID_NOT_EXIST cpu_to_le32(0xC0000110) 500 - #define STATUS_ABIOS_LID_ALREADY_OWNED cpu_to_le32(0xC0000111) 501 - #define STATUS_ABIOS_NOT_LID_OWNER cpu_to_le32(0xC0000112) 502 - #define STATUS_ABIOS_INVALID_COMMAND cpu_to_le32(0xC0000113) 503 - #define STATUS_ABIOS_INVALID_LID cpu_to_le32(0xC0000114) 504 - #define STATUS_ABIOS_SELECTOR_NOT_AVAILABLE cpu_to_le32(0xC0000115) 505 - #define STATUS_ABIOS_INVALID_SELECTOR cpu_to_le32(0xC0000116) 506 - #define STATUS_NO_LDT cpu_to_le32(0xC0000117) 507 - #define STATUS_INVALID_LDT_SIZE cpu_to_le32(0xC0000118) 508 - #define STATUS_INVALID_LDT_OFFSET cpu_to_le32(0xC0000119) 509 - #define STATUS_INVALID_LDT_DESCRIPTOR cpu_to_le32(0xC000011A) 510 - #define STATUS_INVALID_IMAGE_NE_FORMAT cpu_to_le32(0xC000011B) 511 - #define STATUS_RXACT_INVALID_STATE cpu_to_le32(0xC000011C) 512 - #define STATUS_RXACT_COMMIT_FAILURE cpu_to_le32(0xC000011D) 513 - #define STATUS_MAPPED_FILE_SIZE_ZERO cpu_to_le32(0xC000011E) 514 - #define STATUS_TOO_MANY_OPENED_FILES cpu_to_le32(0xC000011F) 515 - #define STATUS_CANCELLED cpu_to_le32(0xC0000120) 516 - #define STATUS_CANNOT_DELETE cpu_to_le32(0xC0000121) 517 - #define STATUS_INVALID_COMPUTER_NAME cpu_to_le32(0xC0000122) 518 - #define STATUS_FILE_DELETED cpu_to_le32(0xC0000123) 519 - #define STATUS_SPECIAL_ACCOUNT cpu_to_le32(0xC0000124) 520 - #define STATUS_SPECIAL_GROUP cpu_to_le32(0xC0000125) 521 - #define STATUS_SPECIAL_USER cpu_to_le32(0xC0000126) 522 - #define STATUS_MEMBERS_PRIMARY_GROUP cpu_to_le32(0xC0000127) 523 - #define STATUS_FILE_CLOSED cpu_to_le32(0xC0000128) 524 - #define STATUS_TOO_MANY_THREADS cpu_to_le32(0xC0000129) 525 - #define STATUS_THREAD_NOT_IN_PROCESS cpu_to_le32(0xC000012A) 526 - #define STATUS_TOKEN_ALREADY_IN_USE cpu_to_le32(0xC000012B) 527 - #define STATUS_PAGEFILE_QUOTA_EXCEEDED cpu_to_le32(0xC000012C) 528 - #define STATUS_COMMITMENT_LIMIT cpu_to_le32(0xC000012D) 529 - #define STATUS_INVALID_IMAGE_LE_FORMAT cpu_to_le32(0xC000012E) 530 - #define STATUS_INVALID_IMAGE_NOT_MZ cpu_to_le32(0xC000012F) 531 - #define STATUS_INVALID_IMAGE_PROTECT cpu_to_le32(0xC0000130) 532 - #define STATUS_INVALID_IMAGE_WIN_16 cpu_to_le32(0xC0000131) 533 - #define STATUS_LOGON_SERVER_CONFLICT cpu_to_le32(0xC0000132) 534 - #define STATUS_TIME_DIFFERENCE_AT_DC cpu_to_le32(0xC0000133) 535 - #define STATUS_SYNCHRONIZATION_REQUIRED cpu_to_le32(0xC0000134) 536 - #define STATUS_DLL_NOT_FOUND cpu_to_le32(0xC0000135) 537 - #define STATUS_OPEN_FAILED cpu_to_le32(0xC0000136) 538 - #define STATUS_IO_PRIVILEGE_FAILED cpu_to_le32(0xC0000137) 539 - #define STATUS_ORDINAL_NOT_FOUND cpu_to_le32(0xC0000138) 540 - #define STATUS_ENTRYPOINT_NOT_FOUND cpu_to_le32(0xC0000139) 541 - #define STATUS_CONTROL_C_EXIT cpu_to_le32(0xC000013A) 542 - #define STATUS_LOCAL_DISCONNECT cpu_to_le32(0xC000013B) 543 - #define STATUS_REMOTE_DISCONNECT cpu_to_le32(0xC000013C) 544 - #define STATUS_REMOTE_RESOURCES cpu_to_le32(0xC000013D) 545 - #define STATUS_LINK_FAILED cpu_to_le32(0xC000013E) 546 - #define STATUS_LINK_TIMEOUT cpu_to_le32(0xC000013F) 547 - #define STATUS_INVALID_CONNECTION cpu_to_le32(0xC0000140) 548 - #define STATUS_INVALID_ADDRESS cpu_to_le32(0xC0000141) 549 - #define STATUS_DLL_INIT_FAILED cpu_to_le32(0xC0000142) 550 - #define STATUS_MISSING_SYSTEMFILE cpu_to_le32(0xC0000143) 551 - #define STATUS_UNHANDLED_EXCEPTION cpu_to_le32(0xC0000144) 552 - #define STATUS_APP_INIT_FAILURE cpu_to_le32(0xC0000145) 553 - #define STATUS_PAGEFILE_CREATE_FAILED cpu_to_le32(0xC0000146) 554 - #define STATUS_NO_PAGEFILE cpu_to_le32(0xC0000147) 555 - #define STATUS_INVALID_LEVEL cpu_to_le32(0xC0000148) 556 - #define STATUS_WRONG_PASSWORD_CORE cpu_to_le32(0xC0000149) 557 - #define STATUS_ILLEGAL_FLOAT_CONTEXT cpu_to_le32(0xC000014A) 558 - #define STATUS_PIPE_BROKEN cpu_to_le32(0xC000014B) 559 - #define STATUS_REGISTRY_CORRUPT cpu_to_le32(0xC000014C) 560 - #define STATUS_REGISTRY_IO_FAILED cpu_to_le32(0xC000014D) 561 - #define STATUS_NO_EVENT_PAIR cpu_to_le32(0xC000014E) 562 - #define STATUS_UNRECOGNIZED_VOLUME cpu_to_le32(0xC000014F) 563 - #define STATUS_SERIAL_NO_DEVICE_INITED cpu_to_le32(0xC0000150) 564 - #define STATUS_NO_SUCH_ALIAS cpu_to_le32(0xC0000151) 565 - #define STATUS_MEMBER_NOT_IN_ALIAS cpu_to_le32(0xC0000152) 566 - #define STATUS_MEMBER_IN_ALIAS cpu_to_le32(0xC0000153) 567 - #define STATUS_ALIAS_EXISTS cpu_to_le32(0xC0000154) 568 - #define STATUS_LOGON_NOT_GRANTED cpu_to_le32(0xC0000155) 569 - #define STATUS_TOO_MANY_SECRETS cpu_to_le32(0xC0000156) 570 - #define STATUS_SECRET_TOO_LONG cpu_to_le32(0xC0000157) 571 - #define STATUS_INTERNAL_DB_ERROR cpu_to_le32(0xC0000158) 572 - #define STATUS_FULLSCREEN_MODE cpu_to_le32(0xC0000159) 573 - #define STATUS_TOO_MANY_CONTEXT_IDS cpu_to_le32(0xC000015A) 574 - #define STATUS_LOGON_TYPE_NOT_GRANTED cpu_to_le32(0xC000015B) 575 - #define STATUS_NOT_REGISTRY_FILE cpu_to_le32(0xC000015C) 576 - #define STATUS_NT_CROSS_ENCRYPTION_REQUIRED cpu_to_le32(0xC000015D) 577 - #define STATUS_DOMAIN_CTRLR_CONFIG_ERROR cpu_to_le32(0xC000015E) 578 - #define STATUS_FT_MISSING_MEMBER cpu_to_le32(0xC000015F) 579 - #define STATUS_ILL_FORMED_SERVICE_ENTRY cpu_to_le32(0xC0000160) 580 - #define STATUS_ILLEGAL_CHARACTER cpu_to_le32(0xC0000161) 581 - #define STATUS_UNMAPPABLE_CHARACTER cpu_to_le32(0xC0000162) 582 - #define STATUS_UNDEFINED_CHARACTER cpu_to_le32(0xC0000163) 583 - #define STATUS_FLOPPY_VOLUME cpu_to_le32(0xC0000164) 584 - #define STATUS_FLOPPY_ID_MARK_NOT_FOUND cpu_to_le32(0xC0000165) 585 - #define STATUS_FLOPPY_WRONG_CYLINDER cpu_to_le32(0xC0000166) 586 - #define STATUS_FLOPPY_UNKNOWN_ERROR cpu_to_le32(0xC0000167) 587 - #define STATUS_FLOPPY_BAD_REGISTERS cpu_to_le32(0xC0000168) 588 - #define STATUS_DISK_RECALIBRATE_FAILED cpu_to_le32(0xC0000169) 589 - #define STATUS_DISK_OPERATION_FAILED cpu_to_le32(0xC000016A) 590 - #define STATUS_DISK_RESET_FAILED cpu_to_le32(0xC000016B) 591 - #define STATUS_SHARED_IRQ_BUSY cpu_to_le32(0xC000016C) 592 - #define STATUS_FT_ORPHANING cpu_to_le32(0xC000016D) 593 - #define STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT cpu_to_le32(0xC000016E) 594 - #define STATUS_PARTITION_FAILURE cpu_to_le32(0xC0000172) 595 - #define STATUS_INVALID_BLOCK_LENGTH cpu_to_le32(0xC0000173) 596 - #define STATUS_DEVICE_NOT_PARTITIONED cpu_to_le32(0xC0000174) 597 - #define STATUS_UNABLE_TO_LOCK_MEDIA cpu_to_le32(0xC0000175) 598 - #define STATUS_UNABLE_TO_UNLOAD_MEDIA cpu_to_le32(0xC0000176) 599 - #define STATUS_EOM_OVERFLOW cpu_to_le32(0xC0000177) 600 - #define STATUS_NO_MEDIA cpu_to_le32(0xC0000178) 601 - #define STATUS_NO_SUCH_MEMBER cpu_to_le32(0xC000017A) 602 - #define STATUS_INVALID_MEMBER cpu_to_le32(0xC000017B) 603 - #define STATUS_KEY_DELETED cpu_to_le32(0xC000017C) 604 - #define STATUS_NO_LOG_SPACE cpu_to_le32(0xC000017D) 605 - #define STATUS_TOO_MANY_SIDS cpu_to_le32(0xC000017E) 606 - #define STATUS_LM_CROSS_ENCRYPTION_REQUIRED cpu_to_le32(0xC000017F) 607 - #define STATUS_KEY_HAS_CHILDREN cpu_to_le32(0xC0000180) 608 - #define STATUS_CHILD_MUST_BE_VOLATILE cpu_to_le32(0xC0000181) 609 - #define STATUS_DEVICE_CONFIGURATION_ERROR cpu_to_le32(0xC0000182) 610 - #define STATUS_DRIVER_INTERNAL_ERROR cpu_to_le32(0xC0000183) 611 - #define STATUS_INVALID_DEVICE_STATE cpu_to_le32(0xC0000184) 612 - #define STATUS_IO_DEVICE_ERROR cpu_to_le32(0xC0000185) 613 - #define STATUS_DEVICE_PROTOCOL_ERROR cpu_to_le32(0xC0000186) 614 - #define STATUS_BACKUP_CONTROLLER cpu_to_le32(0xC0000187) 615 - #define STATUS_LOG_FILE_FULL cpu_to_le32(0xC0000188) 616 - #define STATUS_TOO_LATE cpu_to_le32(0xC0000189) 617 - #define STATUS_NO_TRUST_LSA_SECRET cpu_to_le32(0xC000018A) 618 - #define STATUS_NO_TRUST_SAM_ACCOUNT cpu_to_le32(0xC000018B) 619 - #define STATUS_TRUSTED_DOMAIN_FAILURE cpu_to_le32(0xC000018C) 620 - #define STATUS_TRUSTED_RELATIONSHIP_FAILURE cpu_to_le32(0xC000018D) 621 - #define STATUS_EVENTLOG_FILE_CORRUPT cpu_to_le32(0xC000018E) 622 - #define STATUS_EVENTLOG_CANT_START cpu_to_le32(0xC000018F) 623 - #define STATUS_TRUST_FAILURE cpu_to_le32(0xC0000190) 624 - #define STATUS_MUTANT_LIMIT_EXCEEDED cpu_to_le32(0xC0000191) 625 - #define STATUS_NETLOGON_NOT_STARTED cpu_to_le32(0xC0000192) 626 - #define STATUS_ACCOUNT_EXPIRED cpu_to_le32(0xC0000193) 627 - #define STATUS_POSSIBLE_DEADLOCK cpu_to_le32(0xC0000194) 628 - #define STATUS_NETWORK_CREDENTIAL_CONFLICT cpu_to_le32(0xC0000195) 629 - #define STATUS_REMOTE_SESSION_LIMIT cpu_to_le32(0xC0000196) 630 - #define STATUS_EVENTLOG_FILE_CHANGED cpu_to_le32(0xC0000197) 631 - #define STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT cpu_to_le32(0xC0000198) 632 - #define STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT cpu_to_le32(0xC0000199) 633 - #define STATUS_NOLOGON_SERVER_TRUST_ACCOUNT cpu_to_le32(0xC000019A) 634 - #define STATUS_DOMAIN_TRUST_INCONSISTENT cpu_to_le32(0xC000019B) 635 - #define STATUS_FS_DRIVER_REQUIRED cpu_to_le32(0xC000019C) 636 - #define STATUS_IMAGE_ALREADY_LOADED_AS_DLL cpu_to_le32(0xC000019D) 637 - #define STATUS_INVALID_LOCK_RANGE cpu_to_le32(0xC00001A1) 638 - #define STATUS_NETWORK_OPEN_RESTRICTION cpu_to_le32(0xC0000201) 639 - #define STATUS_NO_USER_SESSION_KEY cpu_to_le32(0xC0000202) 640 - #define STATUS_USER_SESSION_DELETED cpu_to_le32(0xC0000203) 641 - #define STATUS_RESOURCE_LANG_NOT_FOUND cpu_to_le32(0xC0000204) 642 - #define STATUS_INSUFF_SERVER_RESOURCES cpu_to_le32(0xC0000205) 643 - #define STATUS_INVALID_BUFFER_SIZE cpu_to_le32(0xC0000206) 644 - #define STATUS_INVALID_ADDRESS_COMPONENT cpu_to_le32(0xC0000207) 645 - #define STATUS_INVALID_ADDRESS_WILDCARD cpu_to_le32(0xC0000208) 646 - #define STATUS_TOO_MANY_ADDRESSES cpu_to_le32(0xC0000209) 647 - #define STATUS_ADDRESS_ALREADY_EXISTS cpu_to_le32(0xC000020A) 648 - #define STATUS_ADDRESS_CLOSED cpu_to_le32(0xC000020B) 649 - #define STATUS_CONNECTION_DISCONNECTED cpu_to_le32(0xC000020C) 650 - #define STATUS_CONNECTION_RESET cpu_to_le32(0xC000020D) 651 - #define STATUS_TOO_MANY_NODES cpu_to_le32(0xC000020E) 652 - #define STATUS_TRANSACTION_ABORTED cpu_to_le32(0xC000020F) 653 - #define STATUS_TRANSACTION_TIMED_OUT cpu_to_le32(0xC0000210) 654 - #define STATUS_TRANSACTION_NO_RELEASE cpu_to_le32(0xC0000211) 655 - #define STATUS_TRANSACTION_NO_MATCH cpu_to_le32(0xC0000212) 656 - #define STATUS_TRANSACTION_RESPONDED cpu_to_le32(0xC0000213) 657 - #define STATUS_TRANSACTION_INVALID_ID cpu_to_le32(0xC0000214) 658 - #define STATUS_TRANSACTION_INVALID_TYPE cpu_to_le32(0xC0000215) 659 - #define STATUS_NOT_SERVER_SESSION cpu_to_le32(0xC0000216) 660 - #define STATUS_NOT_CLIENT_SESSION cpu_to_le32(0xC0000217) 661 - #define STATUS_CANNOT_LOAD_REGISTRY_FILE cpu_to_le32(0xC0000218) 662 - #define STATUS_DEBUG_ATTACH_FAILED cpu_to_le32(0xC0000219) 663 - #define STATUS_SYSTEM_PROCESS_TERMINATED cpu_to_le32(0xC000021A) 664 - #define STATUS_DATA_NOT_ACCEPTED cpu_to_le32(0xC000021B) 665 - #define STATUS_NO_BROWSER_SERVERS_FOUND cpu_to_le32(0xC000021C) 666 - #define STATUS_VDM_HARD_ERROR cpu_to_le32(0xC000021D) 667 - #define STATUS_DRIVER_CANCEL_TIMEOUT cpu_to_le32(0xC000021E) 668 - #define STATUS_REPLY_MESSAGE_MISMATCH cpu_to_le32(0xC000021F) 669 - #define STATUS_MAPPED_ALIGNMENT cpu_to_le32(0xC0000220) 670 - #define STATUS_IMAGE_CHECKSUM_MISMATCH cpu_to_le32(0xC0000221) 671 - #define STATUS_LOST_WRITEBEHIND_DATA cpu_to_le32(0xC0000222) 672 - #define STATUS_CLIENT_SERVER_PARAMETERS_INVALID cpu_to_le32(0xC0000223) 673 - #define STATUS_PASSWORD_MUST_CHANGE cpu_to_le32(0xC0000224) 674 - #define STATUS_NOT_FOUND cpu_to_le32(0xC0000225) 675 - #define STATUS_NOT_TINY_STREAM cpu_to_le32(0xC0000226) 676 - #define STATUS_RECOVERY_FAILURE cpu_to_le32(0xC0000227) 677 - #define STATUS_STACK_OVERFLOW_READ cpu_to_le32(0xC0000228) 678 - #define STATUS_FAIL_CHECK cpu_to_le32(0xC0000229) 679 - #define STATUS_DUPLICATE_OBJECTID cpu_to_le32(0xC000022A) 680 - #define STATUS_OBJECTID_EXISTS cpu_to_le32(0xC000022B) 681 - #define STATUS_CONVERT_TO_LARGE cpu_to_le32(0xC000022C) 682 - #define STATUS_RETRY cpu_to_le32(0xC000022D) 683 - #define STATUS_FOUND_OUT_OF_SCOPE cpu_to_le32(0xC000022E) 684 - #define STATUS_ALLOCATE_BUCKET cpu_to_le32(0xC000022F) 685 - #define STATUS_PROPSET_NOT_FOUND cpu_to_le32(0xC0000230) 686 - #define STATUS_MARSHALL_OVERFLOW cpu_to_le32(0xC0000231) 687 - #define STATUS_INVALID_VARIANT cpu_to_le32(0xC0000232) 688 - #define STATUS_DOMAIN_CONTROLLER_NOT_FOUND cpu_to_le32(0xC0000233) 689 - #define STATUS_ACCOUNT_LOCKED_OUT cpu_to_le32(0xC0000234) 690 - #define STATUS_HANDLE_NOT_CLOSABLE cpu_to_le32(0xC0000235) 691 - #define STATUS_CONNECTION_REFUSED cpu_to_le32(0xC0000236) 692 - #define STATUS_GRACEFUL_DISCONNECT cpu_to_le32(0xC0000237) 693 - #define STATUS_ADDRESS_ALREADY_ASSOCIATED cpu_to_le32(0xC0000238) 694 - #define STATUS_ADDRESS_NOT_ASSOCIATED cpu_to_le32(0xC0000239) 695 - #define STATUS_CONNECTION_INVALID cpu_to_le32(0xC000023A) 696 - #define STATUS_CONNECTION_ACTIVE cpu_to_le32(0xC000023B) 697 - #define STATUS_NETWORK_UNREACHABLE cpu_to_le32(0xC000023C) 698 - #define STATUS_HOST_UNREACHABLE cpu_to_le32(0xC000023D) 699 - #define STATUS_PROTOCOL_UNREACHABLE cpu_to_le32(0xC000023E) 700 - #define STATUS_PORT_UNREACHABLE cpu_to_le32(0xC000023F) 701 - #define STATUS_REQUEST_ABORTED cpu_to_le32(0xC0000240) 702 - #define STATUS_CONNECTION_ABORTED cpu_to_le32(0xC0000241) 703 - #define STATUS_BAD_COMPRESSION_BUFFER cpu_to_le32(0xC0000242) 704 - #define STATUS_USER_MAPPED_FILE cpu_to_le32(0xC0000243) 705 - #define STATUS_AUDIT_FAILED cpu_to_le32(0xC0000244) 706 - #define STATUS_TIMER_RESOLUTION_NOT_SET cpu_to_le32(0xC0000245) 707 - #define STATUS_CONNECTION_COUNT_LIMIT cpu_to_le32(0xC0000246) 708 - #define STATUS_LOGIN_TIME_RESTRICTION cpu_to_le32(0xC0000247) 709 - #define STATUS_LOGIN_WKSTA_RESTRICTION cpu_to_le32(0xC0000248) 710 - #define STATUS_IMAGE_MP_UP_MISMATCH cpu_to_le32(0xC0000249) 711 - #define STATUS_INSUFFICIENT_LOGON_INFO cpu_to_le32(0xC0000250) 712 - #define STATUS_BAD_DLL_ENTRYPOINT cpu_to_le32(0xC0000251) 713 - #define STATUS_BAD_SERVICE_ENTRYPOINT cpu_to_le32(0xC0000252) 714 - #define STATUS_LPC_REPLY_LOST cpu_to_le32(0xC0000253) 715 - #define STATUS_IP_ADDRESS_CONFLICT1 cpu_to_le32(0xC0000254) 716 - #define STATUS_IP_ADDRESS_CONFLICT2 cpu_to_le32(0xC0000255) 717 - #define STATUS_REGISTRY_QUOTA_LIMIT cpu_to_le32(0xC0000256) 718 - #define STATUS_PATH_NOT_COVERED cpu_to_le32(0xC0000257) 719 - #define STATUS_NO_CALLBACK_ACTIVE cpu_to_le32(0xC0000258) 720 - #define STATUS_LICENSE_QUOTA_EXCEEDED cpu_to_le32(0xC0000259) 721 - #define STATUS_PWD_TOO_SHORT cpu_to_le32(0xC000025A) 722 - #define STATUS_PWD_TOO_RECENT cpu_to_le32(0xC000025B) 723 - #define STATUS_PWD_HISTORY_CONFLICT cpu_to_le32(0xC000025C) 724 - #define STATUS_PLUGPLAY_NO_DEVICE cpu_to_le32(0xC000025E) 725 - #define STATUS_UNSUPPORTED_COMPRESSION cpu_to_le32(0xC000025F) 726 - #define STATUS_INVALID_HW_PROFILE cpu_to_le32(0xC0000260) 727 - #define STATUS_INVALID_PLUGPLAY_DEVICE_PATH cpu_to_le32(0xC0000261) 728 - #define STATUS_DRIVER_ORDINAL_NOT_FOUND cpu_to_le32(0xC0000262) 729 - #define STATUS_DRIVER_ENTRYPOINT_NOT_FOUND cpu_to_le32(0xC0000263) 730 - #define STATUS_RESOURCE_NOT_OWNED cpu_to_le32(0xC0000264) 731 - #define STATUS_TOO_MANY_LINKS cpu_to_le32(0xC0000265) 732 - #define STATUS_QUOTA_LIST_INCONSISTENT cpu_to_le32(0xC0000266) 733 - #define STATUS_FILE_IS_OFFLINE cpu_to_le32(0xC0000267) 734 - #define STATUS_EVALUATION_EXPIRATION cpu_to_le32(0xC0000268) 735 - #define STATUS_ILLEGAL_DLL_RELOCATION cpu_to_le32(0xC0000269) 736 - #define STATUS_LICENSE_VIOLATION cpu_to_le32(0xC000026A) 737 - #define STATUS_DLL_INIT_FAILED_LOGOFF cpu_to_le32(0xC000026B) 738 - #define STATUS_DRIVER_UNABLE_TO_LOAD cpu_to_le32(0xC000026C) 739 - #define STATUS_DFS_UNAVAILABLE cpu_to_le32(0xC000026D) 740 - #define STATUS_VOLUME_DISMOUNTED cpu_to_le32(0xC000026E) 741 - #define STATUS_WX86_INTERNAL_ERROR cpu_to_le32(0xC000026F) 742 - #define STATUS_WX86_FLOAT_STACK_CHECK cpu_to_le32(0xC0000270) 743 - #define STATUS_VALIDATE_CONTINUE cpu_to_le32(0xC0000271) 744 - #define STATUS_NO_MATCH cpu_to_le32(0xC0000272) 745 - #define STATUS_NO_MORE_MATCHES cpu_to_le32(0xC0000273) 746 - #define STATUS_NOT_A_REPARSE_POINT cpu_to_le32(0xC0000275) 747 - #define STATUS_IO_REPARSE_TAG_INVALID cpu_to_le32(0xC0000276) 748 - #define STATUS_IO_REPARSE_TAG_MISMATCH cpu_to_le32(0xC0000277) 749 - #define STATUS_IO_REPARSE_DATA_INVALID cpu_to_le32(0xC0000278) 750 - #define STATUS_IO_REPARSE_TAG_NOT_HANDLED cpu_to_le32(0xC0000279) 751 - #define STATUS_REPARSE_POINT_NOT_RESOLVED cpu_to_le32(0xC0000280) 752 - #define STATUS_DIRECTORY_IS_A_REPARSE_POINT cpu_to_le32(0xC0000281) 753 - #define STATUS_RANGE_LIST_CONFLICT cpu_to_le32(0xC0000282) 754 - #define STATUS_SOURCE_ELEMENT_EMPTY cpu_to_le32(0xC0000283) 755 - #define STATUS_DESTINATION_ELEMENT_FULL cpu_to_le32(0xC0000284) 756 - #define STATUS_ILLEGAL_ELEMENT_ADDRESS cpu_to_le32(0xC0000285) 757 - #define STATUS_MAGAZINE_NOT_PRESENT cpu_to_le32(0xC0000286) 758 - #define STATUS_REINITIALIZATION_NEEDED cpu_to_le32(0xC0000287) 759 - #define STATUS_ENCRYPTION_FAILED cpu_to_le32(0xC000028A) 760 - #define STATUS_DECRYPTION_FAILED cpu_to_le32(0xC000028B) 761 - #define STATUS_RANGE_NOT_FOUND cpu_to_le32(0xC000028C) 762 - #define STATUS_NO_RECOVERY_POLICY cpu_to_le32(0xC000028D) 763 - #define STATUS_NO_EFS cpu_to_le32(0xC000028E) 764 - #define STATUS_WRONG_EFS cpu_to_le32(0xC000028F) 765 - #define STATUS_NO_USER_KEYS cpu_to_le32(0xC0000290) 766 - #define STATUS_FILE_NOT_ENCRYPTED cpu_to_le32(0xC0000291) 767 - #define STATUS_NOT_EXPORT_FORMAT cpu_to_le32(0xC0000292) 768 - #define STATUS_FILE_ENCRYPTED cpu_to_le32(0xC0000293) 769 - #define STATUS_WMI_GUID_NOT_FOUND cpu_to_le32(0xC0000295) 770 - #define STATUS_WMI_INSTANCE_NOT_FOUND cpu_to_le32(0xC0000296) 771 - #define STATUS_WMI_ITEMID_NOT_FOUND cpu_to_le32(0xC0000297) 772 - #define STATUS_WMI_TRY_AGAIN cpu_to_le32(0xC0000298) 773 - #define STATUS_SHARED_POLICY cpu_to_le32(0xC0000299) 774 - #define STATUS_POLICY_OBJECT_NOT_FOUND cpu_to_le32(0xC000029A) 775 - #define STATUS_POLICY_ONLY_IN_DS cpu_to_le32(0xC000029B) 776 - #define STATUS_VOLUME_NOT_UPGRADED cpu_to_le32(0xC000029C) 777 - #define STATUS_REMOTE_STORAGE_NOT_ACTIVE cpu_to_le32(0xC000029D) 778 - #define STATUS_REMOTE_STORAGE_MEDIA_ERROR cpu_to_le32(0xC000029E) 779 - #define STATUS_NO_TRACKING_SERVICE cpu_to_le32(0xC000029F) 780 - #define STATUS_SERVER_SID_MISMATCH cpu_to_le32(0xC00002A0) 781 - #define STATUS_DS_NO_ATTRIBUTE_OR_VALUE cpu_to_le32(0xC00002A1) 782 - #define STATUS_DS_INVALID_ATTRIBUTE_SYNTAX cpu_to_le32(0xC00002A2) 783 - #define STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED cpu_to_le32(0xC00002A3) 784 - #define STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS cpu_to_le32(0xC00002A4) 785 - #define STATUS_DS_BUSY cpu_to_le32(0xC00002A5) 786 - #define STATUS_DS_UNAVAILABLE cpu_to_le32(0xC00002A6) 787 - #define STATUS_DS_NO_RIDS_ALLOCATED cpu_to_le32(0xC00002A7) 788 - #define STATUS_DS_NO_MORE_RIDS cpu_to_le32(0xC00002A8) 789 - #define STATUS_DS_INCORRECT_ROLE_OWNER cpu_to_le32(0xC00002A9) 790 - #define STATUS_DS_RIDMGR_INIT_ERROR cpu_to_le32(0xC00002AA) 791 - #define STATUS_DS_OBJ_CLASS_VIOLATION cpu_to_le32(0xC00002AB) 792 - #define STATUS_DS_CANT_ON_NON_LEAF cpu_to_le32(0xC00002AC) 793 - #define STATUS_DS_CANT_ON_RDN cpu_to_le32(0xC00002AD) 794 - #define STATUS_DS_CANT_MOD_OBJ_CLASS cpu_to_le32(0xC00002AE) 795 - #define STATUS_DS_CROSS_DOM_MOVE_FAILED cpu_to_le32(0xC00002AF) 796 - #define STATUS_DS_GC_NOT_AVAILABLE cpu_to_le32(0xC00002B0) 797 - #define STATUS_DIRECTORY_SERVICE_REQUIRED cpu_to_le32(0xC00002B1) 798 - #define STATUS_REPARSE_ATTRIBUTE_CONFLICT cpu_to_le32(0xC00002B2) 799 - #define STATUS_CANT_ENABLE_DENY_ONLY cpu_to_le32(0xC00002B3) 800 - #define STATUS_FLOAT_MULTIPLE_FAULTS cpu_to_le32(0xC00002B4) 801 - #define STATUS_FLOAT_MULTIPLE_TRAPS cpu_to_le32(0xC00002B5) 802 - #define STATUS_DEVICE_REMOVED cpu_to_le32(0xC00002B6) 803 - #define STATUS_JOURNAL_DELETE_IN_PROGRESS cpu_to_le32(0xC00002B7) 804 - #define STATUS_JOURNAL_NOT_ACTIVE cpu_to_le32(0xC00002B8) 805 - #define STATUS_NOINTERFACE cpu_to_le32(0xC00002B9) 806 - #define STATUS_DS_ADMIN_LIMIT_EXCEEDED cpu_to_le32(0xC00002C1) 807 - #define STATUS_DRIVER_FAILED_SLEEP cpu_to_le32(0xC00002C2) 808 - #define STATUS_MUTUAL_AUTHENTICATION_FAILED cpu_to_le32(0xC00002C3) 809 - #define STATUS_CORRUPT_SYSTEM_FILE cpu_to_le32(0xC00002C4) 810 - #define STATUS_DATATYPE_MISALIGNMENT_ERROR cpu_to_le32(0xC00002C5) 811 - #define STATUS_WMI_READ_ONLY cpu_to_le32(0xC00002C6) 812 - #define STATUS_WMI_SET_FAILURE cpu_to_le32(0xC00002C7) 813 - #define STATUS_COMMITMENT_MINIMUM cpu_to_le32(0xC00002C8) 814 - #define STATUS_REG_NAT_CONSUMPTION cpu_to_le32(0xC00002C9) 815 - #define STATUS_TRANSPORT_FULL cpu_to_le32(0xC00002CA) 816 - #define STATUS_DS_SAM_INIT_FAILURE cpu_to_le32(0xC00002CB) 817 - #define STATUS_ONLY_IF_CONNECTED cpu_to_le32(0xC00002CC) 818 - #define STATUS_DS_SENSITIVE_GROUP_VIOLATION cpu_to_le32(0xC00002CD) 819 - #define STATUS_PNP_RESTART_ENUMERATION cpu_to_le32(0xC00002CE) 820 - #define STATUS_JOURNAL_ENTRY_DELETED cpu_to_le32(0xC00002CF) 821 - #define STATUS_DS_CANT_MOD_PRIMARYGROUPID cpu_to_le32(0xC00002D0) 822 - #define STATUS_SYSTEM_IMAGE_BAD_SIGNATURE cpu_to_le32(0xC00002D1) 823 - #define STATUS_PNP_REBOOT_REQUIRED cpu_to_le32(0xC00002D2) 824 - #define STATUS_POWER_STATE_INVALID cpu_to_le32(0xC00002D3) 825 - #define STATUS_DS_INVALID_GROUP_TYPE cpu_to_le32(0xC00002D4) 826 - #define STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN cpu_to_le32(0xC00002D5) 827 - #define STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN cpu_to_le32(0xC00002D6) 828 - #define STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER cpu_to_le32(0xC00002D7) 829 - #define STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER cpu_to_le32(0xC00002D8) 830 - #define STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER cpu_to_le32(0xC00002D9) 831 - #define STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER cpu_to_le32(0xC00002DA) 832 - #define STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER cpu_to_le32(0xC00002DB) 833 - #define STATUS_DS_HAVE_PRIMARY_MEMBERS cpu_to_le32(0xC00002DC) 834 - #define STATUS_WMI_NOT_SUPPORTED cpu_to_le32(0xC00002DD) 835 - #define STATUS_INSUFFICIENT_POWER cpu_to_le32(0xC00002DE) 836 - #define STATUS_SAM_NEED_BOOTKEY_PASSWORD cpu_to_le32(0xC00002DF) 837 - #define STATUS_SAM_NEED_BOOTKEY_FLOPPY cpu_to_le32(0xC00002E0) 838 - #define STATUS_DS_CANT_START cpu_to_le32(0xC00002E1) 839 - #define STATUS_DS_INIT_FAILURE cpu_to_le32(0xC00002E2) 840 - #define STATUS_SAM_INIT_FAILURE cpu_to_le32(0xC00002E3) 841 - #define STATUS_DS_GC_REQUIRED cpu_to_le32(0xC00002E4) 842 - #define STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY cpu_to_le32(0xC00002E5) 843 - #define STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS cpu_to_le32(0xC00002E6) 844 - #define STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED cpu_to_le32(0xC00002E7) 845 - #define STATUS_MULTIPLE_FAULT_VIOLATION cpu_to_le32(0xC00002E8) 846 - #define STATUS_CURRENT_DOMAIN_NOT_ALLOWED cpu_to_le32(0xC00002E9) 847 - #define STATUS_CANNOT_MAKE cpu_to_le32(0xC00002EA) 848 - #define STATUS_SYSTEM_SHUTDOWN cpu_to_le32(0xC00002EB) 849 - #define STATUS_DS_INIT_FAILURE_CONSOLE cpu_to_le32(0xC00002EC) 850 - #define STATUS_DS_SAM_INIT_FAILURE_CONSOLE cpu_to_le32(0xC00002ED) 851 - #define STATUS_UNFINISHED_CONTEXT_DELETED cpu_to_le32(0xC00002EE) 852 - #define STATUS_NO_TGT_REPLY cpu_to_le32(0xC00002EF) 853 - #define STATUS_OBJECTID_NOT_FOUND cpu_to_le32(0xC00002F0) 854 - #define STATUS_NO_IP_ADDRESSES cpu_to_le32(0xC00002F1) 855 - #define STATUS_WRONG_CREDENTIAL_HANDLE cpu_to_le32(0xC00002F2) 856 - #define STATUS_CRYPTO_SYSTEM_INVALID cpu_to_le32(0xC00002F3) 857 - #define STATUS_MAX_REFERRALS_EXCEEDED cpu_to_le32(0xC00002F4) 858 - #define STATUS_MUST_BE_KDC cpu_to_le32(0xC00002F5) 859 - #define STATUS_STRONG_CRYPTO_NOT_SUPPORTED cpu_to_le32(0xC00002F6) 860 - #define STATUS_TOO_MANY_PRINCIPALS cpu_to_le32(0xC00002F7) 861 - #define STATUS_NO_PA_DATA cpu_to_le32(0xC00002F8) 862 - #define STATUS_PKINIT_NAME_MISMATCH cpu_to_le32(0xC00002F9) 863 - #define STATUS_SMARTCARD_LOGON_REQUIRED cpu_to_le32(0xC00002FA) 864 - #define STATUS_KDC_INVALID_REQUEST cpu_to_le32(0xC00002FB) 865 - #define STATUS_KDC_UNABLE_TO_REFER cpu_to_le32(0xC00002FC) 866 - #define STATUS_KDC_UNKNOWN_ETYPE cpu_to_le32(0xC00002FD) 867 - #define STATUS_SHUTDOWN_IN_PROGRESS cpu_to_le32(0xC00002FE) 868 - #define STATUS_SERVER_SHUTDOWN_IN_PROGRESS cpu_to_le32(0xC00002FF) 869 - #define STATUS_NOT_SUPPORTED_ON_SBS cpu_to_le32(0xC0000300) 870 - #define STATUS_WMI_GUID_DISCONNECTED cpu_to_le32(0xC0000301) 871 - #define STATUS_WMI_ALREADY_DISABLED cpu_to_le32(0xC0000302) 872 - #define STATUS_WMI_ALREADY_ENABLED cpu_to_le32(0xC0000303) 873 - #define STATUS_MFT_TOO_FRAGMENTED cpu_to_le32(0xC0000304) 874 - #define STATUS_COPY_PROTECTION_FAILURE cpu_to_le32(0xC0000305) 875 - #define STATUS_CSS_AUTHENTICATION_FAILURE cpu_to_le32(0xC0000306) 876 - #define STATUS_CSS_KEY_NOT_PRESENT cpu_to_le32(0xC0000307) 877 - #define STATUS_CSS_KEY_NOT_ESTABLISHED cpu_to_le32(0xC0000308) 878 - #define STATUS_CSS_SCRAMBLED_SECTOR cpu_to_le32(0xC0000309) 879 - #define STATUS_CSS_REGION_MISMATCH cpu_to_le32(0xC000030A) 880 - #define STATUS_CSS_RESETS_EXHAUSTED cpu_to_le32(0xC000030B) 881 - #define STATUS_PKINIT_FAILURE cpu_to_le32(0xC0000320) 882 - #define STATUS_SMARTCARD_SUBSYSTEM_FAILURE cpu_to_le32(0xC0000321) 883 - #define STATUS_NO_KERB_KEY cpu_to_le32(0xC0000322) 884 - #define STATUS_HOST_DOWN cpu_to_le32(0xC0000350) 885 - #define STATUS_UNSUPPORTED_PREAUTH cpu_to_le32(0xC0000351) 886 - #define STATUS_EFS_ALG_BLOB_TOO_BIG cpu_to_le32(0xC0000352) 887 - #define STATUS_PORT_NOT_SET cpu_to_le32(0xC0000353) 888 - #define STATUS_DEBUGGER_INACTIVE cpu_to_le32(0xC0000354) 889 - #define STATUS_DS_VERSION_CHECK_FAILURE cpu_to_le32(0xC0000355) 890 - #define STATUS_AUDITING_DISABLED cpu_to_le32(0xC0000356) 891 - #define STATUS_PRENT4_MACHINE_ACCOUNT cpu_to_le32(0xC0000357) 892 - #define STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER cpu_to_le32(0xC0000358) 893 - #define STATUS_INVALID_IMAGE_WIN_32 cpu_to_le32(0xC0000359) 894 - #define STATUS_INVALID_IMAGE_WIN_64 cpu_to_le32(0xC000035A) 895 - #define STATUS_BAD_BINDINGS cpu_to_le32(0xC000035B) 896 - #define STATUS_NETWORK_SESSION_EXPIRED cpu_to_le32(0xC000035C) 897 - #define STATUS_APPHELP_BLOCK cpu_to_le32(0xC000035D) 898 - #define STATUS_ALL_SIDS_FILTERED cpu_to_le32(0xC000035E) 899 - #define STATUS_NOT_SAFE_MODE_DRIVER cpu_to_le32(0xC000035F) 900 - #define STATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT cpu_to_le32(0xC0000361) 901 - #define STATUS_ACCESS_DISABLED_BY_POLICY_PATH cpu_to_le32(0xC0000362) 902 - #define STATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER cpu_to_le32(0xC0000363) 903 - #define STATUS_ACCESS_DISABLED_BY_POLICY_OTHER cpu_to_le32(0xC0000364) 904 - #define STATUS_FAILED_DRIVER_ENTRY cpu_to_le32(0xC0000365) 905 - #define STATUS_DEVICE_ENUMERATION_ERROR cpu_to_le32(0xC0000366) 906 - #define STATUS_MOUNT_POINT_NOT_RESOLVED cpu_to_le32(0xC0000368) 907 - #define STATUS_INVALID_DEVICE_OBJECT_PARAMETER cpu_to_le32(0xC0000369) 30 + /* 31 + * The comment at the end of each definition indicates `posix_error` 32 + * field of `struct status_to_posix_error`, it is used to generate the 33 + * `smb2_error_map_table` array. 34 + */ 35 + 36 + #define STATUS_SUCCESS cpu_to_le32(0x00000000) // 0 37 + #define STATUS_WAIT_0 cpu_to_le32(0x00000000) // 0 38 + #define STATUS_WAIT_1 cpu_to_le32(0x00000001) // -EIO 39 + #define STATUS_WAIT_2 cpu_to_le32(0x00000002) // -EIO 40 + #define STATUS_WAIT_3 cpu_to_le32(0x00000003) // -EIO 41 + #define STATUS_WAIT_63 cpu_to_le32(0x0000003F) // -EIO 42 + #define STATUS_ABANDONED cpu_to_le32(0x00000080) // -EIO 43 + #define STATUS_ABANDONED_WAIT_0 cpu_to_le32(0x00000080) // -EIO 44 + #define STATUS_ABANDONED_WAIT_63 cpu_to_le32(0x000000BF) // -EIO 45 + #define STATUS_USER_APC cpu_to_le32(0x000000C0) // -EIO 46 + #define STATUS_KERNEL_APC cpu_to_le32(0x00000100) // -EIO 47 + #define STATUS_ALERTED cpu_to_le32(0x00000101) // -EIO 48 + #define STATUS_TIMEOUT cpu_to_le32(0x00000102) // -ETIMEDOUT 49 + #define STATUS_PENDING cpu_to_le32(0x00000103) // -EIO 50 + #define STATUS_REPARSE cpu_to_le32(0x00000104) // -EIO 51 + #define STATUS_MORE_ENTRIES cpu_to_le32(0x00000105) // -EIO 52 + #define STATUS_NOT_ALL_ASSIGNED cpu_to_le32(0x00000106) // -EIO 53 + #define STATUS_SOME_NOT_MAPPED cpu_to_le32(0x00000107) // -EIO 54 + #define STATUS_OPLOCK_BREAK_IN_PROGRESS cpu_to_le32(0x00000108) // -EIO 55 + #define STATUS_VOLUME_MOUNTED cpu_to_le32(0x00000109) // -EIO 56 + #define STATUS_RXACT_COMMITTED cpu_to_le32(0x0000010A) // -EIO 57 + #define STATUS_NOTIFY_CLEANUP cpu_to_le32(0x0000010B) // -EIO 58 + #define STATUS_NOTIFY_ENUM_DIR cpu_to_le32(0x0000010C) // -EIO 59 + #define STATUS_NO_QUOTAS_FOR_ACCOUNT cpu_to_le32(0x0000010D) // -EIO 60 + #define STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED cpu_to_le32(0x0000010E) // -EIO 61 + #define STATUS_PAGE_FAULT_TRANSITION cpu_to_le32(0x00000110) // -EIO 62 + #define STATUS_PAGE_FAULT_DEMAND_ZERO cpu_to_le32(0x00000111) // -EIO 63 + #define STATUS_PAGE_FAULT_COPY_ON_WRITE cpu_to_le32(0x00000112) // -EIO 64 + #define STATUS_PAGE_FAULT_GUARD_PAGE cpu_to_le32(0x00000113) // -EIO 65 + #define STATUS_PAGE_FAULT_PAGING_FILE cpu_to_le32(0x00000114) // -EIO 66 + #define STATUS_CACHE_PAGE_LOCKED cpu_to_le32(0x00000115) // -EIO 67 + #define STATUS_CRASH_DUMP cpu_to_le32(0x00000116) // -EIO 68 + #define STATUS_BUFFER_ALL_ZEROS cpu_to_le32(0x00000117) // -EIO 69 + #define STATUS_REPARSE_OBJECT cpu_to_le32(0x00000118) // -EIO 70 + #define STATUS_RESOURCE_REQUIREMENTS_CHANGED cpu_to_le32(0x00000119) // -EIO 71 + #define STATUS_TRANSLATION_COMPLETE cpu_to_le32(0x00000120) // -EIO 72 + #define STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY cpu_to_le32(0x00000121) // -EIO 73 + #define STATUS_NOTHING_TO_TERMINATE cpu_to_le32(0x00000122) // -EIO 74 + #define STATUS_PROCESS_NOT_IN_JOB cpu_to_le32(0x00000123) // -EIO 75 + #define STATUS_PROCESS_IN_JOB cpu_to_le32(0x00000124) // -EIO 76 + #define STATUS_VOLSNAP_HIBERNATE_READY cpu_to_le32(0x00000125) // -EIO 77 + #define STATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY cpu_to_le32(0x00000126) // -EIO 78 + #define STATUS_INTERRUPT_VECTOR_ALREADY_CONNECTED cpu_to_le32(0x00000127) // -EIO 79 + #define STATUS_INTERRUPT_STILL_CONNECTED cpu_to_le32(0x00000128) // -EIO 80 + #define STATUS_PROCESS_CLONED cpu_to_le32(0x00000129) // -EIO 81 + #define STATUS_FILE_LOCKED_WITH_ONLY_READERS cpu_to_le32(0x0000012A) // -EIO 82 + #define STATUS_FILE_LOCKED_WITH_WRITERS cpu_to_le32(0x0000012B) // -EIO 83 + #define STATUS_RESOURCEMANAGER_READ_ONLY cpu_to_le32(0x00000202) // -EROFS 84 + #define STATUS_WAIT_FOR_OPLOCK cpu_to_le32(0x00000367) // -EIO 85 + #define DBG_EXCEPTION_HANDLED cpu_to_le32(0x00010001) // -EIO 86 + #define DBG_CONTINUE cpu_to_le32(0x00010002) // -EIO 87 + #define STATUS_FLT_IO_COMPLETE cpu_to_le32(0x001C0001) // -EIO 88 + #define STATUS_OBJECT_NAME_EXISTS cpu_to_le32(0x40000000) // -EIO 89 + #define STATUS_THREAD_WAS_SUSPENDED cpu_to_le32(0x40000001) // -EIO 90 + #define STATUS_WORKING_SET_LIMIT_RANGE cpu_to_le32(0x40000002) // -EIO 91 + #define STATUS_IMAGE_NOT_AT_BASE cpu_to_le32(0x40000003) // -EIO 92 + #define STATUS_RXACT_STATE_CREATED cpu_to_le32(0x40000004) // -EIO 93 + #define STATUS_SEGMENT_NOTIFICATION cpu_to_le32(0x40000005) // -EIO 94 + #define STATUS_LOCAL_USER_SESSION_KEY cpu_to_le32(0x40000006) // -EIO 95 + #define STATUS_BAD_CURRENT_DIRECTORY cpu_to_le32(0x40000007) // -EIO 96 + #define STATUS_SERIAL_MORE_WRITES cpu_to_le32(0x40000008) // -EIO 97 + #define STATUS_REGISTRY_RECOVERED cpu_to_le32(0x40000009) // -EIO 98 + #define STATUS_FT_READ_RECOVERY_FROM_BACKUP cpu_to_le32(0x4000000A) // -EIO 99 + #define STATUS_FT_WRITE_RECOVERY cpu_to_le32(0x4000000B) // -EIO 100 + #define STATUS_SERIAL_COUNTER_TIMEOUT cpu_to_le32(0x4000000C) // -ETIMEDOUT 101 + #define STATUS_NULL_LM_PASSWORD cpu_to_le32(0x4000000D) // -EIO 102 + #define STATUS_IMAGE_MACHINE_TYPE_MISMATCH cpu_to_le32(0x4000000E) // -EIO 103 + #define STATUS_RECEIVE_PARTIAL cpu_to_le32(0x4000000F) // -EIO 104 + #define STATUS_RECEIVE_EXPEDITED cpu_to_le32(0x40000010) // -EIO 105 + #define STATUS_RECEIVE_PARTIAL_EXPEDITED cpu_to_le32(0x40000011) // -EIO 106 + #define STATUS_EVENT_DONE cpu_to_le32(0x40000012) // -EIO 107 + #define STATUS_EVENT_PENDING cpu_to_le32(0x40000013) // -EIO 108 + #define STATUS_CHECKING_FILE_SYSTEM cpu_to_le32(0x40000014) // -EIO 109 + #define STATUS_FATAL_APP_EXIT cpu_to_le32(0x40000015) // -EIO 110 + #define STATUS_PREDEFINED_HANDLE cpu_to_le32(0x40000016) // -EIO 111 + #define STATUS_WAS_UNLOCKED cpu_to_le32(0x40000017) // -EIO 112 + #define STATUS_SERVICE_NOTIFICATION cpu_to_le32(0x40000018) // -EIO 113 + #define STATUS_WAS_LOCKED cpu_to_le32(0x40000019) // -EIO 114 + #define STATUS_LOG_HARD_ERROR cpu_to_le32(0x4000001A) // -EIO 115 + #define STATUS_ALREADY_WIN32 cpu_to_le32(0x4000001B) // -EIO 116 + #define STATUS_WX86_UNSIMULATE cpu_to_le32(0x4000001C) // -EIO 117 + #define STATUS_WX86_CONTINUE cpu_to_le32(0x4000001D) // -EIO 118 + #define STATUS_WX86_SINGLE_STEP cpu_to_le32(0x4000001E) // -EIO 119 + #define STATUS_WX86_BREAKPOINT cpu_to_le32(0x4000001F) // -EIO 120 + #define STATUS_WX86_EXCEPTION_CONTINUE cpu_to_le32(0x40000020) // -EIO 121 + #define STATUS_WX86_EXCEPTION_LASTCHANCE cpu_to_le32(0x40000021) // -EIO 122 + #define STATUS_WX86_EXCEPTION_CHAIN cpu_to_le32(0x40000022) // -EIO 123 + #define STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE cpu_to_le32(0x40000023) // -EIO 124 + #define STATUS_NO_YIELD_PERFORMED cpu_to_le32(0x40000024) // -EIO 125 + #define STATUS_TIMER_RESUME_IGNORED cpu_to_le32(0x40000025) // -EIO 126 + #define STATUS_ARBITRATION_UNHANDLED cpu_to_le32(0x40000026) // -EIO 127 + #define STATUS_CARDBUS_NOT_SUPPORTED cpu_to_le32(0x40000027) // -ENOSYS 128 + #define STATUS_WX86_CREATEWX86TIB cpu_to_le32(0x40000028) // -EIO 129 + #define STATUS_MP_PROCESSOR_MISMATCH cpu_to_le32(0x40000029) // -EIO 130 + #define STATUS_HIBERNATED cpu_to_le32(0x4000002A) // -EIO 131 + #define STATUS_RESUME_HIBERNATION cpu_to_le32(0x4000002B) // -EIO 132 + #define STATUS_FIRMWARE_UPDATED cpu_to_le32(0x4000002C) // -EIO 133 + #define STATUS_DRIVERS_LEAKING_LOCKED_PAGES cpu_to_le32(0x4000002D) // -EIO 134 + #define STATUS_MESSAGE_RETRIEVED cpu_to_le32(0x4000002E) // -EIO 135 + #define STATUS_SYSTEM_POWERSTATE_TRANSITION cpu_to_le32(0x4000002F) // -EIO 136 + #define STATUS_ALPC_CHECK_COMPLETION_LIST cpu_to_le32(0x40000030) // -EIO 137 + #define STATUS_SYSTEM_POWERSTATE_COMPLEX_TRANSITION cpu_to_le32(0x40000031) // -EIO 138 + #define STATUS_ACCESS_AUDIT_BY_POLICY cpu_to_le32(0x40000032) // -EIO 139 + #define STATUS_ABANDON_HIBERFILE cpu_to_le32(0x40000033) // -EIO 140 + #define STATUS_BIZRULES_NOT_ENABLED cpu_to_le32(0x40000034) // -EIO 141 + #define STATUS_WAKE_SYSTEM cpu_to_le32(0x40000294) // -EIO 142 + #define STATUS_DS_SHUTTING_DOWN cpu_to_le32(0x40000370) // -EIO 143 + #define DBG_REPLY_LATER cpu_to_le32(0x40010001) // -EIO 144 + #define DBG_UNABLE_TO_PROVIDE_HANDLE cpu_to_le32(0x40010002) // -EIO 145 + #define DBG_TERMINATE_THREAD cpu_to_le32(0x40010003) // -EIO 146 + #define DBG_TERMINATE_PROCESS cpu_to_le32(0x40010004) // -EIO 147 + #define DBG_CONTROL_C cpu_to_le32(0x40010005) // -EIO 148 + #define DBG_PRINTEXCEPTION_C cpu_to_le32(0x40010006) // -EIO 149 + #define DBG_RIPEXCEPTION cpu_to_le32(0x40010007) // -EIO 150 + #define DBG_CONTROL_BREAK cpu_to_le32(0x40010008) // -EIO 151 + #define DBG_COMMAND_EXCEPTION cpu_to_le32(0x40010009) // -EIO 152 + #define RPC_NT_UUID_LOCAL_ONLY cpu_to_le32(0x40020056) // -EIO 153 + #define RPC_NT_SEND_INCOMPLETE cpu_to_le32(0x400200AF) // -EIO 154 + #define STATUS_CTX_CDM_CONNECT cpu_to_le32(0x400A0004) // -EIO 155 + #define STATUS_CTX_CDM_DISCONNECT cpu_to_le32(0x400A0005) // -EIO 156 + #define STATUS_SXS_RELEASE_ACTIVATION_CONTEXT cpu_to_le32(0x4015000D) // -EIO 157 + #define STATUS_RECOVERY_NOT_NEEDED cpu_to_le32(0x40190034) // -EIO 158 + #define STATUS_RM_ALREADY_STARTED cpu_to_le32(0x40190035) // -EIO 159 + #define STATUS_LOG_NO_RESTART cpu_to_le32(0x401A000C) // -EIO 160 + #define STATUS_VIDEO_DRIVER_DEBUG_REPORT_REQUEST cpu_to_le32(0x401B00EC) // -EIO 161 + #define STATUS_GRAPHICS_PARTIAL_DATA_POPULATED cpu_to_le32(0x401E000A) // -EIO 162 + #define STATUS_GRAPHICS_DRIVER_MISMATCH cpu_to_le32(0x401E0117) // -EIO 163 + #define STATUS_GRAPHICS_MODE_NOT_PINNED cpu_to_le32(0x401E0307) // -EIO 164 + #define STATUS_GRAPHICS_NO_PREFERRED_MODE cpu_to_le32(0x401E031E) // -EIO 165 + #define STATUS_GRAPHICS_DATASET_IS_EMPTY cpu_to_le32(0x401E034B) // -EIO 166 + #define STATUS_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET cpu_to_le32(0x401E034C) // -EIO 167 + #define STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED cpu_to_le32(0x401E0351) // -EIO 168 + #define STATUS_GRAPHICS_UNKNOWN_CHILD_STATUS cpu_to_le32(0x401E042F) // -EIO 169 + #define STATUS_GRAPHICS_LEADLINK_START_DEFERRED cpu_to_le32(0x401E0437) // -EIO 170 + #define STATUS_GRAPHICS_POLLING_TOO_FREQUENTLY cpu_to_le32(0x401E0439) // -EIO 171 + #define STATUS_GRAPHICS_START_DEFERRED cpu_to_le32(0x401E043A) // -EIO 172 + #define STATUS_NDIS_INDICATION_REQUIRED cpu_to_le32(0x40230001) // -EIO 173 + #define STATUS_GUARD_PAGE_VIOLATION cpu_to_le32(0x80000001) // -EIO 174 + #define STATUS_DATATYPE_MISALIGNMENT cpu_to_le32(0x80000002) // -EIO 175 + #define STATUS_BREAKPOINT cpu_to_le32(0x80000003) // -EIO 176 + #define STATUS_SINGLE_STEP cpu_to_le32(0x80000004) // -EIO 177 + #define STATUS_BUFFER_OVERFLOW cpu_to_le32(0x80000005) // -E2BIG 178 + #define STATUS_NO_MORE_FILES cpu_to_le32(0x80000006) // -ENODATA 179 + #define STATUS_WAKE_SYSTEM_DEBUGGER cpu_to_le32(0x80000007) // -EIO 180 + #define STATUS_HANDLES_CLOSED cpu_to_le32(0x8000000A) // -EIO 181 + #define STATUS_NO_INHERITANCE cpu_to_le32(0x8000000B) // -EIO 182 + #define STATUS_GUID_SUBSTITUTION_MADE cpu_to_le32(0x8000000C) // -EIO 183 + #define STATUS_PARTIAL_COPY cpu_to_le32(0x8000000D) // -EIO 184 + #define STATUS_DEVICE_PAPER_EMPTY cpu_to_le32(0x8000000E) // -EIO 185 + #define STATUS_DEVICE_POWERED_OFF cpu_to_le32(0x8000000F) // -EIO 186 + #define STATUS_DEVICE_OFF_LINE cpu_to_le32(0x80000010) // -EIO 187 + #define STATUS_DEVICE_BUSY cpu_to_le32(0x80000011) // -EBUSY 188 + #define STATUS_NO_MORE_EAS cpu_to_le32(0x80000012) // -EIO 189 + #define STATUS_INVALID_EA_NAME cpu_to_le32(0x80000013) // -EINVAL 190 + #define STATUS_EA_LIST_INCONSISTENT cpu_to_le32(0x80000014) // -EIO 191 + #define STATUS_INVALID_EA_FLAG cpu_to_le32(0x80000015) // -EINVAL 192 + #define STATUS_VERIFY_REQUIRED cpu_to_le32(0x80000016) // -EIO 193 + #define STATUS_EXTRANEOUS_INFORMATION cpu_to_le32(0x80000017) // -EIO 194 + #define STATUS_RXACT_COMMIT_NECESSARY cpu_to_le32(0x80000018) // -EIO 195 + #define STATUS_NO_MORE_ENTRIES cpu_to_le32(0x8000001A) // -EIO 196 + #define STATUS_FILEMARK_DETECTED cpu_to_le32(0x8000001B) // -EIO 197 + #define STATUS_MEDIA_CHANGED cpu_to_le32(0x8000001C) // -EIO 198 + #define STATUS_BUS_RESET cpu_to_le32(0x8000001D) // -EIO 199 + #define STATUS_END_OF_MEDIA cpu_to_le32(0x8000001E) // -EIO 200 + #define STATUS_BEGINNING_OF_MEDIA cpu_to_le32(0x8000001F) // -EIO 201 + #define STATUS_MEDIA_CHECK cpu_to_le32(0x80000020) // -EIO 202 + #define STATUS_SETMARK_DETECTED cpu_to_le32(0x80000021) // -EIO 203 + #define STATUS_NO_DATA_DETECTED cpu_to_le32(0x80000022) // -EIO 204 + #define STATUS_REDIRECTOR_HAS_OPEN_HANDLES cpu_to_le32(0x80000023) // -EIO 205 + #define STATUS_SERVER_HAS_OPEN_HANDLES cpu_to_le32(0x80000024) // -EIO 206 + #define STATUS_ALREADY_DISCONNECTED cpu_to_le32(0x80000025) // -EIO 207 + #define STATUS_LONGJUMP cpu_to_le32(0x80000026) // -EIO 208 + #define STATUS_CLEANER_CARTRIDGE_INSTALLED cpu_to_le32(0x80000027) // -EIO 209 + #define STATUS_PLUGPLAY_QUERY_VETOED cpu_to_le32(0x80000028) // -EIO 210 + #define STATUS_UNWIND_CONSOLIDATE cpu_to_le32(0x80000029) // -EIO 211 + #define STATUS_REGISTRY_HIVE_RECOVERED cpu_to_le32(0x8000002A) // -EIO 212 + #define STATUS_DLL_MIGHT_BE_INSECURE cpu_to_le32(0x8000002B) // -EIO 213 + #define STATUS_DLL_MIGHT_BE_INCOMPATIBLE cpu_to_le32(0x8000002C) // -EIO 214 + #define STATUS_STOPPED_ON_SYMLINK cpu_to_le32(0x8000002D) // -EOPNOTSUPP 215 + #define STATUS_DEVICE_REQUIRES_CLEANING cpu_to_le32(0x80000288) // -EIO 216 + #define STATUS_DEVICE_DOOR_OPEN cpu_to_le32(0x80000289) // -EIO 217 + #define STATUS_DATA_LOST_REPAIR cpu_to_le32(0x80000803) // -EIO 218 + #define DBG_EXCEPTION_NOT_HANDLED cpu_to_le32(0x80010001) // -EIO 219 + #define STATUS_CLUSTER_NODE_ALREADY_UP cpu_to_le32(0x80130001) // -EIO 220 + #define STATUS_CLUSTER_NODE_ALREADY_DOWN cpu_to_le32(0x80130002) // -EIO 221 + #define STATUS_CLUSTER_NETWORK_ALREADY_ONLINE cpu_to_le32(0x80130003) // -EIO 222 + #define STATUS_CLUSTER_NETWORK_ALREADY_OFFLINE cpu_to_le32(0x80130004) // -EIO 223 + #define STATUS_CLUSTER_NODE_ALREADY_MEMBER cpu_to_le32(0x80130005) // -EIO 224 + #define STATUS_COULD_NOT_RESIZE_LOG cpu_to_le32(0x80190009) // -EIO 225 + #define STATUS_NO_TXF_METADATA cpu_to_le32(0x80190029) // -EIO 226 + #define STATUS_CANT_RECOVER_WITH_HANDLE_OPEN cpu_to_le32(0x80190031) // -EIO 227 + #define STATUS_TXF_METADATA_ALREADY_PRESENT cpu_to_le32(0x80190041) // -EIO 228 + #define STATUS_TRANSACTION_SCOPE_CALLBACKS_NOT_SET cpu_to_le32(0x80190042) // -EIO 229 + #define STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD_RECOVERED cpu_to_le32(0x801B00EB) // -EIO 230 + #define STATUS_FLT_BUFFER_TOO_SMALL cpu_to_le32(0x801C0001) // -ENOBUFS 231 + #define STATUS_FVE_PARTIAL_METADATA cpu_to_le32(0x80210001) // -EIO 232 + #define STATUS_UNSUCCESSFUL cpu_to_le32(0xC0000001) // -EIO 233 + #define STATUS_NOT_IMPLEMENTED cpu_to_le32(0xC0000002) // -EOPNOTSUPP 234 + #define STATUS_INVALID_INFO_CLASS cpu_to_le32(0xC0000003) // -EIO 235 + #define STATUS_INFO_LENGTH_MISMATCH cpu_to_le32(0xC0000004) // -EIO 236 + #define STATUS_ACCESS_VIOLATION cpu_to_le32(0xC0000005) // -EACCES 237 + #define STATUS_IN_PAGE_ERROR cpu_to_le32(0xC0000006) // -EFAULT 238 + #define STATUS_PAGEFILE_QUOTA cpu_to_le32(0xC0000007) // -EDQUOT 239 + #define STATUS_INVALID_HANDLE cpu_to_le32(0xC0000008) // -EBADF 240 + #define STATUS_BAD_INITIAL_STACK cpu_to_le32(0xC0000009) // -EIO 241 + #define STATUS_BAD_INITIAL_PC cpu_to_le32(0xC000000A) // -EIO 242 + #define STATUS_INVALID_CID cpu_to_le32(0xC000000B) // -EIO 243 + #define STATUS_TIMER_NOT_CANCELED cpu_to_le32(0xC000000C) // -EIO 244 + #define STATUS_INVALID_PARAMETER cpu_to_le32(0xC000000D) // -EINVAL 245 + #define STATUS_NO_SUCH_DEVICE cpu_to_le32(0xC000000E) // -ENODEV 246 + #define STATUS_NO_SUCH_FILE cpu_to_le32(0xC000000F) // -ENOENT 247 + #define STATUS_INVALID_DEVICE_REQUEST cpu_to_le32(0xC0000010) // -EOPNOTSUPP 248 + #define STATUS_END_OF_FILE cpu_to_le32(0xC0000011) // -ENODATA 249 + #define STATUS_WRONG_VOLUME cpu_to_le32(0xC0000012) // -EIO 250 + #define STATUS_NO_MEDIA_IN_DEVICE cpu_to_le32(0xC0000013) // -EIO 251 + #define STATUS_UNRECOGNIZED_MEDIA cpu_to_le32(0xC0000014) // -EIO 252 + #define STATUS_NONEXISTENT_SECTOR cpu_to_le32(0xC0000015) // -EIO 253 + #define STATUS_MORE_PROCESSING_REQUIRED cpu_to_le32(0xC0000016) // -EIO 254 + #define STATUS_NO_MEMORY cpu_to_le32(0xC0000017) // -EREMOTEIO 255 + #define STATUS_CONFLICTING_ADDRESSES cpu_to_le32(0xC0000018) // -EADDRINUSE 256 + #define STATUS_NOT_MAPPED_VIEW cpu_to_le32(0xC0000019) // -EIO 257 + #define STATUS_UNABLE_TO_FREE_VM cpu_to_le32(0xC000001A) // -EIO 258 + #define STATUS_UNABLE_TO_DELETE_SECTION cpu_to_le32(0xC000001B) // -EIO 259 + #define STATUS_INVALID_SYSTEM_SERVICE cpu_to_le32(0xC000001C) // -EIO 260 + #define STATUS_ILLEGAL_INSTRUCTION cpu_to_le32(0xC000001D) // -EIO 261 + #define STATUS_INVALID_LOCK_SEQUENCE cpu_to_le32(0xC000001E) // -EIO 262 + #define STATUS_INVALID_VIEW_SIZE cpu_to_le32(0xC000001F) // -EIO 263 + #define STATUS_INVALID_FILE_FOR_SECTION cpu_to_le32(0xC0000020) // -EIO 264 + #define STATUS_ALREADY_COMMITTED cpu_to_le32(0xC0000021) // -EIO 265 + #define STATUS_ACCESS_DENIED cpu_to_le32(0xC0000022) // -EACCES 266 + #define STATUS_BUFFER_TOO_SMALL cpu_to_le32(0xC0000023) // -EIO 267 + #define STATUS_OBJECT_TYPE_MISMATCH cpu_to_le32(0xC0000024) // -EIO 268 + #define STATUS_NONCONTINUABLE_EXCEPTION cpu_to_le32(0xC0000025) // -EIO 269 + #define STATUS_INVALID_DISPOSITION cpu_to_le32(0xC0000026) // -EIO 270 + #define STATUS_UNWIND cpu_to_le32(0xC0000027) // -EIO 271 + #define STATUS_BAD_STACK cpu_to_le32(0xC0000028) // -EIO 272 + #define STATUS_INVALID_UNWIND_TARGET cpu_to_le32(0xC0000029) // -EIO 273 + #define STATUS_NOT_LOCKED cpu_to_le32(0xC000002A) // -EIO 274 + #define STATUS_PARITY_ERROR cpu_to_le32(0xC000002B) // -EIO 275 + #define STATUS_UNABLE_TO_DECOMMIT_VM cpu_to_le32(0xC000002C) // -EIO 276 + #define STATUS_NOT_COMMITTED cpu_to_le32(0xC000002D) // -EIO 277 + #define STATUS_INVALID_PORT_ATTRIBUTES cpu_to_le32(0xC000002E) // -EIO 278 + #define STATUS_PORT_MESSAGE_TOO_LONG cpu_to_le32(0xC000002F) // -EIO 279 + #define STATUS_INVALID_PARAMETER_MIX cpu_to_le32(0xC0000030) // -EINVAL 280 + #define STATUS_INVALID_QUOTA_LOWER cpu_to_le32(0xC0000031) // -EIO 281 + #define STATUS_DISK_CORRUPT_ERROR cpu_to_le32(0xC0000032) // -EIO 282 + #define STATUS_OBJECT_NAME_INVALID cpu_to_le32(0xC0000033) // -ENOENT 283 + #define STATUS_OBJECT_NAME_NOT_FOUND cpu_to_le32(0xC0000034) // -ENOENT 284 + #define STATUS_OBJECT_NAME_COLLISION cpu_to_le32(0xC0000035) // -EEXIST 285 + #define STATUS_PORT_DISCONNECTED cpu_to_le32(0xC0000037) // -EIO 286 + #define STATUS_DEVICE_ALREADY_ATTACHED cpu_to_le32(0xC0000038) // -EIO 287 + #define STATUS_OBJECT_PATH_INVALID cpu_to_le32(0xC0000039) // -ENOTDIR 288 + #define STATUS_OBJECT_PATH_NOT_FOUND cpu_to_le32(0xC000003A) // -ENOENT 289 + #define STATUS_OBJECT_PATH_SYNTAX_BAD cpu_to_le32(0xC000003B) // -EIO 290 + #define STATUS_DATA_OVERRUN cpu_to_le32(0xC000003C) // -EIO 291 + #define STATUS_DATA_LATE_ERROR cpu_to_le32(0xC000003D) // -EIO 292 + #define STATUS_DATA_ERROR cpu_to_le32(0xC000003E) // -EIO 293 + #define STATUS_CRC_ERROR cpu_to_le32(0xC000003F) // -EIO 294 + #define STATUS_SECTION_TOO_BIG cpu_to_le32(0xC0000040) // -EIO 295 + #define STATUS_PORT_CONNECTION_REFUSED cpu_to_le32(0xC0000041) // -ECONNREFUSED 296 + #define STATUS_INVALID_PORT_HANDLE cpu_to_le32(0xC0000042) // -EIO 297 + #define STATUS_SHARING_VIOLATION cpu_to_le32(0xC0000043) // -EBUSY 298 + #define STATUS_QUOTA_EXCEEDED cpu_to_le32(0xC0000044) // -EDQUOT 299 + #define STATUS_INVALID_PAGE_PROTECTION cpu_to_le32(0xC0000045) // -EIO 300 + #define STATUS_MUTANT_NOT_OWNED cpu_to_le32(0xC0000046) // -EIO 301 + #define STATUS_SEMAPHORE_LIMIT_EXCEEDED cpu_to_le32(0xC0000047) // -EIO 302 + #define STATUS_PORT_ALREADY_SET cpu_to_le32(0xC0000048) // -EIO 303 + #define STATUS_SECTION_NOT_IMAGE cpu_to_le32(0xC0000049) // -EIO 304 + #define STATUS_SUSPEND_COUNT_EXCEEDED cpu_to_le32(0xC000004A) // -EIO 305 + #define STATUS_THREAD_IS_TERMINATING cpu_to_le32(0xC000004B) // -EIO 306 + #define STATUS_BAD_WORKING_SET_LIMIT cpu_to_le32(0xC000004C) // -EIO 307 + #define STATUS_INCOMPATIBLE_FILE_MAP cpu_to_le32(0xC000004D) // -EIO 308 + #define STATUS_SECTION_PROTECTION cpu_to_le32(0xC000004E) // -EIO 309 + #define STATUS_EAS_NOT_SUPPORTED cpu_to_le32(0xC000004F) // -EOPNOTSUPP 310 + #define STATUS_EA_TOO_LARGE cpu_to_le32(0xC0000050) // -EIO 311 + #define STATUS_NONEXISTENT_EA_ENTRY cpu_to_le32(0xC0000051) // -EIO 312 + #define STATUS_NO_EAS_ON_FILE cpu_to_le32(0xC0000052) // -ENODATA 313 + #define STATUS_EA_CORRUPT_ERROR cpu_to_le32(0xC0000053) // -EIO 314 + #define STATUS_FILE_LOCK_CONFLICT cpu_to_le32(0xC0000054) // -EACCES 315 + #define STATUS_LOCK_NOT_GRANTED cpu_to_le32(0xC0000055) // -EACCES 316 + #define STATUS_DELETE_PENDING cpu_to_le32(0xC0000056) // -ENOENT 317 + #define STATUS_CTL_FILE_NOT_SUPPORTED cpu_to_le32(0xC0000057) // -ENOSYS 318 + #define STATUS_UNKNOWN_REVISION cpu_to_le32(0xC0000058) // -EIO 319 + #define STATUS_REVISION_MISMATCH cpu_to_le32(0xC0000059) // -EIO 320 + #define STATUS_INVALID_OWNER cpu_to_le32(0xC000005A) // -EIO 321 + #define STATUS_INVALID_PRIMARY_GROUP cpu_to_le32(0xC000005B) // -EIO 322 + #define STATUS_NO_IMPERSONATION_TOKEN cpu_to_le32(0xC000005C) // -EIO 323 + #define STATUS_CANT_DISABLE_MANDATORY cpu_to_le32(0xC000005D) // -EIO 324 + #define STATUS_NO_LOGON_SERVERS cpu_to_le32(0xC000005E) // -EIO 325 + #define STATUS_NO_SUCH_LOGON_SESSION cpu_to_le32(0xC000005F) // -EIO 326 + #define STATUS_NO_SUCH_PRIVILEGE cpu_to_le32(0xC0000060) // -EIO 327 + #define STATUS_PRIVILEGE_NOT_HELD cpu_to_le32(0xC0000061) // -EPERM 328 + #define STATUS_INVALID_ACCOUNT_NAME cpu_to_le32(0xC0000062) // -EIO 329 + #define STATUS_USER_EXISTS cpu_to_le32(0xC0000063) // -EIO 330 + #define STATUS_NO_SUCH_USER cpu_to_le32(0xC0000064) // -EIO 331 + #define STATUS_GROUP_EXISTS cpu_to_le32(0xC0000065) // -EIO 332 + #define STATUS_NO_SUCH_GROUP cpu_to_le32(0xC0000066) // -EIO 333 + #define STATUS_MEMBER_IN_GROUP cpu_to_le32(0xC0000067) // -EIO 334 + #define STATUS_MEMBER_NOT_IN_GROUP cpu_to_le32(0xC0000068) // -EIO 335 + #define STATUS_LAST_ADMIN cpu_to_le32(0xC0000069) // -EIO 336 + #define STATUS_WRONG_PASSWORD cpu_to_le32(0xC000006A) // -EACCES 337 + #define STATUS_ILL_FORMED_PASSWORD cpu_to_le32(0xC000006B) // -EINVAL 338 + #define STATUS_PASSWORD_RESTRICTION cpu_to_le32(0xC000006C) // -EACCES 339 + #define STATUS_LOGON_FAILURE cpu_to_le32(0xC000006D) // -EACCES 340 + #define STATUS_ACCOUNT_RESTRICTION cpu_to_le32(0xC000006E) // -EACCES 341 + #define STATUS_INVALID_LOGON_HOURS cpu_to_le32(0xC000006F) // -EACCES 342 + #define STATUS_INVALID_WORKSTATION cpu_to_le32(0xC0000070) // -EACCES 343 + #define STATUS_PASSWORD_EXPIRED cpu_to_le32(0xC0000071) // -EKEYEXPIRED 344 + #define STATUS_ACCOUNT_DISABLED cpu_to_le32(0xC0000072) // -EKEYREVOKED 345 + #define STATUS_NONE_MAPPED cpu_to_le32(0xC0000073) // -EIO 346 + #define STATUS_TOO_MANY_LUIDS_REQUESTED cpu_to_le32(0xC0000074) // -EIO 347 + #define STATUS_LUIDS_EXHAUSTED cpu_to_le32(0xC0000075) // -EIO 348 + #define STATUS_INVALID_SUB_AUTHORITY cpu_to_le32(0xC0000076) // -EIO 349 + #define STATUS_INVALID_ACL cpu_to_le32(0xC0000077) // -EIO 350 + #define STATUS_INVALID_SID cpu_to_le32(0xC0000078) // -EIO 351 + #define STATUS_INVALID_SECURITY_DESCR cpu_to_le32(0xC0000079) // -EIO 352 + #define STATUS_PROCEDURE_NOT_FOUND cpu_to_le32(0xC000007A) // -EIO 353 + #define STATUS_INVALID_IMAGE_FORMAT cpu_to_le32(0xC000007B) // -EIO 354 + #define STATUS_NO_TOKEN cpu_to_le32(0xC000007C) // -EIO 355 + #define STATUS_BAD_INHERITANCE_ACL cpu_to_le32(0xC000007D) // -EIO 356 + #define STATUS_RANGE_NOT_LOCKED cpu_to_le32(0xC000007E) // -EIO 357 + #define STATUS_DISK_FULL cpu_to_le32(0xC000007F) // -ENOSPC 358 + #define STATUS_SERVER_DISABLED cpu_to_le32(0xC0000080) // -EIO 359 + #define STATUS_SERVER_NOT_DISABLED cpu_to_le32(0xC0000081) // -EIO 360 + #define STATUS_TOO_MANY_GUIDS_REQUESTED cpu_to_le32(0xC0000082) // -EIO 361 + #define STATUS_GUIDS_EXHAUSTED cpu_to_le32(0xC0000083) // -EIO 362 + #define STATUS_INVALID_ID_AUTHORITY cpu_to_le32(0xC0000084) // -EIO 363 + #define STATUS_AGENTS_EXHAUSTED cpu_to_le32(0xC0000085) // -EIO 364 + #define STATUS_INVALID_VOLUME_LABEL cpu_to_le32(0xC0000086) // -EIO 365 + #define STATUS_SECTION_NOT_EXTENDED cpu_to_le32(0xC0000087) // -EIO 366 + #define STATUS_NOT_MAPPED_DATA cpu_to_le32(0xC0000088) // -EIO 367 + #define STATUS_RESOURCE_DATA_NOT_FOUND cpu_to_le32(0xC0000089) // -EIO 368 + #define STATUS_RESOURCE_TYPE_NOT_FOUND cpu_to_le32(0xC000008A) // -EIO 369 + #define STATUS_RESOURCE_NAME_NOT_FOUND cpu_to_le32(0xC000008B) // -EIO 370 + #define STATUS_ARRAY_BOUNDS_EXCEEDED cpu_to_le32(0xC000008C) // -EIO 371 + #define STATUS_FLOAT_DENORMAL_OPERAND cpu_to_le32(0xC000008D) // -EIO 372 + #define STATUS_FLOAT_DIVIDE_BY_ZERO cpu_to_le32(0xC000008E) // -EIO 373 + #define STATUS_FLOAT_INEXACT_RESULT cpu_to_le32(0xC000008F) // -EIO 374 + #define STATUS_FLOAT_INVALID_OPERATION cpu_to_le32(0xC0000090) // -EIO 375 + #define STATUS_FLOAT_OVERFLOW cpu_to_le32(0xC0000091) // -EIO 376 + #define STATUS_FLOAT_STACK_CHECK cpu_to_le32(0xC0000092) // -EIO 377 + #define STATUS_FLOAT_UNDERFLOW cpu_to_le32(0xC0000093) // -EIO 378 + #define STATUS_INTEGER_DIVIDE_BY_ZERO cpu_to_le32(0xC0000094) // -EIO 379 + #define STATUS_INTEGER_OVERFLOW cpu_to_le32(0xC0000095) // -EIO 380 + #define STATUS_PRIVILEGED_INSTRUCTION cpu_to_le32(0xC0000096) // -EIO 381 + #define STATUS_TOO_MANY_PAGING_FILES cpu_to_le32(0xC0000097) // -EIO 382 + #define STATUS_FILE_INVALID cpu_to_le32(0xC0000098) // -EIO 383 + #define STATUS_ALLOTTED_SPACE_EXCEEDED cpu_to_le32(0xC0000099) // -EIO 384 + #define STATUS_INSUFFICIENT_RESOURCES cpu_to_le32(0xC000009A) // -EAGAIN 385 + #define STATUS_DFS_EXIT_PATH_FOUND cpu_to_le32(0xC000009B) // -EIO 386 + #define STATUS_DEVICE_DATA_ERROR cpu_to_le32(0xC000009C) // -EIO 387 + #define STATUS_DEVICE_NOT_CONNECTED cpu_to_le32(0xC000009D) // -EIO 388 + #define STATUS_DEVICE_POWER_FAILURE cpu_to_le32(0xC000009E) // -EIO 389 + #define STATUS_FREE_VM_NOT_AT_BASE cpu_to_le32(0xC000009F) // -EIO 390 + #define STATUS_MEMORY_NOT_ALLOCATED cpu_to_le32(0xC00000A0) // -EFAULT 391 + #define STATUS_WORKING_SET_QUOTA cpu_to_le32(0xC00000A1) // -EIO 392 + #define STATUS_MEDIA_WRITE_PROTECTED cpu_to_le32(0xC00000A2) // -EROFS 393 + #define STATUS_DEVICE_NOT_READY cpu_to_le32(0xC00000A3) // -EIO 394 + #define STATUS_INVALID_GROUP_ATTRIBUTES cpu_to_le32(0xC00000A4) // -EIO 395 + #define STATUS_BAD_IMPERSONATION_LEVEL cpu_to_le32(0xC00000A5) // -EIO 396 + #define STATUS_CANT_OPEN_ANONYMOUS cpu_to_le32(0xC00000A6) // -EIO 397 + #define STATUS_BAD_VALIDATION_CLASS cpu_to_le32(0xC00000A7) // -EIO 398 + #define STATUS_BAD_TOKEN_TYPE cpu_to_le32(0xC00000A8) // -EIO 399 + #define STATUS_BAD_MASTER_BOOT_RECORD cpu_to_le32(0xC00000A9) // -EIO 400 + #define STATUS_INSTRUCTION_MISALIGNMENT cpu_to_le32(0xC00000AA) // -EIO 401 + #define STATUS_INSTANCE_NOT_AVAILABLE cpu_to_le32(0xC00000AB) // -EIO 402 + #define STATUS_PIPE_NOT_AVAILABLE cpu_to_le32(0xC00000AC) // -EIO 403 + #define STATUS_INVALID_PIPE_STATE cpu_to_le32(0xC00000AD) // -EIO 404 + #define STATUS_PIPE_BUSY cpu_to_le32(0xC00000AE) // -EBUSY 405 + #define STATUS_ILLEGAL_FUNCTION cpu_to_le32(0xC00000AF) // -EIO 406 + #define STATUS_PIPE_DISCONNECTED cpu_to_le32(0xC00000B0) // -EPIPE 407 + #define STATUS_PIPE_CLOSING cpu_to_le32(0xC00000B1) // -EIO 408 + #define STATUS_PIPE_CONNECTED cpu_to_le32(0xC00000B2) // -EIO 409 + #define STATUS_PIPE_LISTENING cpu_to_le32(0xC00000B3) // -EIO 410 + #define STATUS_INVALID_READ_MODE cpu_to_le32(0xC00000B4) // -EIO 411 + #define STATUS_IO_TIMEOUT cpu_to_le32(0xC00000B5) // -EAGAIN 412 + #define STATUS_FILE_FORCED_CLOSED cpu_to_le32(0xC00000B6) // -EIO 413 + #define STATUS_PROFILING_NOT_STARTED cpu_to_le32(0xC00000B7) // -EIO 414 + #define STATUS_PROFILING_NOT_STOPPED cpu_to_le32(0xC00000B8) // -EIO 415 + #define STATUS_COULD_NOT_INTERPRET cpu_to_le32(0xC00000B9) // -EIO 416 + #define STATUS_FILE_IS_A_DIRECTORY cpu_to_le32(0xC00000BA) // -EISDIR 417 + #define STATUS_NOT_SUPPORTED cpu_to_le32(0xC00000BB) // -EOPNOTSUPP 418 + #define STATUS_REMOTE_NOT_LISTENING cpu_to_le32(0xC00000BC) // -EHOSTDOWN 419 + #define STATUS_DUPLICATE_NAME cpu_to_le32(0xC00000BD) // -ENOTUNIQ 420 + #define STATUS_BAD_NETWORK_PATH cpu_to_le32(0xC00000BE) // -EINVAL 421 + #define STATUS_NETWORK_BUSY cpu_to_le32(0xC00000BF) // -EBUSY 422 + #define STATUS_DEVICE_DOES_NOT_EXIST cpu_to_le32(0xC00000C0) // -ENODEV 423 + #define STATUS_TOO_MANY_COMMANDS cpu_to_le32(0xC00000C1) // -EIO 424 + #define STATUS_ADAPTER_HARDWARE_ERROR cpu_to_le32(0xC00000C2) // -EIO 425 + #define STATUS_INVALID_NETWORK_RESPONSE cpu_to_le32(0xC00000C3) // -EIO 426 + #define STATUS_UNEXPECTED_NETWORK_ERROR cpu_to_le32(0xC00000C4) // -EIO 427 + #define STATUS_BAD_REMOTE_ADAPTER cpu_to_le32(0xC00000C5) // -EIO 428 + #define STATUS_PRINT_QUEUE_FULL cpu_to_le32(0xC00000C6) // -EIO 429 + #define STATUS_NO_SPOOL_SPACE cpu_to_le32(0xC00000C7) // -EIO 430 + #define STATUS_PRINT_CANCELLED cpu_to_le32(0xC00000C8) // -EIO 431 + #define STATUS_NETWORK_NAME_DELETED cpu_to_le32(0xC00000C9) // -EREMCHG 432 + #define STATUS_NETWORK_ACCESS_DENIED cpu_to_le32(0xC00000CA) // -EACCES 433 + #define STATUS_BAD_DEVICE_TYPE cpu_to_le32(0xC00000CB) // -EIO 434 + #define STATUS_BAD_NETWORK_NAME cpu_to_le32(0xC00000CC) // -ENOENT 435 + #define STATUS_TOO_MANY_NAMES cpu_to_le32(0xC00000CD) // -EIO 436 + #define STATUS_TOO_MANY_SESSIONS cpu_to_le32(0xC00000CE) // -EIO 437 + #define STATUS_SHARING_PAUSED cpu_to_le32(0xC00000CF) // -EIO 438 + #define STATUS_REQUEST_NOT_ACCEPTED cpu_to_le32(0xC00000D0) // -EIO 439 + #define STATUS_REDIRECTOR_PAUSED cpu_to_le32(0xC00000D1) // -EIO 440 + #define STATUS_NET_WRITE_FAULT cpu_to_le32(0xC00000D2) // -EIO 441 + #define STATUS_PROFILING_AT_LIMIT cpu_to_le32(0xC00000D3) // -EIO 442 + #define STATUS_NOT_SAME_DEVICE cpu_to_le32(0xC00000D4) // -EXDEV 443 + #define STATUS_FILE_RENAMED cpu_to_le32(0xC00000D5) // -EIO 444 + #define STATUS_VIRTUAL_CIRCUIT_CLOSED cpu_to_le32(0xC00000D6) // -EIO 445 + #define STATUS_NO_SECURITY_ON_OBJECT cpu_to_le32(0xC00000D7) // -EIO 446 + #define STATUS_CANT_WAIT cpu_to_le32(0xC00000D8) // -EIO 447 + #define STATUS_PIPE_EMPTY cpu_to_le32(0xC00000D9) // -EIO 448 + #define STATUS_CANT_ACCESS_DOMAIN_INFO cpu_to_le32(0xC00000DA) // -EIO 449 + #define STATUS_CANT_TERMINATE_SELF cpu_to_le32(0xC00000DB) // -EIO 450 + #define STATUS_INVALID_SERVER_STATE cpu_to_le32(0xC00000DC) // -EIO 451 + #define STATUS_INVALID_DOMAIN_STATE cpu_to_le32(0xC00000DD) // -EIO 452 + #define STATUS_INVALID_DOMAIN_ROLE cpu_to_le32(0xC00000DE) // -EIO 453 + #define STATUS_NO_SUCH_DOMAIN cpu_to_le32(0xC00000DF) // -EIO 454 + #define STATUS_DOMAIN_EXISTS cpu_to_le32(0xC00000E0) // -EIO 455 + #define STATUS_DOMAIN_LIMIT_EXCEEDED cpu_to_le32(0xC00000E1) // -EIO 456 + #define STATUS_OPLOCK_NOT_GRANTED cpu_to_le32(0xC00000E2) // -EIO 457 + #define STATUS_INVALID_OPLOCK_PROTOCOL cpu_to_le32(0xC00000E3) // -EIO 458 + #define STATUS_INTERNAL_DB_CORRUPTION cpu_to_le32(0xC00000E4) // -EIO 459 + #define STATUS_INTERNAL_ERROR cpu_to_le32(0xC00000E5) // -EIO 460 + #define STATUS_GENERIC_NOT_MAPPED cpu_to_le32(0xC00000E6) // -EIO 461 + #define STATUS_BAD_DESCRIPTOR_FORMAT cpu_to_le32(0xC00000E7) // -EIO 462 + #define STATUS_INVALID_USER_BUFFER cpu_to_le32(0xC00000E8) // -EIO 463 + #define STATUS_UNEXPECTED_IO_ERROR cpu_to_le32(0xC00000E9) // -EIO 464 + #define STATUS_UNEXPECTED_MM_CREATE_ERR cpu_to_le32(0xC00000EA) // -EIO 465 + #define STATUS_UNEXPECTED_MM_MAP_ERROR cpu_to_le32(0xC00000EB) // -EIO 466 + #define STATUS_UNEXPECTED_MM_EXTEND_ERR cpu_to_le32(0xC00000EC) // -EIO 467 + #define STATUS_NOT_LOGON_PROCESS cpu_to_le32(0xC00000ED) // -EIO 468 + #define STATUS_LOGON_SESSION_EXISTS cpu_to_le32(0xC00000EE) // -EIO 469 + #define STATUS_INVALID_PARAMETER_1 cpu_to_le32(0xC00000EF) // -EINVAL 470 + #define STATUS_INVALID_PARAMETER_2 cpu_to_le32(0xC00000F0) // -EINVAL 471 + #define STATUS_INVALID_PARAMETER_3 cpu_to_le32(0xC00000F1) // -EINVAL 472 + #define STATUS_INVALID_PARAMETER_4 cpu_to_le32(0xC00000F2) // -EINVAL 473 + #define STATUS_INVALID_PARAMETER_5 cpu_to_le32(0xC00000F3) // -EINVAL 474 + #define STATUS_INVALID_PARAMETER_6 cpu_to_le32(0xC00000F4) // -EINVAL 475 + #define STATUS_INVALID_PARAMETER_7 cpu_to_le32(0xC00000F5) // -EINVAL 476 + #define STATUS_INVALID_PARAMETER_8 cpu_to_le32(0xC00000F6) // -EINVAL 477 + #define STATUS_INVALID_PARAMETER_9 cpu_to_le32(0xC00000F7) // -EINVAL 478 + #define STATUS_INVALID_PARAMETER_10 cpu_to_le32(0xC00000F8) // -EINVAL 479 + #define STATUS_INVALID_PARAMETER_11 cpu_to_le32(0xC00000F9) // -EINVAL 480 + #define STATUS_INVALID_PARAMETER_12 cpu_to_le32(0xC00000FA) // -EINVAL 481 + #define STATUS_REDIRECTOR_NOT_STARTED cpu_to_le32(0xC00000FB) // -EIO 482 + #define STATUS_REDIRECTOR_STARTED cpu_to_le32(0xC00000FC) // -EIO 483 + #define STATUS_STACK_OVERFLOW cpu_to_le32(0xC00000FD) // -EIO 484 + #define STATUS_NO_SUCH_PACKAGE cpu_to_le32(0xC00000FE) // -EIO 485 + #define STATUS_BAD_FUNCTION_TABLE cpu_to_le32(0xC00000FF) // -EIO 486 + #define STATUS_VARIABLE_NOT_FOUND cpu_to_le32(0xC0000100) // -EIO 487 + #define STATUS_DIRECTORY_NOT_EMPTY cpu_to_le32(0xC0000101) // -ENOTEMPTY 488 + #define STATUS_FILE_CORRUPT_ERROR cpu_to_le32(0xC0000102) // -EIO 489 + #define STATUS_NOT_A_DIRECTORY cpu_to_le32(0xC0000103) // -ENOTDIR 490 + #define STATUS_BAD_LOGON_SESSION_STATE cpu_to_le32(0xC0000104) // -EIO 491 + #define STATUS_LOGON_SESSION_COLLISION cpu_to_le32(0xC0000105) // -EIO 492 + #define STATUS_NAME_TOO_LONG cpu_to_le32(0xC0000106) // -ENAMETOOLONG 493 + #define STATUS_FILES_OPEN cpu_to_le32(0xC0000107) // -EIO 494 + #define STATUS_CONNECTION_IN_USE cpu_to_le32(0xC0000108) // -EIO 495 + #define STATUS_MESSAGE_NOT_FOUND cpu_to_le32(0xC0000109) // -EIO 496 + #define STATUS_PROCESS_IS_TERMINATING cpu_to_le32(0xC000010A) // -EIO 497 + #define STATUS_INVALID_LOGON_TYPE cpu_to_le32(0xC000010B) // -EIO 498 + #define STATUS_NO_GUID_TRANSLATION cpu_to_le32(0xC000010C) // -EIO 499 + #define STATUS_CANNOT_IMPERSONATE cpu_to_le32(0xC000010D) // -EIO 500 + #define STATUS_IMAGE_ALREADY_LOADED cpu_to_le32(0xC000010E) // -EIO 501 + #define STATUS_ABIOS_NOT_PRESENT cpu_to_le32(0xC000010F) // -EIO 502 + #define STATUS_ABIOS_LID_NOT_EXIST cpu_to_le32(0xC0000110) // -EIO 503 + #define STATUS_ABIOS_LID_ALREADY_OWNED cpu_to_le32(0xC0000111) // -EIO 504 + #define STATUS_ABIOS_NOT_LID_OWNER cpu_to_le32(0xC0000112) // -EIO 505 + #define STATUS_ABIOS_INVALID_COMMAND cpu_to_le32(0xC0000113) // -EIO 506 + #define STATUS_ABIOS_INVALID_LID cpu_to_le32(0xC0000114) // -EIO 507 + #define STATUS_ABIOS_SELECTOR_NOT_AVAILABLE cpu_to_le32(0xC0000115) // -EIO 508 + #define STATUS_ABIOS_INVALID_SELECTOR cpu_to_le32(0xC0000116) // -EIO 509 + #define STATUS_NO_LDT cpu_to_le32(0xC0000117) // -EIO 510 + #define STATUS_INVALID_LDT_SIZE cpu_to_le32(0xC0000118) // -EIO 511 + #define STATUS_INVALID_LDT_OFFSET cpu_to_le32(0xC0000119) // -EIO 512 + #define STATUS_INVALID_LDT_DESCRIPTOR cpu_to_le32(0xC000011A) // -EIO 513 + #define STATUS_INVALID_IMAGE_NE_FORMAT cpu_to_le32(0xC000011B) // -EIO 514 + #define STATUS_RXACT_INVALID_STATE cpu_to_le32(0xC000011C) // -EIO 515 + #define STATUS_RXACT_COMMIT_FAILURE cpu_to_le32(0xC000011D) // -EIO 516 + #define STATUS_MAPPED_FILE_SIZE_ZERO cpu_to_le32(0xC000011E) // -EIO 517 + #define STATUS_TOO_MANY_OPENED_FILES cpu_to_le32(0xC000011F) // -EMFILE 518 + #define STATUS_CANCELLED cpu_to_le32(0xC0000120) // -EIO 519 + #define STATUS_CANNOT_DELETE cpu_to_le32(0xC0000121) // -EACCES 520 + #define STATUS_INVALID_COMPUTER_NAME cpu_to_le32(0xC0000122) // -EIO 521 + #define STATUS_FILE_DELETED cpu_to_le32(0xC0000123) // -EIO 522 + #define STATUS_SPECIAL_ACCOUNT cpu_to_le32(0xC0000124) // -EIO 523 + #define STATUS_SPECIAL_GROUP cpu_to_le32(0xC0000125) // -EIO 524 + #define STATUS_SPECIAL_USER cpu_to_le32(0xC0000126) // -EIO 525 + #define STATUS_MEMBERS_PRIMARY_GROUP cpu_to_le32(0xC0000127) // -EIO 526 + #define STATUS_FILE_CLOSED cpu_to_le32(0xC0000128) // -EBADF 527 + #define STATUS_TOO_MANY_THREADS cpu_to_le32(0xC0000129) // -EIO 528 + #define STATUS_THREAD_NOT_IN_PROCESS cpu_to_le32(0xC000012A) // -EIO 529 + #define STATUS_TOKEN_ALREADY_IN_USE cpu_to_le32(0xC000012B) // -EIO 530 + #define STATUS_PAGEFILE_QUOTA_EXCEEDED cpu_to_le32(0xC000012C) // -EDQUOT 531 + #define STATUS_COMMITMENT_LIMIT cpu_to_le32(0xC000012D) // -EIO 532 + #define STATUS_INVALID_IMAGE_LE_FORMAT cpu_to_le32(0xC000012E) // -EIO 533 + #define STATUS_INVALID_IMAGE_NOT_MZ cpu_to_le32(0xC000012F) // -EIO 534 + #define STATUS_INVALID_IMAGE_PROTECT cpu_to_le32(0xC0000130) // -EIO 535 + #define STATUS_INVALID_IMAGE_WIN_16 cpu_to_le32(0xC0000131) // -EIO 536 + #define STATUS_LOGON_SERVER_CONFLICT cpu_to_le32(0xC0000132) // -EIO 537 + #define STATUS_TIME_DIFFERENCE_AT_DC cpu_to_le32(0xC0000133) // -EIO 538 + #define STATUS_SYNCHRONIZATION_REQUIRED cpu_to_le32(0xC0000134) // -EIO 539 + #define STATUS_DLL_NOT_FOUND cpu_to_le32(0xC0000135) // -ENOENT 540 + #define STATUS_OPEN_FAILED cpu_to_le32(0xC0000136) // -EIO 541 + #define STATUS_IO_PRIVILEGE_FAILED cpu_to_le32(0xC0000137) // -EIO 542 + #define STATUS_ORDINAL_NOT_FOUND cpu_to_le32(0xC0000138) // -EIO 543 + #define STATUS_ENTRYPOINT_NOT_FOUND cpu_to_le32(0xC0000139) // -EIO 544 + #define STATUS_CONTROL_C_EXIT cpu_to_le32(0xC000013A) // -EIO 545 + #define STATUS_LOCAL_DISCONNECT cpu_to_le32(0xC000013B) // -EIO 546 + #define STATUS_REMOTE_DISCONNECT cpu_to_le32(0xC000013C) // -ESHUTDOWN 547 + #define STATUS_REMOTE_RESOURCES cpu_to_le32(0xC000013D) // -EIO 548 + #define STATUS_LINK_FAILED cpu_to_le32(0xC000013E) // -EXDEV 549 + #define STATUS_LINK_TIMEOUT cpu_to_le32(0xC000013F) // -ETIMEDOUT 550 + #define STATUS_INVALID_CONNECTION cpu_to_le32(0xC0000140) // -EIO 551 + #define STATUS_INVALID_ADDRESS cpu_to_le32(0xC0000141) // -EIO 552 + #define STATUS_DLL_INIT_FAILED cpu_to_le32(0xC0000142) // -EIO 553 + #define STATUS_MISSING_SYSTEMFILE cpu_to_le32(0xC0000143) // -EIO 554 + #define STATUS_UNHANDLED_EXCEPTION cpu_to_le32(0xC0000144) // -EIO 555 + #define STATUS_APP_INIT_FAILURE cpu_to_le32(0xC0000145) // -EIO 556 + #define STATUS_PAGEFILE_CREATE_FAILED cpu_to_le32(0xC0000146) // -EIO 557 + #define STATUS_NO_PAGEFILE cpu_to_le32(0xC0000147) // -EIO 558 + #define STATUS_INVALID_LEVEL cpu_to_le32(0xC0000148) // -EIO 559 + #define STATUS_WRONG_PASSWORD_CORE cpu_to_le32(0xC0000149) // -EIO 560 + #define STATUS_ILLEGAL_FLOAT_CONTEXT cpu_to_le32(0xC000014A) // -EIO 561 + #define STATUS_PIPE_BROKEN cpu_to_le32(0xC000014B) // -EPIPE 562 + #define STATUS_REGISTRY_CORRUPT cpu_to_le32(0xC000014C) // -EIO 563 + #define STATUS_REGISTRY_IO_FAILED cpu_to_le32(0xC000014D) // -EIO 564 + #define STATUS_NO_EVENT_PAIR cpu_to_le32(0xC000014E) // -EIO 565 + #define STATUS_UNRECOGNIZED_VOLUME cpu_to_le32(0xC000014F) // -EIO 566 + #define STATUS_SERIAL_NO_DEVICE_INITED cpu_to_le32(0xC0000150) // -EIO 567 + #define STATUS_NO_SUCH_ALIAS cpu_to_le32(0xC0000151) // -EIO 568 + #define STATUS_MEMBER_NOT_IN_ALIAS cpu_to_le32(0xC0000152) // -EIO 569 + #define STATUS_MEMBER_IN_ALIAS cpu_to_le32(0xC0000153) // -EIO 570 + #define STATUS_ALIAS_EXISTS cpu_to_le32(0xC0000154) // -EIO 571 + #define STATUS_LOGON_NOT_GRANTED cpu_to_le32(0xC0000155) // -EIO 572 + #define STATUS_TOO_MANY_SECRETS cpu_to_le32(0xC0000156) // -EIO 573 + #define STATUS_SECRET_TOO_LONG cpu_to_le32(0xC0000157) // -EIO 574 + #define STATUS_INTERNAL_DB_ERROR cpu_to_le32(0xC0000158) // -EIO 575 + #define STATUS_FULLSCREEN_MODE cpu_to_le32(0xC0000159) // -EIO 576 + #define STATUS_TOO_MANY_CONTEXT_IDS cpu_to_le32(0xC000015A) // -EIO 577 + #define STATUS_LOGON_TYPE_NOT_GRANTED cpu_to_le32(0xC000015B) // -EIO 578 + #define STATUS_NOT_REGISTRY_FILE cpu_to_le32(0xC000015C) // -EIO 579 + #define STATUS_NT_CROSS_ENCRYPTION_REQUIRED cpu_to_le32(0xC000015D) // -EIO 580 + #define STATUS_DOMAIN_CTRLR_CONFIG_ERROR cpu_to_le32(0xC000015E) // -EIO 581 + #define STATUS_FT_MISSING_MEMBER cpu_to_le32(0xC000015F) // -EIO 582 + #define STATUS_ILL_FORMED_SERVICE_ENTRY cpu_to_le32(0xC0000160) // -EIO 583 + #define STATUS_ILLEGAL_CHARACTER cpu_to_le32(0xC0000161) // -EIO 584 + #define STATUS_UNMAPPABLE_CHARACTER cpu_to_le32(0xC0000162) // -EIO 585 + #define STATUS_UNDEFINED_CHARACTER cpu_to_le32(0xC0000163) // -EIO 586 + #define STATUS_FLOPPY_VOLUME cpu_to_le32(0xC0000164) // -EIO 587 + #define STATUS_FLOPPY_ID_MARK_NOT_FOUND cpu_to_le32(0xC0000165) // -EIO 588 + #define STATUS_FLOPPY_WRONG_CYLINDER cpu_to_le32(0xC0000166) // -EIO 589 + #define STATUS_FLOPPY_UNKNOWN_ERROR cpu_to_le32(0xC0000167) // -EIO 590 + #define STATUS_FLOPPY_BAD_REGISTERS cpu_to_le32(0xC0000168) // -EIO 591 + #define STATUS_DISK_RECALIBRATE_FAILED cpu_to_le32(0xC0000169) // -EIO 592 + #define STATUS_DISK_OPERATION_FAILED cpu_to_le32(0xC000016A) // -EIO 593 + #define STATUS_DISK_RESET_FAILED cpu_to_le32(0xC000016B) // -EIO 594 + #define STATUS_SHARED_IRQ_BUSY cpu_to_le32(0xC000016C) // -EBUSY 595 + #define STATUS_FT_ORPHANING cpu_to_le32(0xC000016D) // -EIO 596 + #define STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT cpu_to_le32(0xC000016E) // -EIO 597 + #define STATUS_PARTITION_FAILURE cpu_to_le32(0xC0000172) // -EIO 598 + #define STATUS_INVALID_BLOCK_LENGTH cpu_to_le32(0xC0000173) // -EIO 599 + #define STATUS_DEVICE_NOT_PARTITIONED cpu_to_le32(0xC0000174) // -EIO 600 + #define STATUS_UNABLE_TO_LOCK_MEDIA cpu_to_le32(0xC0000175) // -EIO 601 + #define STATUS_UNABLE_TO_UNLOAD_MEDIA cpu_to_le32(0xC0000176) // -EIO 602 + #define STATUS_EOM_OVERFLOW cpu_to_le32(0xC0000177) // -EIO 603 + #define STATUS_NO_MEDIA cpu_to_le32(0xC0000178) // -EIO 604 + #define STATUS_NO_SUCH_MEMBER cpu_to_le32(0xC000017A) // -EIO 605 + #define STATUS_INVALID_MEMBER cpu_to_le32(0xC000017B) // -EIO 606 + #define STATUS_KEY_DELETED cpu_to_le32(0xC000017C) // -EIO 607 + #define STATUS_NO_LOG_SPACE cpu_to_le32(0xC000017D) // -EIO 608 + #define STATUS_TOO_MANY_SIDS cpu_to_le32(0xC000017E) // -EIO 609 + #define STATUS_LM_CROSS_ENCRYPTION_REQUIRED cpu_to_le32(0xC000017F) // -EIO 610 + #define STATUS_KEY_HAS_CHILDREN cpu_to_le32(0xC0000180) // -EIO 611 + #define STATUS_CHILD_MUST_BE_VOLATILE cpu_to_le32(0xC0000181) // -EIO 612 + #define STATUS_DEVICE_CONFIGURATION_ERROR cpu_to_le32(0xC0000182) // -EIO 613 + #define STATUS_DRIVER_INTERNAL_ERROR cpu_to_le32(0xC0000183) // -EIO 614 + #define STATUS_INVALID_DEVICE_STATE cpu_to_le32(0xC0000184) // -EIO 615 + #define STATUS_IO_DEVICE_ERROR cpu_to_le32(0xC0000185) // -EIO 616 + #define STATUS_DEVICE_PROTOCOL_ERROR cpu_to_le32(0xC0000186) // -EIO 617 + #define STATUS_BACKUP_CONTROLLER cpu_to_le32(0xC0000187) // -EIO 618 + #define STATUS_LOG_FILE_FULL cpu_to_le32(0xC0000188) // -EIO 619 + #define STATUS_TOO_LATE cpu_to_le32(0xC0000189) // -EIO 620 + #define STATUS_NO_TRUST_LSA_SECRET cpu_to_le32(0xC000018A) // -EIO 621 + #define STATUS_NO_TRUST_SAM_ACCOUNT cpu_to_le32(0xC000018B) // -EIO 622 + #define STATUS_TRUSTED_DOMAIN_FAILURE cpu_to_le32(0xC000018C) // -EIO 623 + #define STATUS_TRUSTED_RELATIONSHIP_FAILURE cpu_to_le32(0xC000018D) // -EIO 624 + #define STATUS_EVENTLOG_FILE_CORRUPT cpu_to_le32(0xC000018E) // -EIO 625 + #define STATUS_EVENTLOG_CANT_START cpu_to_le32(0xC000018F) // -EIO 626 + #define STATUS_TRUST_FAILURE cpu_to_le32(0xC0000190) // -EIO 627 + #define STATUS_MUTANT_LIMIT_EXCEEDED cpu_to_le32(0xC0000191) // -EIO 628 + #define STATUS_NETLOGON_NOT_STARTED cpu_to_le32(0xC0000192) // -EIO 629 + #define STATUS_ACCOUNT_EXPIRED cpu_to_le32(0xC0000193) // -EKEYEXPIRED 630 + #define STATUS_POSSIBLE_DEADLOCK cpu_to_le32(0xC0000194) // -EIO 631 + #define STATUS_NETWORK_CREDENTIAL_CONFLICT cpu_to_le32(0xC0000195) // -EIO 632 + #define STATUS_REMOTE_SESSION_LIMIT cpu_to_le32(0xC0000196) // -EIO 633 + #define STATUS_EVENTLOG_FILE_CHANGED cpu_to_le32(0xC0000197) // -EIO 634 + #define STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT cpu_to_le32(0xC0000198) // -EIO 635 + #define STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT cpu_to_le32(0xC0000199) // -EIO 636 + #define STATUS_NOLOGON_SERVER_TRUST_ACCOUNT cpu_to_le32(0xC000019A) // -EIO 637 + #define STATUS_DOMAIN_TRUST_INCONSISTENT cpu_to_le32(0xC000019B) // -EIO 638 + #define STATUS_FS_DRIVER_REQUIRED cpu_to_le32(0xC000019C) // -EOPNOTSUPP 639 + #define STATUS_IMAGE_ALREADY_LOADED_AS_DLL cpu_to_le32(0xC000019D) // -EIO 640 + #define STATUS_INVALID_LOCK_RANGE cpu_to_le32(0xC00001A1) // -EIO 641 + #define STATUS_NETWORK_OPEN_RESTRICTION cpu_to_le32(0xC0000201) // -EIO 642 + #define STATUS_NO_USER_SESSION_KEY cpu_to_le32(0xC0000202) // -EIO 643 + #define STATUS_USER_SESSION_DELETED cpu_to_le32(0xC0000203) // -EIO 644 + #define STATUS_RESOURCE_LANG_NOT_FOUND cpu_to_le32(0xC0000204) // -EIO 645 + #define STATUS_INSUFF_SERVER_RESOURCES cpu_to_le32(0xC0000205) // -EIO 646 + #define STATUS_INVALID_BUFFER_SIZE cpu_to_le32(0xC0000206) // -EIO 647 + #define STATUS_INVALID_ADDRESS_COMPONENT cpu_to_le32(0xC0000207) // -EIO 648 + #define STATUS_INVALID_ADDRESS_WILDCARD cpu_to_le32(0xC0000208) // -EIO 649 + #define STATUS_TOO_MANY_ADDRESSES cpu_to_le32(0xC0000209) // -EIO 650 + #define STATUS_ADDRESS_ALREADY_EXISTS cpu_to_le32(0xC000020A) // -EADDRINUSE 651 + #define STATUS_ADDRESS_CLOSED cpu_to_le32(0xC000020B) // -EIO 652 + #define STATUS_CONNECTION_DISCONNECTED cpu_to_le32(0xC000020C) // -ECONNABORTED 653 + #define STATUS_CONNECTION_RESET cpu_to_le32(0xC000020D) // -ENETRESET 654 + #define STATUS_TOO_MANY_NODES cpu_to_le32(0xC000020E) // -EIO 655 + #define STATUS_TRANSACTION_ABORTED cpu_to_le32(0xC000020F) // -EIO 656 + #define STATUS_TRANSACTION_TIMED_OUT cpu_to_le32(0xC0000210) // -EIO 657 + #define STATUS_TRANSACTION_NO_RELEASE cpu_to_le32(0xC0000211) // -EIO 658 + #define STATUS_TRANSACTION_NO_MATCH cpu_to_le32(0xC0000212) // -EIO 659 + #define STATUS_TRANSACTION_RESPONDED cpu_to_le32(0xC0000213) // -EIO 660 + #define STATUS_TRANSACTION_INVALID_ID cpu_to_le32(0xC0000214) // -EIO 661 + #define STATUS_TRANSACTION_INVALID_TYPE cpu_to_le32(0xC0000215) // -EIO 662 + #define STATUS_NOT_SERVER_SESSION cpu_to_le32(0xC0000216) // -EIO 663 + #define STATUS_NOT_CLIENT_SESSION cpu_to_le32(0xC0000217) // -EIO 664 + #define STATUS_CANNOT_LOAD_REGISTRY_FILE cpu_to_le32(0xC0000218) // -EIO 665 + #define STATUS_DEBUG_ATTACH_FAILED cpu_to_le32(0xC0000219) // -EIO 666 + #define STATUS_SYSTEM_PROCESS_TERMINATED cpu_to_le32(0xC000021A) // -EIO 667 + #define STATUS_DATA_NOT_ACCEPTED cpu_to_le32(0xC000021B) // -EIO 668 + #define STATUS_NO_BROWSER_SERVERS_FOUND cpu_to_le32(0xC000021C) // -EIO 669 + #define STATUS_VDM_HARD_ERROR cpu_to_le32(0xC000021D) // -EIO 670 + #define STATUS_DRIVER_CANCEL_TIMEOUT cpu_to_le32(0xC000021E) // -EIO 671 + #define STATUS_REPLY_MESSAGE_MISMATCH cpu_to_le32(0xC000021F) // -EIO 672 + #define STATUS_MAPPED_ALIGNMENT cpu_to_le32(0xC0000220) // -EIO 673 + #define STATUS_IMAGE_CHECKSUM_MISMATCH cpu_to_le32(0xC0000221) // -EIO 674 + #define STATUS_LOST_WRITEBEHIND_DATA cpu_to_le32(0xC0000222) // -EIO 675 + #define STATUS_CLIENT_SERVER_PARAMETERS_INVALID cpu_to_le32(0xC0000223) // -EIO 676 + #define STATUS_PASSWORD_MUST_CHANGE cpu_to_le32(0xC0000224) // -EIO 677 + #define STATUS_NOT_FOUND cpu_to_le32(0xC0000225) // -ENOENT 678 + #define STATUS_NOT_TINY_STREAM cpu_to_le32(0xC0000226) // -EIO 679 + #define STATUS_RECOVERY_FAILURE cpu_to_le32(0xC0000227) // -EIO 680 + #define STATUS_STACK_OVERFLOW_READ cpu_to_le32(0xC0000228) // -EIO 681 + #define STATUS_FAIL_CHECK cpu_to_le32(0xC0000229) // -EIO 682 + #define STATUS_DUPLICATE_OBJECTID cpu_to_le32(0xC000022A) // -EIO 683 + #define STATUS_OBJECTID_EXISTS cpu_to_le32(0xC000022B) // -EIO 684 + #define STATUS_CONVERT_TO_LARGE cpu_to_le32(0xC000022C) // -EIO 685 + #define STATUS_RETRY cpu_to_le32(0xC000022D) // -EAGAIN 686 + #define STATUS_FOUND_OUT_OF_SCOPE cpu_to_le32(0xC000022E) // -EIO 687 + #define STATUS_ALLOCATE_BUCKET cpu_to_le32(0xC000022F) // -EIO 688 + #define STATUS_PROPSET_NOT_FOUND cpu_to_le32(0xC0000230) // -EIO 689 + #define STATUS_MARSHALL_OVERFLOW cpu_to_le32(0xC0000231) // -EIO 690 + #define STATUS_INVALID_VARIANT cpu_to_le32(0xC0000232) // -EIO 691 + #define STATUS_DOMAIN_CONTROLLER_NOT_FOUND cpu_to_le32(0xC0000233) // -EIO 692 + #define STATUS_ACCOUNT_LOCKED_OUT cpu_to_le32(0xC0000234) // -EACCES 693 + #define STATUS_HANDLE_NOT_CLOSABLE cpu_to_le32(0xC0000235) // -EIO 694 + #define STATUS_CONNECTION_REFUSED cpu_to_le32(0xC0000236) // -EIO 695 + #define STATUS_GRACEFUL_DISCONNECT cpu_to_le32(0xC0000237) // -EIO 696 + #define STATUS_ADDRESS_ALREADY_ASSOCIATED cpu_to_le32(0xC0000238) // -EIO 697 + #define STATUS_ADDRESS_NOT_ASSOCIATED cpu_to_le32(0xC0000239) // -EIO 698 + #define STATUS_CONNECTION_INVALID cpu_to_le32(0xC000023A) // -EIO 699 + #define STATUS_CONNECTION_ACTIVE cpu_to_le32(0xC000023B) // -EIO 700 + #define STATUS_NETWORK_UNREACHABLE cpu_to_le32(0xC000023C) // -ENETUNREACH 701 + #define STATUS_HOST_UNREACHABLE cpu_to_le32(0xC000023D) // -EHOSTDOWN 702 + #define STATUS_PROTOCOL_UNREACHABLE cpu_to_le32(0xC000023E) // -ENETUNREACH 703 + #define STATUS_PORT_UNREACHABLE cpu_to_le32(0xC000023F) // -ENETUNREACH 704 + #define STATUS_REQUEST_ABORTED cpu_to_le32(0xC0000240) // -EIO 705 + #define STATUS_CONNECTION_ABORTED cpu_to_le32(0xC0000241) // -ECONNABORTED 706 + #define STATUS_BAD_COMPRESSION_BUFFER cpu_to_le32(0xC0000242) // -EIO 707 + #define STATUS_USER_MAPPED_FILE cpu_to_le32(0xC0000243) // -EIO 708 + #define STATUS_AUDIT_FAILED cpu_to_le32(0xC0000244) // -EIO 709 + #define STATUS_TIMER_RESOLUTION_NOT_SET cpu_to_le32(0xC0000245) // -EIO 710 + #define STATUS_CONNECTION_COUNT_LIMIT cpu_to_le32(0xC0000246) // -EIO 711 + #define STATUS_LOGIN_TIME_RESTRICTION cpu_to_le32(0xC0000247) // -EACCES 712 + #define STATUS_LOGIN_WKSTA_RESTRICTION cpu_to_le32(0xC0000248) // -EACCES 713 + #define STATUS_IMAGE_MP_UP_MISMATCH cpu_to_le32(0xC0000249) // -EIO 714 + #define STATUS_INSUFFICIENT_LOGON_INFO cpu_to_le32(0xC0000250) // -EIO 715 + #define STATUS_BAD_DLL_ENTRYPOINT cpu_to_le32(0xC0000251) // -EIO 716 + #define STATUS_BAD_SERVICE_ENTRYPOINT cpu_to_le32(0xC0000252) // -EIO 717 + #define STATUS_LPC_REPLY_LOST cpu_to_le32(0xC0000253) // -EIO 718 + #define STATUS_IP_ADDRESS_CONFLICT1 cpu_to_le32(0xC0000254) // -EIO 719 + #define STATUS_IP_ADDRESS_CONFLICT2 cpu_to_le32(0xC0000255) // -EIO 720 + #define STATUS_REGISTRY_QUOTA_LIMIT cpu_to_le32(0xC0000256) // -EDQUOT 721 + #define STATUS_PATH_NOT_COVERED cpu_to_le32(0xC0000257) // -EREMOTE 722 + #define STATUS_NO_CALLBACK_ACTIVE cpu_to_le32(0xC0000258) // -EIO 723 + #define STATUS_LICENSE_QUOTA_EXCEEDED cpu_to_le32(0xC0000259) // -EACCES 724 + #define STATUS_PWD_TOO_SHORT cpu_to_le32(0xC000025A) // -EIO 725 + #define STATUS_PWD_TOO_RECENT cpu_to_le32(0xC000025B) // -EIO 726 + #define STATUS_PWD_HISTORY_CONFLICT cpu_to_le32(0xC000025C) // -EIO 727 + #define STATUS_PLUGPLAY_NO_DEVICE cpu_to_le32(0xC000025E) // -EIO 728 + #define STATUS_UNSUPPORTED_COMPRESSION cpu_to_le32(0xC000025F) // -EIO 729 + #define STATUS_INVALID_HW_PROFILE cpu_to_le32(0xC0000260) // -EIO 730 + #define STATUS_INVALID_PLUGPLAY_DEVICE_PATH cpu_to_le32(0xC0000261) // -EIO 731 + #define STATUS_DRIVER_ORDINAL_NOT_FOUND cpu_to_le32(0xC0000262) // -EIO 732 + #define STATUS_DRIVER_ENTRYPOINT_NOT_FOUND cpu_to_le32(0xC0000263) // -EIO 733 + #define STATUS_RESOURCE_NOT_OWNED cpu_to_le32(0xC0000264) // -EIO 734 + #define STATUS_TOO_MANY_LINKS cpu_to_le32(0xC0000265) // -EMLINK 735 + #define STATUS_QUOTA_LIST_INCONSISTENT cpu_to_le32(0xC0000266) // -EIO 736 + #define STATUS_FILE_IS_OFFLINE cpu_to_le32(0xC0000267) // -EIO 737 + #define STATUS_EVALUATION_EXPIRATION cpu_to_le32(0xC0000268) // -EIO 738 + #define STATUS_ILLEGAL_DLL_RELOCATION cpu_to_le32(0xC0000269) // -EIO 739 + #define STATUS_LICENSE_VIOLATION cpu_to_le32(0xC000026A) // -EIO 740 + #define STATUS_DLL_INIT_FAILED_LOGOFF cpu_to_le32(0xC000026B) // -EIO 741 + #define STATUS_DRIVER_UNABLE_TO_LOAD cpu_to_le32(0xC000026C) // -EIO 742 + #define STATUS_DFS_UNAVAILABLE cpu_to_le32(0xC000026D) // -EIO 743 + #define STATUS_VOLUME_DISMOUNTED cpu_to_le32(0xC000026E) // -EIO 744 + #define STATUS_WX86_INTERNAL_ERROR cpu_to_le32(0xC000026F) // -EIO 745 + #define STATUS_WX86_FLOAT_STACK_CHECK cpu_to_le32(0xC0000270) // -EIO 746 + #define STATUS_VALIDATE_CONTINUE cpu_to_le32(0xC0000271) // -EIO 747 + #define STATUS_NO_MATCH cpu_to_le32(0xC0000272) // -EIO 748 + #define STATUS_NO_MORE_MATCHES cpu_to_le32(0xC0000273) // -EIO 749 + #define STATUS_NOT_A_REPARSE_POINT cpu_to_le32(0xC0000275) // -ENODATA 750 + #define STATUS_IO_REPARSE_TAG_INVALID cpu_to_le32(0xC0000276) // -EIO 751 + #define STATUS_IO_REPARSE_TAG_MISMATCH cpu_to_le32(0xC0000277) // -EIO 752 + #define STATUS_IO_REPARSE_DATA_INVALID cpu_to_le32(0xC0000278) // -EIO 753 + #define STATUS_IO_REPARSE_TAG_NOT_HANDLED cpu_to_le32(0xC0000279) // -EOPNOTSUPP 754 + #define STATUS_REPARSE_POINT_NOT_RESOLVED cpu_to_le32(0xC0000280) // -EIO 755 + #define STATUS_DIRECTORY_IS_A_REPARSE_POINT cpu_to_le32(0xC0000281) // -EIO 756 + #define STATUS_RANGE_LIST_CONFLICT cpu_to_le32(0xC0000282) // -EIO 757 + #define STATUS_SOURCE_ELEMENT_EMPTY cpu_to_le32(0xC0000283) // -EIO 758 + #define STATUS_DESTINATION_ELEMENT_FULL cpu_to_le32(0xC0000284) // -EIO 759 + #define STATUS_ILLEGAL_ELEMENT_ADDRESS cpu_to_le32(0xC0000285) // -EIO 760 + #define STATUS_MAGAZINE_NOT_PRESENT cpu_to_le32(0xC0000286) // -EIO 761 + #define STATUS_REINITIALIZATION_NEEDED cpu_to_le32(0xC0000287) // -EIO 762 + #define STATUS_ENCRYPTION_FAILED cpu_to_le32(0xC000028A) // -EIO 763 + #define STATUS_DECRYPTION_FAILED cpu_to_le32(0xC000028B) // -EIO 764 + #define STATUS_RANGE_NOT_FOUND cpu_to_le32(0xC000028C) // -EIO 765 + #define STATUS_NO_RECOVERY_POLICY cpu_to_le32(0xC000028D) // -EIO 766 + #define STATUS_NO_EFS cpu_to_le32(0xC000028E) // -EIO 767 + #define STATUS_WRONG_EFS cpu_to_le32(0xC000028F) // -EIO 768 + #define STATUS_NO_USER_KEYS cpu_to_le32(0xC0000290) // -EIO 769 + #define STATUS_FILE_NOT_ENCRYPTED cpu_to_le32(0xC0000291) // -EIO 770 + #define STATUS_NOT_EXPORT_FORMAT cpu_to_le32(0xC0000292) // -EIO 771 + #define STATUS_FILE_ENCRYPTED cpu_to_le32(0xC0000293) // -EIO 772 + #define STATUS_WMI_GUID_NOT_FOUND cpu_to_le32(0xC0000295) // -EIO 773 + #define STATUS_WMI_INSTANCE_NOT_FOUND cpu_to_le32(0xC0000296) // -EIO 774 + #define STATUS_WMI_ITEMID_NOT_FOUND cpu_to_le32(0xC0000297) // -EIO 775 + #define STATUS_WMI_TRY_AGAIN cpu_to_le32(0xC0000298) // -EIO 776 + #define STATUS_SHARED_POLICY cpu_to_le32(0xC0000299) // -EIO 777 + #define STATUS_POLICY_OBJECT_NOT_FOUND cpu_to_le32(0xC000029A) // -EIO 778 + #define STATUS_POLICY_ONLY_IN_DS cpu_to_le32(0xC000029B) // -EIO 779 + #define STATUS_VOLUME_NOT_UPGRADED cpu_to_le32(0xC000029C) // -EIO 780 + #define STATUS_REMOTE_STORAGE_NOT_ACTIVE cpu_to_le32(0xC000029D) // -EIO 781 + #define STATUS_REMOTE_STORAGE_MEDIA_ERROR cpu_to_le32(0xC000029E) // -EIO 782 + #define STATUS_NO_TRACKING_SERVICE cpu_to_le32(0xC000029F) // -EIO 783 + #define STATUS_SERVER_SID_MISMATCH cpu_to_le32(0xC00002A0) // -EIO 784 + #define STATUS_DS_NO_ATTRIBUTE_OR_VALUE cpu_to_le32(0xC00002A1) // -EIO 785 + #define STATUS_DS_INVALID_ATTRIBUTE_SYNTAX cpu_to_le32(0xC00002A2) // -EIO 786 + #define STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED cpu_to_le32(0xC00002A3) // -EIO 787 + #define STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS cpu_to_le32(0xC00002A4) // -EIO 788 + #define STATUS_DS_BUSY cpu_to_le32(0xC00002A5) // -EBUSY 789 + #define STATUS_DS_UNAVAILABLE cpu_to_le32(0xC00002A6) // -EIO 790 + #define STATUS_DS_NO_RIDS_ALLOCATED cpu_to_le32(0xC00002A7) // -EIO 791 + #define STATUS_DS_NO_MORE_RIDS cpu_to_le32(0xC00002A8) // -EIO 792 + #define STATUS_DS_INCORRECT_ROLE_OWNER cpu_to_le32(0xC00002A9) // -EIO 793 + #define STATUS_DS_RIDMGR_INIT_ERROR cpu_to_le32(0xC00002AA) // -EIO 794 + #define STATUS_DS_OBJ_CLASS_VIOLATION cpu_to_le32(0xC00002AB) // -EIO 795 + #define STATUS_DS_CANT_ON_NON_LEAF cpu_to_le32(0xC00002AC) // -EIO 796 + #define STATUS_DS_CANT_ON_RDN cpu_to_le32(0xC00002AD) // -EIO 797 + #define STATUS_DS_CANT_MOD_OBJ_CLASS cpu_to_le32(0xC00002AE) // -EIO 798 + #define STATUS_DS_CROSS_DOM_MOVE_FAILED cpu_to_le32(0xC00002AF) // -EIO 799 + #define STATUS_DS_GC_NOT_AVAILABLE cpu_to_le32(0xC00002B0) // -EIO 800 + #define STATUS_DIRECTORY_SERVICE_REQUIRED cpu_to_le32(0xC00002B1) // -EIO 801 + #define STATUS_REPARSE_ATTRIBUTE_CONFLICT cpu_to_le32(0xC00002B2) // -EIO 802 + #define STATUS_CANT_ENABLE_DENY_ONLY cpu_to_le32(0xC00002B3) // -EIO 803 + #define STATUS_FLOAT_MULTIPLE_FAULTS cpu_to_le32(0xC00002B4) // -EIO 804 + #define STATUS_FLOAT_MULTIPLE_TRAPS cpu_to_le32(0xC00002B5) // -EIO 805 + #define STATUS_DEVICE_REMOVED cpu_to_le32(0xC00002B6) // -EIO 806 + #define STATUS_JOURNAL_DELETE_IN_PROGRESS cpu_to_le32(0xC00002B7) // -EIO 807 + #define STATUS_JOURNAL_NOT_ACTIVE cpu_to_le32(0xC00002B8) // -EIO 808 + #define STATUS_NOINTERFACE cpu_to_le32(0xC00002B9) // -EIO 809 + #define STATUS_DS_ADMIN_LIMIT_EXCEEDED cpu_to_le32(0xC00002C1) // -EIO 810 + #define STATUS_DRIVER_FAILED_SLEEP cpu_to_le32(0xC00002C2) // -EIO 811 + #define STATUS_MUTUAL_AUTHENTICATION_FAILED cpu_to_le32(0xC00002C3) // -EIO 812 + #define STATUS_CORRUPT_SYSTEM_FILE cpu_to_le32(0xC00002C4) // -EIO 813 + #define STATUS_DATATYPE_MISALIGNMENT_ERROR cpu_to_le32(0xC00002C5) // -EIO 814 + #define STATUS_WMI_READ_ONLY cpu_to_le32(0xC00002C6) // -EROFS 815 + #define STATUS_WMI_SET_FAILURE cpu_to_le32(0xC00002C7) // -EIO 816 + #define STATUS_COMMITMENT_MINIMUM cpu_to_le32(0xC00002C8) // -EIO 817 + #define STATUS_REG_NAT_CONSUMPTION cpu_to_le32(0xC00002C9) // -EIO 818 + #define STATUS_TRANSPORT_FULL cpu_to_le32(0xC00002CA) // -EIO 819 + #define STATUS_DS_SAM_INIT_FAILURE cpu_to_le32(0xC00002CB) // -EIO 820 + #define STATUS_ONLY_IF_CONNECTED cpu_to_le32(0xC00002CC) // -EIO 821 + #define STATUS_DS_SENSITIVE_GROUP_VIOLATION cpu_to_le32(0xC00002CD) // -EIO 822 + #define STATUS_PNP_RESTART_ENUMERATION cpu_to_le32(0xC00002CE) // -EIO 823 + #define STATUS_JOURNAL_ENTRY_DELETED cpu_to_le32(0xC00002CF) // -EIO 824 + #define STATUS_DS_CANT_MOD_PRIMARYGROUPID cpu_to_le32(0xC00002D0) // -EIO 825 + #define STATUS_SYSTEM_IMAGE_BAD_SIGNATURE cpu_to_le32(0xC00002D1) // -EIO 826 + #define STATUS_PNP_REBOOT_REQUIRED cpu_to_le32(0xC00002D2) // -EIO 827 + #define STATUS_POWER_STATE_INVALID cpu_to_le32(0xC00002D3) // -EIO 828 + #define STATUS_DS_INVALID_GROUP_TYPE cpu_to_le32(0xC00002D4) // -EIO 829 + #define STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN cpu_to_le32(0xC00002D5) // -EIO 830 + #define STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN cpu_to_le32(0xC00002D6) // -EIO 831 + #define STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER cpu_to_le32(0xC00002D7) // -EIO 832 + #define STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER cpu_to_le32(0xC00002D8) // -EIO 833 + #define STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER cpu_to_le32(0xC00002D9) // -EIO 834 + #define STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER cpu_to_le32(0xC00002DA) // -EIO 835 + #define STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER cpu_to_le32(0xC00002DB) // -EIO 836 + #define STATUS_DS_HAVE_PRIMARY_MEMBERS cpu_to_le32(0xC00002DC) // -EIO 837 + #define STATUS_WMI_NOT_SUPPORTED cpu_to_le32(0xC00002DD) // -EOPNOTSUPP 838 + #define STATUS_INSUFFICIENT_POWER cpu_to_le32(0xC00002DE) // -EIO 839 + #define STATUS_SAM_NEED_BOOTKEY_PASSWORD cpu_to_le32(0xC00002DF) // -EIO 840 + #define STATUS_SAM_NEED_BOOTKEY_FLOPPY cpu_to_le32(0xC00002E0) // -EIO 841 + #define STATUS_DS_CANT_START cpu_to_le32(0xC00002E1) // -EIO 842 + #define STATUS_DS_INIT_FAILURE cpu_to_le32(0xC00002E2) // -EIO 843 + #define STATUS_SAM_INIT_FAILURE cpu_to_le32(0xC00002E3) // -EIO 844 + #define STATUS_DS_GC_REQUIRED cpu_to_le32(0xC00002E4) // -EIO 845 + #define STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY cpu_to_le32(0xC00002E5) // -EIO 846 + #define STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS cpu_to_le32(0xC00002E6) // -EIO 847 + #define STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED cpu_to_le32(0xC00002E7) // -EDQUOT 848 + #define STATUS_MULTIPLE_FAULT_VIOLATION cpu_to_le32(0xC00002E8) // -EIO 849 + #define STATUS_CURRENT_DOMAIN_NOT_ALLOWED cpu_to_le32(0xC00002E9) // -EIO 850 + #define STATUS_CANNOT_MAKE cpu_to_le32(0xC00002EA) // -EIO 851 + #define STATUS_SYSTEM_SHUTDOWN cpu_to_le32(0xC00002EB) // -EIO 852 + #define STATUS_DS_INIT_FAILURE_CONSOLE cpu_to_le32(0xC00002EC) // -EIO 853 + #define STATUS_DS_SAM_INIT_FAILURE_CONSOLE cpu_to_le32(0xC00002ED) // -EIO 854 + #define STATUS_UNFINISHED_CONTEXT_DELETED cpu_to_le32(0xC00002EE) // -EIO 855 + #define STATUS_NO_TGT_REPLY cpu_to_le32(0xC00002EF) // -EIO 856 + #define STATUS_OBJECTID_NOT_FOUND cpu_to_le32(0xC00002F0) // -ENODATA 857 + #define STATUS_NO_IP_ADDRESSES cpu_to_le32(0xC00002F1) // -EIO 858 + #define STATUS_WRONG_CREDENTIAL_HANDLE cpu_to_le32(0xC00002F2) // -EIO 859 + #define STATUS_CRYPTO_SYSTEM_INVALID cpu_to_le32(0xC00002F3) // -EIO 860 + #define STATUS_MAX_REFERRALS_EXCEEDED cpu_to_le32(0xC00002F4) // -EIO 861 + #define STATUS_MUST_BE_KDC cpu_to_le32(0xC00002F5) // -EIO 862 + #define STATUS_STRONG_CRYPTO_NOT_SUPPORTED cpu_to_le32(0xC00002F6) // -EIO 863 + #define STATUS_TOO_MANY_PRINCIPALS cpu_to_le32(0xC00002F7) // -EIO 864 + #define STATUS_NO_PA_DATA cpu_to_le32(0xC00002F8) // -EIO 865 + #define STATUS_PKINIT_NAME_MISMATCH cpu_to_le32(0xC00002F9) // -EIO 866 + #define STATUS_SMARTCARD_LOGON_REQUIRED cpu_to_le32(0xC00002FA) // -EIO 867 + #define STATUS_KDC_INVALID_REQUEST cpu_to_le32(0xC00002FB) // -EIO 868 + #define STATUS_KDC_UNABLE_TO_REFER cpu_to_le32(0xC00002FC) // -EIO 869 + #define STATUS_KDC_UNKNOWN_ETYPE cpu_to_le32(0xC00002FD) // -EIO 870 + #define STATUS_SHUTDOWN_IN_PROGRESS cpu_to_le32(0xC00002FE) // -EIO 871 + #define STATUS_SERVER_SHUTDOWN_IN_PROGRESS cpu_to_le32(0xC00002FF) // -EIO 872 + #define STATUS_NOT_SUPPORTED_ON_SBS cpu_to_le32(0xC0000300) // -EOPNOTSUPP 873 + #define STATUS_WMI_GUID_DISCONNECTED cpu_to_le32(0xC0000301) // -EIO 874 + #define STATUS_WMI_ALREADY_DISABLED cpu_to_le32(0xC0000302) // -EIO 875 + #define STATUS_WMI_ALREADY_ENABLED cpu_to_le32(0xC0000303) // -EIO 876 + #define STATUS_MFT_TOO_FRAGMENTED cpu_to_le32(0xC0000304) // -EIO 877 + #define STATUS_COPY_PROTECTION_FAILURE cpu_to_le32(0xC0000305) // -EIO 878 + #define STATUS_CSS_AUTHENTICATION_FAILURE cpu_to_le32(0xC0000306) // -EIO 879 + #define STATUS_CSS_KEY_NOT_PRESENT cpu_to_le32(0xC0000307) // -EIO 880 + #define STATUS_CSS_KEY_NOT_ESTABLISHED cpu_to_le32(0xC0000308) // -EIO 881 + #define STATUS_CSS_SCRAMBLED_SECTOR cpu_to_le32(0xC0000309) // -EIO 882 + #define STATUS_CSS_REGION_MISMATCH cpu_to_le32(0xC000030A) // -EIO 883 + #define STATUS_CSS_RESETS_EXHAUSTED cpu_to_le32(0xC000030B) // -EIO 884 + #define STATUS_PKINIT_FAILURE cpu_to_le32(0xC0000320) // -EIO 885 + #define STATUS_SMARTCARD_SUBSYSTEM_FAILURE cpu_to_le32(0xC0000321) // -EIO 886 + #define STATUS_NO_KERB_KEY cpu_to_le32(0xC0000322) // -EIO 887 + #define STATUS_HOST_DOWN cpu_to_le32(0xC0000350) // -EIO 888 + #define STATUS_UNSUPPORTED_PREAUTH cpu_to_le32(0xC0000351) // -EIO 889 + #define STATUS_EFS_ALG_BLOB_TOO_BIG cpu_to_le32(0xC0000352) // -EIO 890 + #define STATUS_PORT_NOT_SET cpu_to_le32(0xC0000353) // -EIO 891 + #define STATUS_DEBUGGER_INACTIVE cpu_to_le32(0xC0000354) // -EIO 892 + #define STATUS_DS_VERSION_CHECK_FAILURE cpu_to_le32(0xC0000355) // -EIO 893 + #define STATUS_AUDITING_DISABLED cpu_to_le32(0xC0000356) // -EIO 894 + #define STATUS_PRENT4_MACHINE_ACCOUNT cpu_to_le32(0xC0000357) // -EIO 895 + #define STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER cpu_to_le32(0xC0000358) // -EIO 896 + #define STATUS_INVALID_IMAGE_WIN_32 cpu_to_le32(0xC0000359) // -EIO 897 + #define STATUS_INVALID_IMAGE_WIN_64 cpu_to_le32(0xC000035A) // -EIO 898 + #define STATUS_BAD_BINDINGS cpu_to_le32(0xC000035B) // -EIO 899 + #define STATUS_NETWORK_SESSION_EXPIRED cpu_to_le32(0xC000035C) // -EIO 900 + #define STATUS_APPHELP_BLOCK cpu_to_le32(0xC000035D) // -EIO 901 + #define STATUS_ALL_SIDS_FILTERED cpu_to_le32(0xC000035E) // -EIO 902 + #define STATUS_NOT_SAFE_MODE_DRIVER cpu_to_le32(0xC000035F) // -EIO 903 + #define STATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT cpu_to_le32(0xC0000361) // -EACCES 904 + #define STATUS_ACCESS_DISABLED_BY_POLICY_PATH cpu_to_le32(0xC0000362) // -EACCES 905 + #define STATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER cpu_to_le32(0xC0000363) // -EACCES 906 + #define STATUS_ACCESS_DISABLED_BY_POLICY_OTHER cpu_to_le32(0xC0000364) // -EACCES 907 + #define STATUS_FAILED_DRIVER_ENTRY cpu_to_le32(0xC0000365) // -EIO 908 + #define STATUS_DEVICE_ENUMERATION_ERROR cpu_to_le32(0xC0000366) // -EIO 909 + #define STATUS_MOUNT_POINT_NOT_RESOLVED cpu_to_le32(0xC0000368) // -EIO 910 + #define STATUS_INVALID_DEVICE_OBJECT_PARAMETER cpu_to_le32(0xC0000369) // -EIO 908 911 /* 909 912 * 'OCCURED' is typo in MS-ERREF, it should be 'OCCURRED', 910 913 * but we'll keep it consistent with MS-ERREF. 911 914 */ 912 - #define STATUS_MCA_OCCURED cpu_to_le32(0xC000036A) 913 - #define STATUS_DRIVER_BLOCKED_CRITICAL cpu_to_le32(0xC000036B) 914 - #define STATUS_DRIVER_BLOCKED cpu_to_le32(0xC000036C) 915 - #define STATUS_DRIVER_DATABASE_ERROR cpu_to_le32(0xC000036D) 916 - #define STATUS_SYSTEM_HIVE_TOO_LARGE cpu_to_le32(0xC000036E) 917 - #define STATUS_INVALID_IMPORT_OF_NON_DLL cpu_to_le32(0xC000036F) 918 - #define STATUS_NO_SECRETS cpu_to_le32(0xC0000371) 919 - #define STATUS_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY cpu_to_le32(0xC0000372) 920 - #define STATUS_FAILED_STACK_SWITCH cpu_to_le32(0xC0000373) 921 - #define STATUS_HEAP_CORRUPTION cpu_to_le32(0xC0000374) 922 - #define STATUS_SMARTCARD_WRONG_PIN cpu_to_le32(0xC0000380) 923 - #define STATUS_SMARTCARD_CARD_BLOCKED cpu_to_le32(0xC0000381) 924 - #define STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED cpu_to_le32(0xC0000382) 925 - #define STATUS_SMARTCARD_NO_CARD cpu_to_le32(0xC0000383) 926 - #define STATUS_SMARTCARD_NO_KEY_CONTAINER cpu_to_le32(0xC0000384) 927 - #define STATUS_SMARTCARD_NO_CERTIFICATE cpu_to_le32(0xC0000385) 928 - #define STATUS_SMARTCARD_NO_KEYSET cpu_to_le32(0xC0000386) 929 - #define STATUS_SMARTCARD_IO_ERROR cpu_to_le32(0xC0000387) 930 - #define STATUS_DOWNGRADE_DETECTED cpu_to_le32(0xC0000388) 931 - #define STATUS_SMARTCARD_CERT_REVOKED cpu_to_le32(0xC0000389) 932 - #define STATUS_ISSUING_CA_UNTRUSTED cpu_to_le32(0xC000038A) 933 - #define STATUS_REVOCATION_OFFLINE_C cpu_to_le32(0xC000038B) 934 - #define STATUS_PKINIT_CLIENT_FAILURE cpu_to_le32(0xC000038C) 935 - #define STATUS_SMARTCARD_CERT_EXPIRED cpu_to_le32(0xC000038D) 936 - #define STATUS_DRIVER_FAILED_PRIOR_UNLOAD cpu_to_le32(0xC000038E) 937 - #define STATUS_SMARTCARD_SILENT_CONTEXT cpu_to_le32(0xC000038F) 938 - #define STATUS_PER_USER_TRUST_QUOTA_EXCEEDED cpu_to_le32(0xC0000401) 939 - #define STATUS_ALL_USER_TRUST_QUOTA_EXCEEDED cpu_to_le32(0xC0000402) 940 - #define STATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED cpu_to_le32(0xC0000403) 941 - #define STATUS_DS_NAME_NOT_UNIQUE cpu_to_le32(0xC0000404) 942 - #define STATUS_DS_DUPLICATE_ID_FOUND cpu_to_le32(0xC0000405) 943 - #define STATUS_DS_GROUP_CONVERSION_ERROR cpu_to_le32(0xC0000406) 944 - #define STATUS_VOLSNAP_PREPARE_HIBERNATE cpu_to_le32(0xC0000407) 945 - #define STATUS_USER2USER_REQUIRED cpu_to_le32(0xC0000408) 946 - #define STATUS_STACK_BUFFER_OVERRUN cpu_to_le32(0xC0000409) 947 - #define STATUS_NO_S4U_PROT_SUPPORT cpu_to_le32(0xC000040A) 948 - #define STATUS_CROSSREALM_DELEGATION_FAILURE cpu_to_le32(0xC000040B) 949 - #define STATUS_REVOCATION_OFFLINE_KDC cpu_to_le32(0xC000040C) 950 - #define STATUS_ISSUING_CA_UNTRUSTED_KDC cpu_to_le32(0xC000040D) 951 - #define STATUS_KDC_CERT_EXPIRED cpu_to_le32(0xC000040E) 952 - #define STATUS_KDC_CERT_REVOKED cpu_to_le32(0xC000040F) 953 - #define STATUS_PARAMETER_QUOTA_EXCEEDED cpu_to_le32(0xC0000410) 954 - #define STATUS_HIBERNATION_FAILURE cpu_to_le32(0xC0000411) 955 - #define STATUS_DELAY_LOAD_FAILED cpu_to_le32(0xC0000412) 956 - #define STATUS_AUTHENTICATION_FIREWALL_FAILED cpu_to_le32(0xC0000413) 957 - #define STATUS_VDM_DISALLOWED cpu_to_le32(0xC0000414) 958 - #define STATUS_HUNG_DISPLAY_DRIVER_THREAD cpu_to_le32(0xC0000415) 959 - #define STATUS_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE cpu_to_le32(0xC0000416) 960 - #define STATUS_INVALID_CRUNTIME_PARAMETER cpu_to_le32(0xC0000417) 961 - #define STATUS_NTLM_BLOCKED cpu_to_le32(0xC0000418) 962 - #define STATUS_ASSERTION_FAILURE cpu_to_le32(0xC0000420) 963 - #define STATUS_VERIFIER_STOP cpu_to_le32(0xC0000421) 964 - #define STATUS_CALLBACK_POP_STACK cpu_to_le32(0xC0000423) 965 - #define STATUS_INCOMPATIBLE_DRIVER_BLOCKED cpu_to_le32(0xC0000424) 966 - #define STATUS_HIVE_UNLOADED cpu_to_le32(0xC0000425) 967 - #define STATUS_COMPRESSION_DISABLED cpu_to_le32(0xC0000426) 968 - #define STATUS_FILE_SYSTEM_LIMITATION cpu_to_le32(0xC0000427) 969 - #define STATUS_INVALID_IMAGE_HASH cpu_to_le32(0xC0000428) 970 - #define STATUS_NOT_CAPABLE cpu_to_le32(0xC0000429) 971 - #define STATUS_REQUEST_OUT_OF_SEQUENCE cpu_to_le32(0xC000042A) 972 - #define STATUS_IMPLEMENTATION_LIMIT cpu_to_le32(0xC000042B) 973 - #define STATUS_ELEVATION_REQUIRED cpu_to_le32(0xC000042C) 974 - #define STATUS_BEYOND_VDL cpu_to_le32(0xC0000432) 975 - #define STATUS_ENCOUNTERED_WRITE_IN_PROGRESS cpu_to_le32(0xC0000433) 976 - #define STATUS_PTE_CHANGED cpu_to_le32(0xC0000434) 977 - #define STATUS_PURGE_FAILED cpu_to_le32(0xC0000435) 978 - #define STATUS_CRED_REQUIRES_CONFIRMATION cpu_to_le32(0xC0000440) 979 - #define STATUS_CS_ENCRYPTION_INVALID_SERVER_RESPONSE cpu_to_le32(0xC0000441) 980 - #define STATUS_CS_ENCRYPTION_UNSUPPORTED_SERVER cpu_to_le32(0xC0000442) 981 - #define STATUS_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE cpu_to_le32(0xC0000443) 982 - #define STATUS_CS_ENCRYPTION_NEW_ENCRYPTED_FILE cpu_to_le32(0xC0000444) 983 - #define STATUS_CS_ENCRYPTION_FILE_NOT_CSE cpu_to_le32(0xC0000445) 984 - #define STATUS_INVALID_LABEL cpu_to_le32(0xC0000446) 985 - #define STATUS_DRIVER_PROCESS_TERMINATED cpu_to_le32(0xC0000450) 986 - #define STATUS_AMBIGUOUS_SYSTEM_DEVICE cpu_to_le32(0xC0000451) 987 - #define STATUS_SYSTEM_DEVICE_NOT_FOUND cpu_to_le32(0xC0000452) 988 - #define STATUS_RESTART_BOOT_APPLICATION cpu_to_le32(0xC0000453) 989 - #define STATUS_INVALID_TASK_NAME cpu_to_le32(0xC0000500) 990 - #define STATUS_INVALID_TASK_INDEX cpu_to_le32(0xC0000501) 991 - #define STATUS_THREAD_ALREADY_IN_TASK cpu_to_le32(0xC0000502) 992 - #define STATUS_CALLBACK_BYPASS cpu_to_le32(0xC0000503) 993 - #define STATUS_SERVER_UNAVAILABLE cpu_to_le32(0xC0000466) 994 - #define STATUS_FILE_NOT_AVAILABLE cpu_to_le32(0xC0000467) 995 - #define STATUS_PORT_CLOSED cpu_to_le32(0xC0000700) 996 - #define STATUS_MESSAGE_LOST cpu_to_le32(0xC0000701) 997 - #define STATUS_INVALID_MESSAGE cpu_to_le32(0xC0000702) 998 - #define STATUS_REQUEST_CANCELED cpu_to_le32(0xC0000703) 999 - #define STATUS_RECURSIVE_DISPATCH cpu_to_le32(0xC0000704) 1000 - #define STATUS_LPC_RECEIVE_BUFFER_EXPECTED cpu_to_le32(0xC0000705) 1001 - #define STATUS_LPC_INVALID_CONNECTION_USAGE cpu_to_le32(0xC0000706) 1002 - #define STATUS_LPC_REQUESTS_NOT_ALLOWED cpu_to_le32(0xC0000707) 1003 - #define STATUS_RESOURCE_IN_USE cpu_to_le32(0xC0000708) 1004 - #define STATUS_HARDWARE_MEMORY_ERROR cpu_to_le32(0xC0000709) 1005 - #define STATUS_THREADPOOL_HANDLE_EXCEPTION cpu_to_le32(0xC000070A) 1006 - #define STATUS_THREADPOOL_SET_EVENT_ON_COMPLETION_FAILED cpu_to_le32(0xC000070B) 1007 - #define STATUS_THREADPOOL_RELEASE_SEMAPHORE_ON_COMPLETION_FAILED cpu_to_le32(0xC000070C) 1008 - #define STATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED cpu_to_le32(0xC000070D) 1009 - #define STATUS_THREADPOOL_FREE_LIBRARY_ON_COMPLETION_FAILED cpu_to_le32(0xC000070E) 1010 - #define STATUS_THREADPOOL_RELEASED_DURING_OPERATION cpu_to_le32(0xC000070F) 1011 - #define STATUS_CALLBACK_RETURNED_WHILE_IMPERSONATING cpu_to_le32(0xC0000710) 1012 - #define STATUS_APC_RETURNED_WHILE_IMPERSONATING cpu_to_le32(0xC0000711) 1013 - #define STATUS_PROCESS_IS_PROTECTED cpu_to_le32(0xC0000712) 1014 - #define STATUS_MCA_EXCEPTION cpu_to_le32(0xC0000713) 1015 - #define STATUS_CERTIFICATE_MAPPING_NOT_UNIQUE cpu_to_le32(0xC0000714) 1016 - #define STATUS_SYMLINK_CLASS_DISABLED cpu_to_le32(0xC0000715) 1017 - #define STATUS_INVALID_IDN_NORMALIZATION cpu_to_le32(0xC0000716) 1018 - #define STATUS_NO_UNICODE_TRANSLATION cpu_to_le32(0xC0000717) 1019 - #define STATUS_ALREADY_REGISTERED cpu_to_le32(0xC0000718) 1020 - #define STATUS_CONTEXT_MISMATCH cpu_to_le32(0xC0000719) 1021 - #define STATUS_PORT_ALREADY_HAS_COMPLETION_LIST cpu_to_le32(0xC000071A) 1022 - #define STATUS_CALLBACK_RETURNED_THREAD_PRIORITY cpu_to_le32(0xC000071B) 1023 - #define STATUS_INVALID_THREAD cpu_to_le32(0xC000071C) 1024 - #define STATUS_CALLBACK_RETURNED_TRANSACTION cpu_to_le32(0xC000071D) 1025 - #define STATUS_CALLBACK_RETURNED_LDR_LOCK cpu_to_le32(0xC000071E) 1026 - #define STATUS_CALLBACK_RETURNED_LANG cpu_to_le32(0xC000071F) 1027 - #define STATUS_CALLBACK_RETURNED_PRI_BACK cpu_to_le32(0xC0000720) 1028 - #define STATUS_CALLBACK_RETURNED_THREAD_AFFINITY cpu_to_le32(0xC0000721) 1029 - #define STATUS_DISK_REPAIR_DISABLED cpu_to_le32(0xC0000800) 1030 - #define STATUS_DS_DOMAIN_RENAME_IN_PROGRESS cpu_to_le32(0xC0000801) 1031 - #define STATUS_DISK_QUOTA_EXCEEDED cpu_to_le32(0xC0000802) 1032 - #define STATUS_CONTENT_BLOCKED cpu_to_le32(0xC0000804) 1033 - #define STATUS_BAD_CLUSTERS cpu_to_le32(0xC0000805) 1034 - #define STATUS_VOLUME_DIRTY cpu_to_le32(0xC0000806) 1035 - #define STATUS_FILE_CHECKED_OUT cpu_to_le32(0xC0000901) 1036 - #define STATUS_CHECKOUT_REQUIRED cpu_to_le32(0xC0000902) 1037 - #define STATUS_BAD_FILE_TYPE cpu_to_le32(0xC0000903) 1038 - #define STATUS_FILE_TOO_LARGE cpu_to_le32(0xC0000904) 1039 - #define STATUS_FORMS_AUTH_REQUIRED cpu_to_le32(0xC0000905) 1040 - #define STATUS_VIRUS_INFECTED cpu_to_le32(0xC0000906) 1041 - #define STATUS_VIRUS_DELETED cpu_to_le32(0xC0000907) 1042 - #define STATUS_BAD_MCFG_TABLE cpu_to_le32(0xC0000908) 1043 - #define STATUS_WOW_ASSERTION cpu_to_le32(0xC0009898) 1044 - #define STATUS_INVALID_SIGNATURE cpu_to_le32(0xC000A000) 1045 - #define STATUS_HMAC_NOT_SUPPORTED cpu_to_le32(0xC000A001) 1046 - #define STATUS_IPSEC_QUEUE_OVERFLOW cpu_to_le32(0xC000A010) 1047 - #define STATUS_ND_QUEUE_OVERFLOW cpu_to_le32(0xC000A011) 1048 - #define STATUS_HOPLIMIT_EXCEEDED cpu_to_le32(0xC000A012) 1049 - #define STATUS_PROTOCOL_NOT_SUPPORTED cpu_to_le32(0xC000A013) 1050 - #define STATUS_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED cpu_to_le32(0xC000A080) 1051 - #define STATUS_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR cpu_to_le32(0xC000A081) 1052 - #define STATUS_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR cpu_to_le32(0xC000A082) 1053 - #define STATUS_XML_PARSE_ERROR cpu_to_le32(0xC000A083) 1054 - #define STATUS_XMLDSIG_ERROR cpu_to_le32(0xC000A084) 1055 - #define STATUS_WRONG_COMPARTMENT cpu_to_le32(0xC000A085) 1056 - #define STATUS_AUTHIP_FAILURE cpu_to_le32(0xC000A086) 1057 - #define DBG_NO_STATE_CHANGE cpu_to_le32(0xC0010001) 1058 - #define DBG_APP_NOT_IDLE cpu_to_le32(0xC0010002) 1059 - #define RPC_NT_INVALID_STRING_BINDING cpu_to_le32(0xC0020001) 1060 - #define RPC_NT_WRONG_KIND_OF_BINDING cpu_to_le32(0xC0020002) 1061 - #define RPC_NT_INVALID_BINDING cpu_to_le32(0xC0020003) 1062 - #define RPC_NT_PROTSEQ_NOT_SUPPORTED cpu_to_le32(0xC0020004) 1063 - #define RPC_NT_INVALID_RPC_PROTSEQ cpu_to_le32(0xC0020005) 1064 - #define RPC_NT_INVALID_STRING_UUID cpu_to_le32(0xC0020006) 1065 - #define RPC_NT_INVALID_ENDPOINT_FORMAT cpu_to_le32(0xC0020007) 1066 - #define RPC_NT_INVALID_NET_ADDR cpu_to_le32(0xC0020008) 1067 - #define RPC_NT_NO_ENDPOINT_FOUND cpu_to_le32(0xC0020009) 1068 - #define RPC_NT_INVALID_TIMEOUT cpu_to_le32(0xC002000A) 1069 - #define RPC_NT_OBJECT_NOT_FOUND cpu_to_le32(0xC002000B) 1070 - #define RPC_NT_ALREADY_REGISTERED cpu_to_le32(0xC002000C) 1071 - #define RPC_NT_TYPE_ALREADY_REGISTERED cpu_to_le32(0xC002000D) 1072 - #define RPC_NT_ALREADY_LISTENING cpu_to_le32(0xC002000E) 1073 - #define RPC_NT_NO_PROTSEQS_REGISTERED cpu_to_le32(0xC002000F) 1074 - #define RPC_NT_NOT_LISTENING cpu_to_le32(0xC0020010) 1075 - #define RPC_NT_UNKNOWN_MGR_TYPE cpu_to_le32(0xC0020011) 1076 - #define RPC_NT_UNKNOWN_IF cpu_to_le32(0xC0020012) 1077 - #define RPC_NT_NO_BINDINGS cpu_to_le32(0xC0020013) 1078 - #define RPC_NT_NO_PROTSEQS cpu_to_le32(0xC0020014) 1079 - #define RPC_NT_CANT_CREATE_ENDPOINT cpu_to_le32(0xC0020015) 1080 - #define RPC_NT_OUT_OF_RESOURCES cpu_to_le32(0xC0020016) 1081 - #define RPC_NT_SERVER_UNAVAILABLE cpu_to_le32(0xC0020017) 1082 - #define RPC_NT_SERVER_TOO_BUSY cpu_to_le32(0xC0020018) 1083 - #define RPC_NT_INVALID_NETWORK_OPTIONS cpu_to_le32(0xC0020019) 1084 - #define RPC_NT_NO_CALL_ACTIVE cpu_to_le32(0xC002001A) 1085 - #define RPC_NT_CALL_FAILED cpu_to_le32(0xC002001B) 1086 - #define RPC_NT_CALL_FAILED_DNE cpu_to_le32(0xC002001C) 1087 - #define RPC_NT_PROTOCOL_ERROR cpu_to_le32(0xC002001D) 1088 - #define RPC_NT_UNSUPPORTED_TRANS_SYN cpu_to_le32(0xC002001F) 1089 - #define RPC_NT_UNSUPPORTED_TYPE cpu_to_le32(0xC0020021) 1090 - #define RPC_NT_INVALID_TAG cpu_to_le32(0xC0020022) 1091 - #define RPC_NT_INVALID_BOUND cpu_to_le32(0xC0020023) 1092 - #define RPC_NT_NO_ENTRY_NAME cpu_to_le32(0xC0020024) 1093 - #define RPC_NT_INVALID_NAME_SYNTAX cpu_to_le32(0xC0020025) 1094 - #define RPC_NT_UNSUPPORTED_NAME_SYNTAX cpu_to_le32(0xC0020026) 1095 - #define RPC_NT_UUID_NO_ADDRESS cpu_to_le32(0xC0020028) 1096 - #define RPC_NT_DUPLICATE_ENDPOINT cpu_to_le32(0xC0020029) 1097 - #define RPC_NT_UNKNOWN_AUTHN_TYPE cpu_to_le32(0xC002002A) 1098 - #define RPC_NT_MAX_CALLS_TOO_SMALL cpu_to_le32(0xC002002B) 1099 - #define RPC_NT_STRING_TOO_LONG cpu_to_le32(0xC002002C) 1100 - #define RPC_NT_PROTSEQ_NOT_FOUND cpu_to_le32(0xC002002D) 1101 - #define RPC_NT_PROCNUM_OUT_OF_RANGE cpu_to_le32(0xC002002E) 1102 - #define RPC_NT_BINDING_HAS_NO_AUTH cpu_to_le32(0xC002002F) 1103 - #define RPC_NT_UNKNOWN_AUTHN_SERVICE cpu_to_le32(0xC0020030) 1104 - #define RPC_NT_UNKNOWN_AUTHN_LEVEL cpu_to_le32(0xC0020031) 1105 - #define RPC_NT_INVALID_AUTH_IDENTITY cpu_to_le32(0xC0020032) 1106 - #define RPC_NT_UNKNOWN_AUTHZ_SERVICE cpu_to_le32(0xC0020033) 1107 - #define EPT_NT_INVALID_ENTRY cpu_to_le32(0xC0020034) 1108 - #define EPT_NT_CANT_PERFORM_OP cpu_to_le32(0xC0020035) 1109 - #define EPT_NT_NOT_REGISTERED cpu_to_le32(0xC0020036) 1110 - #define RPC_NT_NOTHING_TO_EXPORT cpu_to_le32(0xC0020037) 1111 - #define RPC_NT_INCOMPLETE_NAME cpu_to_le32(0xC0020038) 1112 - #define RPC_NT_INVALID_VERS_OPTION cpu_to_le32(0xC0020039) 1113 - #define RPC_NT_NO_MORE_MEMBERS cpu_to_le32(0xC002003A) 1114 - #define RPC_NT_NOT_ALL_OBJS_UNEXPORTED cpu_to_le32(0xC002003B) 1115 - #define RPC_NT_INTERFACE_NOT_FOUND cpu_to_le32(0xC002003C) 1116 - #define RPC_NT_ENTRY_ALREADY_EXISTS cpu_to_le32(0xC002003D) 1117 - #define RPC_NT_ENTRY_NOT_FOUND cpu_to_le32(0xC002003E) 1118 - #define RPC_NT_NAME_SERVICE_UNAVAILABLE cpu_to_le32(0xC002003F) 1119 - #define RPC_NT_INVALID_NAF_ID cpu_to_le32(0xC0020040) 1120 - #define RPC_NT_CANNOT_SUPPORT cpu_to_le32(0xC0020041) 1121 - #define RPC_NT_NO_CONTEXT_AVAILABLE cpu_to_le32(0xC0020042) 1122 - #define RPC_NT_INTERNAL_ERROR cpu_to_le32(0xC0020043) 1123 - #define RPC_NT_ZERO_DIVIDE cpu_to_le32(0xC0020044) 1124 - #define RPC_NT_ADDRESS_ERROR cpu_to_le32(0xC0020045) 1125 - #define RPC_NT_FP_DIV_ZERO cpu_to_le32(0xC0020046) 1126 - #define RPC_NT_FP_UNDERFLOW cpu_to_le32(0xC0020047) 1127 - #define RPC_NT_FP_OVERFLOW cpu_to_le32(0xC0020048) 1128 - #define RPC_NT_CALL_IN_PROGRESS cpu_to_le32(0xC0020049) 1129 - #define RPC_NT_NO_MORE_BINDINGS cpu_to_le32(0xC002004A) 1130 - #define RPC_NT_GROUP_MEMBER_NOT_FOUND cpu_to_le32(0xC002004B) 1131 - #define EPT_NT_CANT_CREATE cpu_to_le32(0xC002004C) 1132 - #define RPC_NT_INVALID_OBJECT cpu_to_le32(0xC002004D) 1133 - #define RPC_NT_NO_INTERFACES cpu_to_le32(0xC002004F) 1134 - #define RPC_NT_CALL_CANCELLED cpu_to_le32(0xC0020050) 1135 - #define RPC_NT_BINDING_INCOMPLETE cpu_to_le32(0xC0020051) 1136 - #define RPC_NT_COMM_FAILURE cpu_to_le32(0xC0020052) 1137 - #define RPC_NT_UNSUPPORTED_AUTHN_LEVEL cpu_to_le32(0xC0020053) 1138 - #define RPC_NT_NO_PRINC_NAME cpu_to_le32(0xC0020054) 1139 - #define RPC_NT_NOT_RPC_ERROR cpu_to_le32(0xC0020055) 1140 - #define RPC_NT_SEC_PKG_ERROR cpu_to_le32(0xC0020057) 1141 - #define RPC_NT_NOT_CANCELLED cpu_to_le32(0xC0020058) 1142 - #define RPC_NT_INVALID_ASYNC_HANDLE cpu_to_le32(0xC0020062) 1143 - #define RPC_NT_INVALID_ASYNC_CALL cpu_to_le32(0xC0020063) 1144 - #define RPC_NT_PROXY_ACCESS_DENIED cpu_to_le32(0xC0020064) 1145 - #define RPC_NT_NO_MORE_ENTRIES cpu_to_le32(0xC0030001) 1146 - #define RPC_NT_SS_CHAR_TRANS_OPEN_FAIL cpu_to_le32(0xC0030002) 1147 - #define RPC_NT_SS_CHAR_TRANS_SHORT_FILE cpu_to_le32(0xC0030003) 1148 - #define RPC_NT_SS_IN_NULL_CONTEXT cpu_to_le32(0xC0030004) 1149 - #define RPC_NT_SS_CONTEXT_MISMATCH cpu_to_le32(0xC0030005) 1150 - #define RPC_NT_SS_CONTEXT_DAMAGED cpu_to_le32(0xC0030006) 1151 - #define RPC_NT_SS_HANDLES_MISMATCH cpu_to_le32(0xC0030007) 1152 - #define RPC_NT_SS_CANNOT_GET_CALL_HANDLE cpu_to_le32(0xC0030008) 1153 - #define RPC_NT_NULL_REF_POINTER cpu_to_le32(0xC0030009) 1154 - #define RPC_NT_ENUM_VALUE_OUT_OF_RANGE cpu_to_le32(0xC003000A) 1155 - #define RPC_NT_BYTE_COUNT_TOO_SMALL cpu_to_le32(0xC003000B) 1156 - #define RPC_NT_BAD_STUB_DATA cpu_to_le32(0xC003000C) 1157 - #define RPC_NT_INVALID_ES_ACTION cpu_to_le32(0xC0030059) 1158 - #define RPC_NT_WRONG_ES_VERSION cpu_to_le32(0xC003005A) 1159 - #define RPC_NT_WRONG_STUB_VERSION cpu_to_le32(0xC003005B) 1160 - #define RPC_NT_INVALID_PIPE_OBJECT cpu_to_le32(0xC003005C) 1161 - #define RPC_NT_INVALID_PIPE_OPERATION cpu_to_le32(0xC003005D) 1162 - #define RPC_NT_WRONG_PIPE_VERSION cpu_to_le32(0xC003005E) 1163 - #define RPC_NT_PIPE_CLOSED cpu_to_le32(0xC003005F) 1164 - #define RPC_NT_PIPE_DISCIPLINE_ERROR cpu_to_le32(0xC0030060) 1165 - #define RPC_NT_PIPE_EMPTY cpu_to_le32(0xC0030061) 1166 - #define STATUS_PNP_BAD_MPS_TABLE cpu_to_le32(0xC0040035) 1167 - #define STATUS_PNP_TRANSLATION_FAILED cpu_to_le32(0xC0040036) 1168 - #define STATUS_PNP_IRQ_TRANSLATION_FAILED cpu_to_le32(0xC0040037) 1169 - #define STATUS_PNP_INVALID_ID cpu_to_le32(0xC0040038) 1170 - #define STATUS_IO_REISSUE_AS_CACHED cpu_to_le32(0xC0040039) 1171 - #define STATUS_CTX_WINSTATION_NAME_INVALID cpu_to_le32(0xC00A0001) 1172 - #define STATUS_CTX_INVALID_PD cpu_to_le32(0xC00A0002) 1173 - #define STATUS_CTX_PD_NOT_FOUND cpu_to_le32(0xC00A0003) 1174 - #define STATUS_CTX_CLOSE_PENDING cpu_to_le32(0xC00A0006) 1175 - #define STATUS_CTX_NO_OUTBUF cpu_to_le32(0xC00A0007) 1176 - #define STATUS_CTX_MODEM_INF_NOT_FOUND cpu_to_le32(0xC00A0008) 1177 - #define STATUS_CTX_INVALID_MODEMNAME cpu_to_le32(0xC00A0009) 1178 - #define STATUS_CTX_RESPONSE_ERROR cpu_to_le32(0xC00A000A) 1179 - #define STATUS_CTX_MODEM_RESPONSE_TIMEOUT cpu_to_le32(0xC00A000B) 1180 - #define STATUS_CTX_MODEM_RESPONSE_NO_CARRIER cpu_to_le32(0xC00A000C) 1181 - #define STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE cpu_to_le32(0xC00A000D) 1182 - #define STATUS_CTX_MODEM_RESPONSE_BUSY cpu_to_le32(0xC00A000E) 1183 - #define STATUS_CTX_MODEM_RESPONSE_VOICE cpu_to_le32(0xC00A000F) 1184 - #define STATUS_CTX_TD_ERROR cpu_to_le32(0xC00A0010) 1185 - #define STATUS_CTX_LICENSE_CLIENT_INVALID cpu_to_le32(0xC00A0012) 1186 - #define STATUS_CTX_LICENSE_NOT_AVAILABLE cpu_to_le32(0xC00A0013) 1187 - #define STATUS_CTX_LICENSE_EXPIRED cpu_to_le32(0xC00A0014) 1188 - #define STATUS_CTX_WINSTATION_NOT_FOUND cpu_to_le32(0xC00A0015) 1189 - #define STATUS_CTX_WINSTATION_NAME_COLLISION cpu_to_le32(0xC00A0016) 1190 - #define STATUS_CTX_WINSTATION_BUSY cpu_to_le32(0xC00A0017) 1191 - #define STATUS_CTX_BAD_VIDEO_MODE cpu_to_le32(0xC00A0018) 1192 - #define STATUS_CTX_GRAPHICS_INVALID cpu_to_le32(0xC00A0022) 1193 - #define STATUS_CTX_NOT_CONSOLE cpu_to_le32(0xC00A0024) 1194 - #define STATUS_CTX_CLIENT_QUERY_TIMEOUT cpu_to_le32(0xC00A0026) 1195 - #define STATUS_CTX_CONSOLE_DISCONNECT cpu_to_le32(0xC00A0027) 1196 - #define STATUS_CTX_CONSOLE_CONNECT cpu_to_le32(0xC00A0028) 1197 - #define STATUS_CTX_SHADOW_DENIED cpu_to_le32(0xC00A002A) 1198 - #define STATUS_CTX_WINSTATION_ACCESS_DENIED cpu_to_le32(0xC00A002B) 1199 - #define STATUS_CTX_INVALID_WD cpu_to_le32(0xC00A002E) 1200 - #define STATUS_CTX_WD_NOT_FOUND cpu_to_le32(0xC00A002F) 1201 - #define STATUS_CTX_SHADOW_INVALID cpu_to_le32(0xC00A0030) 1202 - #define STATUS_CTX_SHADOW_DISABLED cpu_to_le32(0xC00A0031) 1203 - #define STATUS_RDP_PROTOCOL_ERROR cpu_to_le32(0xC00A0032) 1204 - #define STATUS_CTX_CLIENT_LICENSE_NOT_SET cpu_to_le32(0xC00A0033) 1205 - #define STATUS_CTX_CLIENT_LICENSE_IN_USE cpu_to_le32(0xC00A0034) 1206 - #define STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE cpu_to_le32(0xC00A0035) 1207 - #define STATUS_CTX_SHADOW_NOT_RUNNING cpu_to_le32(0xC00A0036) 1208 - #define STATUS_CTX_LOGON_DISABLED cpu_to_le32(0xC00A0037) 1209 - #define STATUS_CTX_SECURITY_LAYER_ERROR cpu_to_le32(0xC00A0038) 1210 - #define STATUS_TS_INCOMPATIBLE_SESSIONS cpu_to_le32(0xC00A0039) 1211 - #define STATUS_MUI_FILE_NOT_FOUND cpu_to_le32(0xC00B0001) 1212 - #define STATUS_MUI_INVALID_FILE cpu_to_le32(0xC00B0002) 1213 - #define STATUS_MUI_INVALID_RC_CONFIG cpu_to_le32(0xC00B0003) 1214 - #define STATUS_MUI_INVALID_LOCALE_NAME cpu_to_le32(0xC00B0004) 1215 - #define STATUS_MUI_INVALID_ULTIMATEFALLBACK_NAME cpu_to_le32(0xC00B0005) 1216 - #define STATUS_MUI_FILE_NOT_LOADED cpu_to_le32(0xC00B0006) 1217 - #define STATUS_RESOURCE_ENUM_USER_STOP cpu_to_le32(0xC00B0007) 1218 - #define STATUS_CLUSTER_INVALID_NODE cpu_to_le32(0xC0130001) 1219 - #define STATUS_CLUSTER_NODE_EXISTS cpu_to_le32(0xC0130002) 1220 - #define STATUS_CLUSTER_JOIN_IN_PROGRESS cpu_to_le32(0xC0130003) 1221 - #define STATUS_CLUSTER_NODE_NOT_FOUND cpu_to_le32(0xC0130004) 1222 - #define STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND cpu_to_le32(0xC0130005) 1223 - #define STATUS_CLUSTER_NETWORK_EXISTS cpu_to_le32(0xC0130006) 1224 - #define STATUS_CLUSTER_NETWORK_NOT_FOUND cpu_to_le32(0xC0130007) 1225 - #define STATUS_CLUSTER_NETINTERFACE_EXISTS cpu_to_le32(0xC0130008) 1226 - #define STATUS_CLUSTER_NETINTERFACE_NOT_FOUND cpu_to_le32(0xC0130009) 1227 - #define STATUS_CLUSTER_INVALID_REQUEST cpu_to_le32(0xC013000A) 1228 - #define STATUS_CLUSTER_INVALID_NETWORK_PROVIDER cpu_to_le32(0xC013000B) 1229 - #define STATUS_CLUSTER_NODE_DOWN cpu_to_le32(0xC013000C) 1230 - #define STATUS_CLUSTER_NODE_UNREACHABLE cpu_to_le32(0xC013000D) 1231 - #define STATUS_CLUSTER_NODE_NOT_MEMBER cpu_to_le32(0xC013000E) 1232 - #define STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS cpu_to_le32(0xC013000F) 1233 - #define STATUS_CLUSTER_INVALID_NETWORK cpu_to_le32(0xC0130010) 1234 - #define STATUS_CLUSTER_NO_NET_ADAPTERS cpu_to_le32(0xC0130011) 1235 - #define STATUS_CLUSTER_NODE_UP cpu_to_le32(0xC0130012) 1236 - #define STATUS_CLUSTER_NODE_PAUSED cpu_to_le32(0xC0130013) 1237 - #define STATUS_CLUSTER_NODE_NOT_PAUSED cpu_to_le32(0xC0130014) 1238 - #define STATUS_CLUSTER_NO_SECURITY_CONTEXT cpu_to_le32(0xC0130015) 1239 - #define STATUS_CLUSTER_NETWORK_NOT_INTERNAL cpu_to_le32(0xC0130016) 1240 - #define STATUS_CLUSTER_POISONED cpu_to_le32(0xC0130017) 1241 - #define STATUS_ACPI_INVALID_OPCODE cpu_to_le32(0xC0140001) 1242 - #define STATUS_ACPI_STACK_OVERFLOW cpu_to_le32(0xC0140002) 1243 - #define STATUS_ACPI_ASSERT_FAILED cpu_to_le32(0xC0140003) 1244 - #define STATUS_ACPI_INVALID_INDEX cpu_to_le32(0xC0140004) 1245 - #define STATUS_ACPI_INVALID_ARGUMENT cpu_to_le32(0xC0140005) 1246 - #define STATUS_ACPI_FATAL cpu_to_le32(0xC0140006) 1247 - #define STATUS_ACPI_INVALID_SUPERNAME cpu_to_le32(0xC0140007) 1248 - #define STATUS_ACPI_INVALID_ARGTYPE cpu_to_le32(0xC0140008) 1249 - #define STATUS_ACPI_INVALID_OBJTYPE cpu_to_le32(0xC0140009) 1250 - #define STATUS_ACPI_INVALID_TARGETTYPE cpu_to_le32(0xC014000A) 1251 - #define STATUS_ACPI_INCORRECT_ARGUMENT_COUNT cpu_to_le32(0xC014000B) 1252 - #define STATUS_ACPI_ADDRESS_NOT_MAPPED cpu_to_le32(0xC014000C) 1253 - #define STATUS_ACPI_INVALID_EVENTTYPE cpu_to_le32(0xC014000D) 1254 - #define STATUS_ACPI_HANDLER_COLLISION cpu_to_le32(0xC014000E) 1255 - #define STATUS_ACPI_INVALID_DATA cpu_to_le32(0xC014000F) 1256 - #define STATUS_ACPI_INVALID_REGION cpu_to_le32(0xC0140010) 1257 - #define STATUS_ACPI_INVALID_ACCESS_SIZE cpu_to_le32(0xC0140011) 1258 - #define STATUS_ACPI_ACQUIRE_GLOBAL_LOCK cpu_to_le32(0xC0140012) 1259 - #define STATUS_ACPI_ALREADY_INITIALIZED cpu_to_le32(0xC0140013) 1260 - #define STATUS_ACPI_NOT_INITIALIZED cpu_to_le32(0xC0140014) 1261 - #define STATUS_ACPI_INVALID_MUTEX_LEVEL cpu_to_le32(0xC0140015) 1262 - #define STATUS_ACPI_MUTEX_NOT_OWNED cpu_to_le32(0xC0140016) 1263 - #define STATUS_ACPI_MUTEX_NOT_OWNER cpu_to_le32(0xC0140017) 1264 - #define STATUS_ACPI_RS_ACCESS cpu_to_le32(0xC0140018) 1265 - #define STATUS_ACPI_INVALID_TABLE cpu_to_le32(0xC0140019) 1266 - #define STATUS_ACPI_REG_HANDLER_FAILED cpu_to_le32(0xC0140020) 1267 - #define STATUS_ACPI_POWER_REQUEST_FAILED cpu_to_le32(0xC0140021) 1268 - #define STATUS_SXS_SECTION_NOT_FOUND cpu_to_le32(0xC0150001) 1269 - #define STATUS_SXS_CANT_GEN_ACTCTX cpu_to_le32(0xC0150002) 1270 - #define STATUS_SXS_INVALID_ACTCTXDATA_FORMAT cpu_to_le32(0xC0150003) 1271 - #define STATUS_SXS_ASSEMBLY_NOT_FOUND cpu_to_le32(0xC0150004) 1272 - #define STATUS_SXS_MANIFEST_FORMAT_ERROR cpu_to_le32(0xC0150005) 1273 - #define STATUS_SXS_MANIFEST_PARSE_ERROR cpu_to_le32(0xC0150006) 1274 - #define STATUS_SXS_ACTIVATION_CONTEXT_DISABLED cpu_to_le32(0xC0150007) 1275 - #define STATUS_SXS_KEY_NOT_FOUND cpu_to_le32(0xC0150008) 1276 - #define STATUS_SXS_VERSION_CONFLICT cpu_to_le32(0xC0150009) 1277 - #define STATUS_SXS_WRONG_SECTION_TYPE cpu_to_le32(0xC015000A) 1278 - #define STATUS_SXS_THREAD_QUERIES_DISABLED cpu_to_le32(0xC015000B) 1279 - #define STATUS_SXS_ASSEMBLY_MISSING cpu_to_le32(0xC015000C) 1280 - #define STATUS_SXS_PROCESS_DEFAULT_ALREADY_SET cpu_to_le32(0xC015000E) 1281 - #define STATUS_SXS_EARLY_DEACTIVATION cpu_to_le32(0xC015000F) 1282 - #define STATUS_SXS_INVALID_DEACTIVATION cpu_to_le32(0xC0150010) 1283 - #define STATUS_SXS_MULTIPLE_DEACTIVATION cpu_to_le32(0xC0150011) 1284 - #define STATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY cpu_to_le32(0xC0150012) 1285 - #define STATUS_SXS_PROCESS_TERMINATION_REQUESTED cpu_to_le32(0xC0150013) 1286 - #define STATUS_SXS_CORRUPT_ACTIVATION_STACK cpu_to_le32(0xC0150014) 1287 - #define STATUS_SXS_CORRUPTION cpu_to_le32(0xC0150015) 1288 - #define STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE cpu_to_le32(0xC0150016) 1289 - #define STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME cpu_to_le32(0xC0150017) 1290 - #define STATUS_SXS_IDENTITY_DUPLICATE_ATTRIBUTE cpu_to_le32(0xC0150018) 1291 - #define STATUS_SXS_IDENTITY_PARSE_ERROR cpu_to_le32(0xC0150019) 1292 - #define STATUS_SXS_COMPONENT_STORE_CORRUPT cpu_to_le32(0xC015001A) 1293 - #define STATUS_SXS_FILE_HASH_MISMATCH cpu_to_le32(0xC015001B) 1294 - #define STATUS_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT cpu_to_le32(0xC015001C) 1295 - #define STATUS_SXS_IDENTITIES_DIFFERENT cpu_to_le32(0xC015001D) 1296 - #define STATUS_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT cpu_to_le32(0xC015001E) 1297 - #define STATUS_SXS_FILE_NOT_PART_OF_ASSEMBLY cpu_to_le32(0xC015001F) 1298 - #define STATUS_ADVANCED_INSTALLER_FAILED cpu_to_le32(0xC0150020) 1299 - #define STATUS_XML_ENCODING_MISMATCH cpu_to_le32(0xC0150021) 1300 - #define STATUS_SXS_MANIFEST_TOO_BIG cpu_to_le32(0xC0150022) 1301 - #define STATUS_SXS_SETTING_NOT_REGISTERED cpu_to_le32(0xC0150023) 1302 - #define STATUS_SXS_TRANSACTION_CLOSURE_INCOMPLETE cpu_to_le32(0xC0150024) 1303 - #define STATUS_SMI_PRIMITIVE_INSTALLER_FAILED cpu_to_le32(0xC0150025) 1304 - #define STATUS_GENERIC_COMMAND_FAILED cpu_to_le32(0xC0150026) 1305 - #define STATUS_SXS_FILE_HASH_MISSING cpu_to_le32(0xC0150027) 1306 - #define STATUS_TRANSACTIONAL_CONFLICT cpu_to_le32(0xC0190001) 1307 - #define STATUS_INVALID_TRANSACTION cpu_to_le32(0xC0190002) 1308 - #define STATUS_TRANSACTION_NOT_ACTIVE cpu_to_le32(0xC0190003) 1309 - #define STATUS_TM_INITIALIZATION_FAILED cpu_to_le32(0xC0190004) 1310 - #define STATUS_RM_NOT_ACTIVE cpu_to_le32(0xC0190005) 1311 - #define STATUS_RM_METADATA_CORRUPT cpu_to_le32(0xC0190006) 1312 - #define STATUS_TRANSACTION_NOT_JOINED cpu_to_le32(0xC0190007) 1313 - #define STATUS_DIRECTORY_NOT_RM cpu_to_le32(0xC0190008) 1314 - #define STATUS_TRANSACTIONS_UNSUPPORTED_REMOTE cpu_to_le32(0xC019000A) 1315 - #define STATUS_LOG_RESIZE_INVALID_SIZE cpu_to_le32(0xC019000B) 1316 - #define STATUS_REMOTE_FILE_VERSION_MISMATCH cpu_to_le32(0xC019000C) 1317 - #define STATUS_CRM_PROTOCOL_ALREADY_EXISTS cpu_to_le32(0xC019000F) 1318 - #define STATUS_TRANSACTION_PROPAGATION_FAILED cpu_to_le32(0xC0190010) 1319 - #define STATUS_CRM_PROTOCOL_NOT_FOUND cpu_to_le32(0xC0190011) 1320 - #define STATUS_TRANSACTION_SUPERIOR_EXISTS cpu_to_le32(0xC0190012) 1321 - #define STATUS_TRANSACTION_REQUEST_NOT_VALID cpu_to_le32(0xC0190013) 1322 - #define STATUS_TRANSACTION_NOT_REQUESTED cpu_to_le32(0xC0190014) 1323 - #define STATUS_TRANSACTION_ALREADY_ABORTED cpu_to_le32(0xC0190015) 1324 - #define STATUS_TRANSACTION_ALREADY_COMMITTED cpu_to_le32(0xC0190016) 1325 - #define STATUS_TRANSACTION_INVALID_MARSHALL_BUFFER cpu_to_le32(0xC0190017) 1326 - #define STATUS_CURRENT_TRANSACTION_NOT_VALID cpu_to_le32(0xC0190018) 1327 - #define STATUS_LOG_GROWTH_FAILED cpu_to_le32(0xC0190019) 1328 - #define STATUS_OBJECT_NO_LONGER_EXISTS cpu_to_le32(0xC0190021) 1329 - #define STATUS_STREAM_MINIVERSION_NOT_FOUND cpu_to_le32(0xC0190022) 1330 - #define STATUS_STREAM_MINIVERSION_NOT_VALID cpu_to_le32(0xC0190023) 1331 - #define STATUS_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION cpu_to_le32(0xC0190024) 1332 - #define STATUS_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT cpu_to_le32(0xC0190025) 1333 - #define STATUS_CANT_CREATE_MORE_STREAM_MINIVERSIONS cpu_to_le32(0xC0190026) 1334 - #define STATUS_HANDLE_NO_LONGER_VALID cpu_to_le32(0xC0190028) 1335 - #define STATUS_LOG_CORRUPTION_DETECTED cpu_to_le32(0xC0190030) 1336 - #define STATUS_RM_DISCONNECTED cpu_to_le32(0xC0190032) 1337 - #define STATUS_ENLISTMENT_NOT_SUPERIOR cpu_to_le32(0xC0190033) 1338 - #define STATUS_FILE_IDENTITY_NOT_PERSISTENT cpu_to_le32(0xC0190036) 1339 - #define STATUS_CANT_BREAK_TRANSACTIONAL_DEPENDENCY cpu_to_le32(0xC0190037) 1340 - #define STATUS_CANT_CROSS_RM_BOUNDARY cpu_to_le32(0xC0190038) 1341 - #define STATUS_TXF_DIR_NOT_EMPTY cpu_to_le32(0xC0190039) 1342 - #define STATUS_INDOUBT_TRANSACTIONS_EXIST cpu_to_le32(0xC019003A) 1343 - #define STATUS_TM_VOLATILE cpu_to_le32(0xC019003B) 1344 - #define STATUS_ROLLBACK_TIMER_EXPIRED cpu_to_le32(0xC019003C) 1345 - #define STATUS_TXF_ATTRIBUTE_CORRUPT cpu_to_le32(0xC019003D) 1346 - #define STATUS_EFS_NOT_ALLOWED_IN_TRANSACTION cpu_to_le32(0xC019003E) 1347 - #define STATUS_TRANSACTIONAL_OPEN_NOT_ALLOWED cpu_to_le32(0xC019003F) 1348 - #define STATUS_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE cpu_to_le32(0xC0190040) 1349 - #define STATUS_TRANSACTION_REQUIRED_PROMOTION cpu_to_le32(0xC0190043) 1350 - #define STATUS_CANNOT_EXECUTE_FILE_IN_TRANSACTION cpu_to_le32(0xC0190044) 1351 - #define STATUS_TRANSACTIONS_NOT_FROZEN cpu_to_le32(0xC0190045) 1352 - #define STATUS_TRANSACTION_FREEZE_IN_PROGRESS cpu_to_le32(0xC0190046) 1353 - #define STATUS_NOT_SNAPSHOT_VOLUME cpu_to_le32(0xC0190047) 1354 - #define STATUS_NO_SAVEPOINT_WITH_OPEN_FILES cpu_to_le32(0xC0190048) 1355 - #define STATUS_SPARSE_NOT_ALLOWED_IN_TRANSACTION cpu_to_le32(0xC0190049) 1356 - #define STATUS_TM_IDENTITY_MISMATCH cpu_to_le32(0xC019004A) 1357 - #define STATUS_FLOATED_SECTION cpu_to_le32(0xC019004B) 1358 - #define STATUS_CANNOT_ACCEPT_TRANSACTED_WORK cpu_to_le32(0xC019004C) 1359 - #define STATUS_CANNOT_ABORT_TRANSACTIONS cpu_to_le32(0xC019004D) 1360 - #define STATUS_TRANSACTION_NOT_FOUND cpu_to_le32(0xC019004E) 1361 - #define STATUS_RESOURCEMANAGER_NOT_FOUND cpu_to_le32(0xC019004F) 1362 - #define STATUS_ENLISTMENT_NOT_FOUND cpu_to_le32(0xC0190050) 1363 - #define STATUS_TRANSACTIONMANAGER_NOT_FOUND cpu_to_le32(0xC0190051) 1364 - #define STATUS_TRANSACTIONMANAGER_NOT_ONLINE cpu_to_le32(0xC0190052) 1365 - #define STATUS_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION cpu_to_le32(0xC0190053) 1366 - #define STATUS_TRANSACTION_NOT_ROOT cpu_to_le32(0xC0190054) 1367 - #define STATUS_TRANSACTION_OBJECT_EXPIRED cpu_to_le32(0xC0190055) 1368 - #define STATUS_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION cpu_to_le32(0xC0190056) 1369 - #define STATUS_TRANSACTION_RESPONSE_NOT_ENLISTED cpu_to_le32(0xC0190057) 1370 - #define STATUS_TRANSACTION_RECORD_TOO_LONG cpu_to_le32(0xC0190058) 1371 - #define STATUS_NO_LINK_TRACKING_IN_TRANSACTION cpu_to_le32(0xC0190059) 1372 - #define STATUS_OPERATION_NOT_SUPPORTED_IN_TRANSACTION cpu_to_le32(0xC019005A) 1373 - #define STATUS_TRANSACTION_INTEGRITY_VIOLATED cpu_to_le32(0xC019005B) 1374 - #define STATUS_LOG_SECTOR_INVALID cpu_to_le32(0xC01A0001) 1375 - #define STATUS_LOG_SECTOR_PARITY_INVALID cpu_to_le32(0xC01A0002) 1376 - #define STATUS_LOG_SECTOR_REMAPPED cpu_to_le32(0xC01A0003) 1377 - #define STATUS_LOG_BLOCK_INCOMPLETE cpu_to_le32(0xC01A0004) 1378 - #define STATUS_LOG_INVALID_RANGE cpu_to_le32(0xC01A0005) 1379 - #define STATUS_LOG_BLOCKS_EXHAUSTED cpu_to_le32(0xC01A0006) 1380 - #define STATUS_LOG_READ_CONTEXT_INVALID cpu_to_le32(0xC01A0007) 1381 - #define STATUS_LOG_RESTART_INVALID cpu_to_le32(0xC01A0008) 1382 - #define STATUS_LOG_BLOCK_VERSION cpu_to_le32(0xC01A0009) 1383 - #define STATUS_LOG_BLOCK_INVALID cpu_to_le32(0xC01A000A) 1384 - #define STATUS_LOG_READ_MODE_INVALID cpu_to_le32(0xC01A000B) 1385 - #define STATUS_LOG_METADATA_CORRUPT cpu_to_le32(0xC01A000D) 1386 - #define STATUS_LOG_METADATA_INVALID cpu_to_le32(0xC01A000E) 1387 - #define STATUS_LOG_METADATA_INCONSISTENT cpu_to_le32(0xC01A000F) 1388 - #define STATUS_LOG_RESERVATION_INVALID cpu_to_le32(0xC01A0010) 1389 - #define STATUS_LOG_CANT_DELETE cpu_to_le32(0xC01A0011) 1390 - #define STATUS_LOG_CONTAINER_LIMIT_EXCEEDED cpu_to_le32(0xC01A0012) 1391 - #define STATUS_LOG_START_OF_LOG cpu_to_le32(0xC01A0013) 1392 - #define STATUS_LOG_POLICY_ALREADY_INSTALLED cpu_to_le32(0xC01A0014) 1393 - #define STATUS_LOG_POLICY_NOT_INSTALLED cpu_to_le32(0xC01A0015) 1394 - #define STATUS_LOG_POLICY_INVALID cpu_to_le32(0xC01A0016) 1395 - #define STATUS_LOG_POLICY_CONFLICT cpu_to_le32(0xC01A0017) 1396 - #define STATUS_LOG_PINNED_ARCHIVE_TAIL cpu_to_le32(0xC01A0018) 1397 - #define STATUS_LOG_RECORD_NONEXISTENT cpu_to_le32(0xC01A0019) 1398 - #define STATUS_LOG_RECORDS_RESERVED_INVALID cpu_to_le32(0xC01A001A) 1399 - #define STATUS_LOG_SPACE_RESERVED_INVALID cpu_to_le32(0xC01A001B) 1400 - #define STATUS_LOG_TAIL_INVALID cpu_to_le32(0xC01A001C) 1401 - #define STATUS_LOG_FULL cpu_to_le32(0xC01A001D) 1402 - #define STATUS_LOG_MULTIPLEXED cpu_to_le32(0xC01A001E) 1403 - #define STATUS_LOG_DEDICATED cpu_to_le32(0xC01A001F) 1404 - #define STATUS_LOG_ARCHIVE_NOT_IN_PROGRESS cpu_to_le32(0xC01A0020) 1405 - #define STATUS_LOG_ARCHIVE_IN_PROGRESS cpu_to_le32(0xC01A0021) 1406 - #define STATUS_LOG_EPHEMERAL cpu_to_le32(0xC01A0022) 1407 - #define STATUS_LOG_NOT_ENOUGH_CONTAINERS cpu_to_le32(0xC01A0023) 1408 - #define STATUS_LOG_CLIENT_ALREADY_REGISTERED cpu_to_le32(0xC01A0024) 1409 - #define STATUS_LOG_CLIENT_NOT_REGISTERED cpu_to_le32(0xC01A0025) 1410 - #define STATUS_LOG_FULL_HANDLER_IN_PROGRESS cpu_to_le32(0xC01A0026) 1411 - #define STATUS_LOG_CONTAINER_READ_FAILED cpu_to_le32(0xC01A0027) 1412 - #define STATUS_LOG_CONTAINER_WRITE_FAILED cpu_to_le32(0xC01A0028) 1413 - #define STATUS_LOG_CONTAINER_OPEN_FAILED cpu_to_le32(0xC01A0029) 1414 - #define STATUS_LOG_CONTAINER_STATE_INVALID cpu_to_le32(0xC01A002A) 1415 - #define STATUS_LOG_STATE_INVALID cpu_to_le32(0xC01A002B) 1416 - #define STATUS_LOG_PINNED cpu_to_le32(0xC01A002C) 1417 - #define STATUS_LOG_METADATA_FLUSH_FAILED cpu_to_le32(0xC01A002D) 1418 - #define STATUS_LOG_INCONSISTENT_SECURITY cpu_to_le32(0xC01A002E) 1419 - #define STATUS_LOG_APPENDED_FLUSH_FAILED cpu_to_le32(0xC01A002F) 1420 - #define STATUS_LOG_PINNED_RESERVATION cpu_to_le32(0xC01A0030) 1421 - #define STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD cpu_to_le32(0xC01B00EA) 1422 - #define STATUS_FLT_NO_HANDLER_DEFINED cpu_to_le32(0xC01C0001) 1423 - #define STATUS_FLT_CONTEXT_ALREADY_DEFINED cpu_to_le32(0xC01C0002) 1424 - #define STATUS_FLT_INVALID_ASYNCHRONOUS_REQUEST cpu_to_le32(0xC01C0003) 1425 - #define STATUS_FLT_DISALLOW_FAST_IO cpu_to_le32(0xC01C0004) 1426 - #define STATUS_FLT_INVALID_NAME_REQUEST cpu_to_le32(0xC01C0005) 1427 - #define STATUS_FLT_NOT_SAFE_TO_POST_OPERATION cpu_to_le32(0xC01C0006) 1428 - #define STATUS_FLT_NOT_INITIALIZED cpu_to_le32(0xC01C0007) 1429 - #define STATUS_FLT_FILTER_NOT_READY cpu_to_le32(0xC01C0008) 1430 - #define STATUS_FLT_POST_OPERATION_CLEANUP cpu_to_le32(0xC01C0009) 1431 - #define STATUS_FLT_INTERNAL_ERROR cpu_to_le32(0xC01C000A) 1432 - #define STATUS_FLT_DELETING_OBJECT cpu_to_le32(0xC01C000B) 1433 - #define STATUS_FLT_MUST_BE_NONPAGED_POOL cpu_to_le32(0xC01C000C) 1434 - #define STATUS_FLT_DUPLICATE_ENTRY cpu_to_le32(0xC01C000D) 1435 - #define STATUS_FLT_CBDQ_DISABLED cpu_to_le32(0xC01C000E) 1436 - #define STATUS_FLT_DO_NOT_ATTACH cpu_to_le32(0xC01C000F) 1437 - #define STATUS_FLT_DO_NOT_DETACH cpu_to_le32(0xC01C0010) 1438 - #define STATUS_FLT_INSTANCE_ALTITUDE_COLLISION cpu_to_le32(0xC01C0011) 1439 - #define STATUS_FLT_INSTANCE_NAME_COLLISION cpu_to_le32(0xC01C0012) 1440 - #define STATUS_FLT_FILTER_NOT_FOUND cpu_to_le32(0xC01C0013) 1441 - #define STATUS_FLT_VOLUME_NOT_FOUND cpu_to_le32(0xC01C0014) 1442 - #define STATUS_FLT_INSTANCE_NOT_FOUND cpu_to_le32(0xC01C0015) 1443 - #define STATUS_FLT_CONTEXT_ALLOCATION_NOT_FOUND cpu_to_le32(0xC01C0016) 1444 - #define STATUS_FLT_INVALID_CONTEXT_REGISTRATION cpu_to_le32(0xC01C0017) 1445 - #define STATUS_FLT_NAME_CACHE_MISS cpu_to_le32(0xC01C0018) 1446 - #define STATUS_FLT_NO_DEVICE_OBJECT cpu_to_le32(0xC01C0019) 1447 - #define STATUS_FLT_VOLUME_ALREADY_MOUNTED cpu_to_le32(0xC01C001A) 1448 - #define STATUS_FLT_ALREADY_ENLISTED cpu_to_le32(0xC01C001B) 1449 - #define STATUS_FLT_CONTEXT_ALREADY_LINKED cpu_to_le32(0xC01C001C) 1450 - #define STATUS_FLT_NO_WAITER_FOR_REPLY cpu_to_le32(0xC01C0020) 1451 - #define STATUS_MONITOR_NO_DESCRIPTOR cpu_to_le32(0xC01D0001) 1452 - #define STATUS_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT cpu_to_le32(0xC01D0002) 1453 - #define STATUS_MONITOR_INVALID_DESCRIPTOR_CHECKSUM cpu_to_le32(0xC01D0003) 1454 - #define STATUS_MONITOR_INVALID_STANDARD_TIMING_BLOCK cpu_to_le32(0xC01D0004) 1455 - #define STATUS_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED cpu_to_le32(0xC01D0005) 1456 - #define STATUS_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK cpu_to_le32(0xC01D0006) 1457 - #define STATUS_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK cpu_to_le32(0xC01D0007) 1458 - #define STATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA cpu_to_le32(0xC01D0008) 1459 - #define STATUS_MONITOR_INVALID_DETAILED_TIMING_BLOCK cpu_to_le32(0xC01D0009) 1460 - #define STATUS_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER cpu_to_le32(0xC01E0000) 1461 - #define STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER cpu_to_le32(0xC01E0001) 1462 - #define STATUS_GRAPHICS_INVALID_DISPLAY_ADAPTER cpu_to_le32(0xC01E0002) 1463 - #define STATUS_GRAPHICS_ADAPTER_WAS_RESET cpu_to_le32(0xC01E0003) 1464 - #define STATUS_GRAPHICS_INVALID_DRIVER_MODEL cpu_to_le32(0xC01E0004) 1465 - #define STATUS_GRAPHICS_PRESENT_MODE_CHANGED cpu_to_le32(0xC01E0005) 1466 - #define STATUS_GRAPHICS_PRESENT_OCCLUDED cpu_to_le32(0xC01E0006) 1467 - #define STATUS_GRAPHICS_PRESENT_DENIED cpu_to_le32(0xC01E0007) 1468 - #define STATUS_GRAPHICS_CANNOTCOLORCONVERT cpu_to_le32(0xC01E0008) 1469 - #define STATUS_GRAPHICS_NO_VIDEO_MEMORY cpu_to_le32(0xC01E0100) 1470 - #define STATUS_GRAPHICS_CANT_LOCK_MEMORY cpu_to_le32(0xC01E0101) 1471 - #define STATUS_GRAPHICS_ALLOCATION_BUSY cpu_to_le32(0xC01E0102) 1472 - #define STATUS_GRAPHICS_TOO_MANY_REFERENCES cpu_to_le32(0xC01E0103) 1473 - #define STATUS_GRAPHICS_TRY_AGAIN_LATER cpu_to_le32(0xC01E0104) 1474 - #define STATUS_GRAPHICS_TRY_AGAIN_NOW cpu_to_le32(0xC01E0105) 1475 - #define STATUS_GRAPHICS_ALLOCATION_INVALID cpu_to_le32(0xC01E0106) 1476 - #define STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE cpu_to_le32(0xC01E0107) 1477 - #define STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED cpu_to_le32(0xC01E0108) 1478 - #define STATUS_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION cpu_to_le32(0xC01E0109) 1479 - #define STATUS_GRAPHICS_INVALID_ALLOCATION_USAGE cpu_to_le32(0xC01E0110) 1480 - #define STATUS_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION cpu_to_le32(0xC01E0111) 1481 - #define STATUS_GRAPHICS_ALLOCATION_CLOSED cpu_to_le32(0xC01E0112) 1482 - #define STATUS_GRAPHICS_INVALID_ALLOCATION_INSTANCE cpu_to_le32(0xC01E0113) 1483 - #define STATUS_GRAPHICS_INVALID_ALLOCATION_HANDLE cpu_to_le32(0xC01E0114) 1484 - #define STATUS_GRAPHICS_WRONG_ALLOCATION_DEVICE cpu_to_le32(0xC01E0115) 1485 - #define STATUS_GRAPHICS_ALLOCATION_CONTENT_LOST cpu_to_le32(0xC01E0116) 1486 - #define STATUS_GRAPHICS_GPU_EXCEPTION_ON_DEVICE cpu_to_le32(0xC01E0200) 1487 - #define STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY cpu_to_le32(0xC01E0300) 1488 - #define STATUS_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED cpu_to_le32(0xC01E0301) 1489 - #define STATUS_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED cpu_to_le32(0xC01E0302) 1490 - #define STATUS_GRAPHICS_INVALID_VIDPN cpu_to_le32(0xC01E0303) 1491 - #define STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE cpu_to_le32(0xC01E0304) 1492 - #define STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET cpu_to_le32(0xC01E0305) 1493 - #define STATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED cpu_to_le32(0xC01E0306) 1494 - #define STATUS_GRAPHICS_INVALID_VIDPN_SOURCEMODESET cpu_to_le32(0xC01E0308) 1495 - #define STATUS_GRAPHICS_INVALID_VIDPN_TARGETMODESET cpu_to_le32(0xC01E0309) 1496 - #define STATUS_GRAPHICS_INVALID_FREQUENCY cpu_to_le32(0xC01E030A) 1497 - #define STATUS_GRAPHICS_INVALID_ACTIVE_REGION cpu_to_le32(0xC01E030B) 1498 - #define STATUS_GRAPHICS_INVALID_TOTAL_REGION cpu_to_le32(0xC01E030C) 1499 - #define STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE cpu_to_le32(0xC01E0310) 1500 - #define STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE cpu_to_le32(0xC01E0311) 1501 - #define STATUS_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET cpu_to_le32(0xC01E0312) 1502 - #define STATUS_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY cpu_to_le32(0xC01E0313) 1503 - #define STATUS_GRAPHICS_MODE_ALREADY_IN_MODESET cpu_to_le32(0xC01E0314) 1504 - #define STATUS_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET cpu_to_le32(0xC01E0315) 1505 - #define STATUS_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET cpu_to_le32(0xC01E0316) 1506 - #define STATUS_GRAPHICS_SOURCE_ALREADY_IN_SET cpu_to_le32(0xC01E0317) 1507 - #define STATUS_GRAPHICS_TARGET_ALREADY_IN_SET cpu_to_le32(0xC01E0318) 1508 - #define STATUS_GRAPHICS_INVALID_VIDPN_PRESENT_PATH cpu_to_le32(0xC01E0319) 1509 - #define STATUS_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY cpu_to_le32(0xC01E031A) 1510 - #define STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET cpu_to_le32(0xC01E031B) 1511 - #define STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE cpu_to_le32(0xC01E031C) 1512 - #define STATUS_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET cpu_to_le32(0xC01E031D) 1513 - #define STATUS_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET cpu_to_le32(0xC01E031F) 1514 - #define STATUS_GRAPHICS_STALE_MODESET cpu_to_le32(0xC01E0320) 1515 - #define STATUS_GRAPHICS_INVALID_MONITOR_SOURCEMODESET cpu_to_le32(0xC01E0321) 1516 - #define STATUS_GRAPHICS_INVALID_MONITOR_SOURCE_MODE cpu_to_le32(0xC01E0322) 1517 - #define STATUS_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN cpu_to_le32(0xC01E0323) 1518 - #define STATUS_GRAPHICS_MODE_ID_MUST_BE_UNIQUE cpu_to_le32(0xC01E0324) 1519 - #define STATUS_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION cpu_to_le32(0xC01E0325) 1520 - #define STATUS_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES cpu_to_le32(0xC01E0326) 1521 - #define STATUS_GRAPHICS_PATH_NOT_IN_TOPOLOGY cpu_to_le32(0xC01E0327) 1522 - #define STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE cpu_to_le32(0xC01E0328) 1523 - #define STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET cpu_to_le32(0xC01E0329) 1524 - #define STATUS_GRAPHICS_INVALID_MONITORDESCRIPTORSET cpu_to_le32(0xC01E032A) 1525 - #define STATUS_GRAPHICS_INVALID_MONITORDESCRIPTOR cpu_to_le32(0xC01E032B) 1526 - #define STATUS_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET cpu_to_le32(0xC01E032C) 1527 - #define STATUS_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET cpu_to_le32(0xC01E032D) 1528 - #define STATUS_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE cpu_to_le32(0xC01E032E) 1529 - #define STATUS_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE cpu_to_le32(0xC01E032F) 1530 - #define STATUS_GRAPHICS_RESOURCES_NOT_RELATED cpu_to_le32(0xC01E0330) 1531 - #define STATUS_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE cpu_to_le32(0xC01E0331) 1532 - #define STATUS_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE cpu_to_le32(0xC01E0332) 1533 - #define STATUS_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET cpu_to_le32(0xC01E0333) 1534 - #define STATUS_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER cpu_to_le32(0xC01E0334) 1535 - #define STATUS_GRAPHICS_NO_VIDPNMGR cpu_to_le32(0xC01E0335) 1536 - #define STATUS_GRAPHICS_NO_ACTIVE_VIDPN cpu_to_le32(0xC01E0336) 1537 - #define STATUS_GRAPHICS_STALE_VIDPN_TOPOLOGY cpu_to_le32(0xC01E0337) 1538 - #define STATUS_GRAPHICS_MONITOR_NOT_CONNECTED cpu_to_le32(0xC01E0338) 1539 - #define STATUS_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY cpu_to_le32(0xC01E0339) 1540 - #define STATUS_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE cpu_to_le32(0xC01E033A) 1541 - #define STATUS_GRAPHICS_INVALID_VISIBLEREGION_SIZE cpu_to_le32(0xC01E033B) 1542 - #define STATUS_GRAPHICS_INVALID_STRIDE cpu_to_le32(0xC01E033C) 1543 - #define STATUS_GRAPHICS_INVALID_PIXELFORMAT cpu_to_le32(0xC01E033D) 1544 - #define STATUS_GRAPHICS_INVALID_COLORBASIS cpu_to_le32(0xC01E033E) 1545 - #define STATUS_GRAPHICS_INVALID_PIXELVALUEACCESSMODE cpu_to_le32(0xC01E033F) 1546 - #define STATUS_GRAPHICS_TARGET_NOT_IN_TOPOLOGY cpu_to_le32(0xC01E0340) 1547 - #define STATUS_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT cpu_to_le32(0xC01E0341) 1548 - #define STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE cpu_to_le32(0xC01E0342) 1549 - #define STATUS_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN cpu_to_le32(0xC01E0343) 1550 - #define STATUS_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL cpu_to_le32(0xC01E0344) 1551 - #define STATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION cpu_to_le32(0xC01E0345) 1552 - #define STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED cpu_to_le32(0xC01E0346) 1553 - #define STATUS_GRAPHICS_INVALID_GAMMA_RAMP cpu_to_le32(0xC01E0347) 1554 - #define STATUS_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED cpu_to_le32(0xC01E0348) 1555 - #define STATUS_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED cpu_to_le32(0xC01E0349) 1556 - #define STATUS_GRAPHICS_MODE_NOT_IN_MODESET cpu_to_le32(0xC01E034A) 1557 - #define STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON cpu_to_le32(0xC01E034D) 1558 - #define STATUS_GRAPHICS_INVALID_PATH_CONTENT_TYPE cpu_to_le32(0xC01E034E) 1559 - #define STATUS_GRAPHICS_INVALID_COPYPROTECTION_TYPE cpu_to_le32(0xC01E034F) 1560 - #define STATUS_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS cpu_to_le32(0xC01E0350) 1561 - #define STATUS_GRAPHICS_INVALID_SCANLINE_ORDERING cpu_to_le32(0xC01E0352) 1562 - #define STATUS_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED cpu_to_le32(0xC01E0353) 1563 - #define STATUS_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS cpu_to_le32(0xC01E0354) 1564 - #define STATUS_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT cpu_to_le32(0xC01E0355) 1565 - #define STATUS_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM cpu_to_le32(0xC01E0356) 1566 - #define STATUS_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN cpu_to_le32(0xC01E0357) 1567 - #define STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT cpu_to_le32(0xC01E0358) 1568 - #define STATUS_GRAPHICS_MAX_NUM_PATHS_REACHED cpu_to_le32(0xC01E0359) 1569 - #define STATUS_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION cpu_to_le32(0xC01E035A) 1570 - #define STATUS_GRAPHICS_INVALID_CLIENT_TYPE cpu_to_le32(0xC01E035B) 1571 - #define STATUS_GRAPHICS_CLIENTVIDPN_NOT_SET cpu_to_le32(0xC01E035C) 1572 - #define STATUS_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED cpu_to_le32(0xC01E0400) 1573 - #define STATUS_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED cpu_to_le32(0xC01E0401) 1574 - #define STATUS_GRAPHICS_NOT_A_LINKED_ADAPTER cpu_to_le32(0xC01E0430) 1575 - #define STATUS_GRAPHICS_LEADLINK_NOT_ENUMERATED cpu_to_le32(0xC01E0431) 1576 - #define STATUS_GRAPHICS_CHAINLINKS_NOT_ENUMERATED cpu_to_le32(0xC01E0432) 1577 - #define STATUS_GRAPHICS_ADAPTER_CHAIN_NOT_READY cpu_to_le32(0xC01E0433) 1578 - #define STATUS_GRAPHICS_CHAINLINKS_NOT_STARTED cpu_to_le32(0xC01E0434) 1579 - #define STATUS_GRAPHICS_CHAINLINKS_NOT_POWERED_ON cpu_to_le32(0xC01E0435) 1580 - #define STATUS_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE cpu_to_le32(0xC01E0436) 1581 - #define STATUS_GRAPHICS_NOT_POST_DEVICE_DRIVER cpu_to_le32(0xC01E0438) 1582 - #define STATUS_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED cpu_to_le32(0xC01E043B) 1583 - #define STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS cpu_to_le32(0xC01E051C) 1584 - #define STATUS_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST cpu_to_le32(0xC01E051D) 1585 - #define STATUS_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR cpu_to_le32(0xC01E051E) 1586 - #define STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS cpu_to_le32(0xC01E051F) 1587 - #define STATUS_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED cpu_to_le32(0xC01E0520) 1588 - #define STATUS_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST cpu_to_le32(0xC01E0521) 1589 - #define STATUS_GRAPHICS_OPM_NOT_SUPPORTED cpu_to_le32(0xC01E0500) 1590 - #define STATUS_GRAPHICS_COPP_NOT_SUPPORTED cpu_to_le32(0xC01E0501) 1591 - #define STATUS_GRAPHICS_UAB_NOT_SUPPORTED cpu_to_le32(0xC01E0502) 1592 - #define STATUS_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS cpu_to_le32(0xC01E0503) 1593 - #define STATUS_GRAPHICS_OPM_PARAMETER_ARRAY_TOO_SMALL cpu_to_le32(0xC01E0504) 1594 - #define STATUS_GRAPHICS_OPM_NO_PROTECTED_OUTPUTS_EXIST cpu_to_le32(0xC01E0505) 1595 - #define STATUS_GRAPHICS_PVP_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME cpu_to_le32(0xC01E0506) 1596 - #define STATUS_GRAPHICS_PVP_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP cpu_to_le32(0xC01E0507) 1597 - #define STATUS_GRAPHICS_PVP_MIRRORING_DEVICES_NOT_SUPPORTED cpu_to_le32(0xC01E0508) 1598 - #define STATUS_GRAPHICS_OPM_INVALID_POINTER cpu_to_le32(0xC01E050A) 1599 - #define STATUS_GRAPHICS_OPM_INTERNAL_ERROR cpu_to_le32(0xC01E050B) 1600 - #define STATUS_GRAPHICS_OPM_INVALID_HANDLE cpu_to_le32(0xC01E050C) 1601 - #define STATUS_GRAPHICS_PVP_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE cpu_to_le32(0xC01E050D) 1602 - #define STATUS_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH cpu_to_le32(0xC01E050E) 1603 - #define STATUS_GRAPHICS_OPM_SPANNING_MODE_ENABLED cpu_to_le32(0xC01E050F) 1604 - #define STATUS_GRAPHICS_OPM_THEATER_MODE_ENABLED cpu_to_le32(0xC01E0510) 1605 - #define STATUS_GRAPHICS_PVP_HFS_FAILED cpu_to_le32(0xC01E0511) 1606 - #define STATUS_GRAPHICS_OPM_INVALID_SRM cpu_to_le32(0xC01E0512) 1607 - #define STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP cpu_to_le32(0xC01E0513) 1608 - #define STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP cpu_to_le32(0xC01E0514) 1609 - #define STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA cpu_to_le32(0xC01E0515) 1610 - #define STATUS_GRAPHICS_OPM_HDCP_SRM_NEVER_SET cpu_to_le32(0xC01E0516) 1611 - #define STATUS_GRAPHICS_OPM_RESOLUTION_TOO_HIGH cpu_to_le32(0xC01E0517) 1612 - #define STATUS_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE cpu_to_le32(0xC01E0518) 1613 - #define STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_NO_LONGER_EXISTS cpu_to_le32(0xC01E051A) 1614 - #define STATUS_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS cpu_to_le32(0xC01E051B) 1615 - #define STATUS_GRAPHICS_I2C_NOT_SUPPORTED cpu_to_le32(0xC01E0580) 1616 - #define STATUS_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST cpu_to_le32(0xC01E0581) 1617 - #define STATUS_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA cpu_to_le32(0xC01E0582) 1618 - #define STATUS_GRAPHICS_I2C_ERROR_RECEIVING_DATA cpu_to_le32(0xC01E0583) 1619 - #define STATUS_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED cpu_to_le32(0xC01E0584) 1620 - #define STATUS_GRAPHICS_DDCCI_INVALID_DATA cpu_to_le32(0xC01E0585) 1621 - #define STATUS_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE cpu_to_le32(0xC01E0586) 1622 - #define STATUS_GRAPHICS_DDCCI_INVALID_CAPABILITIES_STRING cpu_to_le32(0xC01E0587) 1623 - #define STATUS_GRAPHICS_MCA_INTERNAL_ERROR cpu_to_le32(0xC01E0588) 1624 - #define STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND cpu_to_le32(0xC01E0589) 1625 - #define STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH cpu_to_le32(0xC01E058A) 1626 - #define STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM cpu_to_le32(0xC01E058B) 1627 - #define STATUS_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE cpu_to_le32(0xC01E058C) 1628 - #define STATUS_GRAPHICS_MONITOR_NO_LONGER_EXISTS cpu_to_le32(0xC01E058D) 1629 - #define STATUS_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED cpu_to_le32(0xC01E05E0) 1630 - #define STATUS_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME cpu_to_le32(0xC01E05E1) 1631 - #define STATUS_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP cpu_to_le32(0xC01E05E2) 1632 - #define STATUS_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED cpu_to_le32(0xC01E05E3) 1633 - #define STATUS_GRAPHICS_INVALID_POINTER cpu_to_le32(0xC01E05E4) 1634 - #define STATUS_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE cpu_to_le32(0xC01E05E5) 1635 - #define STATUS_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL cpu_to_le32(0xC01E05E6) 1636 - #define STATUS_GRAPHICS_INTERNAL_ERROR cpu_to_le32(0xC01E05E7) 1637 - #define STATUS_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS cpu_to_le32(0xC01E05E8) 1638 - #define STATUS_FVE_LOCKED_VOLUME cpu_to_le32(0xC0210000) 1639 - #define STATUS_FVE_NOT_ENCRYPTED cpu_to_le32(0xC0210001) 1640 - #define STATUS_FVE_BAD_INFORMATION cpu_to_le32(0xC0210002) 1641 - #define STATUS_FVE_TOO_SMALL cpu_to_le32(0xC0210003) 1642 - #define STATUS_FVE_FAILED_WRONG_FS cpu_to_le32(0xC0210004) 1643 - #define STATUS_FVE_FAILED_BAD_FS cpu_to_le32(0xC0210005) 1644 - #define STATUS_FVE_FS_NOT_EXTENDED cpu_to_le32(0xC0210006) 1645 - #define STATUS_FVE_FS_MOUNTED cpu_to_le32(0xC0210007) 1646 - #define STATUS_FVE_NO_LICENSE cpu_to_le32(0xC0210008) 1647 - #define STATUS_FVE_ACTION_NOT_ALLOWED cpu_to_le32(0xC0210009) 1648 - #define STATUS_FVE_BAD_DATA cpu_to_le32(0xC021000A) 1649 - #define STATUS_FVE_VOLUME_NOT_BOUND cpu_to_le32(0xC021000B) 1650 - #define STATUS_FVE_NOT_DATA_VOLUME cpu_to_le32(0xC021000C) 1651 - #define STATUS_FVE_CONV_READ_ERROR cpu_to_le32(0xC021000D) 1652 - #define STATUS_FVE_CONV_WRITE_ERROR cpu_to_le32(0xC021000E) 1653 - #define STATUS_FVE_OVERLAPPED_UPDATE cpu_to_le32(0xC021000F) 1654 - #define STATUS_FVE_FAILED_SECTOR_SIZE cpu_to_le32(0xC0210010) 1655 - #define STATUS_FVE_FAILED_AUTHENTICATION cpu_to_le32(0xC0210011) 1656 - #define STATUS_FVE_NOT_OS_VOLUME cpu_to_le32(0xC0210012) 1657 - #define STATUS_FVE_KEYFILE_NOT_FOUND cpu_to_le32(0xC0210013) 1658 - #define STATUS_FVE_KEYFILE_INVALID cpu_to_le32(0xC0210014) 1659 - #define STATUS_FVE_KEYFILE_NO_VMK cpu_to_le32(0xC0210015) 1660 - #define STATUS_FVE_TPM_DISABLED cpu_to_le32(0xC0210016) 1661 - #define STATUS_FVE_TPM_SRK_AUTH_NOT_ZERO cpu_to_le32(0xC0210017) 1662 - #define STATUS_FVE_TPM_INVALID_PCR cpu_to_le32(0xC0210018) 1663 - #define STATUS_FVE_TPM_NO_VMK cpu_to_le32(0xC0210019) 1664 - #define STATUS_FVE_PIN_INVALID cpu_to_le32(0xC021001A) 1665 - #define STATUS_FVE_AUTH_INVALID_APPLICATION cpu_to_le32(0xC021001B) 1666 - #define STATUS_FVE_AUTH_INVALID_CONFIG cpu_to_le32(0xC021001C) 1667 - #define STATUS_FVE_DEBUGGER_ENABLED cpu_to_le32(0xC021001D) 1668 - #define STATUS_FVE_DRY_RUN_FAILED cpu_to_le32(0xC021001E) 1669 - #define STATUS_FVE_BAD_METADATA_POINTER cpu_to_le32(0xC021001F) 1670 - #define STATUS_FVE_OLD_METADATA_COPY cpu_to_le32(0xC0210020) 1671 - #define STATUS_FVE_REBOOT_REQUIRED cpu_to_le32(0xC0210021) 1672 - #define STATUS_FVE_RAW_ACCESS cpu_to_le32(0xC0210022) 1673 - #define STATUS_FVE_RAW_BLOCKED cpu_to_le32(0xC0210023) 1674 - #define STATUS_FWP_CALLOUT_NOT_FOUND cpu_to_le32(0xC0220001) 1675 - #define STATUS_FWP_CONDITION_NOT_FOUND cpu_to_le32(0xC0220002) 1676 - #define STATUS_FWP_FILTER_NOT_FOUND cpu_to_le32(0xC0220003) 1677 - #define STATUS_FWP_LAYER_NOT_FOUND cpu_to_le32(0xC0220004) 1678 - #define STATUS_FWP_PROVIDER_NOT_FOUND cpu_to_le32(0xC0220005) 1679 - #define STATUS_FWP_PROVIDER_CONTEXT_NOT_FOUND cpu_to_le32(0xC0220006) 1680 - #define STATUS_FWP_SUBLAYER_NOT_FOUND cpu_to_le32(0xC0220007) 1681 - #define STATUS_FWP_NOT_FOUND cpu_to_le32(0xC0220008) 1682 - #define STATUS_FWP_ALREADY_EXISTS cpu_to_le32(0xC0220009) 1683 - #define STATUS_FWP_IN_USE cpu_to_le32(0xC022000A) 1684 - #define STATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS cpu_to_le32(0xC022000B) 1685 - #define STATUS_FWP_WRONG_SESSION cpu_to_le32(0xC022000C) 1686 - #define STATUS_FWP_NO_TXN_IN_PROGRESS cpu_to_le32(0xC022000D) 1687 - #define STATUS_FWP_TXN_IN_PROGRESS cpu_to_le32(0xC022000E) 1688 - #define STATUS_FWP_TXN_ABORTED cpu_to_le32(0xC022000F) 1689 - #define STATUS_FWP_SESSION_ABORTED cpu_to_le32(0xC0220010) 1690 - #define STATUS_FWP_INCOMPATIBLE_TXN cpu_to_le32(0xC0220011) 1691 - #define STATUS_FWP_TIMEOUT cpu_to_le32(0xC0220012) 1692 - #define STATUS_FWP_NET_EVENTS_DISABLED cpu_to_le32(0xC0220013) 1693 - #define STATUS_FWP_INCOMPATIBLE_LAYER cpu_to_le32(0xC0220014) 1694 - #define STATUS_FWP_KM_CLIENTS_ONLY cpu_to_le32(0xC0220015) 1695 - #define STATUS_FWP_LIFETIME_MISMATCH cpu_to_le32(0xC0220016) 1696 - #define STATUS_FWP_BUILTIN_OBJECT cpu_to_le32(0xC0220017) 1697 - #define STATUS_FWP_TOO_MANY_BOOTTIME_FILTERS cpu_to_le32(0xC0220018) 1698 - #define STATUS_FWP_TOO_MANY_CALLOUTS cpu_to_le32(0xC0220018) 1699 - #define STATUS_FWP_NOTIFICATION_DROPPED cpu_to_le32(0xC0220019) 1700 - #define STATUS_FWP_TRAFFIC_MISMATCH cpu_to_le32(0xC022001A) 1701 - #define STATUS_FWP_INCOMPATIBLE_SA_STATE cpu_to_le32(0xC022001B) 1702 - #define STATUS_FWP_NULL_POINTER cpu_to_le32(0xC022001C) 1703 - #define STATUS_FWP_INVALID_ENUMERATOR cpu_to_le32(0xC022001D) 1704 - #define STATUS_FWP_INVALID_FLAGS cpu_to_le32(0xC022001E) 1705 - #define STATUS_FWP_INVALID_NET_MASK cpu_to_le32(0xC022001F) 1706 - #define STATUS_FWP_INVALID_RANGE cpu_to_le32(0xC0220020) 1707 - #define STATUS_FWP_INVALID_INTERVAL cpu_to_le32(0xC0220021) 1708 - #define STATUS_FWP_ZERO_LENGTH_ARRAY cpu_to_le32(0xC0220022) 1709 - #define STATUS_FWP_NULL_DISPLAY_NAME cpu_to_le32(0xC0220023) 1710 - #define STATUS_FWP_INVALID_ACTION_TYPE cpu_to_le32(0xC0220024) 1711 - #define STATUS_FWP_INVALID_WEIGHT cpu_to_le32(0xC0220025) 1712 - #define STATUS_FWP_MATCH_TYPE_MISMATCH cpu_to_le32(0xC0220026) 1713 - #define STATUS_FWP_TYPE_MISMATCH cpu_to_le32(0xC0220027) 1714 - #define STATUS_FWP_OUT_OF_BOUNDS cpu_to_le32(0xC0220028) 1715 - #define STATUS_FWP_RESERVED cpu_to_le32(0xC0220029) 1716 - #define STATUS_FWP_DUPLICATE_CONDITION cpu_to_le32(0xC022002A) 1717 - #define STATUS_FWP_DUPLICATE_KEYMOD cpu_to_le32(0xC022002B) 1718 - #define STATUS_FWP_ACTION_INCOMPATIBLE_WITH_LAYER cpu_to_le32(0xC022002C) 1719 - #define STATUS_FWP_ACTION_INCOMPATIBLE_WITH_SUBLAYER cpu_to_le32(0xC022002D) 1720 - #define STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_LAYER cpu_to_le32(0xC022002E) 1721 - #define STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_CALLOUT cpu_to_le32(0xC022002F) 1722 - #define STATUS_FWP_INCOMPATIBLE_AUTH_METHOD cpu_to_le32(0xC0220030) 1723 - #define STATUS_FWP_INCOMPATIBLE_DH_GROUP cpu_to_le32(0xC0220031) 1724 - #define STATUS_FWP_EM_NOT_SUPPORTED cpu_to_le32(0xC0220032) 1725 - #define STATUS_FWP_NEVER_MATCH cpu_to_le32(0xC0220033) 1726 - #define STATUS_FWP_PROVIDER_CONTEXT_MISMATCH cpu_to_le32(0xC0220034) 1727 - #define STATUS_FWP_INVALID_PARAMETER cpu_to_le32(0xC0220035) 1728 - #define STATUS_FWP_TOO_MANY_SUBLAYERS cpu_to_le32(0xC0220036) 1729 - #define STATUS_FWP_CALLOUT_NOTIFICATION_FAILED cpu_to_le32(0xC0220037) 1730 - #define STATUS_FWP_INCOMPATIBLE_AUTH_CONFIG cpu_to_le32(0xC0220038) 1731 - #define STATUS_FWP_INCOMPATIBLE_CIPHER_CONFIG cpu_to_le32(0xC0220039) 1732 - #define STATUS_FWP_TCPIP_NOT_READY cpu_to_le32(0xC0220100) 1733 - #define STATUS_FWP_INJECT_HANDLE_CLOSING cpu_to_le32(0xC0220101) 1734 - #define STATUS_FWP_INJECT_HANDLE_STALE cpu_to_le32(0xC0220102) 1735 - #define STATUS_FWP_CANNOT_PEND cpu_to_le32(0xC0220103) 1736 - #define STATUS_NDIS_CLOSING cpu_to_le32(0xC0230002) 1737 - #define STATUS_NDIS_BAD_VERSION cpu_to_le32(0xC0230004) 1738 - #define STATUS_NDIS_BAD_CHARACTERISTICS cpu_to_le32(0xC0230005) 1739 - #define STATUS_NDIS_ADAPTER_NOT_FOUND cpu_to_le32(0xC0230006) 1740 - #define STATUS_NDIS_OPEN_FAILED cpu_to_le32(0xC0230007) 1741 - #define STATUS_NDIS_DEVICE_FAILED cpu_to_le32(0xC0230008) 1742 - #define STATUS_NDIS_MULTICAST_FULL cpu_to_le32(0xC0230009) 1743 - #define STATUS_NDIS_MULTICAST_EXISTS cpu_to_le32(0xC023000A) 1744 - #define STATUS_NDIS_MULTICAST_NOT_FOUND cpu_to_le32(0xC023000B) 1745 - #define STATUS_NDIS_REQUEST_ABORTED cpu_to_le32(0xC023000C) 1746 - #define STATUS_NDIS_RESET_IN_PROGRESS cpu_to_le32(0xC023000D) 1747 - #define STATUS_NDIS_INVALID_PACKET cpu_to_le32(0xC023000F) 1748 - #define STATUS_NDIS_INVALID_DEVICE_REQUEST cpu_to_le32(0xC0230010) 1749 - #define STATUS_NDIS_ADAPTER_NOT_READY cpu_to_le32(0xC0230011) 1750 - #define STATUS_NDIS_INVALID_LENGTH cpu_to_le32(0xC0230014) 1751 - #define STATUS_NDIS_INVALID_DATA cpu_to_le32(0xC0230015) 1752 - #define STATUS_NDIS_BUFFER_TOO_SHORT cpu_to_le32(0xC0230016) 1753 - #define STATUS_NDIS_INVALID_OID cpu_to_le32(0xC0230017) 1754 - #define STATUS_NDIS_ADAPTER_REMOVED cpu_to_le32(0xC0230018) 1755 - #define STATUS_NDIS_UNSUPPORTED_MEDIA cpu_to_le32(0xC0230019) 1756 - #define STATUS_NDIS_GROUP_ADDRESS_IN_USE cpu_to_le32(0xC023001A) 1757 - #define STATUS_NDIS_FILE_NOT_FOUND cpu_to_le32(0xC023001B) 1758 - #define STATUS_NDIS_ERROR_READING_FILE cpu_to_le32(0xC023001C) 1759 - #define STATUS_NDIS_ALREADY_MAPPED cpu_to_le32(0xC023001D) 1760 - #define STATUS_NDIS_RESOURCE_CONFLICT cpu_to_le32(0xC023001E) 1761 - #define STATUS_NDIS_MEDIA_DISCONNECTED cpu_to_le32(0xC023001F) 1762 - #define STATUS_NDIS_INVALID_ADDRESS cpu_to_le32(0xC0230022) 1763 - #define STATUS_NDIS_PAUSED cpu_to_le32(0xC023002A) 1764 - #define STATUS_NDIS_INTERFACE_NOT_FOUND cpu_to_le32(0xC023002B) 1765 - #define STATUS_NDIS_UNSUPPORTED_REVISION cpu_to_le32(0xC023002C) 1766 - #define STATUS_NDIS_INVALID_PORT cpu_to_le32(0xC023002D) 1767 - #define STATUS_NDIS_INVALID_PORT_STATE cpu_to_le32(0xC023002E) 1768 - #define STATUS_NDIS_LOW_POWER_STATE cpu_to_le32(0xC023002F) 1769 - #define STATUS_NDIS_NOT_SUPPORTED cpu_to_le32(0xC02300BB) 1770 - #define STATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED cpu_to_le32(0xC0232000) 1771 - #define STATUS_NDIS_DOT11_MEDIA_IN_USE cpu_to_le32(0xC0232001) 1772 - #define STATUS_NDIS_DOT11_POWER_STATE_INVALID cpu_to_le32(0xC0232002) 1773 - #define STATUS_IPSEC_BAD_SPI cpu_to_le32(0xC0360001) 1774 - #define STATUS_IPSEC_SA_LIFETIME_EXPIRED cpu_to_le32(0xC0360002) 1775 - #define STATUS_IPSEC_WRONG_SA cpu_to_le32(0xC0360003) 1776 - #define STATUS_IPSEC_REPLAY_CHECK_FAILED cpu_to_le32(0xC0360004) 1777 - #define STATUS_IPSEC_INVALID_PACKET cpu_to_le32(0xC0360005) 1778 - #define STATUS_IPSEC_INTEGRITY_CHECK_FAILED cpu_to_le32(0xC0360006) 1779 - #define STATUS_IPSEC_CLEAR_TEXT_DROP cpu_to_le32(0xC0360007) 915 + #define STATUS_MCA_OCCURED cpu_to_le32(0xC000036A) // -EIO 916 + #define STATUS_DRIVER_BLOCKED_CRITICAL cpu_to_le32(0xC000036B) // -EIO 917 + #define STATUS_DRIVER_BLOCKED cpu_to_le32(0xC000036C) // -EIO 918 + #define STATUS_DRIVER_DATABASE_ERROR cpu_to_le32(0xC000036D) // -EIO 919 + #define STATUS_SYSTEM_HIVE_TOO_LARGE cpu_to_le32(0xC000036E) // -EIO 920 + #define STATUS_INVALID_IMPORT_OF_NON_DLL cpu_to_le32(0xC000036F) // -EIO 921 + #define STATUS_NO_SECRETS cpu_to_le32(0xC0000371) // -EIO 922 + #define STATUS_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY cpu_to_le32(0xC0000372) // -EACCES 923 + #define STATUS_FAILED_STACK_SWITCH cpu_to_le32(0xC0000373) // -EIO 924 + #define STATUS_HEAP_CORRUPTION cpu_to_le32(0xC0000374) // -EIO 925 + #define STATUS_SMARTCARD_WRONG_PIN cpu_to_le32(0xC0000380) // -EIO 926 + #define STATUS_SMARTCARD_CARD_BLOCKED cpu_to_le32(0xC0000381) // -EIO 927 + #define STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED cpu_to_le32(0xC0000382) // -EIO 928 + #define STATUS_SMARTCARD_NO_CARD cpu_to_le32(0xC0000383) // -EIO 929 + #define STATUS_SMARTCARD_NO_KEY_CONTAINER cpu_to_le32(0xC0000384) // -EIO 930 + #define STATUS_SMARTCARD_NO_CERTIFICATE cpu_to_le32(0xC0000385) // -EIO 931 + #define STATUS_SMARTCARD_NO_KEYSET cpu_to_le32(0xC0000386) // -EIO 932 + #define STATUS_SMARTCARD_IO_ERROR cpu_to_le32(0xC0000387) // -EIO 933 + #define STATUS_DOWNGRADE_DETECTED cpu_to_le32(0xC0000388) // -EIO 934 + #define STATUS_SMARTCARD_CERT_REVOKED cpu_to_le32(0xC0000389) // -EIO 935 + #define STATUS_ISSUING_CA_UNTRUSTED cpu_to_le32(0xC000038A) // -EIO 936 + #define STATUS_REVOCATION_OFFLINE_C cpu_to_le32(0xC000038B) // -EIO 937 + #define STATUS_PKINIT_CLIENT_FAILURE cpu_to_le32(0xC000038C) // -EIO 938 + #define STATUS_SMARTCARD_CERT_EXPIRED cpu_to_le32(0xC000038D) // -EIO 939 + #define STATUS_DRIVER_FAILED_PRIOR_UNLOAD cpu_to_le32(0xC000038E) // -EIO 940 + #define STATUS_SMARTCARD_SILENT_CONTEXT cpu_to_le32(0xC000038F) // -EIO 941 + #define STATUS_PER_USER_TRUST_QUOTA_EXCEEDED cpu_to_le32(0xC0000401) // -EDQUOT 942 + #define STATUS_ALL_USER_TRUST_QUOTA_EXCEEDED cpu_to_le32(0xC0000402) // -EDQUOT 943 + #define STATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED cpu_to_le32(0xC0000403) // -EDQUOT 944 + #define STATUS_DS_NAME_NOT_UNIQUE cpu_to_le32(0xC0000404) // -EIO 945 + #define STATUS_DS_DUPLICATE_ID_FOUND cpu_to_le32(0xC0000405) // -EIO 946 + #define STATUS_DS_GROUP_CONVERSION_ERROR cpu_to_le32(0xC0000406) // -EIO 947 + #define STATUS_VOLSNAP_PREPARE_HIBERNATE cpu_to_le32(0xC0000407) // -EIO 948 + #define STATUS_USER2USER_REQUIRED cpu_to_le32(0xC0000408) // -EIO 949 + #define STATUS_STACK_BUFFER_OVERRUN cpu_to_le32(0xC0000409) // -EIO 950 + #define STATUS_NO_S4U_PROT_SUPPORT cpu_to_le32(0xC000040A) // -EIO 951 + #define STATUS_CROSSREALM_DELEGATION_FAILURE cpu_to_le32(0xC000040B) // -EIO 952 + #define STATUS_REVOCATION_OFFLINE_KDC cpu_to_le32(0xC000040C) // -EIO 953 + #define STATUS_ISSUING_CA_UNTRUSTED_KDC cpu_to_le32(0xC000040D) // -EIO 954 + #define STATUS_KDC_CERT_EXPIRED cpu_to_le32(0xC000040E) // -EIO 955 + #define STATUS_KDC_CERT_REVOKED cpu_to_le32(0xC000040F) // -EIO 956 + #define STATUS_PARAMETER_QUOTA_EXCEEDED cpu_to_le32(0xC0000410) // -EDQUOT 957 + #define STATUS_HIBERNATION_FAILURE cpu_to_le32(0xC0000411) // -EIO 958 + #define STATUS_DELAY_LOAD_FAILED cpu_to_le32(0xC0000412) // -EIO 959 + #define STATUS_AUTHENTICATION_FIREWALL_FAILED cpu_to_le32(0xC0000413) // -EIO 960 + #define STATUS_VDM_DISALLOWED cpu_to_le32(0xC0000414) // -EIO 961 + #define STATUS_HUNG_DISPLAY_DRIVER_THREAD cpu_to_le32(0xC0000415) // -EIO 962 + #define STATUS_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE cpu_to_le32(0xC0000416) // -EIO 963 + #define STATUS_INVALID_CRUNTIME_PARAMETER cpu_to_le32(0xC0000417) // -EIO 964 + #define STATUS_NTLM_BLOCKED cpu_to_le32(0xC0000418) // -EIO 965 + #define STATUS_ASSERTION_FAILURE cpu_to_le32(0xC0000420) // -EIO 966 + #define STATUS_VERIFIER_STOP cpu_to_le32(0xC0000421) // -EIO 967 + #define STATUS_CALLBACK_POP_STACK cpu_to_le32(0xC0000423) // -EIO 968 + #define STATUS_INCOMPATIBLE_DRIVER_BLOCKED cpu_to_le32(0xC0000424) // -EIO 969 + #define STATUS_HIVE_UNLOADED cpu_to_le32(0xC0000425) // -EIO 970 + #define STATUS_COMPRESSION_DISABLED cpu_to_le32(0xC0000426) // -EIO 971 + #define STATUS_FILE_SYSTEM_LIMITATION cpu_to_le32(0xC0000427) // -EIO 972 + #define STATUS_INVALID_IMAGE_HASH cpu_to_le32(0xC0000428) // -EIO 973 + #define STATUS_NOT_CAPABLE cpu_to_le32(0xC0000429) // -EIO 974 + #define STATUS_REQUEST_OUT_OF_SEQUENCE cpu_to_le32(0xC000042A) // -EIO 975 + #define STATUS_IMPLEMENTATION_LIMIT cpu_to_le32(0xC000042B) // -EIO 976 + #define STATUS_ELEVATION_REQUIRED cpu_to_le32(0xC000042C) // -EIO 977 + #define STATUS_BEYOND_VDL cpu_to_le32(0xC0000432) // -EIO 978 + #define STATUS_ENCOUNTERED_WRITE_IN_PROGRESS cpu_to_le32(0xC0000433) // -EIO 979 + #define STATUS_PTE_CHANGED cpu_to_le32(0xC0000434) // -EIO 980 + #define STATUS_PURGE_FAILED cpu_to_le32(0xC0000435) // -EIO 981 + #define STATUS_CRED_REQUIRES_CONFIRMATION cpu_to_le32(0xC0000440) // -EIO 982 + #define STATUS_CS_ENCRYPTION_INVALID_SERVER_RESPONSE cpu_to_le32(0xC0000441) // -EIO 983 + #define STATUS_CS_ENCRYPTION_UNSUPPORTED_SERVER cpu_to_le32(0xC0000442) // -EIO 984 + #define STATUS_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE cpu_to_le32(0xC0000443) // -EIO 985 + #define STATUS_CS_ENCRYPTION_NEW_ENCRYPTED_FILE cpu_to_le32(0xC0000444) // -EIO 986 + #define STATUS_CS_ENCRYPTION_FILE_NOT_CSE cpu_to_le32(0xC0000445) // -EIO 987 + #define STATUS_INVALID_LABEL cpu_to_le32(0xC0000446) // -EIO 988 + #define STATUS_DRIVER_PROCESS_TERMINATED cpu_to_le32(0xC0000450) // -EIO 989 + #define STATUS_AMBIGUOUS_SYSTEM_DEVICE cpu_to_le32(0xC0000451) // -EIO 990 + #define STATUS_SYSTEM_DEVICE_NOT_FOUND cpu_to_le32(0xC0000452) // -EIO 991 + #define STATUS_RESTART_BOOT_APPLICATION cpu_to_le32(0xC0000453) // -EIO 992 + #define STATUS_INVALID_TASK_NAME cpu_to_le32(0xC0000500) // -EIO 993 + #define STATUS_INVALID_TASK_INDEX cpu_to_le32(0xC0000501) // -EIO 994 + #define STATUS_THREAD_ALREADY_IN_TASK cpu_to_le32(0xC0000502) // -EIO 995 + #define STATUS_CALLBACK_BYPASS cpu_to_le32(0xC0000503) // -EIO 996 + #define STATUS_SERVER_UNAVAILABLE cpu_to_le32(0xC0000466) // -EAGAIN 997 + #define STATUS_FILE_NOT_AVAILABLE cpu_to_le32(0xC0000467) // -EAGAIN 998 + #define STATUS_PORT_CLOSED cpu_to_le32(0xC0000700) // -EIO 999 + #define STATUS_MESSAGE_LOST cpu_to_le32(0xC0000701) // -EIO 1000 + #define STATUS_INVALID_MESSAGE cpu_to_le32(0xC0000702) // -EIO 1001 + #define STATUS_REQUEST_CANCELED cpu_to_le32(0xC0000703) // -EIO 1002 + #define STATUS_RECURSIVE_DISPATCH cpu_to_le32(0xC0000704) // -EIO 1003 + #define STATUS_LPC_RECEIVE_BUFFER_EXPECTED cpu_to_le32(0xC0000705) // -EIO 1004 + #define STATUS_LPC_INVALID_CONNECTION_USAGE cpu_to_le32(0xC0000706) // -EIO 1005 + #define STATUS_LPC_REQUESTS_NOT_ALLOWED cpu_to_le32(0xC0000707) // -EIO 1006 + #define STATUS_RESOURCE_IN_USE cpu_to_le32(0xC0000708) // -EIO 1007 + #define STATUS_HARDWARE_MEMORY_ERROR cpu_to_le32(0xC0000709) // -EIO 1008 + #define STATUS_THREADPOOL_HANDLE_EXCEPTION cpu_to_le32(0xC000070A) // -EIO 1009 + #define STATUS_THREADPOOL_SET_EVENT_ON_COMPLETION_FAILED cpu_to_le32(0xC000070B) // -EIO 1010 + #define STATUS_THREADPOOL_RELEASE_SEMAPHORE_ON_COMPLETION_FAILED cpu_to_le32(0xC000070C) // -EIO 1011 + #define STATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED cpu_to_le32(0xC000070D) // -EIO 1012 + #define STATUS_THREADPOOL_FREE_LIBRARY_ON_COMPLETION_FAILED cpu_to_le32(0xC000070E) // -EIO 1013 + #define STATUS_THREADPOOL_RELEASED_DURING_OPERATION cpu_to_le32(0xC000070F) // -EIO 1014 + #define STATUS_CALLBACK_RETURNED_WHILE_IMPERSONATING cpu_to_le32(0xC0000710) // -EIO 1015 + #define STATUS_APC_RETURNED_WHILE_IMPERSONATING cpu_to_le32(0xC0000711) // -EIO 1016 + #define STATUS_PROCESS_IS_PROTECTED cpu_to_le32(0xC0000712) // -EIO 1017 + #define STATUS_MCA_EXCEPTION cpu_to_le32(0xC0000713) // -EIO 1018 + #define STATUS_CERTIFICATE_MAPPING_NOT_UNIQUE cpu_to_le32(0xC0000714) // -EIO 1019 + #define STATUS_SYMLINK_CLASS_DISABLED cpu_to_le32(0xC0000715) // -EIO 1020 + #define STATUS_INVALID_IDN_NORMALIZATION cpu_to_le32(0xC0000716) // -EIO 1021 + #define STATUS_NO_UNICODE_TRANSLATION cpu_to_le32(0xC0000717) // -EIO 1022 + #define STATUS_ALREADY_REGISTERED cpu_to_le32(0xC0000718) // -EIO 1023 + #define STATUS_CONTEXT_MISMATCH cpu_to_le32(0xC0000719) // -EIO 1024 + #define STATUS_PORT_ALREADY_HAS_COMPLETION_LIST cpu_to_le32(0xC000071A) // -EIO 1025 + #define STATUS_CALLBACK_RETURNED_THREAD_PRIORITY cpu_to_le32(0xC000071B) // -EIO 1026 + #define STATUS_INVALID_THREAD cpu_to_le32(0xC000071C) // -EIO 1027 + #define STATUS_CALLBACK_RETURNED_TRANSACTION cpu_to_le32(0xC000071D) // -EIO 1028 + #define STATUS_CALLBACK_RETURNED_LDR_LOCK cpu_to_le32(0xC000071E) // -EIO 1029 + #define STATUS_CALLBACK_RETURNED_LANG cpu_to_le32(0xC000071F) // -EIO 1030 + #define STATUS_CALLBACK_RETURNED_PRI_BACK cpu_to_le32(0xC0000720) // -EIO 1031 + #define STATUS_CALLBACK_RETURNED_THREAD_AFFINITY cpu_to_le32(0xC0000721) // -EIO 1032 + #define STATUS_DISK_REPAIR_DISABLED cpu_to_le32(0xC0000800) // -EIO 1033 + #define STATUS_DS_DOMAIN_RENAME_IN_PROGRESS cpu_to_le32(0xC0000801) // -EIO 1034 + #define STATUS_DISK_QUOTA_EXCEEDED cpu_to_le32(0xC0000802) // -EDQUOT 1035 + #define STATUS_CONTENT_BLOCKED cpu_to_le32(0xC0000804) // -EIO 1036 + #define STATUS_BAD_CLUSTERS cpu_to_le32(0xC0000805) // -EIO 1037 + #define STATUS_VOLUME_DIRTY cpu_to_le32(0xC0000806) // -EIO 1038 + #define STATUS_FILE_CHECKED_OUT cpu_to_le32(0xC0000901) // -EIO 1039 + #define STATUS_CHECKOUT_REQUIRED cpu_to_le32(0xC0000902) // -EIO 1040 + #define STATUS_BAD_FILE_TYPE cpu_to_le32(0xC0000903) // -EIO 1041 + #define STATUS_FILE_TOO_LARGE cpu_to_le32(0xC0000904) // -EIO 1042 + #define STATUS_FORMS_AUTH_REQUIRED cpu_to_le32(0xC0000905) // -EIO 1043 + #define STATUS_VIRUS_INFECTED cpu_to_le32(0xC0000906) // -EIO 1044 + #define STATUS_VIRUS_DELETED cpu_to_le32(0xC0000907) // -EIO 1045 + #define STATUS_BAD_MCFG_TABLE cpu_to_le32(0xC0000908) // -EIO 1046 + #define STATUS_WOW_ASSERTION cpu_to_le32(0xC0009898) // -EIO 1047 + #define STATUS_INVALID_SIGNATURE cpu_to_le32(0xC000A000) // -EIO 1048 + #define STATUS_HMAC_NOT_SUPPORTED cpu_to_le32(0xC000A001) // -EIO 1049 + #define STATUS_IPSEC_QUEUE_OVERFLOW cpu_to_le32(0xC000A010) // -EIO 1050 + #define STATUS_ND_QUEUE_OVERFLOW cpu_to_le32(0xC000A011) // -EIO 1051 + #define STATUS_HOPLIMIT_EXCEEDED cpu_to_le32(0xC000A012) // -EIO 1052 + #define STATUS_PROTOCOL_NOT_SUPPORTED cpu_to_le32(0xC000A013) // -EOPNOTSUPP 1053 + #define STATUS_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED cpu_to_le32(0xC000A080) // -EIO 1054 + #define STATUS_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR cpu_to_le32(0xC000A081) // -EIO 1055 + #define STATUS_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR cpu_to_le32(0xC000A082) // -EIO 1056 + #define STATUS_XML_PARSE_ERROR cpu_to_le32(0xC000A083) // -EIO 1057 + #define STATUS_XMLDSIG_ERROR cpu_to_le32(0xC000A084) // -EIO 1058 + #define STATUS_WRONG_COMPARTMENT cpu_to_le32(0xC000A085) // -EIO 1059 + #define STATUS_AUTHIP_FAILURE cpu_to_le32(0xC000A086) // -EIO 1060 + #define DBG_NO_STATE_CHANGE cpu_to_le32(0xC0010001) // -EIO 1061 + #define DBG_APP_NOT_IDLE cpu_to_le32(0xC0010002) // -EIO 1062 + #define RPC_NT_INVALID_STRING_BINDING cpu_to_le32(0xC0020001) // -EIO 1063 + #define RPC_NT_WRONG_KIND_OF_BINDING cpu_to_le32(0xC0020002) // -EIO 1064 + #define RPC_NT_INVALID_BINDING cpu_to_le32(0xC0020003) // -EIO 1065 + #define RPC_NT_PROTSEQ_NOT_SUPPORTED cpu_to_le32(0xC0020004) // -EOPNOTSUPP 1066 + #define RPC_NT_INVALID_RPC_PROTSEQ cpu_to_le32(0xC0020005) // -EIO 1067 + #define RPC_NT_INVALID_STRING_UUID cpu_to_le32(0xC0020006) // -EIO 1068 + #define RPC_NT_INVALID_ENDPOINT_FORMAT cpu_to_le32(0xC0020007) // -EIO 1069 + #define RPC_NT_INVALID_NET_ADDR cpu_to_le32(0xC0020008) // -EIO 1070 + #define RPC_NT_NO_ENDPOINT_FOUND cpu_to_le32(0xC0020009) // -EIO 1071 + #define RPC_NT_INVALID_TIMEOUT cpu_to_le32(0xC002000A) // -EINVAL 1072 + #define RPC_NT_OBJECT_NOT_FOUND cpu_to_le32(0xC002000B) // -ENOENT 1073 + #define RPC_NT_ALREADY_REGISTERED cpu_to_le32(0xC002000C) // -EIO 1074 + #define RPC_NT_TYPE_ALREADY_REGISTERED cpu_to_le32(0xC002000D) // -EIO 1075 + #define RPC_NT_ALREADY_LISTENING cpu_to_le32(0xC002000E) // -EIO 1076 + #define RPC_NT_NO_PROTSEQS_REGISTERED cpu_to_le32(0xC002000F) // -EIO 1077 + #define RPC_NT_NOT_LISTENING cpu_to_le32(0xC0020010) // -EIO 1078 + #define RPC_NT_UNKNOWN_MGR_TYPE cpu_to_le32(0xC0020011) // -EIO 1079 + #define RPC_NT_UNKNOWN_IF cpu_to_le32(0xC0020012) // -EIO 1080 + #define RPC_NT_NO_BINDINGS cpu_to_le32(0xC0020013) // -EIO 1081 + #define RPC_NT_NO_PROTSEQS cpu_to_le32(0xC0020014) // -EIO 1082 + #define RPC_NT_CANT_CREATE_ENDPOINT cpu_to_le32(0xC0020015) // -EIO 1083 + #define RPC_NT_OUT_OF_RESOURCES cpu_to_le32(0xC0020016) // -EIO 1084 + #define RPC_NT_SERVER_UNAVAILABLE cpu_to_le32(0xC0020017) // -EIO 1085 + #define RPC_NT_SERVER_TOO_BUSY cpu_to_le32(0xC0020018) // -EBUSY 1086 + #define RPC_NT_INVALID_NETWORK_OPTIONS cpu_to_le32(0xC0020019) // -EIO 1087 + #define RPC_NT_NO_CALL_ACTIVE cpu_to_le32(0xC002001A) // -EIO 1088 + #define RPC_NT_CALL_FAILED cpu_to_le32(0xC002001B) // -EIO 1089 + #define RPC_NT_CALL_FAILED_DNE cpu_to_le32(0xC002001C) // -EIO 1090 + #define RPC_NT_PROTOCOL_ERROR cpu_to_le32(0xC002001D) // -EIO 1091 + #define RPC_NT_UNSUPPORTED_TRANS_SYN cpu_to_le32(0xC002001F) // -EIO 1092 + #define RPC_NT_UNSUPPORTED_TYPE cpu_to_le32(0xC0020021) // -EIO 1093 + #define RPC_NT_INVALID_TAG cpu_to_le32(0xC0020022) // -EIO 1094 + #define RPC_NT_INVALID_BOUND cpu_to_le32(0xC0020023) // -EIO 1095 + #define RPC_NT_NO_ENTRY_NAME cpu_to_le32(0xC0020024) // -EIO 1096 + #define RPC_NT_INVALID_NAME_SYNTAX cpu_to_le32(0xC0020025) // -EIO 1097 + #define RPC_NT_UNSUPPORTED_NAME_SYNTAX cpu_to_le32(0xC0020026) // -EIO 1098 + #define RPC_NT_UUID_NO_ADDRESS cpu_to_le32(0xC0020028) // -EIO 1099 + #define RPC_NT_DUPLICATE_ENDPOINT cpu_to_le32(0xC0020029) // -ENOTUNIQ 1100 + #define RPC_NT_UNKNOWN_AUTHN_TYPE cpu_to_le32(0xC002002A) // -EIO 1101 + #define RPC_NT_MAX_CALLS_TOO_SMALL cpu_to_le32(0xC002002B) // -EIO 1102 + #define RPC_NT_STRING_TOO_LONG cpu_to_le32(0xC002002C) // -EIO 1103 + #define RPC_NT_PROTSEQ_NOT_FOUND cpu_to_le32(0xC002002D) // -EIO 1104 + #define RPC_NT_PROCNUM_OUT_OF_RANGE cpu_to_le32(0xC002002E) // -EIO 1105 + #define RPC_NT_BINDING_HAS_NO_AUTH cpu_to_le32(0xC002002F) // -EIO 1106 + #define RPC_NT_UNKNOWN_AUTHN_SERVICE cpu_to_le32(0xC0020030) // -EIO 1107 + #define RPC_NT_UNKNOWN_AUTHN_LEVEL cpu_to_le32(0xC0020031) // -EIO 1108 + #define RPC_NT_INVALID_AUTH_IDENTITY cpu_to_le32(0xC0020032) // -EIO 1109 + #define RPC_NT_UNKNOWN_AUTHZ_SERVICE cpu_to_le32(0xC0020033) // -EIO 1110 + #define EPT_NT_INVALID_ENTRY cpu_to_le32(0xC0020034) // -EIO 1111 + #define EPT_NT_CANT_PERFORM_OP cpu_to_le32(0xC0020035) // -EIO 1112 + #define EPT_NT_NOT_REGISTERED cpu_to_le32(0xC0020036) // -EIO 1113 + #define RPC_NT_NOTHING_TO_EXPORT cpu_to_le32(0xC0020037) // -EIO 1114 + #define RPC_NT_INCOMPLETE_NAME cpu_to_le32(0xC0020038) // -EIO 1115 + #define RPC_NT_INVALID_VERS_OPTION cpu_to_le32(0xC0020039) // -EIO 1116 + #define RPC_NT_NO_MORE_MEMBERS cpu_to_le32(0xC002003A) // -EIO 1117 + #define RPC_NT_NOT_ALL_OBJS_UNEXPORTED cpu_to_le32(0xC002003B) // -EIO 1118 + #define RPC_NT_INTERFACE_NOT_FOUND cpu_to_le32(0xC002003C) // -EIO 1119 + #define RPC_NT_ENTRY_ALREADY_EXISTS cpu_to_le32(0xC002003D) // -EIO 1120 + #define RPC_NT_ENTRY_NOT_FOUND cpu_to_le32(0xC002003E) // -EIO 1121 + #define RPC_NT_NAME_SERVICE_UNAVAILABLE cpu_to_le32(0xC002003F) // -EIO 1122 + #define RPC_NT_INVALID_NAF_ID cpu_to_le32(0xC0020040) // -EIO 1123 + #define RPC_NT_CANNOT_SUPPORT cpu_to_le32(0xC0020041) // -EOPNOTSUPP 1124 + #define RPC_NT_NO_CONTEXT_AVAILABLE cpu_to_le32(0xC0020042) // -EIO 1125 + #define RPC_NT_INTERNAL_ERROR cpu_to_le32(0xC0020043) // -EIO 1126 + #define RPC_NT_ZERO_DIVIDE cpu_to_le32(0xC0020044) // -EIO 1127 + #define RPC_NT_ADDRESS_ERROR cpu_to_le32(0xC0020045) // -EIO 1128 + #define RPC_NT_FP_DIV_ZERO cpu_to_le32(0xC0020046) // -EIO 1129 + #define RPC_NT_FP_UNDERFLOW cpu_to_le32(0xC0020047) // -EIO 1130 + #define RPC_NT_FP_OVERFLOW cpu_to_le32(0xC0020048) // -EIO 1131 + #define RPC_NT_CALL_IN_PROGRESS cpu_to_le32(0xC0020049) // -EIO 1132 + #define RPC_NT_NO_MORE_BINDINGS cpu_to_le32(0xC002004A) // -EIO 1133 + #define RPC_NT_GROUP_MEMBER_NOT_FOUND cpu_to_le32(0xC002004B) // -EIO 1134 + #define EPT_NT_CANT_CREATE cpu_to_le32(0xC002004C) // -EIO 1135 + #define RPC_NT_INVALID_OBJECT cpu_to_le32(0xC002004D) // -EIO 1136 + #define RPC_NT_NO_INTERFACES cpu_to_le32(0xC002004F) // -EIO 1137 + #define RPC_NT_CALL_CANCELLED cpu_to_le32(0xC0020050) // -EIO 1138 + #define RPC_NT_BINDING_INCOMPLETE cpu_to_le32(0xC0020051) // -EIO 1139 + #define RPC_NT_COMM_FAILURE cpu_to_le32(0xC0020052) // -EIO 1140 + #define RPC_NT_UNSUPPORTED_AUTHN_LEVEL cpu_to_le32(0xC0020053) // -EIO 1141 + #define RPC_NT_NO_PRINC_NAME cpu_to_le32(0xC0020054) // -EIO 1142 + #define RPC_NT_NOT_RPC_ERROR cpu_to_le32(0xC0020055) // -EIO 1143 + #define RPC_NT_SEC_PKG_ERROR cpu_to_le32(0xC0020057) // -EIO 1144 + #define RPC_NT_NOT_CANCELLED cpu_to_le32(0xC0020058) // -EIO 1145 + #define RPC_NT_INVALID_ASYNC_HANDLE cpu_to_le32(0xC0020062) // -EIO 1146 + #define RPC_NT_INVALID_ASYNC_CALL cpu_to_le32(0xC0020063) // -EIO 1147 + #define RPC_NT_PROXY_ACCESS_DENIED cpu_to_le32(0xC0020064) // -EACCES 1148 + #define RPC_NT_NO_MORE_ENTRIES cpu_to_le32(0xC0030001) // -EIO 1149 + #define RPC_NT_SS_CHAR_TRANS_OPEN_FAIL cpu_to_le32(0xC0030002) // -EIO 1150 + #define RPC_NT_SS_CHAR_TRANS_SHORT_FILE cpu_to_le32(0xC0030003) // -EIO 1151 + #define RPC_NT_SS_IN_NULL_CONTEXT cpu_to_le32(0xC0030004) // -EIO 1152 + #define RPC_NT_SS_CONTEXT_MISMATCH cpu_to_le32(0xC0030005) // -EIO 1153 + #define RPC_NT_SS_CONTEXT_DAMAGED cpu_to_le32(0xC0030006) // -EIO 1154 + #define RPC_NT_SS_HANDLES_MISMATCH cpu_to_le32(0xC0030007) // -EIO 1155 + #define RPC_NT_SS_CANNOT_GET_CALL_HANDLE cpu_to_le32(0xC0030008) // -EIO 1156 + #define RPC_NT_NULL_REF_POINTER cpu_to_le32(0xC0030009) // -EIO 1157 + #define RPC_NT_ENUM_VALUE_OUT_OF_RANGE cpu_to_le32(0xC003000A) // -EIO 1158 + #define RPC_NT_BYTE_COUNT_TOO_SMALL cpu_to_le32(0xC003000B) // -EIO 1159 + #define RPC_NT_BAD_STUB_DATA cpu_to_le32(0xC003000C) // -EIO 1160 + #define RPC_NT_INVALID_ES_ACTION cpu_to_le32(0xC0030059) // -EIO 1161 + #define RPC_NT_WRONG_ES_VERSION cpu_to_le32(0xC003005A) // -EIO 1162 + #define RPC_NT_WRONG_STUB_VERSION cpu_to_le32(0xC003005B) // -EIO 1163 + #define RPC_NT_INVALID_PIPE_OBJECT cpu_to_le32(0xC003005C) // -EIO 1164 + #define RPC_NT_INVALID_PIPE_OPERATION cpu_to_le32(0xC003005D) // -EIO 1165 + #define RPC_NT_WRONG_PIPE_VERSION cpu_to_le32(0xC003005E) // -EIO 1166 + #define RPC_NT_PIPE_CLOSED cpu_to_le32(0xC003005F) // -EIO 1167 + #define RPC_NT_PIPE_DISCIPLINE_ERROR cpu_to_le32(0xC0030060) // -EIO 1168 + #define RPC_NT_PIPE_EMPTY cpu_to_le32(0xC0030061) // -EIO 1169 + #define STATUS_PNP_BAD_MPS_TABLE cpu_to_le32(0xC0040035) // -EIO 1170 + #define STATUS_PNP_TRANSLATION_FAILED cpu_to_le32(0xC0040036) // -EIO 1171 + #define STATUS_PNP_IRQ_TRANSLATION_FAILED cpu_to_le32(0xC0040037) // -EIO 1172 + #define STATUS_PNP_INVALID_ID cpu_to_le32(0xC0040038) // -EIO 1173 + #define STATUS_IO_REISSUE_AS_CACHED cpu_to_le32(0xC0040039) // -EIO 1174 + #define STATUS_CTX_WINSTATION_NAME_INVALID cpu_to_le32(0xC00A0001) // -EIO 1175 + #define STATUS_CTX_INVALID_PD cpu_to_le32(0xC00A0002) // -EIO 1176 + #define STATUS_CTX_PD_NOT_FOUND cpu_to_le32(0xC00A0003) // -EIO 1177 + #define STATUS_CTX_CLOSE_PENDING cpu_to_le32(0xC00A0006) // -EIO 1178 + #define STATUS_CTX_NO_OUTBUF cpu_to_le32(0xC00A0007) // -EIO 1179 + #define STATUS_CTX_MODEM_INF_NOT_FOUND cpu_to_le32(0xC00A0008) // -EIO 1180 + #define STATUS_CTX_INVALID_MODEMNAME cpu_to_le32(0xC00A0009) // -EIO 1181 + #define STATUS_CTX_RESPONSE_ERROR cpu_to_le32(0xC00A000A) // -EIO 1182 + #define STATUS_CTX_MODEM_RESPONSE_TIMEOUT cpu_to_le32(0xC00A000B) // -ETIMEDOUT 1183 + #define STATUS_CTX_MODEM_RESPONSE_NO_CARRIER cpu_to_le32(0xC00A000C) // -EIO 1184 + #define STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE cpu_to_le32(0xC00A000D) // -EIO 1185 + #define STATUS_CTX_MODEM_RESPONSE_BUSY cpu_to_le32(0xC00A000E) // -EBUSY 1186 + #define STATUS_CTX_MODEM_RESPONSE_VOICE cpu_to_le32(0xC00A000F) // -EIO 1187 + #define STATUS_CTX_TD_ERROR cpu_to_le32(0xC00A0010) // -EIO 1188 + #define STATUS_CTX_LICENSE_CLIENT_INVALID cpu_to_le32(0xC00A0012) // -EIO 1189 + #define STATUS_CTX_LICENSE_NOT_AVAILABLE cpu_to_le32(0xC00A0013) // -EIO 1190 + #define STATUS_CTX_LICENSE_EXPIRED cpu_to_le32(0xC00A0014) // -EIO 1191 + #define STATUS_CTX_WINSTATION_NOT_FOUND cpu_to_le32(0xC00A0015) // -EIO 1192 + #define STATUS_CTX_WINSTATION_NAME_COLLISION cpu_to_le32(0xC00A0016) // -EIO 1193 + #define STATUS_CTX_WINSTATION_BUSY cpu_to_le32(0xC00A0017) // -EBUSY 1194 + #define STATUS_CTX_BAD_VIDEO_MODE cpu_to_le32(0xC00A0018) // -EIO 1195 + #define STATUS_CTX_GRAPHICS_INVALID cpu_to_le32(0xC00A0022) // -EIO 1196 + #define STATUS_CTX_NOT_CONSOLE cpu_to_le32(0xC00A0024) // -EIO 1197 + #define STATUS_CTX_CLIENT_QUERY_TIMEOUT cpu_to_le32(0xC00A0026) // -EIO 1198 + #define STATUS_CTX_CONSOLE_DISCONNECT cpu_to_le32(0xC00A0027) // -EIO 1199 + #define STATUS_CTX_CONSOLE_CONNECT cpu_to_le32(0xC00A0028) // -EIO 1200 + #define STATUS_CTX_SHADOW_DENIED cpu_to_le32(0xC00A002A) // -EIO 1201 + #define STATUS_CTX_WINSTATION_ACCESS_DENIED cpu_to_le32(0xC00A002B) // -EACCES 1202 + #define STATUS_CTX_INVALID_WD cpu_to_le32(0xC00A002E) // -EIO 1203 + #define STATUS_CTX_WD_NOT_FOUND cpu_to_le32(0xC00A002F) // -EIO 1204 + #define STATUS_CTX_SHADOW_INVALID cpu_to_le32(0xC00A0030) // -EIO 1205 + #define STATUS_CTX_SHADOW_DISABLED cpu_to_le32(0xC00A0031) // -EIO 1206 + #define STATUS_RDP_PROTOCOL_ERROR cpu_to_le32(0xC00A0032) // -EIO 1207 + #define STATUS_CTX_CLIENT_LICENSE_NOT_SET cpu_to_le32(0xC00A0033) // -EIO 1208 + #define STATUS_CTX_CLIENT_LICENSE_IN_USE cpu_to_le32(0xC00A0034) // -EIO 1209 + #define STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE cpu_to_le32(0xC00A0035) // -EIO 1210 + #define STATUS_CTX_SHADOW_NOT_RUNNING cpu_to_le32(0xC00A0036) // -EIO 1211 + #define STATUS_CTX_LOGON_DISABLED cpu_to_le32(0xC00A0037) // -EIO 1212 + #define STATUS_CTX_SECURITY_LAYER_ERROR cpu_to_le32(0xC00A0038) // -EIO 1213 + #define STATUS_TS_INCOMPATIBLE_SESSIONS cpu_to_le32(0xC00A0039) // -EIO 1214 + #define STATUS_MUI_FILE_NOT_FOUND cpu_to_le32(0xC00B0001) // -EIO 1215 + #define STATUS_MUI_INVALID_FILE cpu_to_le32(0xC00B0002) // -EIO 1216 + #define STATUS_MUI_INVALID_RC_CONFIG cpu_to_le32(0xC00B0003) // -EIO 1217 + #define STATUS_MUI_INVALID_LOCALE_NAME cpu_to_le32(0xC00B0004) // -EIO 1218 + #define STATUS_MUI_INVALID_ULTIMATEFALLBACK_NAME cpu_to_le32(0xC00B0005) // -EIO 1219 + #define STATUS_MUI_FILE_NOT_LOADED cpu_to_le32(0xC00B0006) // -EIO 1220 + #define STATUS_RESOURCE_ENUM_USER_STOP cpu_to_le32(0xC00B0007) // -EIO 1221 + #define STATUS_CLUSTER_INVALID_NODE cpu_to_le32(0xC0130001) // -EIO 1222 + #define STATUS_CLUSTER_NODE_EXISTS cpu_to_le32(0xC0130002) // -EIO 1223 + #define STATUS_CLUSTER_JOIN_IN_PROGRESS cpu_to_le32(0xC0130003) // -EIO 1224 + #define STATUS_CLUSTER_NODE_NOT_FOUND cpu_to_le32(0xC0130004) // -EIO 1225 + #define STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND cpu_to_le32(0xC0130005) // -EIO 1226 + #define STATUS_CLUSTER_NETWORK_EXISTS cpu_to_le32(0xC0130006) // -EIO 1227 + #define STATUS_CLUSTER_NETWORK_NOT_FOUND cpu_to_le32(0xC0130007) // -EIO 1228 + #define STATUS_CLUSTER_NETINTERFACE_EXISTS cpu_to_le32(0xC0130008) // -EIO 1229 + #define STATUS_CLUSTER_NETINTERFACE_NOT_FOUND cpu_to_le32(0xC0130009) // -EIO 1230 + #define STATUS_CLUSTER_INVALID_REQUEST cpu_to_le32(0xC013000A) // -EIO 1231 + #define STATUS_CLUSTER_INVALID_NETWORK_PROVIDER cpu_to_le32(0xC013000B) // -EIO 1232 + #define STATUS_CLUSTER_NODE_DOWN cpu_to_le32(0xC013000C) // -EIO 1233 + #define STATUS_CLUSTER_NODE_UNREACHABLE cpu_to_le32(0xC013000D) // -EIO 1234 + #define STATUS_CLUSTER_NODE_NOT_MEMBER cpu_to_le32(0xC013000E) // -EIO 1235 + #define STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS cpu_to_le32(0xC013000F) // -EIO 1236 + #define STATUS_CLUSTER_INVALID_NETWORK cpu_to_le32(0xC0130010) // -EIO 1237 + #define STATUS_CLUSTER_NO_NET_ADAPTERS cpu_to_le32(0xC0130011) // -EIO 1238 + #define STATUS_CLUSTER_NODE_UP cpu_to_le32(0xC0130012) // -EIO 1239 + #define STATUS_CLUSTER_NODE_PAUSED cpu_to_le32(0xC0130013) // -EIO 1240 + #define STATUS_CLUSTER_NODE_NOT_PAUSED cpu_to_le32(0xC0130014) // -EIO 1241 + #define STATUS_CLUSTER_NO_SECURITY_CONTEXT cpu_to_le32(0xC0130015) // -EIO 1242 + #define STATUS_CLUSTER_NETWORK_NOT_INTERNAL cpu_to_le32(0xC0130016) // -EIO 1243 + #define STATUS_CLUSTER_POISONED cpu_to_le32(0xC0130017) // -EIO 1244 + #define STATUS_ACPI_INVALID_OPCODE cpu_to_le32(0xC0140001) // -EIO 1245 + #define STATUS_ACPI_STACK_OVERFLOW cpu_to_le32(0xC0140002) // -EIO 1246 + #define STATUS_ACPI_ASSERT_FAILED cpu_to_le32(0xC0140003) // -EIO 1247 + #define STATUS_ACPI_INVALID_INDEX cpu_to_le32(0xC0140004) // -EIO 1248 + #define STATUS_ACPI_INVALID_ARGUMENT cpu_to_le32(0xC0140005) // -EIO 1249 + #define STATUS_ACPI_FATAL cpu_to_le32(0xC0140006) // -EIO 1250 + #define STATUS_ACPI_INVALID_SUPERNAME cpu_to_le32(0xC0140007) // -EIO 1251 + #define STATUS_ACPI_INVALID_ARGTYPE cpu_to_le32(0xC0140008) // -EIO 1252 + #define STATUS_ACPI_INVALID_OBJTYPE cpu_to_le32(0xC0140009) // -EIO 1253 + #define STATUS_ACPI_INVALID_TARGETTYPE cpu_to_le32(0xC014000A) // -EIO 1254 + #define STATUS_ACPI_INCORRECT_ARGUMENT_COUNT cpu_to_le32(0xC014000B) // -EIO 1255 + #define STATUS_ACPI_ADDRESS_NOT_MAPPED cpu_to_le32(0xC014000C) // -EIO 1256 + #define STATUS_ACPI_INVALID_EVENTTYPE cpu_to_le32(0xC014000D) // -EIO 1257 + #define STATUS_ACPI_HANDLER_COLLISION cpu_to_le32(0xC014000E) // -EIO 1258 + #define STATUS_ACPI_INVALID_DATA cpu_to_le32(0xC014000F) // -EIO 1259 + #define STATUS_ACPI_INVALID_REGION cpu_to_le32(0xC0140010) // -EIO 1260 + #define STATUS_ACPI_INVALID_ACCESS_SIZE cpu_to_le32(0xC0140011) // -EIO 1261 + #define STATUS_ACPI_ACQUIRE_GLOBAL_LOCK cpu_to_le32(0xC0140012) // -EIO 1262 + #define STATUS_ACPI_ALREADY_INITIALIZED cpu_to_le32(0xC0140013) // -EIO 1263 + #define STATUS_ACPI_NOT_INITIALIZED cpu_to_le32(0xC0140014) // -EIO 1264 + #define STATUS_ACPI_INVALID_MUTEX_LEVEL cpu_to_le32(0xC0140015) // -EIO 1265 + #define STATUS_ACPI_MUTEX_NOT_OWNED cpu_to_le32(0xC0140016) // -EIO 1266 + #define STATUS_ACPI_MUTEX_NOT_OWNER cpu_to_le32(0xC0140017) // -EIO 1267 + #define STATUS_ACPI_RS_ACCESS cpu_to_le32(0xC0140018) // -EIO 1268 + #define STATUS_ACPI_INVALID_TABLE cpu_to_le32(0xC0140019) // -EIO 1269 + #define STATUS_ACPI_REG_HANDLER_FAILED cpu_to_le32(0xC0140020) // -EIO 1270 + #define STATUS_ACPI_POWER_REQUEST_FAILED cpu_to_le32(0xC0140021) // -EIO 1271 + #define STATUS_SXS_SECTION_NOT_FOUND cpu_to_le32(0xC0150001) // -EIO 1272 + #define STATUS_SXS_CANT_GEN_ACTCTX cpu_to_le32(0xC0150002) // -EIO 1273 + #define STATUS_SXS_INVALID_ACTCTXDATA_FORMAT cpu_to_le32(0xC0150003) // -EIO 1274 + #define STATUS_SXS_ASSEMBLY_NOT_FOUND cpu_to_le32(0xC0150004) // -EIO 1275 + #define STATUS_SXS_MANIFEST_FORMAT_ERROR cpu_to_le32(0xC0150005) // -EIO 1276 + #define STATUS_SXS_MANIFEST_PARSE_ERROR cpu_to_le32(0xC0150006) // -EIO 1277 + #define STATUS_SXS_ACTIVATION_CONTEXT_DISABLED cpu_to_le32(0xC0150007) // -EIO 1278 + #define STATUS_SXS_KEY_NOT_FOUND cpu_to_le32(0xC0150008) // -EIO 1279 + #define STATUS_SXS_VERSION_CONFLICT cpu_to_le32(0xC0150009) // -EIO 1280 + #define STATUS_SXS_WRONG_SECTION_TYPE cpu_to_le32(0xC015000A) // -EIO 1281 + #define STATUS_SXS_THREAD_QUERIES_DISABLED cpu_to_le32(0xC015000B) // -EIO 1282 + #define STATUS_SXS_ASSEMBLY_MISSING cpu_to_le32(0xC015000C) // -EIO 1283 + #define STATUS_SXS_PROCESS_DEFAULT_ALREADY_SET cpu_to_le32(0xC015000E) // -EIO 1284 + #define STATUS_SXS_EARLY_DEACTIVATION cpu_to_le32(0xC015000F) // -EIO 1285 + #define STATUS_SXS_INVALID_DEACTIVATION cpu_to_le32(0xC0150010) // -EIO 1286 + #define STATUS_SXS_MULTIPLE_DEACTIVATION cpu_to_le32(0xC0150011) // -EIO 1287 + #define STATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY cpu_to_le32(0xC0150012) // -EIO 1288 + #define STATUS_SXS_PROCESS_TERMINATION_REQUESTED cpu_to_le32(0xC0150013) // -EIO 1289 + #define STATUS_SXS_CORRUPT_ACTIVATION_STACK cpu_to_le32(0xC0150014) // -EIO 1290 + #define STATUS_SXS_CORRUPTION cpu_to_le32(0xC0150015) // -EIO 1291 + #define STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE cpu_to_le32(0xC0150016) // -EIO 1292 + #define STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME cpu_to_le32(0xC0150017) // -EIO 1293 + #define STATUS_SXS_IDENTITY_DUPLICATE_ATTRIBUTE cpu_to_le32(0xC0150018) // -EIO 1294 + #define STATUS_SXS_IDENTITY_PARSE_ERROR cpu_to_le32(0xC0150019) // -EIO 1295 + #define STATUS_SXS_COMPONENT_STORE_CORRUPT cpu_to_le32(0xC015001A) // -EIO 1296 + #define STATUS_SXS_FILE_HASH_MISMATCH cpu_to_le32(0xC015001B) // -EIO 1297 + #define STATUS_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT cpu_to_le32(0xC015001C) // -EIO 1298 + #define STATUS_SXS_IDENTITIES_DIFFERENT cpu_to_le32(0xC015001D) // -EIO 1299 + #define STATUS_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT cpu_to_le32(0xC015001E) // -EIO 1300 + #define STATUS_SXS_FILE_NOT_PART_OF_ASSEMBLY cpu_to_le32(0xC015001F) // -EIO 1301 + #define STATUS_ADVANCED_INSTALLER_FAILED cpu_to_le32(0xC0150020) // -EIO 1302 + #define STATUS_XML_ENCODING_MISMATCH cpu_to_le32(0xC0150021) // -EIO 1303 + #define STATUS_SXS_MANIFEST_TOO_BIG cpu_to_le32(0xC0150022) // -EIO 1304 + #define STATUS_SXS_SETTING_NOT_REGISTERED cpu_to_le32(0xC0150023) // -EIO 1305 + #define STATUS_SXS_TRANSACTION_CLOSURE_INCOMPLETE cpu_to_le32(0xC0150024) // -EIO 1306 + #define STATUS_SMI_PRIMITIVE_INSTALLER_FAILED cpu_to_le32(0xC0150025) // -EIO 1307 + #define STATUS_GENERIC_COMMAND_FAILED cpu_to_le32(0xC0150026) // -EIO 1308 + #define STATUS_SXS_FILE_HASH_MISSING cpu_to_le32(0xC0150027) // -EIO 1309 + #define STATUS_TRANSACTIONAL_CONFLICT cpu_to_le32(0xC0190001) // -EIO 1310 + #define STATUS_INVALID_TRANSACTION cpu_to_le32(0xC0190002) // -EIO 1311 + #define STATUS_TRANSACTION_NOT_ACTIVE cpu_to_le32(0xC0190003) // -EIO 1312 + #define STATUS_TM_INITIALIZATION_FAILED cpu_to_le32(0xC0190004) // -EIO 1313 + #define STATUS_RM_NOT_ACTIVE cpu_to_le32(0xC0190005) // -EIO 1314 + #define STATUS_RM_METADATA_CORRUPT cpu_to_le32(0xC0190006) // -EIO 1315 + #define STATUS_TRANSACTION_NOT_JOINED cpu_to_le32(0xC0190007) // -EIO 1316 + #define STATUS_DIRECTORY_NOT_RM cpu_to_le32(0xC0190008) // -EIO 1317 + #define STATUS_TRANSACTIONS_UNSUPPORTED_REMOTE cpu_to_le32(0xC019000A) // -EIO 1318 + #define STATUS_LOG_RESIZE_INVALID_SIZE cpu_to_le32(0xC019000B) // -EIO 1319 + #define STATUS_REMOTE_FILE_VERSION_MISMATCH cpu_to_le32(0xC019000C) // -EIO 1320 + #define STATUS_CRM_PROTOCOL_ALREADY_EXISTS cpu_to_le32(0xC019000F) // -EIO 1321 + #define STATUS_TRANSACTION_PROPAGATION_FAILED cpu_to_le32(0xC0190010) // -EIO 1322 + #define STATUS_CRM_PROTOCOL_NOT_FOUND cpu_to_le32(0xC0190011) // -EIO 1323 + #define STATUS_TRANSACTION_SUPERIOR_EXISTS cpu_to_le32(0xC0190012) // -EIO 1324 + #define STATUS_TRANSACTION_REQUEST_NOT_VALID cpu_to_le32(0xC0190013) // -EIO 1325 + #define STATUS_TRANSACTION_NOT_REQUESTED cpu_to_le32(0xC0190014) // -EIO 1326 + #define STATUS_TRANSACTION_ALREADY_ABORTED cpu_to_le32(0xC0190015) // -EIO 1327 + #define STATUS_TRANSACTION_ALREADY_COMMITTED cpu_to_le32(0xC0190016) // -EIO 1328 + #define STATUS_TRANSACTION_INVALID_MARSHALL_BUFFER cpu_to_le32(0xC0190017) // -EIO 1329 + #define STATUS_CURRENT_TRANSACTION_NOT_VALID cpu_to_le32(0xC0190018) // -EIO 1330 + #define STATUS_LOG_GROWTH_FAILED cpu_to_le32(0xC0190019) // -EIO 1331 + #define STATUS_OBJECT_NO_LONGER_EXISTS cpu_to_le32(0xC0190021) // -EIO 1332 + #define STATUS_STREAM_MINIVERSION_NOT_FOUND cpu_to_le32(0xC0190022) // -EIO 1333 + #define STATUS_STREAM_MINIVERSION_NOT_VALID cpu_to_le32(0xC0190023) // -EIO 1334 + #define STATUS_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION cpu_to_le32(0xC0190024) // -EIO 1335 + #define STATUS_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT cpu_to_le32(0xC0190025) // -EIO 1336 + #define STATUS_CANT_CREATE_MORE_STREAM_MINIVERSIONS cpu_to_le32(0xC0190026) // -EIO 1337 + #define STATUS_HANDLE_NO_LONGER_VALID cpu_to_le32(0xC0190028) // -EIO 1338 + #define STATUS_LOG_CORRUPTION_DETECTED cpu_to_le32(0xC0190030) // -EIO 1339 + #define STATUS_RM_DISCONNECTED cpu_to_le32(0xC0190032) // -EIO 1340 + #define STATUS_ENLISTMENT_NOT_SUPERIOR cpu_to_le32(0xC0190033) // -EIO 1341 + #define STATUS_FILE_IDENTITY_NOT_PERSISTENT cpu_to_le32(0xC0190036) // -EIO 1342 + #define STATUS_CANT_BREAK_TRANSACTIONAL_DEPENDENCY cpu_to_le32(0xC0190037) // -EIO 1343 + #define STATUS_CANT_CROSS_RM_BOUNDARY cpu_to_le32(0xC0190038) // -EIO 1344 + #define STATUS_TXF_DIR_NOT_EMPTY cpu_to_le32(0xC0190039) // -EIO 1345 + #define STATUS_INDOUBT_TRANSACTIONS_EXIST cpu_to_le32(0xC019003A) // -EIO 1346 + #define STATUS_TM_VOLATILE cpu_to_le32(0xC019003B) // -EIO 1347 + #define STATUS_ROLLBACK_TIMER_EXPIRED cpu_to_le32(0xC019003C) // -EIO 1348 + #define STATUS_TXF_ATTRIBUTE_CORRUPT cpu_to_le32(0xC019003D) // -EIO 1349 + #define STATUS_EFS_NOT_ALLOWED_IN_TRANSACTION cpu_to_le32(0xC019003E) // -EIO 1350 + #define STATUS_TRANSACTIONAL_OPEN_NOT_ALLOWED cpu_to_le32(0xC019003F) // -EIO 1351 + #define STATUS_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE cpu_to_le32(0xC0190040) // -EIO 1352 + #define STATUS_TRANSACTION_REQUIRED_PROMOTION cpu_to_le32(0xC0190043) // -EIO 1353 + #define STATUS_CANNOT_EXECUTE_FILE_IN_TRANSACTION cpu_to_le32(0xC0190044) // -EIO 1354 + #define STATUS_TRANSACTIONS_NOT_FROZEN cpu_to_le32(0xC0190045) // -EIO 1355 + #define STATUS_TRANSACTION_FREEZE_IN_PROGRESS cpu_to_le32(0xC0190046) // -EIO 1356 + #define STATUS_NOT_SNAPSHOT_VOLUME cpu_to_le32(0xC0190047) // -EIO 1357 + #define STATUS_NO_SAVEPOINT_WITH_OPEN_FILES cpu_to_le32(0xC0190048) // -EIO 1358 + #define STATUS_SPARSE_NOT_ALLOWED_IN_TRANSACTION cpu_to_le32(0xC0190049) // -EIO 1359 + #define STATUS_TM_IDENTITY_MISMATCH cpu_to_le32(0xC019004A) // -EIO 1360 + #define STATUS_FLOATED_SECTION cpu_to_le32(0xC019004B) // -EIO 1361 + #define STATUS_CANNOT_ACCEPT_TRANSACTED_WORK cpu_to_le32(0xC019004C) // -EIO 1362 + #define STATUS_CANNOT_ABORT_TRANSACTIONS cpu_to_le32(0xC019004D) // -EIO 1363 + #define STATUS_TRANSACTION_NOT_FOUND cpu_to_le32(0xC019004E) // -EIO 1364 + #define STATUS_RESOURCEMANAGER_NOT_FOUND cpu_to_le32(0xC019004F) // -EIO 1365 + #define STATUS_ENLISTMENT_NOT_FOUND cpu_to_le32(0xC0190050) // -EIO 1366 + #define STATUS_TRANSACTIONMANAGER_NOT_FOUND cpu_to_le32(0xC0190051) // -EIO 1367 + #define STATUS_TRANSACTIONMANAGER_NOT_ONLINE cpu_to_le32(0xC0190052) // -EIO 1368 + #define STATUS_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION cpu_to_le32(0xC0190053) // -EIO 1369 + #define STATUS_TRANSACTION_NOT_ROOT cpu_to_le32(0xC0190054) // -EIO 1370 + #define STATUS_TRANSACTION_OBJECT_EXPIRED cpu_to_le32(0xC0190055) // -EIO 1371 + #define STATUS_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION cpu_to_le32(0xC0190056) // -EIO 1372 + #define STATUS_TRANSACTION_RESPONSE_NOT_ENLISTED cpu_to_le32(0xC0190057) // -EIO 1373 + #define STATUS_TRANSACTION_RECORD_TOO_LONG cpu_to_le32(0xC0190058) // -EIO 1374 + #define STATUS_NO_LINK_TRACKING_IN_TRANSACTION cpu_to_le32(0xC0190059) // -EIO 1375 + #define STATUS_OPERATION_NOT_SUPPORTED_IN_TRANSACTION cpu_to_le32(0xC019005A) // -EOPNOTSUPP 1376 + #define STATUS_TRANSACTION_INTEGRITY_VIOLATED cpu_to_le32(0xC019005B) // -EIO 1377 + #define STATUS_LOG_SECTOR_INVALID cpu_to_le32(0xC01A0001) // -EIO 1378 + #define STATUS_LOG_SECTOR_PARITY_INVALID cpu_to_le32(0xC01A0002) // -EIO 1379 + #define STATUS_LOG_SECTOR_REMAPPED cpu_to_le32(0xC01A0003) // -EIO 1380 + #define STATUS_LOG_BLOCK_INCOMPLETE cpu_to_le32(0xC01A0004) // -EIO 1381 + #define STATUS_LOG_INVALID_RANGE cpu_to_le32(0xC01A0005) // -EIO 1382 + #define STATUS_LOG_BLOCKS_EXHAUSTED cpu_to_le32(0xC01A0006) // -EIO 1383 + #define STATUS_LOG_READ_CONTEXT_INVALID cpu_to_le32(0xC01A0007) // -EIO 1384 + #define STATUS_LOG_RESTART_INVALID cpu_to_le32(0xC01A0008) // -EIO 1385 + #define STATUS_LOG_BLOCK_VERSION cpu_to_le32(0xC01A0009) // -EIO 1386 + #define STATUS_LOG_BLOCK_INVALID cpu_to_le32(0xC01A000A) // -EIO 1387 + #define STATUS_LOG_READ_MODE_INVALID cpu_to_le32(0xC01A000B) // -EIO 1388 + #define STATUS_LOG_METADATA_CORRUPT cpu_to_le32(0xC01A000D) // -EIO 1389 + #define STATUS_LOG_METADATA_INVALID cpu_to_le32(0xC01A000E) // -EIO 1390 + #define STATUS_LOG_METADATA_INCONSISTENT cpu_to_le32(0xC01A000F) // -EIO 1391 + #define STATUS_LOG_RESERVATION_INVALID cpu_to_le32(0xC01A0010) // -EIO 1392 + #define STATUS_LOG_CANT_DELETE cpu_to_le32(0xC01A0011) // -EIO 1393 + #define STATUS_LOG_CONTAINER_LIMIT_EXCEEDED cpu_to_le32(0xC01A0012) // -EIO 1394 + #define STATUS_LOG_START_OF_LOG cpu_to_le32(0xC01A0013) // -EIO 1395 + #define STATUS_LOG_POLICY_ALREADY_INSTALLED cpu_to_le32(0xC01A0014) // -EIO 1396 + #define STATUS_LOG_POLICY_NOT_INSTALLED cpu_to_le32(0xC01A0015) // -EIO 1397 + #define STATUS_LOG_POLICY_INVALID cpu_to_le32(0xC01A0016) // -EIO 1398 + #define STATUS_LOG_POLICY_CONFLICT cpu_to_le32(0xC01A0017) // -EIO 1399 + #define STATUS_LOG_PINNED_ARCHIVE_TAIL cpu_to_le32(0xC01A0018) // -EIO 1400 + #define STATUS_LOG_RECORD_NONEXISTENT cpu_to_le32(0xC01A0019) // -EIO 1401 + #define STATUS_LOG_RECORDS_RESERVED_INVALID cpu_to_le32(0xC01A001A) // -EIO 1402 + #define STATUS_LOG_SPACE_RESERVED_INVALID cpu_to_le32(0xC01A001B) // -EIO 1403 + #define STATUS_LOG_TAIL_INVALID cpu_to_le32(0xC01A001C) // -EIO 1404 + #define STATUS_LOG_FULL cpu_to_le32(0xC01A001D) // -EIO 1405 + #define STATUS_LOG_MULTIPLEXED cpu_to_le32(0xC01A001E) // -EIO 1406 + #define STATUS_LOG_DEDICATED cpu_to_le32(0xC01A001F) // -EIO 1407 + #define STATUS_LOG_ARCHIVE_NOT_IN_PROGRESS cpu_to_le32(0xC01A0020) // -EIO 1408 + #define STATUS_LOG_ARCHIVE_IN_PROGRESS cpu_to_le32(0xC01A0021) // -EIO 1409 + #define STATUS_LOG_EPHEMERAL cpu_to_le32(0xC01A0022) // -EIO 1410 + #define STATUS_LOG_NOT_ENOUGH_CONTAINERS cpu_to_le32(0xC01A0023) // -EIO 1411 + #define STATUS_LOG_CLIENT_ALREADY_REGISTERED cpu_to_le32(0xC01A0024) // -EIO 1412 + #define STATUS_LOG_CLIENT_NOT_REGISTERED cpu_to_le32(0xC01A0025) // -EIO 1413 + #define STATUS_LOG_FULL_HANDLER_IN_PROGRESS cpu_to_le32(0xC01A0026) // -EIO 1414 + #define STATUS_LOG_CONTAINER_READ_FAILED cpu_to_le32(0xC01A0027) // -EIO 1415 + #define STATUS_LOG_CONTAINER_WRITE_FAILED cpu_to_le32(0xC01A0028) // -EIO 1416 + #define STATUS_LOG_CONTAINER_OPEN_FAILED cpu_to_le32(0xC01A0029) // -EIO 1417 + #define STATUS_LOG_CONTAINER_STATE_INVALID cpu_to_le32(0xC01A002A) // -EIO 1418 + #define STATUS_LOG_STATE_INVALID cpu_to_le32(0xC01A002B) // -EIO 1419 + #define STATUS_LOG_PINNED cpu_to_le32(0xC01A002C) // -EIO 1420 + #define STATUS_LOG_METADATA_FLUSH_FAILED cpu_to_le32(0xC01A002D) // -EIO 1421 + #define STATUS_LOG_INCONSISTENT_SECURITY cpu_to_le32(0xC01A002E) // -EIO 1422 + #define STATUS_LOG_APPENDED_FLUSH_FAILED cpu_to_le32(0xC01A002F) // -EIO 1423 + #define STATUS_LOG_PINNED_RESERVATION cpu_to_le32(0xC01A0030) // -EIO 1424 + #define STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD cpu_to_le32(0xC01B00EA) // -EIO 1425 + #define STATUS_FLT_NO_HANDLER_DEFINED cpu_to_le32(0xC01C0001) // -EIO 1426 + #define STATUS_FLT_CONTEXT_ALREADY_DEFINED cpu_to_le32(0xC01C0002) // -EIO 1427 + #define STATUS_FLT_INVALID_ASYNCHRONOUS_REQUEST cpu_to_le32(0xC01C0003) // -EIO 1428 + #define STATUS_FLT_DISALLOW_FAST_IO cpu_to_le32(0xC01C0004) // -EIO 1429 + #define STATUS_FLT_INVALID_NAME_REQUEST cpu_to_le32(0xC01C0005) // -EIO 1430 + #define STATUS_FLT_NOT_SAFE_TO_POST_OPERATION cpu_to_le32(0xC01C0006) // -EIO 1431 + #define STATUS_FLT_NOT_INITIALIZED cpu_to_le32(0xC01C0007) // -EIO 1432 + #define STATUS_FLT_FILTER_NOT_READY cpu_to_le32(0xC01C0008) // -EIO 1433 + #define STATUS_FLT_POST_OPERATION_CLEANUP cpu_to_le32(0xC01C0009) // -EIO 1434 + #define STATUS_FLT_INTERNAL_ERROR cpu_to_le32(0xC01C000A) // -EIO 1435 + #define STATUS_FLT_DELETING_OBJECT cpu_to_le32(0xC01C000B) // -EIO 1436 + #define STATUS_FLT_MUST_BE_NONPAGED_POOL cpu_to_le32(0xC01C000C) // -EIO 1437 + #define STATUS_FLT_DUPLICATE_ENTRY cpu_to_le32(0xC01C000D) // -EIO 1438 + #define STATUS_FLT_CBDQ_DISABLED cpu_to_le32(0xC01C000E) // -EIO 1439 + #define STATUS_FLT_DO_NOT_ATTACH cpu_to_le32(0xC01C000F) // -EIO 1440 + #define STATUS_FLT_DO_NOT_DETACH cpu_to_le32(0xC01C0010) // -EIO 1441 + #define STATUS_FLT_INSTANCE_ALTITUDE_COLLISION cpu_to_le32(0xC01C0011) // -EIO 1442 + #define STATUS_FLT_INSTANCE_NAME_COLLISION cpu_to_le32(0xC01C0012) // -EIO 1443 + #define STATUS_FLT_FILTER_NOT_FOUND cpu_to_le32(0xC01C0013) // -EIO 1444 + #define STATUS_FLT_VOLUME_NOT_FOUND cpu_to_le32(0xC01C0014) // -EIO 1445 + #define STATUS_FLT_INSTANCE_NOT_FOUND cpu_to_le32(0xC01C0015) // -EIO 1446 + #define STATUS_FLT_CONTEXT_ALLOCATION_NOT_FOUND cpu_to_le32(0xC01C0016) // -EIO 1447 + #define STATUS_FLT_INVALID_CONTEXT_REGISTRATION cpu_to_le32(0xC01C0017) // -EIO 1448 + #define STATUS_FLT_NAME_CACHE_MISS cpu_to_le32(0xC01C0018) // -EIO 1449 + #define STATUS_FLT_NO_DEVICE_OBJECT cpu_to_le32(0xC01C0019) // -EIO 1450 + #define STATUS_FLT_VOLUME_ALREADY_MOUNTED cpu_to_le32(0xC01C001A) // -EIO 1451 + #define STATUS_FLT_ALREADY_ENLISTED cpu_to_le32(0xC01C001B) // -EIO 1452 + #define STATUS_FLT_CONTEXT_ALREADY_LINKED cpu_to_le32(0xC01C001C) // -EIO 1453 + #define STATUS_FLT_NO_WAITER_FOR_REPLY cpu_to_le32(0xC01C0020) // -EIO 1454 + #define STATUS_MONITOR_NO_DESCRIPTOR cpu_to_le32(0xC01D0001) // -EIO 1455 + #define STATUS_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT cpu_to_le32(0xC01D0002) // -EIO 1456 + #define STATUS_MONITOR_INVALID_DESCRIPTOR_CHECKSUM cpu_to_le32(0xC01D0003) // -EIO 1457 + #define STATUS_MONITOR_INVALID_STANDARD_TIMING_BLOCK cpu_to_le32(0xC01D0004) // -EIO 1458 + #define STATUS_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED cpu_to_le32(0xC01D0005) // -EIO 1459 + #define STATUS_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK cpu_to_le32(0xC01D0006) // -EIO 1460 + #define STATUS_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK cpu_to_le32(0xC01D0007) // -EIO 1461 + #define STATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA cpu_to_le32(0xC01D0008) // -EIO 1462 + #define STATUS_MONITOR_INVALID_DETAILED_TIMING_BLOCK cpu_to_le32(0xC01D0009) // -EIO 1463 + #define STATUS_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER cpu_to_le32(0xC01E0000) // -EIO 1464 + #define STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER cpu_to_le32(0xC01E0001) // -EIO 1465 + #define STATUS_GRAPHICS_INVALID_DISPLAY_ADAPTER cpu_to_le32(0xC01E0002) // -EIO 1466 + #define STATUS_GRAPHICS_ADAPTER_WAS_RESET cpu_to_le32(0xC01E0003) // -EIO 1467 + #define STATUS_GRAPHICS_INVALID_DRIVER_MODEL cpu_to_le32(0xC01E0004) // -EIO 1468 + #define STATUS_GRAPHICS_PRESENT_MODE_CHANGED cpu_to_le32(0xC01E0005) // -EIO 1469 + #define STATUS_GRAPHICS_PRESENT_OCCLUDED cpu_to_le32(0xC01E0006) // -EIO 1470 + #define STATUS_GRAPHICS_PRESENT_DENIED cpu_to_le32(0xC01E0007) // -EIO 1471 + #define STATUS_GRAPHICS_CANNOTCOLORCONVERT cpu_to_le32(0xC01E0008) // -EIO 1472 + #define STATUS_GRAPHICS_NO_VIDEO_MEMORY cpu_to_le32(0xC01E0100) // -EIO 1473 + #define STATUS_GRAPHICS_CANT_LOCK_MEMORY cpu_to_le32(0xC01E0101) // -EIO 1474 + #define STATUS_GRAPHICS_ALLOCATION_BUSY cpu_to_le32(0xC01E0102) // -EBUSY 1475 + #define STATUS_GRAPHICS_TOO_MANY_REFERENCES cpu_to_le32(0xC01E0103) // -EIO 1476 + #define STATUS_GRAPHICS_TRY_AGAIN_LATER cpu_to_le32(0xC01E0104) // -EIO 1477 + #define STATUS_GRAPHICS_TRY_AGAIN_NOW cpu_to_le32(0xC01E0105) // -EIO 1478 + #define STATUS_GRAPHICS_ALLOCATION_INVALID cpu_to_le32(0xC01E0106) // -EIO 1479 + #define STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE cpu_to_le32(0xC01E0107) // -EIO 1480 + #define STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED cpu_to_le32(0xC01E0108) // -EIO 1481 + #define STATUS_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION cpu_to_le32(0xC01E0109) // -EIO 1482 + #define STATUS_GRAPHICS_INVALID_ALLOCATION_USAGE cpu_to_le32(0xC01E0110) // -EIO 1483 + #define STATUS_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION cpu_to_le32(0xC01E0111) // -EIO 1484 + #define STATUS_GRAPHICS_ALLOCATION_CLOSED cpu_to_le32(0xC01E0112) // -EIO 1485 + #define STATUS_GRAPHICS_INVALID_ALLOCATION_INSTANCE cpu_to_le32(0xC01E0113) // -EIO 1486 + #define STATUS_GRAPHICS_INVALID_ALLOCATION_HANDLE cpu_to_le32(0xC01E0114) // -EIO 1487 + #define STATUS_GRAPHICS_WRONG_ALLOCATION_DEVICE cpu_to_le32(0xC01E0115) // -EIO 1488 + #define STATUS_GRAPHICS_ALLOCATION_CONTENT_LOST cpu_to_le32(0xC01E0116) // -EIO 1489 + #define STATUS_GRAPHICS_GPU_EXCEPTION_ON_DEVICE cpu_to_le32(0xC01E0200) // -EIO 1490 + #define STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY cpu_to_le32(0xC01E0300) // -EIO 1491 + #define STATUS_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED cpu_to_le32(0xC01E0301) // -EIO 1492 + #define STATUS_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED cpu_to_le32(0xC01E0302) // -EIO 1493 + #define STATUS_GRAPHICS_INVALID_VIDPN cpu_to_le32(0xC01E0303) // -EIO 1494 + #define STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE cpu_to_le32(0xC01E0304) // -EIO 1495 + #define STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET cpu_to_le32(0xC01E0305) // -EIO 1496 + #define STATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED cpu_to_le32(0xC01E0306) // -EIO 1497 + #define STATUS_GRAPHICS_INVALID_VIDPN_SOURCEMODESET cpu_to_le32(0xC01E0308) // -EIO 1498 + #define STATUS_GRAPHICS_INVALID_VIDPN_TARGETMODESET cpu_to_le32(0xC01E0309) // -EIO 1499 + #define STATUS_GRAPHICS_INVALID_FREQUENCY cpu_to_le32(0xC01E030A) // -EIO 1500 + #define STATUS_GRAPHICS_INVALID_ACTIVE_REGION cpu_to_le32(0xC01E030B) // -EIO 1501 + #define STATUS_GRAPHICS_INVALID_TOTAL_REGION cpu_to_le32(0xC01E030C) // -EIO 1502 + #define STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE cpu_to_le32(0xC01E0310) // -EIO 1503 + #define STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE cpu_to_le32(0xC01E0311) // -EIO 1504 + #define STATUS_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET cpu_to_le32(0xC01E0312) // -EIO 1505 + #define STATUS_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY cpu_to_le32(0xC01E0313) // -EIO 1506 + #define STATUS_GRAPHICS_MODE_ALREADY_IN_MODESET cpu_to_le32(0xC01E0314) // -EIO 1507 + #define STATUS_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET cpu_to_le32(0xC01E0315) // -EIO 1508 + #define STATUS_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET cpu_to_le32(0xC01E0316) // -EIO 1509 + #define STATUS_GRAPHICS_SOURCE_ALREADY_IN_SET cpu_to_le32(0xC01E0317) // -EIO 1510 + #define STATUS_GRAPHICS_TARGET_ALREADY_IN_SET cpu_to_le32(0xC01E0318) // -EIO 1511 + #define STATUS_GRAPHICS_INVALID_VIDPN_PRESENT_PATH cpu_to_le32(0xC01E0319) // -EIO 1512 + #define STATUS_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY cpu_to_le32(0xC01E031A) // -EIO 1513 + #define STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET cpu_to_le32(0xC01E031B) // -EIO 1514 + #define STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE cpu_to_le32(0xC01E031C) // -EIO 1515 + #define STATUS_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET cpu_to_le32(0xC01E031D) // -EIO 1516 + #define STATUS_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET cpu_to_le32(0xC01E031F) // -EIO 1517 + #define STATUS_GRAPHICS_STALE_MODESET cpu_to_le32(0xC01E0320) // -EIO 1518 + #define STATUS_GRAPHICS_INVALID_MONITOR_SOURCEMODESET cpu_to_le32(0xC01E0321) // -EIO 1519 + #define STATUS_GRAPHICS_INVALID_MONITOR_SOURCE_MODE cpu_to_le32(0xC01E0322) // -EIO 1520 + #define STATUS_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN cpu_to_le32(0xC01E0323) // -EIO 1521 + #define STATUS_GRAPHICS_MODE_ID_MUST_BE_UNIQUE cpu_to_le32(0xC01E0324) // -EIO 1522 + #define STATUS_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION cpu_to_le32(0xC01E0325) // -EIO 1523 + #define STATUS_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES cpu_to_le32(0xC01E0326) // -EIO 1524 + #define STATUS_GRAPHICS_PATH_NOT_IN_TOPOLOGY cpu_to_le32(0xC01E0327) // -EIO 1525 + #define STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE cpu_to_le32(0xC01E0328) // -EIO 1526 + #define STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET cpu_to_le32(0xC01E0329) // -EIO 1527 + #define STATUS_GRAPHICS_INVALID_MONITORDESCRIPTORSET cpu_to_le32(0xC01E032A) // -EIO 1528 + #define STATUS_GRAPHICS_INVALID_MONITORDESCRIPTOR cpu_to_le32(0xC01E032B) // -EIO 1529 + #define STATUS_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET cpu_to_le32(0xC01E032C) // -EIO 1530 + #define STATUS_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET cpu_to_le32(0xC01E032D) // -EIO 1531 + #define STATUS_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE cpu_to_le32(0xC01E032E) // -EIO 1532 + #define STATUS_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE cpu_to_le32(0xC01E032F) // -EIO 1533 + #define STATUS_GRAPHICS_RESOURCES_NOT_RELATED cpu_to_le32(0xC01E0330) // -EIO 1534 + #define STATUS_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE cpu_to_le32(0xC01E0331) // -EIO 1535 + #define STATUS_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE cpu_to_le32(0xC01E0332) // -EIO 1536 + #define STATUS_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET cpu_to_le32(0xC01E0333) // -EIO 1537 + #define STATUS_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER cpu_to_le32(0xC01E0334) // -EIO 1538 + #define STATUS_GRAPHICS_NO_VIDPNMGR cpu_to_le32(0xC01E0335) // -EIO 1539 + #define STATUS_GRAPHICS_NO_ACTIVE_VIDPN cpu_to_le32(0xC01E0336) // -EIO 1540 + #define STATUS_GRAPHICS_STALE_VIDPN_TOPOLOGY cpu_to_le32(0xC01E0337) // -EIO 1541 + #define STATUS_GRAPHICS_MONITOR_NOT_CONNECTED cpu_to_le32(0xC01E0338) // -EIO 1542 + #define STATUS_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY cpu_to_le32(0xC01E0339) // -EIO 1543 + #define STATUS_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE cpu_to_le32(0xC01E033A) // -EIO 1544 + #define STATUS_GRAPHICS_INVALID_VISIBLEREGION_SIZE cpu_to_le32(0xC01E033B) // -EIO 1545 + #define STATUS_GRAPHICS_INVALID_STRIDE cpu_to_le32(0xC01E033C) // -EIO 1546 + #define STATUS_GRAPHICS_INVALID_PIXELFORMAT cpu_to_le32(0xC01E033D) // -EIO 1547 + #define STATUS_GRAPHICS_INVALID_COLORBASIS cpu_to_le32(0xC01E033E) // -EIO 1548 + #define STATUS_GRAPHICS_INVALID_PIXELVALUEACCESSMODE cpu_to_le32(0xC01E033F) // -EIO 1549 + #define STATUS_GRAPHICS_TARGET_NOT_IN_TOPOLOGY cpu_to_le32(0xC01E0340) // -EIO 1550 + #define STATUS_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT cpu_to_le32(0xC01E0341) // -EIO 1551 + #define STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE cpu_to_le32(0xC01E0342) // -EIO 1552 + #define STATUS_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN cpu_to_le32(0xC01E0343) // -EIO 1553 + #define STATUS_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL cpu_to_le32(0xC01E0344) // -EIO 1554 + #define STATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION cpu_to_le32(0xC01E0345) // -EIO 1555 + #define STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED cpu_to_le32(0xC01E0346) // -EIO 1556 + #define STATUS_GRAPHICS_INVALID_GAMMA_RAMP cpu_to_le32(0xC01E0347) // -EIO 1557 + #define STATUS_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED cpu_to_le32(0xC01E0348) // -EIO 1558 + #define STATUS_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED cpu_to_le32(0xC01E0349) // -EIO 1559 + #define STATUS_GRAPHICS_MODE_NOT_IN_MODESET cpu_to_le32(0xC01E034A) // -EIO 1560 + #define STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON cpu_to_le32(0xC01E034D) // -EIO 1561 + #define STATUS_GRAPHICS_INVALID_PATH_CONTENT_TYPE cpu_to_le32(0xC01E034E) // -EIO 1562 + #define STATUS_GRAPHICS_INVALID_COPYPROTECTION_TYPE cpu_to_le32(0xC01E034F) // -EIO 1563 + #define STATUS_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS cpu_to_le32(0xC01E0350) // -EIO 1564 + #define STATUS_GRAPHICS_INVALID_SCANLINE_ORDERING cpu_to_le32(0xC01E0352) // -EIO 1565 + #define STATUS_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED cpu_to_le32(0xC01E0353) // -EIO 1566 + #define STATUS_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS cpu_to_le32(0xC01E0354) // -EIO 1567 + #define STATUS_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT cpu_to_le32(0xC01E0355) // -EIO 1568 + #define STATUS_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM cpu_to_le32(0xC01E0356) // -EIO 1569 + #define STATUS_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN cpu_to_le32(0xC01E0357) // -EIO 1570 + #define STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT cpu_to_le32(0xC01E0358) // -EIO 1571 + #define STATUS_GRAPHICS_MAX_NUM_PATHS_REACHED cpu_to_le32(0xC01E0359) // -EIO 1572 + #define STATUS_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION cpu_to_le32(0xC01E035A) // -EIO 1573 + #define STATUS_GRAPHICS_INVALID_CLIENT_TYPE cpu_to_le32(0xC01E035B) // -EIO 1574 + #define STATUS_GRAPHICS_CLIENTVIDPN_NOT_SET cpu_to_le32(0xC01E035C) // -EIO 1575 + #define STATUS_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED cpu_to_le32(0xC01E0400) // -EIO 1576 + #define STATUS_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED cpu_to_le32(0xC01E0401) // -EIO 1577 + #define STATUS_GRAPHICS_NOT_A_LINKED_ADAPTER cpu_to_le32(0xC01E0430) // -EIO 1578 + #define STATUS_GRAPHICS_LEADLINK_NOT_ENUMERATED cpu_to_le32(0xC01E0431) // -EIO 1579 + #define STATUS_GRAPHICS_CHAINLINKS_NOT_ENUMERATED cpu_to_le32(0xC01E0432) // -EIO 1580 + #define STATUS_GRAPHICS_ADAPTER_CHAIN_NOT_READY cpu_to_le32(0xC01E0433) // -EIO 1581 + #define STATUS_GRAPHICS_CHAINLINKS_NOT_STARTED cpu_to_le32(0xC01E0434) // -EIO 1582 + #define STATUS_GRAPHICS_CHAINLINKS_NOT_POWERED_ON cpu_to_le32(0xC01E0435) // -EIO 1583 + #define STATUS_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE cpu_to_le32(0xC01E0436) // -EIO 1584 + #define STATUS_GRAPHICS_NOT_POST_DEVICE_DRIVER cpu_to_le32(0xC01E0438) // -EIO 1585 + #define STATUS_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED cpu_to_le32(0xC01E043B) // -EIO 1586 + #define STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS cpu_to_le32(0xC01E051C) // -EIO 1587 + #define STATUS_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST cpu_to_le32(0xC01E051D) // -EIO 1588 + #define STATUS_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR cpu_to_le32(0xC01E051E) // -EIO 1589 + #define STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS cpu_to_le32(0xC01E051F) // -EIO 1590 + #define STATUS_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED cpu_to_le32(0xC01E0520) // -EIO 1591 + #define STATUS_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST cpu_to_le32(0xC01E0521) // -EIO 1592 + #define STATUS_GRAPHICS_OPM_NOT_SUPPORTED cpu_to_le32(0xC01E0500) // -EIO 1593 + #define STATUS_GRAPHICS_COPP_NOT_SUPPORTED cpu_to_le32(0xC01E0501) // -EIO 1594 + #define STATUS_GRAPHICS_UAB_NOT_SUPPORTED cpu_to_le32(0xC01E0502) // -EIO 1595 + #define STATUS_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS cpu_to_le32(0xC01E0503) // -EIO 1596 + #define STATUS_GRAPHICS_OPM_PARAMETER_ARRAY_TOO_SMALL cpu_to_le32(0xC01E0504) // -EIO 1597 + #define STATUS_GRAPHICS_OPM_NO_PROTECTED_OUTPUTS_EXIST cpu_to_le32(0xC01E0505) // -EIO 1598 + #define STATUS_GRAPHICS_PVP_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME cpu_to_le32(0xC01E0506) // -EIO 1599 + #define STATUS_GRAPHICS_PVP_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP cpu_to_le32(0xC01E0507) // -EIO 1600 + #define STATUS_GRAPHICS_PVP_MIRRORING_DEVICES_NOT_SUPPORTED cpu_to_le32(0xC01E0508) // -EIO 1601 + #define STATUS_GRAPHICS_OPM_INVALID_POINTER cpu_to_le32(0xC01E050A) // -EIO 1602 + #define STATUS_GRAPHICS_OPM_INTERNAL_ERROR cpu_to_le32(0xC01E050B) // -EIO 1603 + #define STATUS_GRAPHICS_OPM_INVALID_HANDLE cpu_to_le32(0xC01E050C) // -EIO 1604 + #define STATUS_GRAPHICS_PVP_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE cpu_to_le32(0xC01E050D) // -EIO 1605 + #define STATUS_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH cpu_to_le32(0xC01E050E) // -EIO 1606 + #define STATUS_GRAPHICS_OPM_SPANNING_MODE_ENABLED cpu_to_le32(0xC01E050F) // -EIO 1607 + #define STATUS_GRAPHICS_OPM_THEATER_MODE_ENABLED cpu_to_le32(0xC01E0510) // -EIO 1608 + #define STATUS_GRAPHICS_PVP_HFS_FAILED cpu_to_le32(0xC01E0511) // -EIO 1609 + #define STATUS_GRAPHICS_OPM_INVALID_SRM cpu_to_le32(0xC01E0512) // -EIO 1610 + #define STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP cpu_to_le32(0xC01E0513) // -EIO 1611 + #define STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP cpu_to_le32(0xC01E0514) // -EIO 1612 + #define STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA cpu_to_le32(0xC01E0515) // -EIO 1613 + #define STATUS_GRAPHICS_OPM_HDCP_SRM_NEVER_SET cpu_to_le32(0xC01E0516) // -EIO 1614 + #define STATUS_GRAPHICS_OPM_RESOLUTION_TOO_HIGH cpu_to_le32(0xC01E0517) // -EIO 1615 + #define STATUS_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE cpu_to_le32(0xC01E0518) // -EIO 1616 + #define STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_NO_LONGER_EXISTS cpu_to_le32(0xC01E051A) // -EIO 1617 + #define STATUS_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS cpu_to_le32(0xC01E051B) // -EIO 1618 + #define STATUS_GRAPHICS_I2C_NOT_SUPPORTED cpu_to_le32(0xC01E0580) // -EIO 1619 + #define STATUS_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST cpu_to_le32(0xC01E0581) // -EIO 1620 + #define STATUS_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA cpu_to_le32(0xC01E0582) // -EIO 1621 + #define STATUS_GRAPHICS_I2C_ERROR_RECEIVING_DATA cpu_to_le32(0xC01E0583) // -EIO 1622 + #define STATUS_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED cpu_to_le32(0xC01E0584) // -EIO 1623 + #define STATUS_GRAPHICS_DDCCI_INVALID_DATA cpu_to_le32(0xC01E0585) // -EIO 1624 + #define STATUS_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE cpu_to_le32(0xC01E0586) // -EIO 1625 + #define STATUS_GRAPHICS_DDCCI_INVALID_CAPABILITIES_STRING cpu_to_le32(0xC01E0587) // -EIO 1626 + #define STATUS_GRAPHICS_MCA_INTERNAL_ERROR cpu_to_le32(0xC01E0588) // -EIO 1627 + #define STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND cpu_to_le32(0xC01E0589) // -EIO 1628 + #define STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH cpu_to_le32(0xC01E058A) // -EIO 1629 + #define STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM cpu_to_le32(0xC01E058B) // -EIO 1630 + #define STATUS_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE cpu_to_le32(0xC01E058C) // -EIO 1631 + #define STATUS_GRAPHICS_MONITOR_NO_LONGER_EXISTS cpu_to_le32(0xC01E058D) // -EIO 1632 + #define STATUS_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED cpu_to_le32(0xC01E05E0) // -EIO 1633 + #define STATUS_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME cpu_to_le32(0xC01E05E1) // -EIO 1634 + #define STATUS_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP cpu_to_le32(0xC01E05E2) // -EIO 1635 + #define STATUS_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED cpu_to_le32(0xC01E05E3) // -EIO 1636 + #define STATUS_GRAPHICS_INVALID_POINTER cpu_to_le32(0xC01E05E4) // -EIO 1637 + #define STATUS_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE cpu_to_le32(0xC01E05E5) // -EIO 1638 + #define STATUS_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL cpu_to_le32(0xC01E05E6) // -EIO 1639 + #define STATUS_GRAPHICS_INTERNAL_ERROR cpu_to_le32(0xC01E05E7) // -EIO 1640 + #define STATUS_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS cpu_to_le32(0xC01E05E8) // -EIO 1641 + #define STATUS_FVE_LOCKED_VOLUME cpu_to_le32(0xC0210000) // -EIO 1642 + #define STATUS_FVE_NOT_ENCRYPTED cpu_to_le32(0xC0210001) // -EIO 1643 + #define STATUS_FVE_BAD_INFORMATION cpu_to_le32(0xC0210002) // -EIO 1644 + #define STATUS_FVE_TOO_SMALL cpu_to_le32(0xC0210003) // -EIO 1645 + #define STATUS_FVE_FAILED_WRONG_FS cpu_to_le32(0xC0210004) // -EIO 1646 + #define STATUS_FVE_FAILED_BAD_FS cpu_to_le32(0xC0210005) // -EIO 1647 + #define STATUS_FVE_FS_NOT_EXTENDED cpu_to_le32(0xC0210006) // -EIO 1648 + #define STATUS_FVE_FS_MOUNTED cpu_to_le32(0xC0210007) // -EIO 1649 + #define STATUS_FVE_NO_LICENSE cpu_to_le32(0xC0210008) // -EIO 1650 + #define STATUS_FVE_ACTION_NOT_ALLOWED cpu_to_le32(0xC0210009) // -EIO 1651 + #define STATUS_FVE_BAD_DATA cpu_to_le32(0xC021000A) // -EIO 1652 + #define STATUS_FVE_VOLUME_NOT_BOUND cpu_to_le32(0xC021000B) // -EIO 1653 + #define STATUS_FVE_NOT_DATA_VOLUME cpu_to_le32(0xC021000C) // -EIO 1654 + #define STATUS_FVE_CONV_READ_ERROR cpu_to_le32(0xC021000D) // -EIO 1655 + #define STATUS_FVE_CONV_WRITE_ERROR cpu_to_le32(0xC021000E) // -EIO 1656 + #define STATUS_FVE_OVERLAPPED_UPDATE cpu_to_le32(0xC021000F) // -EIO 1657 + #define STATUS_FVE_FAILED_SECTOR_SIZE cpu_to_le32(0xC0210010) // -EIO 1658 + #define STATUS_FVE_FAILED_AUTHENTICATION cpu_to_le32(0xC0210011) // -EIO 1659 + #define STATUS_FVE_NOT_OS_VOLUME cpu_to_le32(0xC0210012) // -EIO 1660 + #define STATUS_FVE_KEYFILE_NOT_FOUND cpu_to_le32(0xC0210013) // -EIO 1661 + #define STATUS_FVE_KEYFILE_INVALID cpu_to_le32(0xC0210014) // -EIO 1662 + #define STATUS_FVE_KEYFILE_NO_VMK cpu_to_le32(0xC0210015) // -EIO 1663 + #define STATUS_FVE_TPM_DISABLED cpu_to_le32(0xC0210016) // -EIO 1664 + #define STATUS_FVE_TPM_SRK_AUTH_NOT_ZERO cpu_to_le32(0xC0210017) // -EIO 1665 + #define STATUS_FVE_TPM_INVALID_PCR cpu_to_le32(0xC0210018) // -EIO 1666 + #define STATUS_FVE_TPM_NO_VMK cpu_to_le32(0xC0210019) // -EIO 1667 + #define STATUS_FVE_PIN_INVALID cpu_to_le32(0xC021001A) // -EIO 1668 + #define STATUS_FVE_AUTH_INVALID_APPLICATION cpu_to_le32(0xC021001B) // -EIO 1669 + #define STATUS_FVE_AUTH_INVALID_CONFIG cpu_to_le32(0xC021001C) // -EIO 1670 + #define STATUS_FVE_DEBUGGER_ENABLED cpu_to_le32(0xC021001D) // -EIO 1671 + #define STATUS_FVE_DRY_RUN_FAILED cpu_to_le32(0xC021001E) // -EIO 1672 + #define STATUS_FVE_BAD_METADATA_POINTER cpu_to_le32(0xC021001F) // -EIO 1673 + #define STATUS_FVE_OLD_METADATA_COPY cpu_to_le32(0xC0210020) // -EIO 1674 + #define STATUS_FVE_REBOOT_REQUIRED cpu_to_le32(0xC0210021) // -EIO 1675 + #define STATUS_FVE_RAW_ACCESS cpu_to_le32(0xC0210022) // -EIO 1676 + #define STATUS_FVE_RAW_BLOCKED cpu_to_le32(0xC0210023) // -EIO 1677 + #define STATUS_FWP_CALLOUT_NOT_FOUND cpu_to_le32(0xC0220001) // -EIO 1678 + #define STATUS_FWP_CONDITION_NOT_FOUND cpu_to_le32(0xC0220002) // -EIO 1679 + #define STATUS_FWP_FILTER_NOT_FOUND cpu_to_le32(0xC0220003) // -EIO 1680 + #define STATUS_FWP_LAYER_NOT_FOUND cpu_to_le32(0xC0220004) // -EIO 1681 + #define STATUS_FWP_PROVIDER_NOT_FOUND cpu_to_le32(0xC0220005) // -EIO 1682 + #define STATUS_FWP_PROVIDER_CONTEXT_NOT_FOUND cpu_to_le32(0xC0220006) // -EIO 1683 + #define STATUS_FWP_SUBLAYER_NOT_FOUND cpu_to_le32(0xC0220007) // -EIO 1684 + #define STATUS_FWP_NOT_FOUND cpu_to_le32(0xC0220008) // -EIO 1685 + #define STATUS_FWP_ALREADY_EXISTS cpu_to_le32(0xC0220009) // -EIO 1686 + #define STATUS_FWP_IN_USE cpu_to_le32(0xC022000A) // -EIO 1687 + #define STATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS cpu_to_le32(0xC022000B) // -EIO 1688 + #define STATUS_FWP_WRONG_SESSION cpu_to_le32(0xC022000C) // -EIO 1689 + #define STATUS_FWP_NO_TXN_IN_PROGRESS cpu_to_le32(0xC022000D) // -EIO 1690 + #define STATUS_FWP_TXN_IN_PROGRESS cpu_to_le32(0xC022000E) // -EIO 1691 + #define STATUS_FWP_TXN_ABORTED cpu_to_le32(0xC022000F) // -EIO 1692 + #define STATUS_FWP_SESSION_ABORTED cpu_to_le32(0xC0220010) // -EIO 1693 + #define STATUS_FWP_INCOMPATIBLE_TXN cpu_to_le32(0xC0220011) // -EIO 1694 + #define STATUS_FWP_TIMEOUT cpu_to_le32(0xC0220012) // -ETIMEDOUT 1695 + #define STATUS_FWP_NET_EVENTS_DISABLED cpu_to_le32(0xC0220013) // -EIO 1696 + #define STATUS_FWP_INCOMPATIBLE_LAYER cpu_to_le32(0xC0220014) // -EIO 1697 + #define STATUS_FWP_KM_CLIENTS_ONLY cpu_to_le32(0xC0220015) // -EIO 1698 + #define STATUS_FWP_LIFETIME_MISMATCH cpu_to_le32(0xC0220016) // -EIO 1699 + #define STATUS_FWP_BUILTIN_OBJECT cpu_to_le32(0xC0220017) // -EIO 1700 + #define STATUS_FWP_TOO_MANY_BOOTTIME_FILTERS cpu_to_le32(0xC0220018) // -EIO 1701 + #define STATUS_FWP_TOO_MANY_CALLOUTS cpu_to_le32(0xC0220018) // -EIO 1702 + #define STATUS_FWP_NOTIFICATION_DROPPED cpu_to_le32(0xC0220019) // -EIO 1703 + #define STATUS_FWP_TRAFFIC_MISMATCH cpu_to_le32(0xC022001A) // -EIO 1704 + #define STATUS_FWP_INCOMPATIBLE_SA_STATE cpu_to_le32(0xC022001B) // -EIO 1705 + #define STATUS_FWP_NULL_POINTER cpu_to_le32(0xC022001C) // -EIO 1706 + #define STATUS_FWP_INVALID_ENUMERATOR cpu_to_le32(0xC022001D) // -EIO 1707 + #define STATUS_FWP_INVALID_FLAGS cpu_to_le32(0xC022001E) // -EIO 1708 + #define STATUS_FWP_INVALID_NET_MASK cpu_to_le32(0xC022001F) // -EIO 1709 + #define STATUS_FWP_INVALID_RANGE cpu_to_le32(0xC0220020) // -EIO 1710 + #define STATUS_FWP_INVALID_INTERVAL cpu_to_le32(0xC0220021) // -EIO 1711 + #define STATUS_FWP_ZERO_LENGTH_ARRAY cpu_to_le32(0xC0220022) // -EIO 1712 + #define STATUS_FWP_NULL_DISPLAY_NAME cpu_to_le32(0xC0220023) // -EIO 1713 + #define STATUS_FWP_INVALID_ACTION_TYPE cpu_to_le32(0xC0220024) // -EIO 1714 + #define STATUS_FWP_INVALID_WEIGHT cpu_to_le32(0xC0220025) // -EIO 1715 + #define STATUS_FWP_MATCH_TYPE_MISMATCH cpu_to_le32(0xC0220026) // -EIO 1716 + #define STATUS_FWP_TYPE_MISMATCH cpu_to_le32(0xC0220027) // -EIO 1717 + #define STATUS_FWP_OUT_OF_BOUNDS cpu_to_le32(0xC0220028) // -EIO 1718 + #define STATUS_FWP_RESERVED cpu_to_le32(0xC0220029) // -EIO 1719 + #define STATUS_FWP_DUPLICATE_CONDITION cpu_to_le32(0xC022002A) // -EIO 1720 + #define STATUS_FWP_DUPLICATE_KEYMOD cpu_to_le32(0xC022002B) // -EIO 1721 + #define STATUS_FWP_ACTION_INCOMPATIBLE_WITH_LAYER cpu_to_le32(0xC022002C) // -EIO 1722 + #define STATUS_FWP_ACTION_INCOMPATIBLE_WITH_SUBLAYER cpu_to_le32(0xC022002D) // -EIO 1723 + #define STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_LAYER cpu_to_le32(0xC022002E) // -EIO 1724 + #define STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_CALLOUT cpu_to_le32(0xC022002F) // -EIO 1725 + #define STATUS_FWP_INCOMPATIBLE_AUTH_METHOD cpu_to_le32(0xC0220030) // -EIO 1726 + #define STATUS_FWP_INCOMPATIBLE_DH_GROUP cpu_to_le32(0xC0220031) // -EIO 1727 + #define STATUS_FWP_EM_NOT_SUPPORTED cpu_to_le32(0xC0220032) // -EOPNOTSUPP 1728 + #define STATUS_FWP_NEVER_MATCH cpu_to_le32(0xC0220033) // -EIO 1729 + #define STATUS_FWP_PROVIDER_CONTEXT_MISMATCH cpu_to_le32(0xC0220034) // -EIO 1730 + #define STATUS_FWP_INVALID_PARAMETER cpu_to_le32(0xC0220035) // -EIO 1731 + #define STATUS_FWP_TOO_MANY_SUBLAYERS cpu_to_le32(0xC0220036) // -EIO 1732 + #define STATUS_FWP_CALLOUT_NOTIFICATION_FAILED cpu_to_le32(0xC0220037) // -EIO 1733 + #define STATUS_FWP_INCOMPATIBLE_AUTH_CONFIG cpu_to_le32(0xC0220038) // -EIO 1734 + #define STATUS_FWP_INCOMPATIBLE_CIPHER_CONFIG cpu_to_le32(0xC0220039) // -EIO 1735 + #define STATUS_FWP_TCPIP_NOT_READY cpu_to_le32(0xC0220100) // -EIO 1736 + #define STATUS_FWP_INJECT_HANDLE_CLOSING cpu_to_le32(0xC0220101) // -EIO 1737 + #define STATUS_FWP_INJECT_HANDLE_STALE cpu_to_le32(0xC0220102) // -EIO 1738 + #define STATUS_FWP_CANNOT_PEND cpu_to_le32(0xC0220103) // -EIO 1739 + #define STATUS_NDIS_CLOSING cpu_to_le32(0xC0230002) // -EIO 1740 + #define STATUS_NDIS_BAD_VERSION cpu_to_le32(0xC0230004) // -EIO 1741 + #define STATUS_NDIS_BAD_CHARACTERISTICS cpu_to_le32(0xC0230005) // -EIO 1742 + #define STATUS_NDIS_ADAPTER_NOT_FOUND cpu_to_le32(0xC0230006) // -EIO 1743 + #define STATUS_NDIS_OPEN_FAILED cpu_to_le32(0xC0230007) // -EIO 1744 + #define STATUS_NDIS_DEVICE_FAILED cpu_to_le32(0xC0230008) // -EIO 1745 + #define STATUS_NDIS_MULTICAST_FULL cpu_to_le32(0xC0230009) // -EIO 1746 + #define STATUS_NDIS_MULTICAST_EXISTS cpu_to_le32(0xC023000A) // -EIO 1747 + #define STATUS_NDIS_MULTICAST_NOT_FOUND cpu_to_le32(0xC023000B) // -EIO 1748 + #define STATUS_NDIS_REQUEST_ABORTED cpu_to_le32(0xC023000C) // -EIO 1749 + #define STATUS_NDIS_RESET_IN_PROGRESS cpu_to_le32(0xC023000D) // -EIO 1750 + #define STATUS_NDIS_INVALID_PACKET cpu_to_le32(0xC023000F) // -EIO 1751 + #define STATUS_NDIS_INVALID_DEVICE_REQUEST cpu_to_le32(0xC0230010) // -EIO 1752 + #define STATUS_NDIS_ADAPTER_NOT_READY cpu_to_le32(0xC0230011) // -EIO 1753 + #define STATUS_NDIS_INVALID_LENGTH cpu_to_le32(0xC0230014) // -EIO 1754 + #define STATUS_NDIS_INVALID_DATA cpu_to_le32(0xC0230015) // -EIO 1755 + #define STATUS_NDIS_BUFFER_TOO_SHORT cpu_to_le32(0xC0230016) // -ENOBUFS 1756 + #define STATUS_NDIS_INVALID_OID cpu_to_le32(0xC0230017) // -EIO 1757 + #define STATUS_NDIS_ADAPTER_REMOVED cpu_to_le32(0xC0230018) // -EIO 1758 + #define STATUS_NDIS_UNSUPPORTED_MEDIA cpu_to_le32(0xC0230019) // -EIO 1759 + #define STATUS_NDIS_GROUP_ADDRESS_IN_USE cpu_to_le32(0xC023001A) // -EIO 1760 + #define STATUS_NDIS_FILE_NOT_FOUND cpu_to_le32(0xC023001B) // -EIO 1761 + #define STATUS_NDIS_ERROR_READING_FILE cpu_to_le32(0xC023001C) // -EIO 1762 + #define STATUS_NDIS_ALREADY_MAPPED cpu_to_le32(0xC023001D) // -EIO 1763 + #define STATUS_NDIS_RESOURCE_CONFLICT cpu_to_le32(0xC023001E) // -EIO 1764 + #define STATUS_NDIS_MEDIA_DISCONNECTED cpu_to_le32(0xC023001F) // -EIO 1765 + #define STATUS_NDIS_INVALID_ADDRESS cpu_to_le32(0xC0230022) // -EIO 1766 + #define STATUS_NDIS_PAUSED cpu_to_le32(0xC023002A) // -EIO 1767 + #define STATUS_NDIS_INTERFACE_NOT_FOUND cpu_to_le32(0xC023002B) // -EIO 1768 + #define STATUS_NDIS_UNSUPPORTED_REVISION cpu_to_le32(0xC023002C) // -EIO 1769 + #define STATUS_NDIS_INVALID_PORT cpu_to_le32(0xC023002D) // -EIO 1770 + #define STATUS_NDIS_INVALID_PORT_STATE cpu_to_le32(0xC023002E) // -EIO 1771 + #define STATUS_NDIS_LOW_POWER_STATE cpu_to_le32(0xC023002F) // -EIO 1772 + #define STATUS_NDIS_NOT_SUPPORTED cpu_to_le32(0xC02300BB) // -ENOSYS 1773 + #define STATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED cpu_to_le32(0xC0232000) // -EIO 1774 + #define STATUS_NDIS_DOT11_MEDIA_IN_USE cpu_to_le32(0xC0232001) // -EIO 1775 + #define STATUS_NDIS_DOT11_POWER_STATE_INVALID cpu_to_le32(0xC0232002) // -EIO 1776 + #define STATUS_IPSEC_BAD_SPI cpu_to_le32(0xC0360001) // -EIO 1777 + #define STATUS_IPSEC_SA_LIFETIME_EXPIRED cpu_to_le32(0xC0360002) // -EIO 1778 + #define STATUS_IPSEC_WRONG_SA cpu_to_le32(0xC0360003) // -EIO 1779 + #define STATUS_IPSEC_REPLAY_CHECK_FAILED cpu_to_le32(0xC0360004) // -EIO 1780 + #define STATUS_IPSEC_INVALID_PACKET cpu_to_le32(0xC0360005) // -EIO 1781 + #define STATUS_IPSEC_INTEGRITY_CHECK_FAILED cpu_to_le32(0xC0360006) // -EIO 1782 + #define STATUS_IPSEC_CLEAR_TEXT_DROP cpu_to_le32(0xC0360007) // -EIO 1780 1783 /* See MS-SMB2 3.3.5.4 */ 1781 - #define STATUS_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP cpu_to_le32(0xC05D0000) 1784 + #define STATUS_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP cpu_to_le32(0xC05D0000) // -EIO 1785 + 1786 + #endif /* FS_SMB_COMMON_SMB2STATUS_H */