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.1-rc1-part1-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6

Pull smb client updates from Steve French:

- Fix EAs bounds check

- Fix OOB read in symlink response parsing

- Add support for creating tmpfiles

- Minor debug improvement for mount failure

- Minor crypto cleanup

- Add missing module description

- mount fix for lease vs. nolease

- Add Metze as maintainer for smbdirect

- Minor error mapping header cleanup

- Improve search speed of SMB1 maperror

- Fix potential null ptr ref in smb2 map error tests

* tag 'v7.1-rc1-part1-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6: (26 commits)
smb: client: allow both 'lease' and 'nolease' mount options
smb: client: get rid of d_drop()+d_add()
smb: client: set ATTR_TEMPORARY with O_TMPFILE | O_EXCL
smb: client: add support for O_TMPFILE
vfs: introduce d_mark_tmpfile_name()
MAINTAINERS: create entry for smbdirect
smb: client: add missing MODULE_DESCRIPTION() to smb1maperror_test
smb: client: fix OOB reads parsing symlink error response
smb: client: fix off-by-8 bounds check in check_wsl_eas()
smb: client: Remove unnecessary selection of CRYPTO_ECB
smb/client: move smb2maperror declarations to smb2proto.h
smb/client: introduce KUnit tests to check DOS/SRV err mapping search
smb/client: check if SMB1 DOS/SRV error mapping arrays are sorted
smb/client: use binary search for SMB1 DOS/SRV error mapping
smb/client: autogenerate SMB1 DOS/SRV to POSIX error mapping
smb/client: annotate smberr.h with POSIX error codes
smb/client: move ERRnetlogonNotStarted to DOS error class
smb/client: introduce KUnit test to check ntstatus_to_dos_map search
smb/client: check if ntstatus_to_dos_map is sorted
smb/client: use binary search for NT status to DOS mapping
...

+1836 -2459
+14
MAINTAINERS
··· 24401 24401 F: Documentation/admin-guide/LSM/Smack.rst 24402 24402 F: security/smack/ 24403 24403 24404 + SMBDIRECT (RDMA Stream Transport with Read/Write-Offload, MS-SMBD) 24405 + M: Steve French <smfrench@gmail.com> 24406 + M: Steve French <sfrench@samba.org> 24407 + M: Namjae Jeon <linkinjeon@kernel.org> 24408 + M: Namjae Jeon <linkinjeon@samba.org> 24409 + R: Stefan Metzmacher <metze@samba.org> 24410 + R: Tom Talpey <tom@talpey.com> 24411 + L: linux-cifs@vger.kernel.org 24412 + L: samba-technical@lists.samba.org (moderated for non-subscribers) 24413 + S: Maintained 24414 + F: fs/smb/client/smbdirect.* 24415 + F: fs/smb/common/smbdirect/ 24416 + F: fs/smb/server/transport_rdma.* 24417 + 24404 24418 SMC91x ETHERNET DRIVER 24405 24419 M: Nicolas Pitre <nico@fluxnic.net> 24406 24420 S: Odd Fixes
+19
fs/dcache.c
··· 3196 3196 } 3197 3197 EXPORT_SYMBOL(d_mark_tmpfile); 3198 3198 3199 + void d_mark_tmpfile_name(struct file *file, const struct qstr *name) 3200 + { 3201 + struct dentry *dentry = file->f_path.dentry; 3202 + char *dname = dentry->d_shortname.string; 3203 + 3204 + BUG_ON(dname_external(dentry)); 3205 + BUG_ON(d_really_is_positive(dentry)); 3206 + BUG_ON(!d_unlinked(dentry)); 3207 + BUG_ON(name->len > DNAME_INLINE_LEN - 1); 3208 + spin_lock(&dentry->d_parent->d_lock); 3209 + spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED); 3210 + dentry->__d_name.len = name->len; 3211 + memcpy(dname, name->name, name->len); 3212 + dname[name->len] = '\0'; 3213 + spin_unlock(&dentry->d_lock); 3214 + spin_unlock(&dentry->d_parent->d_lock); 3215 + } 3216 + EXPORT_SYMBOL(d_mark_tmpfile_name); 3217 + 3199 3218 void d_tmpfile(struct file *file, struct inode *inode) 3200 3219 { 3201 3220 struct dentry *dentry = file->f_path.dentry;
+3
fs/smb/client/.gitignore
··· 1 + smb1_mapping_table.c 2 + smb1_err_dos_map.c 3 + smb1_err_srv_map.c 1 4 smb2_mapping_table.c
+11 -1
fs/smb/client/Kconfig
··· 9 9 select CRYPTO_AEAD2 10 10 select CRYPTO_CCM 11 11 select CRYPTO_GCM 12 - select CRYPTO_ECB 13 12 select CRYPTO_AES 14 13 select CRYPTO_LIB_ARC4 15 14 select CRYPTO_LIB_MD5 ··· 216 217 Say Y here if you want SMB traffic to be compressed. 217 218 If unsure, say N. 218 219 220 + config SMB1_KUNIT_TESTS 221 + tristate "KUnit tests for SMB1" 222 + depends on SMB_KUNIT_TESTS && CIFS_ALLOW_INSECURE_LEGACY 223 + default SMB_KUNIT_TESTS 224 + help 225 + This builds the SMB1-specific KUnit tests. 226 + 227 + These tests are only enabled when legacy insecure SMB1 support 228 + (CIFS_ALLOW_INSECURE_LEGACY) is enabled. 229 + 230 + If unsure, say N. 219 231 endif
+23 -2
fs/smb/client/Makefile
··· 7 7 8 8 cifs-y := trace.o cifsfs.o cifs_debug.o connect.o dir.o file.o \ 9 9 inode.o link.o misc.o netmisc.o smbencrypt.o transport.o \ 10 - cached_dir.o cifs_unicode.o nterr.o cifsencrypt.o \ 10 + cached_dir.o cifs_unicode.o cifsencrypt.o \ 11 11 readdir.o ioctl.o sess.o export.o unc.o winucase.o \ 12 12 smb2ops.o smb2maperror.o smb2transport.o \ 13 13 smb2misc.o smb2pdu.o smb2inode.o smb2file.o cifsacl.o fs_context.o \ ··· 44 44 45 45 cifs-$(CONFIG_CIFS_COMPRESSION) += compress.o compress/lz77.o 46 46 47 + ifneq ($(CONFIG_CIFS_ALLOW_INSECURE_LEGACY),) 48 + # 49 + # Build the SMB1 error mapping tables from nterr.h and smberr.h 50 + # 51 + smb1-gen-y := smb1_mapping_table.c \ 52 + smb1_err_dos_map.c \ 53 + smb1_err_srv_map.c 54 + 55 + $(obj)/smb1_mapping_table.c: $(src)/nterr.h $(src)/gen_smb1_mapping FORCE 56 + $(call if_changed,gen_smb1_mapping) 57 + 58 + $(obj)/smb1_err_%.c: $(src)/smberr.h $(src)/gen_smb1_mapping FORCE 59 + $(call if_changed,gen_smb1_mapping) 60 + 61 + $(obj)/smb1maperror.o: $(addprefix $(obj)/, $(smb1-gen-y)) 62 + 63 + quiet_cmd_gen_smb1_mapping = GEN $@ 64 + cmd_gen_smb1_mapping = perl $(src)/gen_smb1_mapping $< $@ 65 + endif 66 + 47 67 # 48 68 # Build the SMB2 error mapping table from smb2status.h 49 69 # ··· 76 56 quiet_cmd_gen_smb2_mapping = GEN $@ 77 57 cmd_gen_smb2_mapping = perl $(src)/gen_smb2_mapping $< $@ 78 58 59 + obj-$(CONFIG_SMB1_KUNIT_TESTS) += smb1maperror_test.o 79 60 obj-$(CONFIG_SMB_KUNIT_TESTS) += smb2maperror_test.o 80 61 81 62 # Let Kbuild handle tracking and cleaning 82 - targets += smb2_mapping_table.c 63 + targets += smb2_mapping_table.c $(smb1-gen-y)
+10 -1
fs/smb/client/cifsfs.c
··· 124 124 /* Module-wide total cached dirents (in bytes) across all tcons */ 125 125 atomic64_t cifs_dircache_bytes_used = ATOMIC64_INIT(0); 126 126 127 + atomic_t cifs_sillycounter; 128 + atomic_t cifs_tmpcounter; 129 + 127 130 /* 128 131 * Write-only module parameter to drop all cached directory entries across 129 132 * all CIFS mounts. Echo a non-zero value to trigger. ··· 1202 1199 const struct inode_operations cifs_dir_inode_ops = { 1203 1200 .create = cifs_create, 1204 1201 .atomic_open = cifs_atomic_open, 1202 + .tmpfile = cifs_tmpfile, 1205 1203 .lookup = cifs_lookup, 1206 1204 .getattr = cifs_getattr, 1207 1205 .unlink = cifs_unlink, ··· 1915 1911 { 1916 1912 int rc = 0; 1917 1913 1914 + #ifdef CONFIG_CIFS_ALLOW_INSECURE_LEGACY 1915 + rc = smb1_init_maperror(); 1916 + if (rc) 1917 + return rc; 1918 + #endif /* CONFIG_CIFS_ALLOW_INSECURE_LEGACY */ 1919 + 1918 1920 rc = smb2_init_maperror(); 1919 1921 if (rc) 1920 1922 return rc; ··· 2158 2148 ("VFS to access SMB3 servers e.g. Samba, Macs, Azure and Windows (and " 2159 2149 "also older servers complying with the SNIA CIFS Specification)"); 2160 2150 MODULE_VERSION(CIFS_VERSION); 2161 - MODULE_SOFTDEP("ecb"); 2162 2151 MODULE_SOFTDEP("nls"); 2163 2152 MODULE_SOFTDEP("aes"); 2164 2153 MODULE_SOFTDEP("cmac");
+21 -2
fs/smb/client/cifsfs.h
··· 13 13 14 14 #define ROOT_I 2 15 15 16 + extern atomic_t cifs_sillycounter; 17 + extern atomic_t cifs_tmpcounter; 18 + 16 19 /* 17 20 * ino_t is 32-bits on 32-bit arch. We have to squash the 64-bit value down 18 21 * so that it will fit. We use hash_64 to convert the value to 31 bits, and ··· 52 49 /* Functions related to inodes */ 53 50 extern const struct inode_operations cifs_dir_inode_ops; 54 51 struct inode *cifs_root_iget(struct super_block *sb); 55 - int cifs_create(struct mnt_idmap *idmap, struct inode *inode, 52 + int cifs_create(struct mnt_idmap *idmap, struct inode *dir, 56 53 struct dentry *direntry, umode_t mode, bool excl); 57 - int cifs_atomic_open(struct inode *inode, struct dentry *direntry, 54 + int cifs_atomic_open(struct inode *dir, struct dentry *direntry, 58 55 struct file *file, unsigned int oflags, umode_t mode); 56 + int cifs_tmpfile(struct mnt_idmap *idmap, struct inode *dir, 57 + struct file *file, umode_t mode); 59 58 struct dentry *cifs_lookup(struct inode *parent_dir_inode, 60 59 struct dentry *direntry, unsigned int flags); 61 60 int cifs_unlink(struct inode *dir, struct dentry *dentry); ··· 146 141 struct smb3_fs_context; 147 142 struct dentry *cifs_smb3_do_mount(struct file_system_type *fs_type, int flags, 148 143 struct smb3_fs_context *old_ctx); 144 + 145 + char *cifs_silly_fullpath(struct dentry *dentry); 146 + 147 + #define CIFS_TMPNAME_PREFIX ".__smbfile_tmp" 148 + #define CIFS_TMPNAME_PREFIX_LEN ((int)sizeof(CIFS_TMPNAME_PREFIX) - 1) 149 + #define CIFS_TMPNAME_COUNTER_LEN ((int)sizeof(cifs_tmpcounter) * 2) 150 + #define CIFS_TMPNAME_LEN \ 151 + (CIFS_TMPNAME_PREFIX_LEN + CIFS_TMPNAME_COUNTER_LEN) 152 + 153 + #define CIFS_SILLYNAME_PREFIX ".__smbfile_silly" 154 + #define CIFS_SILLYNAME_PREFIX_LEN ((int)sizeof(CIFS_SILLYNAME_PREFIX) - 1) 155 + #define CIFS_SILLYNAME_COUNTER_LEN ((int)sizeof(cifs_sillycounter) * 2) 156 + #define CIFS_SILLYNAME_LEN \ 157 + (CIFS_SILLYNAME_PREFIX_LEN + CIFS_SILLYNAME_COUNTER_LEN) 149 158 150 159 #ifdef CONFIG_CIFS_NFSD_EXPORT 151 160 extern const struct export_operations cifs_export_ops;
+13 -10
fs/smb/client/cifsglob.h
··· 1534 1534 #define CIFS_CACHE_RW_FLG (CIFS_CACHE_READ_FLG | CIFS_CACHE_WRITE_FLG) 1535 1535 #define CIFS_CACHE_RHW_FLG (CIFS_CACHE_RW_FLG | CIFS_CACHE_HANDLE_FLG) 1536 1536 1537 - /* 1538 - * One of these for each file inode 1539 - */ 1537 + enum cifs_inode_flags { 1538 + CIFS_INODE_PENDING_OPLOCK_BREAK, /* oplock break in progress */ 1539 + CIFS_INODE_PENDING_WRITERS, /* Writes in progress */ 1540 + CIFS_INODE_FLAG_UNUSED, /* Unused flag */ 1541 + CIFS_INO_DELETE_PENDING, /* delete pending on server */ 1542 + CIFS_INO_INVALID_MAPPING, /* pagecache is invalid */ 1543 + CIFS_INO_LOCK, /* lock bit for synchronization */ 1544 + CIFS_INO_TMPFILE, /* for O_TMPFILE inodes */ 1545 + CIFS_INO_CLOSE_ON_LOCK, /* Not to defer the close when lock is set */ 1546 + }; 1540 1547 1541 1548 struct cifsInodeInfo { 1542 1549 struct netfs_inode netfs; /* Netfslib context and vfs inode */ ··· 1561 1554 __u32 cifsAttrs; /* e.g. DOS archive bit, sparse, compressed, system */ 1562 1555 unsigned int oplock; /* oplock/lease level we have */ 1563 1556 __u16 epoch; /* used to track lease state changes */ 1564 - #define CIFS_INODE_PENDING_OPLOCK_BREAK (0) /* oplock break in progress */ 1565 - #define CIFS_INODE_PENDING_WRITERS (1) /* Writes in progress */ 1566 - #define CIFS_INODE_FLAG_UNUSED (2) /* Unused flag */ 1567 - #define CIFS_INO_DELETE_PENDING (3) /* delete pending on server */ 1568 - #define CIFS_INO_INVALID_MAPPING (4) /* pagecache is invalid */ 1569 - #define CIFS_INO_LOCK (5) /* lock bit for synchronization */ 1570 - #define CIFS_INO_CLOSE_ON_LOCK (7) /* Not to defer the close when lock is set */ 1571 1557 unsigned long flags; 1572 1558 spinlock_t writers_lock; 1573 1559 unsigned int writers; /* Number of writers on this inode */ ··· 2259 2259 struct kvec qi_iov; 2260 2260 struct kvec io_iov[SMB2_IOCTL_IOV_SIZE]; 2261 2261 struct kvec si_iov[SMB2_SET_INFO_IOV_SIZE]; 2262 + struct kvec hl_iov[SMB2_SET_INFO_IOV_SIZE]; 2262 2263 struct kvec unlink_iov[SMB2_SET_INFO_IOV_SIZE]; 2263 2264 struct kvec rename_iov[SMB2_SET_INFO_IOV_SIZE]; 2264 2265 struct kvec close_iov; ··· 2384 2383 opts |= CREATE_WRITE_THROUGH; 2385 2384 if (oflags & O_DIRECT) 2386 2385 opts |= CREATE_NO_BUFFER; 2386 + if (oflags & O_TMPFILE) 2387 + opts |= CREATE_DELETE_ON_CLOSE; 2387 2388 return opts; 2388 2389 } 2389 2390
+2 -1
fs/smb/client/cifsproto.h
··· 141 141 int __cifs_get_writable_file(struct cifsInodeInfo *cifs_inode, 142 142 unsigned int find_flags, unsigned int open_flags, 143 143 struct cifsFileInfo **ret_file); 144 - int cifs_get_writable_path(struct cifs_tcon *tcon, const char *name, int flags, 144 + int cifs_get_writable_path(struct cifs_tcon *tcon, const char *name, 145 + struct inode *inode, int flags, 145 146 struct cifsFileInfo **ret_file); 146 147 struct cifsFileInfo *__find_readable_file(struct cifsInodeInfo *cifs_inode, 147 148 unsigned int find_flags,
+290 -62
fs/smb/client/dir.c
··· 172 172 return 0; 173 173 } 174 174 175 + static char *alloc_parent_path(struct dentry *dentry, size_t namelen) 176 + { 177 + struct cifs_sb_info *cifs_sb = CIFS_SB(dentry); 178 + void *page = alloc_dentry_path(); 179 + const char *path; 180 + size_t size; 181 + char *npath; 182 + 183 + path = build_path_from_dentry(dentry->d_parent, page); 184 + if (IS_ERR(path)) { 185 + npath = ERR_CAST(path); 186 + goto out; 187 + } 188 + 189 + size = strlen(path) + namelen + 2; 190 + npath = kmalloc(size, GFP_KERNEL); 191 + if (!npath) 192 + npath = ERR_PTR(-ENOMEM); 193 + else 194 + scnprintf(npath, size, "%s%c", path, CIFS_DIR_SEP(cifs_sb)); 195 + out: 196 + free_dentry_path(page); 197 + return npath; 198 + } 175 199 176 200 /* Inode operations in similar order to how they appear in Linux file fs.h */ 177 - 178 - static int cifs_do_create(struct inode *inode, struct dentry *direntry, unsigned int xid, 179 - struct tcon_link *tlink, unsigned int oflags, umode_t mode, __u32 *oplock, 180 - struct cifs_fid *fid, struct cifs_open_info_data *buf) 201 + static int __cifs_do_create(struct inode *dir, struct dentry *direntry, 202 + const char *full_path, unsigned int xid, 203 + struct tcon_link *tlink, unsigned int oflags, 204 + umode_t mode, __u32 *oplock, struct cifs_fid *fid, 205 + struct cifs_open_info_data *buf, 206 + struct inode **inode) 181 207 { 182 208 int rc = -ENOENT; 183 209 int create_options = CREATE_NOT_DIR; 184 210 int desired_access; 185 - struct cifs_sb_info *cifs_sb = CIFS_SB(inode); 211 + struct cifs_sb_info *cifs_sb = CIFS_SB(dir); 186 212 struct cifs_tcon *tcon = tlink_tcon(tlink); 187 - const char *full_path; 188 - void *page = alloc_dentry_path(); 189 213 struct inode *newinode = NULL; 190 214 unsigned int sbflags = cifs_sb_flags(cifs_sb); 191 215 int disposition; ··· 219 195 int rdwr_for_fscache = 0; 220 196 __le32 lease_flags = 0; 221 197 198 + *inode = NULL; 222 199 *oplock = 0; 223 200 if (tcon->ses->server->oplocks) 224 201 *oplock = REQ_OPLOCK; 225 202 226 - full_path = build_path_from_dentry(direntry, page); 227 - if (IS_ERR(full_path)) { 228 - rc = PTR_ERR(full_path); 229 - goto out; 230 - } 231 - 232 203 /* If we're caching, we need to be able to fill in around partial writes. */ 233 - if (cifs_fscache_enabled(inode) && (oflags & O_ACCMODE) == O_WRONLY) 204 + if (cifs_fscache_enabled(dir) && (oflags & O_ACCMODE) == O_WRONLY) 234 205 rdwr_for_fscache = 1; 235 206 236 207 #ifdef CONFIG_CIFS_ALLOW_INSECURE_LEGACY 237 208 if (tcon->unix_ext && cap_unix(tcon->ses) && !tcon->broken_posix_open && 238 209 (CIFS_UNIX_POSIX_PATH_OPS_CAP & 239 210 le64_to_cpu(tcon->fsUnixInfo.Capability))) { 240 - rc = cifs_posix_open(full_path, &newinode, inode->i_sb, mode, 211 + rc = cifs_posix_open(full_path, &newinode, dir->i_sb, mode, 241 212 oflags, oplock, &fid->netfid, xid); 242 213 switch (rc) { 243 214 case 0: ··· 244 225 if (S_ISDIR(newinode->i_mode)) { 245 226 CIFSSMBClose(xid, tcon, fid->netfid); 246 227 iput(newinode); 247 - rc = -EISDIR; 248 - goto out; 228 + return -EISDIR; 249 229 } 250 230 251 231 if (!S_ISREG(newinode->i_mode)) { ··· 287 269 break; 288 270 289 271 default: 290 - goto out; 272 + return rc; 291 273 } 292 274 /* 293 275 * fallthrough to retry, using older open call, this is case ··· 305 287 desired_access |= GENERIC_WRITE; 306 288 if (rdwr_for_fscache == 1) 307 289 desired_access |= GENERIC_READ; 290 + if (oflags & O_TMPFILE) 291 + desired_access |= DELETE; 308 292 309 293 disposition = FILE_OVERWRITE_IF; 310 - if ((oflags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL)) 294 + if (oflags & O_CREAT) { 295 + if (oflags & O_EXCL) 296 + disposition = FILE_CREATE; 297 + else if (oflags & O_TRUNC) 298 + disposition = FILE_OVERWRITE_IF; 299 + else 300 + disposition = FILE_OPEN_IF; 301 + } else if (oflags & O_TMPFILE) { 311 302 disposition = FILE_CREATE; 312 - else if ((oflags & (O_CREAT | O_TRUNC)) == (O_CREAT | O_TRUNC)) 313 - disposition = FILE_OVERWRITE_IF; 314 - else if ((oflags & O_CREAT) == O_CREAT) 315 - disposition = FILE_OPEN_IF; 316 - else 303 + } else { 317 304 cifs_dbg(FYI, "Create flag not set in create function\n"); 305 + } 318 306 319 307 /* 320 308 * BB add processing to set equivalent of mode - e.g. via CreateX with 321 309 * ACLs 322 310 */ 323 311 324 - if (!server->ops->open) { 325 - rc = -ENOSYS; 326 - goto out; 327 - } 312 + if (!server->ops->open) 313 + return -EOPNOTSUPP; 328 314 329 315 create_options |= cifs_open_create_options(oflags, create_options); 330 316 /* ··· 380 358 rdwr_for_fscache = 2; 381 359 goto retry_open; 382 360 } 383 - goto out; 361 + return rc; 384 362 } 385 363 if (rdwr_for_fscache == 2) 386 - cifs_invalidate_cache(inode, FSCACHE_INVAL_DIO_WRITE); 364 + cifs_invalidate_cache(dir, FSCACHE_INVAL_DIO_WRITE); 387 365 388 366 #ifdef CONFIG_CIFS_ALLOW_INSECURE_LEGACY 389 367 /* ··· 401 379 402 380 if (sbflags & CIFS_MOUNT_SET_UID) { 403 381 args.uid = current_fsuid(); 404 - if (inode->i_mode & S_ISGID) 405 - args.gid = inode->i_gid; 382 + if (dir->i_mode & S_ISGID) 383 + args.gid = dir->i_gid; 406 384 else 407 385 args.gid = current_fsgid(); 408 386 } else { ··· 424 402 cifs_create_get_file_info: 425 403 /* server might mask mode so we have to query for it */ 426 404 if (tcon->unix_ext) 427 - rc = cifs_get_inode_info_unix(&newinode, full_path, inode->i_sb, 405 + rc = cifs_get_inode_info_unix(&newinode, full_path, dir->i_sb, 428 406 xid); 429 407 else { 430 408 #else 431 409 { 432 410 #endif /* CONFIG_CIFS_ALLOW_INSECURE_LEGACY */ 433 411 /* TODO: Add support for calling POSIX query info here, but passing in fid */ 434 - rc = cifs_get_inode_info(&newinode, full_path, buf, inode->i_sb, xid, fid); 412 + rc = cifs_get_inode_info(&newinode, full_path, buf, dir->i_sb, xid, fid); 435 413 if (newinode) { 436 414 if (server->ops->set_lease_key) 437 415 server->ops->set_lease_key(newinode, fid); ··· 440 418 newinode->i_mode = mode; 441 419 if (sbflags & CIFS_MOUNT_SET_UID) { 442 420 newinode->i_uid = current_fsuid(); 443 - if (inode->i_mode & S_ISGID) 444 - newinode->i_gid = inode->i_gid; 421 + if (dir->i_mode & S_ISGID) 422 + newinode->i_gid = dir->i_gid; 445 423 else 446 424 newinode->i_gid = current_fsgid(); 447 425 } ··· 458 436 goto out_err; 459 437 } 460 438 461 - if (newinode) 462 - if (S_ISDIR(newinode->i_mode)) { 463 - rc = -EISDIR; 464 - goto out_err; 465 - } 439 + if (newinode && S_ISDIR(newinode->i_mode)) { 440 + rc = -EISDIR; 441 + goto out_err; 442 + } 466 443 467 - d_drop(direntry); 468 - d_add(direntry, newinode); 469 - 470 - out: 471 - free_dentry_path(page); 444 + *inode = newinode; 472 445 return rc; 473 446 474 447 out_err: ··· 471 454 server->ops->close(xid, tcon, fid); 472 455 if (newinode) 473 456 iput(newinode); 474 - goto out; 457 + return rc; 475 458 } 476 459 477 - int 478 - cifs_atomic_open(struct inode *inode, struct dentry *direntry, 479 - struct file *file, unsigned int oflags, umode_t mode) 460 + static int cifs_do_create(struct inode *dir, struct dentry *direntry, 461 + unsigned int xid, struct tcon_link *tlink, 462 + unsigned int oflags, umode_t mode, 463 + __u32 *oplock, struct cifs_fid *fid, 464 + struct cifs_open_info_data *buf, 465 + struct inode **inode) 480 466 { 481 - struct cifs_sb_info *cifs_sb = CIFS_SB(inode); 467 + void *page = alloc_dentry_path(); 468 + const char *full_path; 469 + int rc; 470 + 471 + full_path = build_path_from_dentry(direntry, page); 472 + if (IS_ERR(full_path)) { 473 + rc = PTR_ERR(full_path); 474 + } else { 475 + rc = __cifs_do_create(dir, direntry, full_path, xid, 476 + tlink, oflags, mode, oplock, 477 + fid, buf, inode); 478 + } 479 + free_dentry_path(page); 480 + return rc; 481 + } 482 + 483 + 484 + /* 485 + * Look up, create and open a CIFS file. 486 + * 487 + * The initial dentry state is in-lookup or hashed-negative. On success, dentry 488 + * will become hashed-positive by calling d_splice_alias() if in-lookup, 489 + * otherwise d_instantiate(). 490 + */ 491 + int cifs_atomic_open(struct inode *dir, struct dentry *direntry, 492 + struct file *file, unsigned int oflags, umode_t mode) 493 + { 494 + struct cifs_sb_info *cifs_sb = CIFS_SB(dir); 482 495 struct cifs_open_info_data buf = {}; 483 496 struct TCP_Server_Info *server; 484 497 struct cifsFileInfo *file_info; ··· 517 470 struct tcon_link *tlink; 518 471 struct cifs_tcon *tcon; 519 472 unsigned int sbflags; 473 + struct dentry *alias; 474 + struct inode *inode; 520 475 unsigned int xid; 521 476 __u32 oplock; 522 477 int rc; ··· 545 496 if (!d_in_lookup(direntry)) 546 497 return -ENOENT; 547 498 548 - return finish_no_open(file, cifs_lookup(inode, direntry, 0)); 499 + return finish_no_open(file, cifs_lookup(dir, direntry, 0)); 549 500 } 550 501 551 502 xid = get_xid(); 552 503 553 504 cifs_dbg(FYI, "parent inode = 0x%p name is: %pd and dentry = 0x%p\n", 554 - inode, direntry, direntry); 505 + dir, direntry, direntry); 555 506 556 507 tlink = cifs_sb_tlink(cifs_sb); 557 508 if (IS_ERR(tlink)) { ··· 572 523 573 524 cifs_add_pending_open(&fid, tlink, &open); 574 525 575 - rc = cifs_do_create(inode, direntry, xid, tlink, oflags, mode, 576 - &oplock, &fid, &buf); 526 + rc = cifs_do_create(dir, direntry, xid, tlink, oflags, mode, 527 + &oplock, &fid, &buf, &inode); 577 528 if (rc) { 578 529 cifs_del_pending_open(&open); 579 530 goto out; 531 + } 532 + 533 + if (d_in_lookup(direntry)) { 534 + alias = d_splice_alias(inode, direntry); 535 + if (!IS_ERR_OR_NULL(alias)) 536 + direntry = alias; 537 + } else { 538 + d_instantiate(direntry, inode); 580 539 } 581 540 582 541 if ((oflags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL)) ··· 626 569 return rc; 627 570 } 628 571 629 - int cifs_create(struct mnt_idmap *idmap, struct inode *inode, 572 + /* 573 + * Create a CIFS file. 574 + * 575 + * The initial dentry state is hashed-negative. On success, dentry will become 576 + * hashed-positive by calling d_instantiate(). 577 + */ 578 + int cifs_create(struct mnt_idmap *idmap, struct inode *dir, 630 579 struct dentry *direntry, umode_t mode, bool excl) 631 580 { 581 + struct cifs_sb_info *cifs_sb = CIFS_SB(dir); 632 582 int rc; 633 583 unsigned int xid = get_xid(); 634 584 /* ··· 649 585 struct tcon_link *tlink; 650 586 struct cifs_tcon *tcon; 651 587 struct TCP_Server_Info *server; 588 + struct inode *inode; 652 589 struct cifs_fid fid; 653 590 __u32 oplock; 654 591 struct cifs_open_info_data buf = {}; 655 592 656 593 cifs_dbg(FYI, "cifs_create parent inode = 0x%p name is: %pd and dentry = 0x%p\n", 657 - inode, direntry, direntry); 594 + dir, direntry, direntry); 658 595 659 - if (unlikely(cifs_forced_shutdown(CIFS_SB(inode->i_sb)))) { 596 + if (unlikely(cifs_forced_shutdown(cifs_sb))) { 660 597 rc = smb_EIO(smb_eio_trace_forced_shutdown); 661 598 goto out_free_xid; 662 599 } 663 600 664 - tlink = cifs_sb_tlink(CIFS_SB(inode->i_sb)); 601 + tlink = cifs_sb_tlink(cifs_sb); 665 602 rc = PTR_ERR(tlink); 666 603 if (IS_ERR(tlink)) 667 604 goto out_free_xid; ··· 673 608 if (server->ops->new_lease_key) 674 609 server->ops->new_lease_key(&fid); 675 610 676 - rc = cifs_do_create(inode, direntry, xid, tlink, oflags, mode, &oplock, &fid, &buf); 677 - if (!rc && server->ops->close) 678 - server->ops->close(xid, tcon, &fid); 611 + rc = cifs_do_create(dir, direntry, xid, tlink, oflags, 612 + mode, &oplock, &fid, &buf, &inode); 613 + if (!rc) { 614 + d_instantiate(direntry, inode); 615 + if (server->ops->close) 616 + server->ops->close(xid, tcon, &fid); 617 + } 679 618 680 619 cifs_free_open_info(&buf); 681 620 cifs_put_tlink(tlink); ··· 1026 957 } 1027 958 1028 959 return 0; 960 + } 961 + 962 + static int set_tmpfile_attr(const unsigned int xid, unsigned int oflags, 963 + struct inode *inode, const char *full_path, 964 + struct TCP_Server_Info *server) 965 + { 966 + struct cifsInodeInfo *cinode = CIFS_I(inode); 967 + FILE_BASIC_INFO fi; 968 + 969 + cinode->cifsAttrs |= ATTR_HIDDEN; 970 + if (oflags & O_EXCL) 971 + cinode->cifsAttrs |= ATTR_TEMPORARY; 972 + 973 + fi = (FILE_BASIC_INFO) { 974 + .Attributes = cpu_to_le32(cinode->cifsAttrs), 975 + }; 976 + return server->ops->set_file_info(inode, full_path, &fi, xid); 977 + } 978 + 979 + /* 980 + * Create a hidden temporary CIFS file with delete-on-close bit set. 981 + * 982 + * The initial dentry state is unhashed-negative. On success, dentry will 983 + * become unhashed-positive by calling d_instantiate(). 984 + */ 985 + int cifs_tmpfile(struct mnt_idmap *idmap, struct inode *dir, 986 + struct file *file, umode_t mode) 987 + { 988 + struct dentry *dentry = file->f_path.dentry; 989 + struct cifs_sb_info *cifs_sb = CIFS_SB(dir); 990 + char *path __free(kfree) = NULL, *name; 991 + unsigned int oflags = file->f_flags; 992 + size_t size = CIFS_TMPNAME_LEN + 1; 993 + int retries = 0, max_retries = 16; 994 + struct TCP_Server_Info *server; 995 + struct cifs_pending_open open; 996 + struct cifsFileInfo *cfile; 997 + struct cifs_fid fid = {}; 998 + struct tcon_link *tlink; 999 + struct cifs_tcon *tcon; 1000 + unsigned int sbflags; 1001 + struct inode *inode; 1002 + unsigned int xid; 1003 + __u32 oplock; 1004 + int rc; 1005 + 1006 + if (unlikely(cifs_forced_shutdown(cifs_sb))) 1007 + return smb_EIO(smb_eio_trace_forced_shutdown); 1008 + 1009 + tlink = cifs_sb_tlink(cifs_sb); 1010 + if (IS_ERR(tlink)) 1011 + return PTR_ERR(tlink); 1012 + tcon = tlink_tcon(tlink); 1013 + server = tcon->ses->server; 1014 + 1015 + xid = get_xid(); 1016 + 1017 + if (server->vals->protocol_id < SMB20_PROT_ID) { 1018 + cifs_dbg(VFS | ONCE, "O_TMPFILE is supported only in SMB2+\n"); 1019 + rc = -EOPNOTSUPP; 1020 + goto out; 1021 + } 1022 + 1023 + if (server->ops->new_lease_key) 1024 + server->ops->new_lease_key(&fid); 1025 + cifs_add_pending_open(&fid, tlink, &open); 1026 + 1027 + path = alloc_parent_path(dentry, size - 1); 1028 + if (IS_ERR(path)) { 1029 + cifs_del_pending_open(&open); 1030 + rc = PTR_ERR(path); 1031 + path = NULL; 1032 + goto out; 1033 + } 1034 + 1035 + name = path + strlen(path); 1036 + do { 1037 + scnprintf(name, size, 1038 + CIFS_TMPNAME_PREFIX "%0*x", 1039 + CIFS_TMPNAME_COUNTER_LEN, 1040 + atomic_inc_return(&cifs_tmpcounter)); 1041 + rc = __cifs_do_create(dir, dentry, path, xid, tlink, oflags, 1042 + mode, &oplock, &fid, NULL, &inode); 1043 + if (!rc) { 1044 + set_nlink(inode, 0); 1045 + mark_inode_dirty(inode); 1046 + d_mark_tmpfile_name(file, &QSTR_LEN(name, size - 1)); 1047 + d_instantiate(dentry, inode); 1048 + break; 1049 + } 1050 + } while (unlikely(rc == -EEXIST) && ++retries < max_retries); 1051 + 1052 + if (rc) { 1053 + cifs_del_pending_open(&open); 1054 + goto out; 1055 + } 1056 + 1057 + rc = finish_open(file, dentry, generic_file_open); 1058 + if (rc) 1059 + goto err_open; 1060 + 1061 + sbflags = cifs_sb_flags(cifs_sb); 1062 + if ((file->f_flags & O_DIRECT) && (sbflags & CIFS_MOUNT_STRICT_IO)) { 1063 + if (sbflags & CIFS_MOUNT_NO_BRL) 1064 + file->f_op = &cifs_file_direct_nobrl_ops; 1065 + else 1066 + file->f_op = &cifs_file_direct_ops; 1067 + } 1068 + 1069 + cfile = cifs_new_fileinfo(&fid, file, tlink, oplock, NULL); 1070 + if (!cfile) { 1071 + rc = -ENOMEM; 1072 + goto err_open; 1073 + } 1074 + 1075 + rc = set_tmpfile_attr(xid, oflags, inode, path, server); 1076 + if (rc) 1077 + goto out; 1078 + 1079 + fscache_use_cookie(cifs_inode_cookie(file_inode(file)), 1080 + file->f_mode & FMODE_WRITE); 1081 + out: 1082 + cifs_put_tlink(tlink); 1083 + free_xid(xid); 1084 + return rc; 1085 + err_open: 1086 + cifs_del_pending_open(&open); 1087 + if (server->ops->close) 1088 + server->ops->close(xid, tcon, &fid); 1089 + goto out; 1090 + } 1091 + 1092 + char *cifs_silly_fullpath(struct dentry *dentry) 1093 + { 1094 + unsigned char name[CIFS_SILLYNAME_LEN + 1]; 1095 + int retries = 0, max_retries = 16; 1096 + size_t namesize = sizeof(name); 1097 + struct dentry *sdentry = NULL; 1098 + char *path; 1099 + 1100 + do { 1101 + dput(sdentry); 1102 + scnprintf(name, namesize, 1103 + CIFS_SILLYNAME_PREFIX "%0*x", 1104 + CIFS_SILLYNAME_COUNTER_LEN, 1105 + atomic_inc_return(&cifs_sillycounter)); 1106 + sdentry = lookup_noperm(&QSTR(name), dentry->d_parent); 1107 + if (IS_ERR(sdentry)) 1108 + return ERR_CAST(sdentry); 1109 + if (d_is_negative(sdentry)) { 1110 + dput(sdentry); 1111 + path = alloc_parent_path(dentry, CIFS_SILLYNAME_LEN); 1112 + if (!IS_ERR(path)) 1113 + strcat(path, name); 1114 + return path; 1115 + } 1116 + } while (++retries < max_retries); 1117 + dput(sdentry); 1118 + return ERR_PTR(-EBUSY); 1029 1119 } 1030 1120 1031 1121 const struct dentry_operations cifs_ci_dentry_ops = {
+35 -18
fs/smb/client/file.c
··· 406 406 */ 407 407 } 408 408 409 - static inline int cifs_convert_flags(unsigned int flags, int rdwr_for_fscache) 409 + static inline int cifs_convert_flags(unsigned int oflags, int rdwr_for_fscache) 410 410 { 411 - if ((flags & O_ACCMODE) == O_RDONLY) 412 - return GENERIC_READ; 413 - else if ((flags & O_ACCMODE) == O_WRONLY) 414 - return rdwr_for_fscache == 1 ? (GENERIC_READ | GENERIC_WRITE) : GENERIC_WRITE; 415 - else if ((flags & O_ACCMODE) == O_RDWR) { 411 + int flags = 0; 412 + 413 + if (oflags & O_TMPFILE) 414 + flags |= DELETE; 415 + 416 + if ((oflags & O_ACCMODE) == O_RDONLY) 417 + return flags | GENERIC_READ; 418 + if ((oflags & O_ACCMODE) == O_WRONLY) { 419 + return flags | (rdwr_for_fscache == 1 ? 420 + (GENERIC_READ | GENERIC_WRITE) : GENERIC_WRITE); 421 + } 422 + if ((oflags & O_ACCMODE) == O_RDWR) { 416 423 /* GENERIC_ALL is too much permission to request 417 424 can cause unnecessary access denied on create */ 418 425 /* return GENERIC_ALL; */ 419 - return (GENERIC_READ | GENERIC_WRITE); 426 + return flags | GENERIC_READ | GENERIC_WRITE; 420 427 } 421 428 422 - return (READ_CONTROL | FILE_WRITE_ATTRIBUTES | FILE_READ_ATTRIBUTES | 423 - FILE_WRITE_EA | FILE_APPEND_DATA | FILE_WRITE_DATA | 424 - FILE_READ_DATA); 429 + return flags | READ_CONTROL | FILE_WRITE_ATTRIBUTES | 430 + FILE_READ_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | 431 + FILE_WRITE_DATA | FILE_READ_DATA; 425 432 } 426 433 427 434 #ifdef CONFIG_CIFS_ALLOW_INSECURE_LEGACY ··· 703 696 cfile->f_flags = file->f_flags; 704 697 cfile->invalidHandle = false; 705 698 cfile->deferred_close_scheduled = false; 699 + cfile->status_file_deleted = file->f_flags & O_TMPFILE; 706 700 cfile->tlink = cifs_get_tlink(tlink); 707 701 INIT_WORK(&cfile->oplock_break, cifs_oplock_break); 708 702 INIT_WORK(&cfile->put, cifsFileInfo_put_work); ··· 735 727 736 728 /* if readable file instance put first in list*/ 737 729 spin_lock(&cinode->open_file_lock); 730 + if (file->f_flags & O_TMPFILE) 731 + set_bit(CIFS_INO_TMPFILE, &cinode->flags); 738 732 fid->purge_cache = false; 739 733 server->ops->set_fid(cfile, fid, oplock); 740 734 ··· 2588 2578 struct cifsFileInfo **ret_file) 2589 2579 { 2590 2580 struct cifsFileInfo *open_file, *inv_file = NULL; 2581 + bool fsuid_only, with_delete; 2591 2582 struct cifs_sb_info *cifs_sb; 2592 2583 bool any_available = false; 2593 - int rc = -EBADF; 2594 2584 unsigned int refind = 0; 2595 - bool fsuid_only = find_flags & FIND_FSUID_ONLY; 2596 - bool with_delete = find_flags & FIND_WITH_DELETE; 2597 2585 *ret_file = NULL; 2586 + int rc = -EBADF; 2598 2587 2599 2588 /* 2600 2589 * Having a null inode here (because mapping->host was set to zero by ··· 2607 2598 return rc; 2608 2599 } 2609 2600 2601 + if (test_bit(CIFS_INO_TMPFILE, &cifs_inode->flags)) 2602 + find_flags = FIND_ANY; 2603 + 2610 2604 cifs_sb = CIFS_SB(cifs_inode); 2611 2605 2606 + with_delete = find_flags & FIND_WITH_DELETE; 2607 + fsuid_only = find_flags & FIND_FSUID_ONLY; 2612 2608 /* only filter by fsuid on multiuser mounts */ 2613 2609 if (!(cifs_sb_flags(cifs_sb) & CIFS_MOUNT_MULTIUSER)) 2614 2610 fsuid_only = false; ··· 2697 2683 return cfile; 2698 2684 } 2699 2685 2700 - int 2701 - cifs_get_writable_path(struct cifs_tcon *tcon, const char *name, 2702 - int flags, 2703 - struct cifsFileInfo **ret_file) 2686 + int cifs_get_writable_path(struct cifs_tcon *tcon, const char *name, 2687 + struct inode *inode, int flags, 2688 + struct cifsFileInfo **ret_file) 2704 2689 { 2705 2690 struct cifsFileInfo *cfile; 2706 - void *page = alloc_dentry_path(); 2691 + void *page; 2707 2692 2708 2693 *ret_file = NULL; 2709 2694 2695 + if (inode) 2696 + return cifs_get_writable_file(CIFS_I(inode), flags, ret_file); 2697 + 2698 + page = alloc_dentry_path(); 2710 2699 spin_lock(&tcon->open_file_lock); 2711 2700 list_for_each_entry(cfile, &tcon->openFileList, tlist) { 2712 2701 struct cifsInodeInfo *cinode;
+12 -6
fs/smb/client/fs_context.c
··· 80 80 fsparam_flag_no("forcegid", Opt_forcegid), 81 81 fsparam_flag("noblocksend", Opt_noblocksend), 82 82 fsparam_flag("noautotune", Opt_noautotune), 83 - fsparam_flag("nolease", Opt_nolease), 83 + fsparam_flag_no("lease", Opt_lease), 84 84 fsparam_flag_no("hard", Opt_hard), 85 85 fsparam_flag_no("soft", Opt_soft), 86 86 fsparam_flag_no("perm", Opt_perm), ··· 662 662 663 663 /* make sure we have a valid UNC double delimiter prefix */ 664 664 len = strspn(devname, delims); 665 - if (len != 2) 665 + if (len != 2) { 666 + cifs_dbg(VFS, "UNC: path must begin with // or \\\\\n"); 666 667 return -EINVAL; 668 + } 667 669 668 670 /* find delimiter between host and sharename */ 669 671 pos = strpbrk(devname + 2, delims); 670 - if (!pos) 672 + if (!pos) { 673 + cifs_dbg(VFS, "UNC: missing delimiter between hostname and share name\n"); 671 674 return -EINVAL; 675 + } 672 676 673 677 /* record the server hostname */ 674 678 kfree(ctx->server_hostname); ··· 685 681 686 682 /* now go until next delimiter or end of string */ 687 683 len = strcspn(pos, delims); 688 - if (!len) 684 + if (!len) { 685 + cifs_dbg(VFS, "UNC: missing share name\n"); 689 686 return -EINVAL; 687 + } 690 688 691 689 /* move "pos" up to delimiter or NULL */ 692 690 pos += len; ··· 1340 1334 case Opt_noautotune: 1341 1335 ctx->noautotune = 1; 1342 1336 break; 1343 - case Opt_nolease: 1344 - ctx->no_lease = 1; 1337 + case Opt_lease: 1338 + ctx->no_lease = result.negated; 1345 1339 break; 1346 1340 case Opt_nosparse: 1347 1341 ctx->no_sparse = 1;
+1 -1
fs/smb/client/fs_context.h
··· 102 102 Opt_forcegid, 103 103 Opt_noblocksend, 104 104 Opt_noautotune, 105 - Opt_nolease, 105 + Opt_lease, 106 106 Opt_nosparse, 107 107 Opt_hard, 108 108 Opt_soft,
+124
fs/smb/client/gen_smb1_mapping
··· 1 + #!/usr/bin/perl -w 2 + # SPDX-License-Identifier: GPL-2.0-or-later 3 + # 4 + # Script to generate SMB1 error mapping tables. 5 + # 6 + # Copyright (C) 2026 KylinSoft Co., Ltd. All rights reserved. 7 + # Author(s): Huiwen He <hehuiwen@kylinos.cn> 8 + # ChenXiaoSong <chenxiaosong@kylinos.cn> 9 + # 10 + use strict; 11 + 12 + if ($#ARGV != 1) { 13 + print STDERR "Usage: $0 <in-file> <out-file>\n"; 14 + exit(2); 15 + } 16 + 17 + # Parse input parameters and extract filenames 18 + my $in_file = $ARGV[0]; 19 + my $out_file = $ARGV[1]; 20 + my $input_name = (split m|/|, $in_file)[-1]; 21 + my $output_name = (split m|/|, $out_file)[-1]; 22 + my $script_name = (split m|/|, $0)[-1]; 23 + my @list = (); 24 + my %seen = (); 25 + my $current_class = ""; 26 + 27 + # Parse annotated entries from the input file 28 + open(my $in, "<", $in_file) or die "Cannot open $in_file: $!"; 29 + if ($in_file =~ /nterr\.h$/) { 30 + while (<$in>) { 31 + # Handle backslash line continuation 32 + $_ .= <$in> while s/\\\s*\n//; 33 + 34 + # Match #define NT_STATUS_... followed by // CLASS, CODE or /* CLASS, CODE */ 35 + my $re = qr{^\s*#define\s+(NT_STATUS_[A-Za-z0-9_]+)\s+(.+?)\s*} . 36 + qr{(?://\s*|/\*\s*)([A-Z0-9_]+)\s*,\s*([A-Za-z0-9_]+)}; 37 + 38 + if (/$re/) { 39 + my ($name, $val_str, $class, $code) = ($1, $2, $3, $4); 40 + 41 + # Skip duplicate macro names 42 + next if $seen{$name}++; 43 + 44 + # Clean up value string (remove parens, spaces) 45 + $val_str =~ s/[\s\(\)]//g; 46 + my $val = 0; 47 + foreach my $part (split(/\|/, $val_str)) { 48 + $val |= hex($part); 49 + } 50 + push @list, { val => $val, name => $name, class => $class, code => $code }; 51 + } elsif (/^\s*#define\s+NT_STATUS_.*(?:\/\/|\/\*)/) { 52 + # Error if macro has a comment (// or /*) but fails mapping format 53 + die "Error: Invalid mapping comment format in $in_file: $_"; 54 + } 55 + } 56 + } elsif ($in_file =~ /smberr\.h$/) { 57 + while (<$in>) { 58 + # Handle backslash line continuation 59 + $_ .= <$in> while s/\\\s*\n//; 60 + 61 + # Detect current error class from header comments (ERRDOS or ERRSRV) 62 + if (/generated with the (\w+) error class/) { 63 + $current_class = $1; 64 + } 65 + 66 + # Match #define ERR/Err_... <value> followed by // -POSIX_ERR or /* -POSIX_ERR */ 67 + if (/^\s*#define\s+((?:ERR|Err)[A-Za-z0-9_]+)\s+([0-9a-fA-FxX]+)\s*(?:\/\/|\/\*)\s*(-[A-Z0-9_]+)/) { 68 + my ($name, $val_str, $error) = ($1, $2, $3); 69 + my $val = ($val_str =~ /^0x/i) ? hex($val_str) : $val_str; 70 + push @list, { val => $val, name => $name, error => $error, class => $current_class }; 71 + } elsif ($current_class && /^\s*#define\s+(?:ERR|Err).*?(?:\/\/|\/\*)/) { 72 + # Error if macro has a comment (// or /*) but fails mapping format 73 + die "Error: Invalid mapping comment format in $in_file: $_"; 74 + } 75 + } 76 + } 77 + close($in); 78 + 79 + # Fail if no entries were found to avoid broken builds 80 + die "Error: No mapping entries found in $in_file\n" unless @list; 81 + 82 + # Sort entries numerically by value 83 + @list = sort { $a->{val} <=> $b->{val} } @list; 84 + 85 + # Generate the C mapping table output file 86 + open(my $out, ">", $out_file) or die "Cannot open $out_file: $!"; 87 + print $out "/* Autogenerated from $input_name by $script_name */\n\n"; 88 + 89 + if ($output_name eq "smb1_mapping_table.c") { 90 + # Generate NT status -> DOS error mapping file 91 + 92 + my $count = scalar @list; 93 + my $full_names = ""; 94 + 95 + for (my $i = 0; $i < $count; $i++) { 96 + my $e = $list[$i]; 97 + my $val = $e->{val}; 98 + 99 + $full_names .= $e->{name}; 100 + 101 + # Merge synonyms 102 + if ($i < $count - 1 && $list[$i + 1]->{val} == $val) { 103 + $full_names .= " or "; 104 + next; 105 + } 106 + 107 + printf $out "\t{ %s, %s, 0x%08x, \"%s\" },\n", $e->{class}, $e->{code}, $val, $full_names; 108 + 109 + $full_names = ""; 110 + } 111 + } elsif ($output_name eq "smb1_err_dos_map.c" || $output_name eq "smb1_err_srv_map.c") { 112 + # Generate SMB1 error -> POSIX error mapping file 113 + 114 + # Filtered by exact output filename 115 + my $filter = ($output_name eq "smb1_err_dos_map.c") ? "ERRDOS" : "ERRSRV"; 116 + foreach my $e (@list) { 117 + if (!$filter || $e->{class} eq $filter) { 118 + printf $out "\t{%s, %s},\n", $e->{name}, $e->{error}; 119 + } 120 + } 121 + } else { 122 + die "Error: Unsupported output target: $output_name\n"; 123 + } 124 + close($out);
+2 -1
fs/smb/client/inode.c
··· 2690 2690 struct cifs_tcon *tcon = cifs_sb_master_tcon(cifs_sb); 2691 2691 struct cached_fid *cfid = NULL; 2692 2692 2693 - if (test_bit(CIFS_INO_DELETE_PENDING, &cifs_i->flags)) 2693 + if (test_bit(CIFS_INO_DELETE_PENDING, &cifs_i->flags) || 2694 + test_bit(CIFS_INO_TMPFILE, &cifs_i->flags)) 2694 2695 return false; 2695 2696 if (cifs_i->time == 0) 2696 2697 return true;
+1
fs/smb/client/link.c
··· 503 503 if (d_really_is_positive(old_file)) { 504 504 cifsInode = CIFS_I(d_inode(old_file)); 505 505 if (rc == 0) { 506 + clear_bit(CIFS_INO_TMPFILE, &cifsInode->flags); 506 507 spin_lock(&d_inode(old_file)->i_lock); 507 508 inc_nlink(d_inode(old_file)); 508 509 spin_unlock(&d_inode(old_file)->i_lock);
-704
fs/smb/client/nterr.c
··· 1 - // SPDX-License-Identifier: GPL-2.0-or-later 2 - /* 3 - * Unix SMB/Netbios implementation. 4 - * Version 1.9. 5 - * RPC Pipe client / server routines 6 - * Copyright (C) Luke Kenneth Casson Leighton 1997-2001. 7 - */ 8 - 9 - /* NT error codes - see nterr.h */ 10 - #include <linux/types.h> 11 - #include <linux/fs.h> 12 - #include "nterr.h" 13 - 14 - const struct nt_err_code_struct nt_errs[] = { 15 - {"NT_STATUS_OK", NT_STATUS_OK}, 16 - {"NT_STATUS_PENDING", NT_STATUS_PENDING}, 17 - {"NT_STATUS_NOTIFY_ENUM_DIR", NT_STATUS_NOTIFY_ENUM_DIR}, 18 - {"NT_STATUS_MEDIA_CHANGED", NT_STATUS_MEDIA_CHANGED}, 19 - {"NT_STATUS_END_OF_MEDIA", NT_STATUS_END_OF_MEDIA}, 20 - {"NT_STATUS_MEDIA_CHECK", NT_STATUS_MEDIA_CHECK}, 21 - {"NT_STATUS_NO_DATA_DETECTED", NT_STATUS_NO_DATA_DETECTED}, 22 - {"NT_STATUS_STOPPED_ON_SYMLINK", NT_STATUS_STOPPED_ON_SYMLINK}, 23 - {"NT_STATUS_DEVICE_REQUIRES_CLEANING", NT_STATUS_DEVICE_REQUIRES_CLEANING}, 24 - {"NT_STATUS_DEVICE_DOOR_OPEN", NT_STATUS_DEVICE_DOOR_OPEN}, 25 - {"NT_STATUS_UNSUCCESSFUL", NT_STATUS_UNSUCCESSFUL}, 26 - {"NT_STATUS_NOT_IMPLEMENTED", NT_STATUS_NOT_IMPLEMENTED}, 27 - {"NT_STATUS_INVALID_INFO_CLASS", NT_STATUS_INVALID_INFO_CLASS}, 28 - {"NT_STATUS_INFO_LENGTH_MISMATCH", NT_STATUS_INFO_LENGTH_MISMATCH}, 29 - {"NT_STATUS_ACCESS_VIOLATION", NT_STATUS_ACCESS_VIOLATION}, 30 - {"NT_STATUS_BUFFER_OVERFLOW", NT_STATUS_BUFFER_OVERFLOW}, 31 - {"NT_STATUS_IN_PAGE_ERROR", NT_STATUS_IN_PAGE_ERROR}, 32 - {"NT_STATUS_PAGEFILE_QUOTA", NT_STATUS_PAGEFILE_QUOTA}, 33 - {"NT_STATUS_INVALID_HANDLE", NT_STATUS_INVALID_HANDLE}, 34 - {"NT_STATUS_BAD_INITIAL_STACK", NT_STATUS_BAD_INITIAL_STACK}, 35 - {"NT_STATUS_BAD_INITIAL_PC", NT_STATUS_BAD_INITIAL_PC}, 36 - {"NT_STATUS_INVALID_CID", NT_STATUS_INVALID_CID}, 37 - {"NT_STATUS_TIMER_NOT_CANCELED", NT_STATUS_TIMER_NOT_CANCELED}, 38 - {"NT_STATUS_INVALID_PARAMETER", NT_STATUS_INVALID_PARAMETER}, 39 - {"NT_STATUS_NO_SUCH_DEVICE", NT_STATUS_NO_SUCH_DEVICE}, 40 - {"NT_STATUS_NO_SUCH_FILE", NT_STATUS_NO_SUCH_FILE}, 41 - {"NT_STATUS_INVALID_DEVICE_REQUEST", 42 - NT_STATUS_INVALID_DEVICE_REQUEST}, 43 - {"NT_STATUS_END_OF_FILE", NT_STATUS_END_OF_FILE}, 44 - {"NT_STATUS_WRONG_VOLUME", NT_STATUS_WRONG_VOLUME}, 45 - {"NT_STATUS_NO_MEDIA_IN_DEVICE", NT_STATUS_NO_MEDIA_IN_DEVICE}, 46 - {"NT_STATUS_UNRECOGNIZED_MEDIA", NT_STATUS_UNRECOGNIZED_MEDIA}, 47 - {"NT_STATUS_NONEXISTENT_SECTOR", NT_STATUS_NONEXISTENT_SECTOR}, 48 - {"NT_STATUS_MORE_PROCESSING_REQUIRED", 49 - NT_STATUS_MORE_PROCESSING_REQUIRED}, 50 - {"NT_STATUS_NO_MEMORY", NT_STATUS_NO_MEMORY}, 51 - {"NT_STATUS_CONFLICTING_ADDRESSES", 52 - NT_STATUS_CONFLICTING_ADDRESSES}, 53 - {"NT_STATUS_NOT_MAPPED_VIEW", NT_STATUS_NOT_MAPPED_VIEW}, 54 - {"NT_STATUS_UNABLE_TO_FREE_VM", NT_STATUS_UNABLE_TO_FREE_VM}, 55 - {"NT_STATUS_UNABLE_TO_DELETE_SECTION", 56 - NT_STATUS_UNABLE_TO_DELETE_SECTION}, 57 - {"NT_STATUS_INVALID_SYSTEM_SERVICE", 58 - NT_STATUS_INVALID_SYSTEM_SERVICE}, 59 - {"NT_STATUS_ILLEGAL_INSTRUCTION", NT_STATUS_ILLEGAL_INSTRUCTION}, 60 - {"NT_STATUS_INVALID_LOCK_SEQUENCE", 61 - NT_STATUS_INVALID_LOCK_SEQUENCE}, 62 - {"NT_STATUS_INVALID_VIEW_SIZE", NT_STATUS_INVALID_VIEW_SIZE}, 63 - {"NT_STATUS_INVALID_FILE_FOR_SECTION", 64 - NT_STATUS_INVALID_FILE_FOR_SECTION}, 65 - {"NT_STATUS_ALREADY_COMMITTED", NT_STATUS_ALREADY_COMMITTED}, 66 - {"NT_STATUS_ACCESS_DENIED", NT_STATUS_ACCESS_DENIED}, 67 - {"NT_STATUS_BUFFER_TOO_SMALL", NT_STATUS_BUFFER_TOO_SMALL}, 68 - {"NT_STATUS_OBJECT_TYPE_MISMATCH", NT_STATUS_OBJECT_TYPE_MISMATCH}, 69 - {"NT_STATUS_NONCONTINUABLE_EXCEPTION", 70 - NT_STATUS_NONCONTINUABLE_EXCEPTION}, 71 - {"NT_STATUS_INVALID_DISPOSITION", NT_STATUS_INVALID_DISPOSITION}, 72 - {"NT_STATUS_UNWIND", NT_STATUS_UNWIND}, 73 - {"NT_STATUS_BAD_STACK", NT_STATUS_BAD_STACK}, 74 - {"NT_STATUS_INVALID_UNWIND_TARGET", 75 - NT_STATUS_INVALID_UNWIND_TARGET}, 76 - {"NT_STATUS_NOT_LOCKED", NT_STATUS_NOT_LOCKED}, 77 - {"NT_STATUS_PARITY_ERROR", NT_STATUS_PARITY_ERROR}, 78 - {"NT_STATUS_UNABLE_TO_DECOMMIT_VM", 79 - NT_STATUS_UNABLE_TO_DECOMMIT_VM}, 80 - {"NT_STATUS_NOT_COMMITTED", NT_STATUS_NOT_COMMITTED}, 81 - {"NT_STATUS_INVALID_PORT_ATTRIBUTES", 82 - NT_STATUS_INVALID_PORT_ATTRIBUTES}, 83 - {"NT_STATUS_PORT_MESSAGE_TOO_LONG", 84 - NT_STATUS_PORT_MESSAGE_TOO_LONG}, 85 - {"NT_STATUS_INVALID_PARAMETER_MIX", 86 - NT_STATUS_INVALID_PARAMETER_MIX}, 87 - {"NT_STATUS_INVALID_QUOTA_LOWER", NT_STATUS_INVALID_QUOTA_LOWER}, 88 - {"NT_STATUS_DISK_CORRUPT_ERROR", NT_STATUS_DISK_CORRUPT_ERROR}, 89 - {"NT_STATUS_OBJECT_NAME_INVALID", NT_STATUS_OBJECT_NAME_INVALID}, 90 - {"NT_STATUS_OBJECT_NAME_NOT_FOUND", 91 - NT_STATUS_OBJECT_NAME_NOT_FOUND}, 92 - {"NT_STATUS_OBJECT_NAME_COLLISION", 93 - NT_STATUS_OBJECT_NAME_COLLISION}, 94 - {"NT_STATUS_HANDLE_NOT_WAITABLE", NT_STATUS_HANDLE_NOT_WAITABLE}, 95 - {"NT_STATUS_PORT_DISCONNECTED", NT_STATUS_PORT_DISCONNECTED}, 96 - {"NT_STATUS_DEVICE_ALREADY_ATTACHED", 97 - NT_STATUS_DEVICE_ALREADY_ATTACHED}, 98 - {"NT_STATUS_OBJECT_PATH_INVALID", NT_STATUS_OBJECT_PATH_INVALID}, 99 - {"NT_STATUS_OBJECT_PATH_NOT_FOUND", 100 - NT_STATUS_OBJECT_PATH_NOT_FOUND}, 101 - {"NT_STATUS_OBJECT_PATH_SYNTAX_BAD", 102 - NT_STATUS_OBJECT_PATH_SYNTAX_BAD}, 103 - {"NT_STATUS_DATA_OVERRUN", NT_STATUS_DATA_OVERRUN}, 104 - {"NT_STATUS_DATA_LATE_ERROR", NT_STATUS_DATA_LATE_ERROR}, 105 - {"NT_STATUS_DATA_ERROR", NT_STATUS_DATA_ERROR}, 106 - {"NT_STATUS_CRC_ERROR", NT_STATUS_CRC_ERROR}, 107 - {"NT_STATUS_SECTION_TOO_BIG", NT_STATUS_SECTION_TOO_BIG}, 108 - {"NT_STATUS_PORT_CONNECTION_REFUSED", 109 - NT_STATUS_PORT_CONNECTION_REFUSED}, 110 - {"NT_STATUS_INVALID_PORT_HANDLE", NT_STATUS_INVALID_PORT_HANDLE}, 111 - {"NT_STATUS_SHARING_VIOLATION", NT_STATUS_SHARING_VIOLATION}, 112 - {"NT_STATUS_QUOTA_EXCEEDED", NT_STATUS_QUOTA_EXCEEDED}, 113 - {"NT_STATUS_INVALID_PAGE_PROTECTION", 114 - NT_STATUS_INVALID_PAGE_PROTECTION}, 115 - {"NT_STATUS_MUTANT_NOT_OWNED", NT_STATUS_MUTANT_NOT_OWNED}, 116 - {"NT_STATUS_SEMAPHORE_LIMIT_EXCEEDED", 117 - NT_STATUS_SEMAPHORE_LIMIT_EXCEEDED}, 118 - {"NT_STATUS_PORT_ALREADY_SET", NT_STATUS_PORT_ALREADY_SET}, 119 - {"NT_STATUS_SECTION_NOT_IMAGE", NT_STATUS_SECTION_NOT_IMAGE}, 120 - {"NT_STATUS_SUSPEND_COUNT_EXCEEDED", 121 - NT_STATUS_SUSPEND_COUNT_EXCEEDED}, 122 - {"NT_STATUS_THREAD_IS_TERMINATING", 123 - NT_STATUS_THREAD_IS_TERMINATING}, 124 - {"NT_STATUS_BAD_WORKING_SET_LIMIT", 125 - NT_STATUS_BAD_WORKING_SET_LIMIT}, 126 - {"NT_STATUS_INCOMPATIBLE_FILE_MAP", 127 - NT_STATUS_INCOMPATIBLE_FILE_MAP}, 128 - {"NT_STATUS_SECTION_PROTECTION", NT_STATUS_SECTION_PROTECTION}, 129 - {"NT_STATUS_EAS_NOT_SUPPORTED", NT_STATUS_EAS_NOT_SUPPORTED}, 130 - {"NT_STATUS_EA_TOO_LARGE", NT_STATUS_EA_TOO_LARGE}, 131 - {"NT_STATUS_NONEXISTENT_EA_ENTRY", NT_STATUS_NONEXISTENT_EA_ENTRY}, 132 - {"NT_STATUS_NO_EAS_ON_FILE", NT_STATUS_NO_EAS_ON_FILE}, 133 - {"NT_STATUS_EA_CORRUPT_ERROR", NT_STATUS_EA_CORRUPT_ERROR}, 134 - {"NT_STATUS_FILE_LOCK_CONFLICT", NT_STATUS_FILE_LOCK_CONFLICT}, 135 - {"NT_STATUS_LOCK_NOT_GRANTED", NT_STATUS_LOCK_NOT_GRANTED}, 136 - {"NT_STATUS_DELETE_PENDING", NT_STATUS_DELETE_PENDING}, 137 - {"NT_STATUS_CTL_FILE_NOT_SUPPORTED", 138 - NT_STATUS_CTL_FILE_NOT_SUPPORTED}, 139 - {"NT_STATUS_UNKNOWN_REVISION", NT_STATUS_UNKNOWN_REVISION}, 140 - {"NT_STATUS_REVISION_MISMATCH", NT_STATUS_REVISION_MISMATCH}, 141 - {"NT_STATUS_INVALID_OWNER", NT_STATUS_INVALID_OWNER}, 142 - {"NT_STATUS_INVALID_PRIMARY_GROUP", 143 - NT_STATUS_INVALID_PRIMARY_GROUP}, 144 - {"NT_STATUS_NO_IMPERSONATION_TOKEN", 145 - NT_STATUS_NO_IMPERSONATION_TOKEN}, 146 - {"NT_STATUS_CANT_DISABLE_MANDATORY", 147 - NT_STATUS_CANT_DISABLE_MANDATORY}, 148 - {"NT_STATUS_NO_LOGON_SERVERS", NT_STATUS_NO_LOGON_SERVERS}, 149 - {"NT_STATUS_NO_SUCH_LOGON_SESSION", 150 - NT_STATUS_NO_SUCH_LOGON_SESSION}, 151 - {"NT_STATUS_NO_SUCH_PRIVILEGE", NT_STATUS_NO_SUCH_PRIVILEGE}, 152 - {"NT_STATUS_PRIVILEGE_NOT_HELD", NT_STATUS_PRIVILEGE_NOT_HELD}, 153 - {"NT_STATUS_INVALID_ACCOUNT_NAME", NT_STATUS_INVALID_ACCOUNT_NAME}, 154 - {"NT_STATUS_USER_EXISTS", NT_STATUS_USER_EXISTS}, 155 - {"NT_STATUS_NO_SUCH_USER", NT_STATUS_NO_SUCH_USER}, 156 - {"NT_STATUS_GROUP_EXISTS", NT_STATUS_GROUP_EXISTS}, 157 - {"NT_STATUS_NO_SUCH_GROUP", NT_STATUS_NO_SUCH_GROUP}, 158 - {"NT_STATUS_MEMBER_IN_GROUP", NT_STATUS_MEMBER_IN_GROUP}, 159 - {"NT_STATUS_MEMBER_NOT_IN_GROUP", NT_STATUS_MEMBER_NOT_IN_GROUP}, 160 - {"NT_STATUS_LAST_ADMIN", NT_STATUS_LAST_ADMIN}, 161 - {"NT_STATUS_WRONG_PASSWORD", NT_STATUS_WRONG_PASSWORD}, 162 - {"NT_STATUS_ILL_FORMED_PASSWORD", NT_STATUS_ILL_FORMED_PASSWORD}, 163 - {"NT_STATUS_PASSWORD_RESTRICTION", NT_STATUS_PASSWORD_RESTRICTION}, 164 - {"NT_STATUS_LOGON_FAILURE", NT_STATUS_LOGON_FAILURE}, 165 - {"NT_STATUS_ACCOUNT_RESTRICTION", NT_STATUS_ACCOUNT_RESTRICTION}, 166 - {"NT_STATUS_INVALID_LOGON_HOURS", NT_STATUS_INVALID_LOGON_HOURS}, 167 - {"NT_STATUS_INVALID_WORKSTATION", NT_STATUS_INVALID_WORKSTATION}, 168 - {"NT_STATUS_PASSWORD_EXPIRED", NT_STATUS_PASSWORD_EXPIRED}, 169 - {"NT_STATUS_ACCOUNT_DISABLED", NT_STATUS_ACCOUNT_DISABLED}, 170 - {"NT_STATUS_NONE_MAPPED", NT_STATUS_NONE_MAPPED}, 171 - {"NT_STATUS_TOO_MANY_LUIDS_REQUESTED", 172 - NT_STATUS_TOO_MANY_LUIDS_REQUESTED}, 173 - {"NT_STATUS_LUIDS_EXHAUSTED", NT_STATUS_LUIDS_EXHAUSTED}, 174 - {"NT_STATUS_INVALID_SUB_AUTHORITY", 175 - NT_STATUS_INVALID_SUB_AUTHORITY}, 176 - {"NT_STATUS_INVALID_ACL", NT_STATUS_INVALID_ACL}, 177 - {"NT_STATUS_INVALID_SID", NT_STATUS_INVALID_SID}, 178 - {"NT_STATUS_INVALID_SECURITY_DESCR", 179 - NT_STATUS_INVALID_SECURITY_DESCR}, 180 - {"NT_STATUS_PROCEDURE_NOT_FOUND", NT_STATUS_PROCEDURE_NOT_FOUND}, 181 - {"NT_STATUS_INVALID_IMAGE_FORMAT", NT_STATUS_INVALID_IMAGE_FORMAT}, 182 - {"NT_STATUS_NO_TOKEN", NT_STATUS_NO_TOKEN}, 183 - {"NT_STATUS_BAD_INHERITANCE_ACL", NT_STATUS_BAD_INHERITANCE_ACL}, 184 - {"NT_STATUS_RANGE_NOT_LOCKED", NT_STATUS_RANGE_NOT_LOCKED}, 185 - {"NT_STATUS_DISK_FULL", NT_STATUS_DISK_FULL}, 186 - {"NT_STATUS_SERVER_DISABLED", NT_STATUS_SERVER_DISABLED}, 187 - {"NT_STATUS_SERVER_NOT_DISABLED", NT_STATUS_SERVER_NOT_DISABLED}, 188 - {"NT_STATUS_TOO_MANY_GUIDS_REQUESTED", 189 - NT_STATUS_TOO_MANY_GUIDS_REQUESTED}, 190 - {"NT_STATUS_GUIDS_EXHAUSTED", NT_STATUS_GUIDS_EXHAUSTED}, 191 - {"NT_STATUS_INVALID_ID_AUTHORITY", NT_STATUS_INVALID_ID_AUTHORITY}, 192 - {"NT_STATUS_AGENTS_EXHAUSTED", NT_STATUS_AGENTS_EXHAUSTED}, 193 - {"NT_STATUS_INVALID_VOLUME_LABEL", NT_STATUS_INVALID_VOLUME_LABEL}, 194 - {"NT_STATUS_SECTION_NOT_EXTENDED", NT_STATUS_SECTION_NOT_EXTENDED}, 195 - {"NT_STATUS_NOT_MAPPED_DATA", NT_STATUS_NOT_MAPPED_DATA}, 196 - {"NT_STATUS_RESOURCE_DATA_NOT_FOUND", 197 - NT_STATUS_RESOURCE_DATA_NOT_FOUND}, 198 - {"NT_STATUS_RESOURCE_TYPE_NOT_FOUND", 199 - NT_STATUS_RESOURCE_TYPE_NOT_FOUND}, 200 - {"NT_STATUS_RESOURCE_NAME_NOT_FOUND", 201 - NT_STATUS_RESOURCE_NAME_NOT_FOUND}, 202 - {"NT_STATUS_ARRAY_BOUNDS_EXCEEDED", 203 - NT_STATUS_ARRAY_BOUNDS_EXCEEDED}, 204 - {"NT_STATUS_FLOAT_DENORMAL_OPERAND", 205 - NT_STATUS_FLOAT_DENORMAL_OPERAND}, 206 - {"NT_STATUS_FLOAT_DIVIDE_BY_ZERO", NT_STATUS_FLOAT_DIVIDE_BY_ZERO}, 207 - {"NT_STATUS_FLOAT_INEXACT_RESULT", NT_STATUS_FLOAT_INEXACT_RESULT}, 208 - {"NT_STATUS_FLOAT_INVALID_OPERATION", 209 - NT_STATUS_FLOAT_INVALID_OPERATION}, 210 - {"NT_STATUS_FLOAT_OVERFLOW", NT_STATUS_FLOAT_OVERFLOW}, 211 - {"NT_STATUS_FLOAT_STACK_CHECK", NT_STATUS_FLOAT_STACK_CHECK}, 212 - {"NT_STATUS_FLOAT_UNDERFLOW", NT_STATUS_FLOAT_UNDERFLOW}, 213 - {"NT_STATUS_INTEGER_DIVIDE_BY_ZERO", 214 - NT_STATUS_INTEGER_DIVIDE_BY_ZERO}, 215 - {"NT_STATUS_INTEGER_OVERFLOW", NT_STATUS_INTEGER_OVERFLOW}, 216 - {"NT_STATUS_PRIVILEGED_INSTRUCTION", 217 - NT_STATUS_PRIVILEGED_INSTRUCTION}, 218 - {"NT_STATUS_TOO_MANY_PAGING_FILES", 219 - NT_STATUS_TOO_MANY_PAGING_FILES}, 220 - {"NT_STATUS_FILE_INVALID", NT_STATUS_FILE_INVALID}, 221 - {"NT_STATUS_ALLOTTED_SPACE_EXCEEDED", 222 - NT_STATUS_ALLOTTED_SPACE_EXCEEDED}, 223 - {"NT_STATUS_INSUFFICIENT_RESOURCES", 224 - NT_STATUS_INSUFFICIENT_RESOURCES}, 225 - {"NT_STATUS_DFS_EXIT_PATH_FOUND", NT_STATUS_DFS_EXIT_PATH_FOUND}, 226 - {"NT_STATUS_DEVICE_DATA_ERROR", NT_STATUS_DEVICE_DATA_ERROR}, 227 - {"NT_STATUS_DEVICE_NOT_CONNECTED", NT_STATUS_DEVICE_NOT_CONNECTED}, 228 - {"NT_STATUS_DEVICE_POWER_FAILURE", NT_STATUS_DEVICE_POWER_FAILURE}, 229 - {"NT_STATUS_FREE_VM_NOT_AT_BASE", NT_STATUS_FREE_VM_NOT_AT_BASE}, 230 - {"NT_STATUS_MEMORY_NOT_ALLOCATED", NT_STATUS_MEMORY_NOT_ALLOCATED}, 231 - {"NT_STATUS_WORKING_SET_QUOTA", NT_STATUS_WORKING_SET_QUOTA}, 232 - {"NT_STATUS_MEDIA_WRITE_PROTECTED", 233 - NT_STATUS_MEDIA_WRITE_PROTECTED}, 234 - {"NT_STATUS_DEVICE_NOT_READY", NT_STATUS_DEVICE_NOT_READY}, 235 - {"NT_STATUS_INVALID_GROUP_ATTRIBUTES", 236 - NT_STATUS_INVALID_GROUP_ATTRIBUTES}, 237 - {"NT_STATUS_BAD_IMPERSONATION_LEVEL", 238 - NT_STATUS_BAD_IMPERSONATION_LEVEL}, 239 - {"NT_STATUS_CANT_OPEN_ANONYMOUS", NT_STATUS_CANT_OPEN_ANONYMOUS}, 240 - {"NT_STATUS_BAD_VALIDATION_CLASS", NT_STATUS_BAD_VALIDATION_CLASS}, 241 - {"NT_STATUS_BAD_TOKEN_TYPE", NT_STATUS_BAD_TOKEN_TYPE}, 242 - {"NT_STATUS_BAD_MASTER_BOOT_RECORD", 243 - NT_STATUS_BAD_MASTER_BOOT_RECORD}, 244 - {"NT_STATUS_INSTRUCTION_MISALIGNMENT", 245 - NT_STATUS_INSTRUCTION_MISALIGNMENT}, 246 - {"NT_STATUS_INSTANCE_NOT_AVAILABLE", 247 - NT_STATUS_INSTANCE_NOT_AVAILABLE}, 248 - {"NT_STATUS_PIPE_NOT_AVAILABLE", NT_STATUS_PIPE_NOT_AVAILABLE}, 249 - {"NT_STATUS_INVALID_PIPE_STATE", NT_STATUS_INVALID_PIPE_STATE}, 250 - {"NT_STATUS_PIPE_BUSY", NT_STATUS_PIPE_BUSY}, 251 - {"NT_STATUS_ILLEGAL_FUNCTION", NT_STATUS_ILLEGAL_FUNCTION}, 252 - {"NT_STATUS_PIPE_DISCONNECTED", NT_STATUS_PIPE_DISCONNECTED}, 253 - {"NT_STATUS_PIPE_CLOSING", NT_STATUS_PIPE_CLOSING}, 254 - {"NT_STATUS_PIPE_CONNECTED", NT_STATUS_PIPE_CONNECTED}, 255 - {"NT_STATUS_PIPE_LISTENING", NT_STATUS_PIPE_LISTENING}, 256 - {"NT_STATUS_INVALID_READ_MODE", NT_STATUS_INVALID_READ_MODE}, 257 - {"NT_STATUS_IO_TIMEOUT", NT_STATUS_IO_TIMEOUT}, 258 - {"NT_STATUS_FILE_FORCED_CLOSED", NT_STATUS_FILE_FORCED_CLOSED}, 259 - {"NT_STATUS_PROFILING_NOT_STARTED", 260 - NT_STATUS_PROFILING_NOT_STARTED}, 261 - {"NT_STATUS_PROFILING_NOT_STOPPED", 262 - NT_STATUS_PROFILING_NOT_STOPPED}, 263 - {"NT_STATUS_COULD_NOT_INTERPRET", NT_STATUS_COULD_NOT_INTERPRET}, 264 - {"NT_STATUS_FILE_IS_A_DIRECTORY", NT_STATUS_FILE_IS_A_DIRECTORY}, 265 - {"NT_STATUS_NOT_SUPPORTED", NT_STATUS_NOT_SUPPORTED}, 266 - {"NT_STATUS_REMOTE_NOT_LISTENING", NT_STATUS_REMOTE_NOT_LISTENING}, 267 - {"NT_STATUS_DUPLICATE_NAME", NT_STATUS_DUPLICATE_NAME}, 268 - {"NT_STATUS_BAD_NETWORK_PATH", NT_STATUS_BAD_NETWORK_PATH}, 269 - {"NT_STATUS_NETWORK_BUSY", NT_STATUS_NETWORK_BUSY}, 270 - {"NT_STATUS_DEVICE_DOES_NOT_EXIST", 271 - NT_STATUS_DEVICE_DOES_NOT_EXIST}, 272 - {"NT_STATUS_TOO_MANY_COMMANDS", NT_STATUS_TOO_MANY_COMMANDS}, 273 - {"NT_STATUS_ADAPTER_HARDWARE_ERROR", 274 - NT_STATUS_ADAPTER_HARDWARE_ERROR}, 275 - {"NT_STATUS_INVALID_NETWORK_RESPONSE", 276 - NT_STATUS_INVALID_NETWORK_RESPONSE}, 277 - {"NT_STATUS_UNEXPECTED_NETWORK_ERROR", 278 - NT_STATUS_UNEXPECTED_NETWORK_ERROR}, 279 - {"NT_STATUS_BAD_REMOTE_ADAPTER", NT_STATUS_BAD_REMOTE_ADAPTER}, 280 - {"NT_STATUS_PRINT_QUEUE_FULL", NT_STATUS_PRINT_QUEUE_FULL}, 281 - {"NT_STATUS_NO_SPOOL_SPACE", NT_STATUS_NO_SPOOL_SPACE}, 282 - {"NT_STATUS_PRINT_CANCELLED", NT_STATUS_PRINT_CANCELLED}, 283 - {"NT_STATUS_NETWORK_NAME_DELETED", NT_STATUS_NETWORK_NAME_DELETED}, 284 - {"NT_STATUS_NETWORK_ACCESS_DENIED", 285 - NT_STATUS_NETWORK_ACCESS_DENIED}, 286 - {"NT_STATUS_BAD_DEVICE_TYPE", NT_STATUS_BAD_DEVICE_TYPE}, 287 - {"NT_STATUS_BAD_NETWORK_NAME", NT_STATUS_BAD_NETWORK_NAME}, 288 - {"NT_STATUS_TOO_MANY_NAMES", NT_STATUS_TOO_MANY_NAMES}, 289 - {"NT_STATUS_TOO_MANY_SESSIONS", NT_STATUS_TOO_MANY_SESSIONS}, 290 - {"NT_STATUS_SHARING_PAUSED", NT_STATUS_SHARING_PAUSED}, 291 - {"NT_STATUS_REQUEST_NOT_ACCEPTED", NT_STATUS_REQUEST_NOT_ACCEPTED}, 292 - {"NT_STATUS_REDIRECTOR_PAUSED", NT_STATUS_REDIRECTOR_PAUSED}, 293 - {"NT_STATUS_NET_WRITE_FAULT", NT_STATUS_NET_WRITE_FAULT}, 294 - {"NT_STATUS_PROFILING_AT_LIMIT", NT_STATUS_PROFILING_AT_LIMIT}, 295 - {"NT_STATUS_NOT_SAME_DEVICE", NT_STATUS_NOT_SAME_DEVICE}, 296 - {"NT_STATUS_FILE_RENAMED", NT_STATUS_FILE_RENAMED}, 297 - {"NT_STATUS_VIRTUAL_CIRCUIT_CLOSED", 298 - NT_STATUS_VIRTUAL_CIRCUIT_CLOSED}, 299 - {"NT_STATUS_NO_SECURITY_ON_OBJECT", 300 - NT_STATUS_NO_SECURITY_ON_OBJECT}, 301 - {"NT_STATUS_CANT_WAIT", NT_STATUS_CANT_WAIT}, 302 - {"NT_STATUS_PIPE_EMPTY", NT_STATUS_PIPE_EMPTY}, 303 - {"NT_STATUS_CANT_ACCESS_DOMAIN_INFO", 304 - NT_STATUS_CANT_ACCESS_DOMAIN_INFO}, 305 - {"NT_STATUS_CANT_TERMINATE_SELF", NT_STATUS_CANT_TERMINATE_SELF}, 306 - {"NT_STATUS_INVALID_SERVER_STATE", NT_STATUS_INVALID_SERVER_STATE}, 307 - {"NT_STATUS_INVALID_DOMAIN_STATE", NT_STATUS_INVALID_DOMAIN_STATE}, 308 - {"NT_STATUS_INVALID_DOMAIN_ROLE", NT_STATUS_INVALID_DOMAIN_ROLE}, 309 - {"NT_STATUS_NO_SUCH_DOMAIN", NT_STATUS_NO_SUCH_DOMAIN}, 310 - {"NT_STATUS_DOMAIN_EXISTS", NT_STATUS_DOMAIN_EXISTS}, 311 - {"NT_STATUS_DOMAIN_LIMIT_EXCEEDED", 312 - NT_STATUS_DOMAIN_LIMIT_EXCEEDED}, 313 - {"NT_STATUS_OPLOCK_NOT_GRANTED", NT_STATUS_OPLOCK_NOT_GRANTED}, 314 - {"NT_STATUS_INVALID_OPLOCK_PROTOCOL", 315 - NT_STATUS_INVALID_OPLOCK_PROTOCOL}, 316 - {"NT_STATUS_INTERNAL_DB_CORRUPTION", 317 - NT_STATUS_INTERNAL_DB_CORRUPTION}, 318 - {"NT_STATUS_INTERNAL_ERROR", NT_STATUS_INTERNAL_ERROR}, 319 - {"NT_STATUS_GENERIC_NOT_MAPPED", NT_STATUS_GENERIC_NOT_MAPPED}, 320 - {"NT_STATUS_BAD_DESCRIPTOR_FORMAT", 321 - NT_STATUS_BAD_DESCRIPTOR_FORMAT}, 322 - {"NT_STATUS_INVALID_USER_BUFFER", NT_STATUS_INVALID_USER_BUFFER}, 323 - {"NT_STATUS_UNEXPECTED_IO_ERROR", NT_STATUS_UNEXPECTED_IO_ERROR}, 324 - {"NT_STATUS_UNEXPECTED_MM_CREATE_ERR", 325 - NT_STATUS_UNEXPECTED_MM_CREATE_ERR}, 326 - {"NT_STATUS_UNEXPECTED_MM_MAP_ERROR", 327 - NT_STATUS_UNEXPECTED_MM_MAP_ERROR}, 328 - {"NT_STATUS_UNEXPECTED_MM_EXTEND_ERR", 329 - NT_STATUS_UNEXPECTED_MM_EXTEND_ERR}, 330 - {"NT_STATUS_NOT_LOGON_PROCESS", NT_STATUS_NOT_LOGON_PROCESS}, 331 - {"NT_STATUS_LOGON_SESSION_EXISTS", NT_STATUS_LOGON_SESSION_EXISTS}, 332 - {"NT_STATUS_INVALID_PARAMETER_1", NT_STATUS_INVALID_PARAMETER_1}, 333 - {"NT_STATUS_INVALID_PARAMETER_2", NT_STATUS_INVALID_PARAMETER_2}, 334 - {"NT_STATUS_INVALID_PARAMETER_3", NT_STATUS_INVALID_PARAMETER_3}, 335 - {"NT_STATUS_INVALID_PARAMETER_4", NT_STATUS_INVALID_PARAMETER_4}, 336 - {"NT_STATUS_INVALID_PARAMETER_5", NT_STATUS_INVALID_PARAMETER_5}, 337 - {"NT_STATUS_INVALID_PARAMETER_6", NT_STATUS_INVALID_PARAMETER_6}, 338 - {"NT_STATUS_INVALID_PARAMETER_7", NT_STATUS_INVALID_PARAMETER_7}, 339 - {"NT_STATUS_INVALID_PARAMETER_8", NT_STATUS_INVALID_PARAMETER_8}, 340 - {"NT_STATUS_INVALID_PARAMETER_9", NT_STATUS_INVALID_PARAMETER_9}, 341 - {"NT_STATUS_INVALID_PARAMETER_10", NT_STATUS_INVALID_PARAMETER_10}, 342 - {"NT_STATUS_INVALID_PARAMETER_11", NT_STATUS_INVALID_PARAMETER_11}, 343 - {"NT_STATUS_INVALID_PARAMETER_12", NT_STATUS_INVALID_PARAMETER_12}, 344 - {"NT_STATUS_REDIRECTOR_NOT_STARTED", 345 - NT_STATUS_REDIRECTOR_NOT_STARTED}, 346 - {"NT_STATUS_REDIRECTOR_STARTED", NT_STATUS_REDIRECTOR_STARTED}, 347 - {"NT_STATUS_STACK_OVERFLOW", NT_STATUS_STACK_OVERFLOW}, 348 - {"NT_STATUS_NO_SUCH_PACKAGE", NT_STATUS_NO_SUCH_PACKAGE}, 349 - {"NT_STATUS_BAD_FUNCTION_TABLE", NT_STATUS_BAD_FUNCTION_TABLE}, 350 - {"NT_STATUS_VARIABLE_NOT_FOUND", NT_STATUS_VARIABLE_NOT_FOUND}, 351 - {"NT_STATUS_DIRECTORY_NOT_EMPTY", NT_STATUS_DIRECTORY_NOT_EMPTY}, 352 - {"NT_STATUS_FILE_CORRUPT_ERROR", NT_STATUS_FILE_CORRUPT_ERROR}, 353 - {"NT_STATUS_NOT_A_DIRECTORY", NT_STATUS_NOT_A_DIRECTORY}, 354 - {"NT_STATUS_BAD_LOGON_SESSION_STATE", 355 - NT_STATUS_BAD_LOGON_SESSION_STATE}, 356 - {"NT_STATUS_LOGON_SESSION_COLLISION", 357 - NT_STATUS_LOGON_SESSION_COLLISION}, 358 - {"NT_STATUS_NAME_TOO_LONG", NT_STATUS_NAME_TOO_LONG}, 359 - {"NT_STATUS_FILES_OPEN", NT_STATUS_FILES_OPEN}, 360 - {"NT_STATUS_CONNECTION_IN_USE", NT_STATUS_CONNECTION_IN_USE}, 361 - {"NT_STATUS_MESSAGE_NOT_FOUND", NT_STATUS_MESSAGE_NOT_FOUND}, 362 - {"NT_STATUS_PROCESS_IS_TERMINATING", 363 - NT_STATUS_PROCESS_IS_TERMINATING}, 364 - {"NT_STATUS_INVALID_LOGON_TYPE", NT_STATUS_INVALID_LOGON_TYPE}, 365 - {"NT_STATUS_NO_GUID_TRANSLATION", NT_STATUS_NO_GUID_TRANSLATION}, 366 - {"NT_STATUS_CANNOT_IMPERSONATE", NT_STATUS_CANNOT_IMPERSONATE}, 367 - {"NT_STATUS_IMAGE_ALREADY_LOADED", NT_STATUS_IMAGE_ALREADY_LOADED}, 368 - {"NT_STATUS_ABIOS_NOT_PRESENT", NT_STATUS_ABIOS_NOT_PRESENT}, 369 - {"NT_STATUS_ABIOS_LID_NOT_EXIST", NT_STATUS_ABIOS_LID_NOT_EXIST}, 370 - {"NT_STATUS_ABIOS_LID_ALREADY_OWNED", 371 - NT_STATUS_ABIOS_LID_ALREADY_OWNED}, 372 - {"NT_STATUS_ABIOS_NOT_LID_OWNER", NT_STATUS_ABIOS_NOT_LID_OWNER}, 373 - {"NT_STATUS_ABIOS_INVALID_COMMAND", 374 - NT_STATUS_ABIOS_INVALID_COMMAND}, 375 - {"NT_STATUS_ABIOS_INVALID_LID", NT_STATUS_ABIOS_INVALID_LID}, 376 - {"NT_STATUS_ABIOS_SELECTOR_NOT_AVAILABLE", 377 - NT_STATUS_ABIOS_SELECTOR_NOT_AVAILABLE}, 378 - {"NT_STATUS_ABIOS_INVALID_SELECTOR", 379 - NT_STATUS_ABIOS_INVALID_SELECTOR}, 380 - {"NT_STATUS_NO_LDT", NT_STATUS_NO_LDT}, 381 - {"NT_STATUS_INVALID_LDT_SIZE", NT_STATUS_INVALID_LDT_SIZE}, 382 - {"NT_STATUS_INVALID_LDT_OFFSET", NT_STATUS_INVALID_LDT_OFFSET}, 383 - {"NT_STATUS_INVALID_LDT_DESCRIPTOR", 384 - NT_STATUS_INVALID_LDT_DESCRIPTOR}, 385 - {"NT_STATUS_INVALID_IMAGE_NE_FORMAT", 386 - NT_STATUS_INVALID_IMAGE_NE_FORMAT}, 387 - {"NT_STATUS_RXACT_INVALID_STATE", NT_STATUS_RXACT_INVALID_STATE}, 388 - {"NT_STATUS_RXACT_COMMIT_FAILURE", NT_STATUS_RXACT_COMMIT_FAILURE}, 389 - {"NT_STATUS_MAPPED_FILE_SIZE_ZERO", 390 - NT_STATUS_MAPPED_FILE_SIZE_ZERO}, 391 - {"NT_STATUS_TOO_MANY_OPENED_FILES", 392 - NT_STATUS_TOO_MANY_OPENED_FILES}, 393 - {"NT_STATUS_CANCELLED", NT_STATUS_CANCELLED}, 394 - {"NT_STATUS_CANNOT_DELETE", NT_STATUS_CANNOT_DELETE}, 395 - {"NT_STATUS_INVALID_COMPUTER_NAME", 396 - NT_STATUS_INVALID_COMPUTER_NAME}, 397 - {"NT_STATUS_FILE_DELETED", NT_STATUS_FILE_DELETED}, 398 - {"NT_STATUS_SPECIAL_ACCOUNT", NT_STATUS_SPECIAL_ACCOUNT}, 399 - {"NT_STATUS_SPECIAL_GROUP", NT_STATUS_SPECIAL_GROUP}, 400 - {"NT_STATUS_SPECIAL_USER", NT_STATUS_SPECIAL_USER}, 401 - {"NT_STATUS_MEMBERS_PRIMARY_GROUP", 402 - NT_STATUS_MEMBERS_PRIMARY_GROUP}, 403 - {"NT_STATUS_FILE_CLOSED", NT_STATUS_FILE_CLOSED}, 404 - {"NT_STATUS_TOO_MANY_THREADS", NT_STATUS_TOO_MANY_THREADS}, 405 - {"NT_STATUS_THREAD_NOT_IN_PROCESS", 406 - NT_STATUS_THREAD_NOT_IN_PROCESS}, 407 - {"NT_STATUS_TOKEN_ALREADY_IN_USE", NT_STATUS_TOKEN_ALREADY_IN_USE}, 408 - {"NT_STATUS_PAGEFILE_QUOTA_EXCEEDED", 409 - NT_STATUS_PAGEFILE_QUOTA_EXCEEDED}, 410 - {"NT_STATUS_COMMITMENT_LIMIT", NT_STATUS_COMMITMENT_LIMIT}, 411 - {"NT_STATUS_INVALID_IMAGE_LE_FORMAT", 412 - NT_STATUS_INVALID_IMAGE_LE_FORMAT}, 413 - {"NT_STATUS_INVALID_IMAGE_NOT_MZ", NT_STATUS_INVALID_IMAGE_NOT_MZ}, 414 - {"NT_STATUS_INVALID_IMAGE_PROTECT", 415 - NT_STATUS_INVALID_IMAGE_PROTECT}, 416 - {"NT_STATUS_INVALID_IMAGE_WIN_16", NT_STATUS_INVALID_IMAGE_WIN_16}, 417 - {"NT_STATUS_LOGON_SERVER_CONFLICT", 418 - NT_STATUS_LOGON_SERVER_CONFLICT}, 419 - {"NT_STATUS_TIME_DIFFERENCE_AT_DC", 420 - NT_STATUS_TIME_DIFFERENCE_AT_DC}, 421 - {"NT_STATUS_SYNCHRONIZATION_REQUIRED", 422 - NT_STATUS_SYNCHRONIZATION_REQUIRED}, 423 - {"NT_STATUS_DLL_NOT_FOUND", NT_STATUS_DLL_NOT_FOUND}, 424 - {"NT_STATUS_OPEN_FAILED", NT_STATUS_OPEN_FAILED}, 425 - {"NT_STATUS_IO_PRIVILEGE_FAILED", NT_STATUS_IO_PRIVILEGE_FAILED}, 426 - {"NT_STATUS_ORDINAL_NOT_FOUND", NT_STATUS_ORDINAL_NOT_FOUND}, 427 - {"NT_STATUS_ENTRYPOINT_NOT_FOUND", NT_STATUS_ENTRYPOINT_NOT_FOUND}, 428 - {"NT_STATUS_CONTROL_C_EXIT", NT_STATUS_CONTROL_C_EXIT}, 429 - {"NT_STATUS_LOCAL_DISCONNECT", NT_STATUS_LOCAL_DISCONNECT}, 430 - {"NT_STATUS_REMOTE_DISCONNECT", NT_STATUS_REMOTE_DISCONNECT}, 431 - {"NT_STATUS_REMOTE_RESOURCES", NT_STATUS_REMOTE_RESOURCES}, 432 - {"NT_STATUS_LINK_FAILED", NT_STATUS_LINK_FAILED}, 433 - {"NT_STATUS_LINK_TIMEOUT", NT_STATUS_LINK_TIMEOUT}, 434 - {"NT_STATUS_INVALID_CONNECTION", NT_STATUS_INVALID_CONNECTION}, 435 - {"NT_STATUS_INVALID_ADDRESS", NT_STATUS_INVALID_ADDRESS}, 436 - {"NT_STATUS_DLL_INIT_FAILED", NT_STATUS_DLL_INIT_FAILED}, 437 - {"NT_STATUS_MISSING_SYSTEMFILE", NT_STATUS_MISSING_SYSTEMFILE}, 438 - {"NT_STATUS_UNHANDLED_EXCEPTION", NT_STATUS_UNHANDLED_EXCEPTION}, 439 - {"NT_STATUS_APP_INIT_FAILURE", NT_STATUS_APP_INIT_FAILURE}, 440 - {"NT_STATUS_PAGEFILE_CREATE_FAILED", 441 - NT_STATUS_PAGEFILE_CREATE_FAILED}, 442 - {"NT_STATUS_NO_PAGEFILE", NT_STATUS_NO_PAGEFILE}, 443 - {"NT_STATUS_INVALID_LEVEL", NT_STATUS_INVALID_LEVEL}, 444 - {"NT_STATUS_WRONG_PASSWORD_CORE", NT_STATUS_WRONG_PASSWORD_CORE}, 445 - {"NT_STATUS_ILLEGAL_FLOAT_CONTEXT", 446 - NT_STATUS_ILLEGAL_FLOAT_CONTEXT}, 447 - {"NT_STATUS_PIPE_BROKEN", NT_STATUS_PIPE_BROKEN}, 448 - {"NT_STATUS_REGISTRY_CORRUPT", NT_STATUS_REGISTRY_CORRUPT}, 449 - {"NT_STATUS_REGISTRY_IO_FAILED", NT_STATUS_REGISTRY_IO_FAILED}, 450 - {"NT_STATUS_NO_EVENT_PAIR", NT_STATUS_NO_EVENT_PAIR}, 451 - {"NT_STATUS_UNRECOGNIZED_VOLUME", NT_STATUS_UNRECOGNIZED_VOLUME}, 452 - {"NT_STATUS_SERIAL_NO_DEVICE_INITED", 453 - NT_STATUS_SERIAL_NO_DEVICE_INITED}, 454 - {"NT_STATUS_NO_SUCH_ALIAS", NT_STATUS_NO_SUCH_ALIAS}, 455 - {"NT_STATUS_MEMBER_NOT_IN_ALIAS", NT_STATUS_MEMBER_NOT_IN_ALIAS}, 456 - {"NT_STATUS_MEMBER_IN_ALIAS", NT_STATUS_MEMBER_IN_ALIAS}, 457 - {"NT_STATUS_ALIAS_EXISTS", NT_STATUS_ALIAS_EXISTS}, 458 - {"NT_STATUS_LOGON_NOT_GRANTED", NT_STATUS_LOGON_NOT_GRANTED}, 459 - {"NT_STATUS_TOO_MANY_SECRETS", NT_STATUS_TOO_MANY_SECRETS}, 460 - {"NT_STATUS_SECRET_TOO_LONG", NT_STATUS_SECRET_TOO_LONG}, 461 - {"NT_STATUS_INTERNAL_DB_ERROR", NT_STATUS_INTERNAL_DB_ERROR}, 462 - {"NT_STATUS_FULLSCREEN_MODE", NT_STATUS_FULLSCREEN_MODE}, 463 - {"NT_STATUS_TOO_MANY_CONTEXT_IDS", NT_STATUS_TOO_MANY_CONTEXT_IDS}, 464 - {"NT_STATUS_LOGON_TYPE_NOT_GRANTED", 465 - NT_STATUS_LOGON_TYPE_NOT_GRANTED}, 466 - {"NT_STATUS_NOT_REGISTRY_FILE", NT_STATUS_NOT_REGISTRY_FILE}, 467 - {"NT_STATUS_NT_CROSS_ENCRYPTION_REQUIRED", 468 - NT_STATUS_NT_CROSS_ENCRYPTION_REQUIRED}, 469 - {"NT_STATUS_DOMAIN_CTRLR_CONFIG_ERROR", 470 - NT_STATUS_DOMAIN_CTRLR_CONFIG_ERROR}, 471 - {"NT_STATUS_FT_MISSING_MEMBER", NT_STATUS_FT_MISSING_MEMBER}, 472 - {"NT_STATUS_ILL_FORMED_SERVICE_ENTRY", 473 - NT_STATUS_ILL_FORMED_SERVICE_ENTRY}, 474 - {"NT_STATUS_ILLEGAL_CHARACTER", NT_STATUS_ILLEGAL_CHARACTER}, 475 - {"NT_STATUS_UNMAPPABLE_CHARACTER", NT_STATUS_UNMAPPABLE_CHARACTER}, 476 - {"NT_STATUS_UNDEFINED_CHARACTER", NT_STATUS_UNDEFINED_CHARACTER}, 477 - {"NT_STATUS_FLOPPY_VOLUME", NT_STATUS_FLOPPY_VOLUME}, 478 - {"NT_STATUS_FLOPPY_ID_MARK_NOT_FOUND", 479 - NT_STATUS_FLOPPY_ID_MARK_NOT_FOUND}, 480 - {"NT_STATUS_FLOPPY_WRONG_CYLINDER", 481 - NT_STATUS_FLOPPY_WRONG_CYLINDER}, 482 - {"NT_STATUS_FLOPPY_UNKNOWN_ERROR", NT_STATUS_FLOPPY_UNKNOWN_ERROR}, 483 - {"NT_STATUS_FLOPPY_BAD_REGISTERS", NT_STATUS_FLOPPY_BAD_REGISTERS}, 484 - {"NT_STATUS_DISK_RECALIBRATE_FAILED", 485 - NT_STATUS_DISK_RECALIBRATE_FAILED}, 486 - {"NT_STATUS_DISK_OPERATION_FAILED", 487 - NT_STATUS_DISK_OPERATION_FAILED}, 488 - {"NT_STATUS_DISK_RESET_FAILED", NT_STATUS_DISK_RESET_FAILED}, 489 - {"NT_STATUS_SHARED_IRQ_BUSY", NT_STATUS_SHARED_IRQ_BUSY}, 490 - {"NT_STATUS_FT_ORPHANING", NT_STATUS_FT_ORPHANING}, 491 - {"NT_STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT", 492 - NT_STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT}, 493 - {"NT_STATUS_PARTITION_FAILURE", NT_STATUS_PARTITION_FAILURE}, 494 - {"NT_STATUS_INVALID_BLOCK_LENGTH", NT_STATUS_INVALID_BLOCK_LENGTH}, 495 - {"NT_STATUS_DEVICE_NOT_PARTITIONED", 496 - NT_STATUS_DEVICE_NOT_PARTITIONED}, 497 - {"NT_STATUS_UNABLE_TO_LOCK_MEDIA", NT_STATUS_UNABLE_TO_LOCK_MEDIA}, 498 - {"NT_STATUS_UNABLE_TO_UNLOAD_MEDIA", 499 - NT_STATUS_UNABLE_TO_UNLOAD_MEDIA}, 500 - {"NT_STATUS_EOM_OVERFLOW", NT_STATUS_EOM_OVERFLOW}, 501 - {"NT_STATUS_NO_MEDIA", NT_STATUS_NO_MEDIA}, 502 - {"NT_STATUS_NO_SUCH_MEMBER", NT_STATUS_NO_SUCH_MEMBER}, 503 - {"NT_STATUS_INVALID_MEMBER", NT_STATUS_INVALID_MEMBER}, 504 - {"NT_STATUS_KEY_DELETED", NT_STATUS_KEY_DELETED}, 505 - {"NT_STATUS_NO_LOG_SPACE", NT_STATUS_NO_LOG_SPACE}, 506 - {"NT_STATUS_TOO_MANY_SIDS", NT_STATUS_TOO_MANY_SIDS}, 507 - {"NT_STATUS_LM_CROSS_ENCRYPTION_REQUIRED", 508 - NT_STATUS_LM_CROSS_ENCRYPTION_REQUIRED}, 509 - {"NT_STATUS_KEY_HAS_CHILDREN", NT_STATUS_KEY_HAS_CHILDREN}, 510 - {"NT_STATUS_CHILD_MUST_BE_VOLATILE", 511 - NT_STATUS_CHILD_MUST_BE_VOLATILE}, 512 - {"NT_STATUS_DEVICE_CONFIGURATION_ERROR", 513 - NT_STATUS_DEVICE_CONFIGURATION_ERROR}, 514 - {"NT_STATUS_DRIVER_INTERNAL_ERROR", 515 - NT_STATUS_DRIVER_INTERNAL_ERROR}, 516 - {"NT_STATUS_INVALID_DEVICE_STATE", NT_STATUS_INVALID_DEVICE_STATE}, 517 - {"NT_STATUS_IO_DEVICE_ERROR", NT_STATUS_IO_DEVICE_ERROR}, 518 - {"NT_STATUS_DEVICE_PROTOCOL_ERROR", 519 - NT_STATUS_DEVICE_PROTOCOL_ERROR}, 520 - {"NT_STATUS_BACKUP_CONTROLLER", NT_STATUS_BACKUP_CONTROLLER}, 521 - {"NT_STATUS_LOG_FILE_FULL", NT_STATUS_LOG_FILE_FULL}, 522 - {"NT_STATUS_TOO_LATE", NT_STATUS_TOO_LATE}, 523 - {"NT_STATUS_NO_TRUST_LSA_SECRET", NT_STATUS_NO_TRUST_LSA_SECRET}, 524 - {"NT_STATUS_NO_TRUST_SAM_ACCOUNT", NT_STATUS_NO_TRUST_SAM_ACCOUNT}, 525 - {"NT_STATUS_TRUSTED_DOMAIN_FAILURE", 526 - NT_STATUS_TRUSTED_DOMAIN_FAILURE}, 527 - {"NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE", 528 - NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE}, 529 - {"NT_STATUS_EVENTLOG_FILE_CORRUPT", 530 - NT_STATUS_EVENTLOG_FILE_CORRUPT}, 531 - {"NT_STATUS_EVENTLOG_CANT_START", NT_STATUS_EVENTLOG_CANT_START}, 532 - {"NT_STATUS_TRUST_FAILURE", NT_STATUS_TRUST_FAILURE}, 533 - {"NT_STATUS_MUTANT_LIMIT_EXCEEDED", 534 - NT_STATUS_MUTANT_LIMIT_EXCEEDED}, 535 - {"NT_STATUS_NETLOGON_NOT_STARTED", NT_STATUS_NETLOGON_NOT_STARTED}, 536 - {"NT_STATUS_ACCOUNT_EXPIRED", NT_STATUS_ACCOUNT_EXPIRED}, 537 - {"NT_STATUS_POSSIBLE_DEADLOCK", NT_STATUS_POSSIBLE_DEADLOCK}, 538 - {"NT_STATUS_NETWORK_CREDENTIAL_CONFLICT", 539 - NT_STATUS_NETWORK_CREDENTIAL_CONFLICT}, 540 - {"NT_STATUS_REMOTE_SESSION_LIMIT", NT_STATUS_REMOTE_SESSION_LIMIT}, 541 - {"NT_STATUS_EVENTLOG_FILE_CHANGED", 542 - NT_STATUS_EVENTLOG_FILE_CHANGED}, 543 - {"NT_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT", 544 - NT_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT}, 545 - {"NT_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT", 546 - NT_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT}, 547 - {"NT_STATUS_NOLOGON_SERVER_TRUST_ACCOUNT", 548 - NT_STATUS_NOLOGON_SERVER_TRUST_ACCOUNT}, 549 - {"NT_STATUS_DOMAIN_TRUST_INCONSISTENT", 550 - NT_STATUS_DOMAIN_TRUST_INCONSISTENT}, 551 - {"NT_STATUS_FS_DRIVER_REQUIRED", NT_STATUS_FS_DRIVER_REQUIRED}, 552 - {"NT_STATUS_INVALID_LOCK_RANGE", NT_STATUS_INVALID_LOCK_RANGE}, 553 - {"NT_STATUS_NO_USER_SESSION_KEY", NT_STATUS_NO_USER_SESSION_KEY}, 554 - {"NT_STATUS_USER_SESSION_DELETED", NT_STATUS_USER_SESSION_DELETED}, 555 - {"NT_STATUS_RESOURCE_LANG_NOT_FOUND", 556 - NT_STATUS_RESOURCE_LANG_NOT_FOUND}, 557 - {"NT_STATUS_INSUFF_SERVER_RESOURCES", 558 - NT_STATUS_INSUFF_SERVER_RESOURCES}, 559 - {"NT_STATUS_INVALID_BUFFER_SIZE", NT_STATUS_INVALID_BUFFER_SIZE}, 560 - {"NT_STATUS_INVALID_ADDRESS_COMPONENT", 561 - NT_STATUS_INVALID_ADDRESS_COMPONENT}, 562 - {"NT_STATUS_INVALID_ADDRESS_WILDCARD", 563 - NT_STATUS_INVALID_ADDRESS_WILDCARD}, 564 - {"NT_STATUS_TOO_MANY_ADDRESSES", NT_STATUS_TOO_MANY_ADDRESSES}, 565 - {"NT_STATUS_ADDRESS_ALREADY_EXISTS", 566 - NT_STATUS_ADDRESS_ALREADY_EXISTS}, 567 - {"NT_STATUS_ADDRESS_CLOSED", NT_STATUS_ADDRESS_CLOSED}, 568 - {"NT_STATUS_CONNECTION_DISCONNECTED", 569 - NT_STATUS_CONNECTION_DISCONNECTED}, 570 - {"NT_STATUS_CONNECTION_RESET", NT_STATUS_CONNECTION_RESET}, 571 - {"NT_STATUS_TOO_MANY_NODES", NT_STATUS_TOO_MANY_NODES}, 572 - {"NT_STATUS_TRANSACTION_ABORTED", NT_STATUS_TRANSACTION_ABORTED}, 573 - {"NT_STATUS_TRANSACTION_TIMED_OUT", 574 - NT_STATUS_TRANSACTION_TIMED_OUT}, 575 - {"NT_STATUS_TRANSACTION_NO_RELEASE", 576 - NT_STATUS_TRANSACTION_NO_RELEASE}, 577 - {"NT_STATUS_TRANSACTION_NO_MATCH", NT_STATUS_TRANSACTION_NO_MATCH}, 578 - {"NT_STATUS_TRANSACTION_RESPONDED", 579 - NT_STATUS_TRANSACTION_RESPONDED}, 580 - {"NT_STATUS_TRANSACTION_INVALID_ID", 581 - NT_STATUS_TRANSACTION_INVALID_ID}, 582 - {"NT_STATUS_TRANSACTION_INVALID_TYPE", 583 - NT_STATUS_TRANSACTION_INVALID_TYPE}, 584 - {"NT_STATUS_NOT_SERVER_SESSION", NT_STATUS_NOT_SERVER_SESSION}, 585 - {"NT_STATUS_NOT_CLIENT_SESSION", NT_STATUS_NOT_CLIENT_SESSION}, 586 - {"NT_STATUS_CANNOT_LOAD_REGISTRY_FILE", 587 - NT_STATUS_CANNOT_LOAD_REGISTRY_FILE}, 588 - {"NT_STATUS_DEBUG_ATTACH_FAILED", NT_STATUS_DEBUG_ATTACH_FAILED}, 589 - {"NT_STATUS_SYSTEM_PROCESS_TERMINATED", 590 - NT_STATUS_SYSTEM_PROCESS_TERMINATED}, 591 - {"NT_STATUS_DATA_NOT_ACCEPTED", NT_STATUS_DATA_NOT_ACCEPTED}, 592 - {"NT_STATUS_NO_BROWSER_SERVERS_FOUND", 593 - NT_STATUS_NO_BROWSER_SERVERS_FOUND}, 594 - {"NT_STATUS_VDM_HARD_ERROR", NT_STATUS_VDM_HARD_ERROR}, 595 - {"NT_STATUS_DRIVER_CANCEL_TIMEOUT", 596 - NT_STATUS_DRIVER_CANCEL_TIMEOUT}, 597 - {"NT_STATUS_REPLY_MESSAGE_MISMATCH", 598 - NT_STATUS_REPLY_MESSAGE_MISMATCH}, 599 - {"NT_STATUS_MAPPED_ALIGNMENT", NT_STATUS_MAPPED_ALIGNMENT}, 600 - {"NT_STATUS_IMAGE_CHECKSUM_MISMATCH", 601 - NT_STATUS_IMAGE_CHECKSUM_MISMATCH}, 602 - {"NT_STATUS_LOST_WRITEBEHIND_DATA", 603 - NT_STATUS_LOST_WRITEBEHIND_DATA}, 604 - {"NT_STATUS_CLIENT_SERVER_PARAMETERS_INVALID", 605 - NT_STATUS_CLIENT_SERVER_PARAMETERS_INVALID}, 606 - {"NT_STATUS_PASSWORD_MUST_CHANGE", NT_STATUS_PASSWORD_MUST_CHANGE}, 607 - {"NT_STATUS_NOT_FOUND", NT_STATUS_NOT_FOUND}, 608 - {"NT_STATUS_NOT_TINY_STREAM", NT_STATUS_NOT_TINY_STREAM}, 609 - {"NT_STATUS_RECOVERY_FAILURE", NT_STATUS_RECOVERY_FAILURE}, 610 - {"NT_STATUS_STACK_OVERFLOW_READ", NT_STATUS_STACK_OVERFLOW_READ}, 611 - {"NT_STATUS_FAIL_CHECK", NT_STATUS_FAIL_CHECK}, 612 - {"NT_STATUS_DUPLICATE_OBJECTID", NT_STATUS_DUPLICATE_OBJECTID}, 613 - {"NT_STATUS_OBJECTID_EXISTS", NT_STATUS_OBJECTID_EXISTS}, 614 - {"NT_STATUS_CONVERT_TO_LARGE", NT_STATUS_CONVERT_TO_LARGE}, 615 - {"NT_STATUS_RETRY", NT_STATUS_RETRY}, 616 - {"NT_STATUS_FOUND_OUT_OF_SCOPE", NT_STATUS_FOUND_OUT_OF_SCOPE}, 617 - {"NT_STATUS_ALLOCATE_BUCKET", NT_STATUS_ALLOCATE_BUCKET}, 618 - {"NT_STATUS_PROPSET_NOT_FOUND", NT_STATUS_PROPSET_NOT_FOUND}, 619 - {"NT_STATUS_MARSHALL_OVERFLOW", NT_STATUS_MARSHALL_OVERFLOW}, 620 - {"NT_STATUS_INVALID_VARIANT", NT_STATUS_INVALID_VARIANT}, 621 - {"NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND", 622 - NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND}, 623 - {"NT_STATUS_ACCOUNT_LOCKED_OUT", NT_STATUS_ACCOUNT_LOCKED_OUT}, 624 - {"NT_STATUS_HANDLE_NOT_CLOSABLE", NT_STATUS_HANDLE_NOT_CLOSABLE}, 625 - {"NT_STATUS_CONNECTION_REFUSED", NT_STATUS_CONNECTION_REFUSED}, 626 - {"NT_STATUS_GRACEFUL_DISCONNECT", NT_STATUS_GRACEFUL_DISCONNECT}, 627 - {"NT_STATUS_ADDRESS_ALREADY_ASSOCIATED", 628 - NT_STATUS_ADDRESS_ALREADY_ASSOCIATED}, 629 - {"NT_STATUS_ADDRESS_NOT_ASSOCIATED", 630 - NT_STATUS_ADDRESS_NOT_ASSOCIATED}, 631 - {"NT_STATUS_CONNECTION_INVALID", NT_STATUS_CONNECTION_INVALID}, 632 - {"NT_STATUS_CONNECTION_ACTIVE", NT_STATUS_CONNECTION_ACTIVE}, 633 - {"NT_STATUS_NETWORK_UNREACHABLE", NT_STATUS_NETWORK_UNREACHABLE}, 634 - {"NT_STATUS_HOST_UNREACHABLE", NT_STATUS_HOST_UNREACHABLE}, 635 - {"NT_STATUS_PROTOCOL_UNREACHABLE", NT_STATUS_PROTOCOL_UNREACHABLE}, 636 - {"NT_STATUS_PORT_UNREACHABLE", NT_STATUS_PORT_UNREACHABLE}, 637 - {"NT_STATUS_REQUEST_ABORTED", NT_STATUS_REQUEST_ABORTED}, 638 - {"NT_STATUS_CONNECTION_ABORTED", NT_STATUS_CONNECTION_ABORTED}, 639 - {"NT_STATUS_BAD_COMPRESSION_BUFFER", 640 - NT_STATUS_BAD_COMPRESSION_BUFFER}, 641 - {"NT_STATUS_USER_MAPPED_FILE", NT_STATUS_USER_MAPPED_FILE}, 642 - {"NT_STATUS_AUDIT_FAILED", NT_STATUS_AUDIT_FAILED}, 643 - {"NT_STATUS_TIMER_RESOLUTION_NOT_SET", 644 - NT_STATUS_TIMER_RESOLUTION_NOT_SET}, 645 - {"NT_STATUS_CONNECTION_COUNT_LIMIT", 646 - NT_STATUS_CONNECTION_COUNT_LIMIT}, 647 - {"NT_STATUS_LOGIN_TIME_RESTRICTION", 648 - NT_STATUS_LOGIN_TIME_RESTRICTION}, 649 - {"NT_STATUS_LOGIN_WKSTA_RESTRICTION", 650 - NT_STATUS_LOGIN_WKSTA_RESTRICTION}, 651 - {"NT_STATUS_IMAGE_MP_UP_MISMATCH", NT_STATUS_IMAGE_MP_UP_MISMATCH}, 652 - {"NT_STATUS_INSUFFICIENT_LOGON_INFO", 653 - NT_STATUS_INSUFFICIENT_LOGON_INFO}, 654 - {"NT_STATUS_BAD_DLL_ENTRYPOINT", NT_STATUS_BAD_DLL_ENTRYPOINT}, 655 - {"NT_STATUS_BAD_SERVICE_ENTRYPOINT", 656 - NT_STATUS_BAD_SERVICE_ENTRYPOINT}, 657 - {"NT_STATUS_LPC_REPLY_LOST", NT_STATUS_LPC_REPLY_LOST}, 658 - {"NT_STATUS_IP_ADDRESS_CONFLICT1", NT_STATUS_IP_ADDRESS_CONFLICT1}, 659 - {"NT_STATUS_IP_ADDRESS_CONFLICT2", NT_STATUS_IP_ADDRESS_CONFLICT2}, 660 - {"NT_STATUS_REGISTRY_QUOTA_LIMIT", NT_STATUS_REGISTRY_QUOTA_LIMIT}, 661 - {"NT_STATUS_PATH_NOT_COVERED", NT_STATUS_PATH_NOT_COVERED}, 662 - {"NT_STATUS_NO_CALLBACK_ACTIVE", NT_STATUS_NO_CALLBACK_ACTIVE}, 663 - {"NT_STATUS_LICENSE_QUOTA_EXCEEDED", 664 - NT_STATUS_LICENSE_QUOTA_EXCEEDED}, 665 - {"NT_STATUS_PWD_TOO_SHORT", NT_STATUS_PWD_TOO_SHORT}, 666 - {"NT_STATUS_PWD_TOO_RECENT", NT_STATUS_PWD_TOO_RECENT}, 667 - {"NT_STATUS_PWD_HISTORY_CONFLICT", NT_STATUS_PWD_HISTORY_CONFLICT}, 668 - {"NT_STATUS_PLUGPLAY_NO_DEVICE", NT_STATUS_PLUGPLAY_NO_DEVICE}, 669 - {"NT_STATUS_UNSUPPORTED_COMPRESSION", 670 - NT_STATUS_UNSUPPORTED_COMPRESSION}, 671 - {"NT_STATUS_INVALID_HW_PROFILE", NT_STATUS_INVALID_HW_PROFILE}, 672 - {"NT_STATUS_INVALID_PLUGPLAY_DEVICE_PATH", 673 - NT_STATUS_INVALID_PLUGPLAY_DEVICE_PATH}, 674 - {"NT_STATUS_DRIVER_ORDINAL_NOT_FOUND", 675 - NT_STATUS_DRIVER_ORDINAL_NOT_FOUND}, 676 - {"NT_STATUS_DRIVER_ENTRYPOINT_NOT_FOUND", 677 - NT_STATUS_DRIVER_ENTRYPOINT_NOT_FOUND}, 678 - {"NT_STATUS_RESOURCE_NOT_OWNED", NT_STATUS_RESOURCE_NOT_OWNED}, 679 - {"NT_STATUS_TOO_MANY_LINKS", NT_STATUS_TOO_MANY_LINKS}, 680 - {"NT_STATUS_QUOTA_LIST_INCONSISTENT", 681 - NT_STATUS_QUOTA_LIST_INCONSISTENT}, 682 - {"NT_STATUS_FILE_IS_OFFLINE", NT_STATUS_FILE_IS_OFFLINE}, 683 - {"NT_STATUS_VOLUME_DISMOUNTED", NT_STATUS_VOLUME_DISMOUNTED}, 684 - {"NT_STATUS_NOT_A_REPARSE_POINT", NT_STATUS_NOT_A_REPARSE_POINT}, 685 - {"NT_STATUS_DIRECTORY_IS_A_REPARSE_POINT", 686 - NT_STATUS_DIRECTORY_IS_A_REPARSE_POINT}, 687 - {"NT_STATUS_ENCRYPTION_FAILED", NT_STATUS_ENCRYPTION_FAILED}, 688 - {"NT_STATUS_DECRYPTION_FAILED", NT_STATUS_DECRYPTION_FAILED}, 689 - {"NT_STATUS_RANGE_NOT_FOUND", NT_STATUS_RANGE_NOT_FOUND}, 690 - {"NT_STATUS_NO_RECOVERY_POLICY", NT_STATUS_NO_RECOVERY_POLICY}, 691 - {"NT_STATUS_NO_EFS", NT_STATUS_NO_EFS}, 692 - {"NT_STATUS_WRONG_EFS", NT_STATUS_WRONG_EFS}, 693 - {"NT_STATUS_NO_USER_KEYS", NT_STATUS_NO_USER_KEYS}, 694 - {"NT_STATUS_VOLUME_NOT_UPGRADED", NT_STATUS_VOLUME_NOT_UPGRADED}, 695 - {"NT_STATUS_NETWORK_SESSION_EXPIRED", NT_STATUS_NETWORK_SESSION_EXPIRED}, 696 - {"NT_STATUS_NO_MORE_ENTRIES", NT_STATUS_NO_MORE_ENTRIES}, 697 - {"NT_STATUS_MORE_ENTRIES", NT_STATUS_MORE_ENTRIES}, 698 - {"NT_STATUS_SOME_NOT_MAPPED", NT_STATUS_SOME_NOT_MAPPED}, 699 - {"NT_STATUS_NO_SUCH_JOB", NT_STATUS_NO_SUCH_JOB}, 700 - {"NT_STATUS_NO_PREAUTH_INTEGRITY_HASH_OVERLAP", 701 - NT_STATUS_NO_PREAUTH_INTEGRITY_HASH_OVERLAP}, 702 - {"NT_STATUS_OS2_INVALID_LEVEL", NT_STATUS_OS2_INVALID_LEVEL}, 703 - {NULL, 0} 704 - };
+544 -538
fs/smb/client/nterr.h
··· 15 15 #ifndef _NTERR_H 16 16 #define _NTERR_H 17 17 18 - struct nt_err_code_struct { 19 - char *nt_errstr; 20 - __u32 nt_errcode; 18 + /* NT status -> dos error map */ 19 + struct ntstatus_to_dos_err { 20 + __u8 dos_class; 21 + __u16 dos_code; 22 + __u32 ntstatus; 23 + const char *nt_errstr; 21 24 }; 22 - 23 - extern const struct nt_err_code_struct nt_errs[]; 24 25 25 26 /* Win32 Error Codes. */ 26 27 #define NT_ERROR_INVALID_PARAMETER 0x0057 ··· 31 30 /* 32 31 * NTSTATUS Values extracted using a loop in smbclient then printing a netmon 33 32 * sniff to a file. 33 + * 34 + * The comment at the end of each definition indicates `dos_class` 35 + * and `dos_code` fields of the `ntstatus_to_dos_map` array; it is 36 + * used to generate the `smb1_mapping_table.c` file. 34 37 */ 35 38 36 - #define NT_STATUS_OK 0x0000 37 - #define NT_STATUS_PENDING 0x0103 38 - #define NT_STATUS_MORE_ENTRIES 0x0105 39 - #define NT_STATUS_SOME_NOT_MAPPED 0x0107 40 - #define NT_STATUS_NOTIFY_ENUM_DIR 0x010c 41 - #define NT_STATUS_BUFFER_OVERFLOW 0x80000005 42 - #define NT_STATUS_NO_MORE_ENTRIES 0x8000001a 43 - #define NT_STATUS_MEDIA_CHANGED 0x8000001c 44 - #define NT_STATUS_END_OF_MEDIA 0x8000001e 45 - #define NT_STATUS_MEDIA_CHECK 0x80000020 46 - #define NT_STATUS_NO_DATA_DETECTED 0x80000022 47 - #define NT_STATUS_STOPPED_ON_SYMLINK 0x8000002d 48 - #define NT_STATUS_DEVICE_REQUIRES_CLEANING 0x80000288 49 - #define NT_STATUS_DEVICE_DOOR_OPEN 0x80000289 50 - #define NT_STATUS_UNSUCCESSFUL (0xC0000000 | 0x0001) 51 - #define NT_STATUS_NOT_IMPLEMENTED (0xC0000000 | 0x0002) 52 - #define NT_STATUS_INVALID_INFO_CLASS (0xC0000000 | 0x0003) 53 - #define NT_STATUS_INFO_LENGTH_MISMATCH (0xC0000000 | 0x0004) 54 - #define NT_STATUS_ACCESS_VIOLATION (0xC0000000 | 0x0005) 55 - #define NT_STATUS_IN_PAGE_ERROR (0xC0000000 | 0x0006) 56 - #define NT_STATUS_PAGEFILE_QUOTA (0xC0000000 | 0x0007) 57 - #define NT_STATUS_INVALID_HANDLE (0xC0000000 | 0x0008) 58 - #define NT_STATUS_BAD_INITIAL_STACK (0xC0000000 | 0x0009) 59 - #define NT_STATUS_BAD_INITIAL_PC (0xC0000000 | 0x000a) 60 - #define NT_STATUS_INVALID_CID (0xC0000000 | 0x000b) 61 - #define NT_STATUS_TIMER_NOT_CANCELED (0xC0000000 | 0x000c) 62 - #define NT_STATUS_INVALID_PARAMETER (0xC0000000 | 0x000d) 63 - #define NT_STATUS_NO_SUCH_DEVICE (0xC0000000 | 0x000e) 64 - #define NT_STATUS_NO_SUCH_FILE (0xC0000000 | 0x000f) 65 - #define NT_STATUS_INVALID_DEVICE_REQUEST (0xC0000000 | 0x0010) 66 - #define NT_STATUS_END_OF_FILE (0xC0000000 | 0x0011) 67 - #define NT_STATUS_WRONG_VOLUME (0xC0000000 | 0x0012) 68 - #define NT_STATUS_NO_MEDIA_IN_DEVICE (0xC0000000 | 0x0013) 69 - #define NT_STATUS_UNRECOGNIZED_MEDIA (0xC0000000 | 0x0014) 70 - #define NT_STATUS_NONEXISTENT_SECTOR (0xC0000000 | 0x0015) 71 - #define NT_STATUS_MORE_PROCESSING_REQUIRED (0xC0000000 | 0x0016) 72 - #define NT_STATUS_NO_MEMORY (0xC0000000 | 0x0017) 73 - #define NT_STATUS_CONFLICTING_ADDRESSES (0xC0000000 | 0x0018) 74 - #define NT_STATUS_NOT_MAPPED_VIEW (0xC0000000 | 0x0019) 75 - #define NT_STATUS_UNABLE_TO_FREE_VM (0xC0000000 | 0x001a) 76 - #define NT_STATUS_UNABLE_TO_DELETE_SECTION (0xC0000000 | 0x001b) 77 - #define NT_STATUS_INVALID_SYSTEM_SERVICE (0xC0000000 | 0x001c) 78 - #define NT_STATUS_ILLEGAL_INSTRUCTION (0xC0000000 | 0x001d) 79 - #define NT_STATUS_INVALID_LOCK_SEQUENCE (0xC0000000 | 0x001e) 80 - #define NT_STATUS_INVALID_VIEW_SIZE (0xC0000000 | 0x001f) 81 - #define NT_STATUS_INVALID_FILE_FOR_SECTION (0xC0000000 | 0x0020) 82 - #define NT_STATUS_ALREADY_COMMITTED (0xC0000000 | 0x0021) 83 - #define NT_STATUS_ACCESS_DENIED (0xC0000000 | 0x0022) 84 - #define NT_STATUS_BUFFER_TOO_SMALL (0xC0000000 | 0x0023) 85 - #define NT_STATUS_OBJECT_TYPE_MISMATCH (0xC0000000 | 0x0024) 86 - #define NT_STATUS_NONCONTINUABLE_EXCEPTION (0xC0000000 | 0x0025) 87 - #define NT_STATUS_INVALID_DISPOSITION (0xC0000000 | 0x0026) 88 - #define NT_STATUS_UNWIND (0xC0000000 | 0x0027) 89 - #define NT_STATUS_BAD_STACK (0xC0000000 | 0x0028) 90 - #define NT_STATUS_INVALID_UNWIND_TARGET (0xC0000000 | 0x0029) 91 - #define NT_STATUS_NOT_LOCKED (0xC0000000 | 0x002a) 92 - #define NT_STATUS_PARITY_ERROR (0xC0000000 | 0x002b) 93 - #define NT_STATUS_UNABLE_TO_DECOMMIT_VM (0xC0000000 | 0x002c) 94 - #define NT_STATUS_NOT_COMMITTED (0xC0000000 | 0x002d) 95 - #define NT_STATUS_INVALID_PORT_ATTRIBUTES (0xC0000000 | 0x002e) 96 - #define NT_STATUS_PORT_MESSAGE_TOO_LONG (0xC0000000 | 0x002f) 97 - #define NT_STATUS_INVALID_PARAMETER_MIX (0xC0000000 | 0x0030) 98 - #define NT_STATUS_INVALID_QUOTA_LOWER (0xC0000000 | 0x0031) 99 - #define NT_STATUS_DISK_CORRUPT_ERROR (0xC0000000 | 0x0032) 100 - #define NT_STATUS_OBJECT_NAME_INVALID (0xC0000000 | 0x0033) 101 - #define NT_STATUS_OBJECT_NAME_NOT_FOUND (0xC0000000 | 0x0034) 102 - #define NT_STATUS_OBJECT_NAME_COLLISION (0xC0000000 | 0x0035) 103 - #define NT_STATUS_HANDLE_NOT_WAITABLE (0xC0000000 | 0x0036) 104 - #define NT_STATUS_PORT_DISCONNECTED (0xC0000000 | 0x0037) 105 - #define NT_STATUS_DEVICE_ALREADY_ATTACHED (0xC0000000 | 0x0038) 106 - #define NT_STATUS_OBJECT_PATH_INVALID (0xC0000000 | 0x0039) 107 - #define NT_STATUS_OBJECT_PATH_NOT_FOUND (0xC0000000 | 0x003a) 108 - #define NT_STATUS_OBJECT_PATH_SYNTAX_BAD (0xC0000000 | 0x003b) 109 - #define NT_STATUS_DATA_OVERRUN (0xC0000000 | 0x003c) 110 - #define NT_STATUS_DATA_LATE_ERROR (0xC0000000 | 0x003d) 111 - #define NT_STATUS_DATA_ERROR (0xC0000000 | 0x003e) 112 - #define NT_STATUS_CRC_ERROR (0xC0000000 | 0x003f) 113 - #define NT_STATUS_SECTION_TOO_BIG (0xC0000000 | 0x0040) 114 - #define NT_STATUS_PORT_CONNECTION_REFUSED (0xC0000000 | 0x0041) 115 - #define NT_STATUS_INVALID_PORT_HANDLE (0xC0000000 | 0x0042) 116 - #define NT_STATUS_SHARING_VIOLATION (0xC0000000 | 0x0043) 117 - #define NT_STATUS_QUOTA_EXCEEDED (0xC0000000 | 0x0044) 118 - #define NT_STATUS_INVALID_PAGE_PROTECTION (0xC0000000 | 0x0045) 119 - #define NT_STATUS_MUTANT_NOT_OWNED (0xC0000000 | 0x0046) 120 - #define NT_STATUS_SEMAPHORE_LIMIT_EXCEEDED (0xC0000000 | 0x0047) 121 - #define NT_STATUS_PORT_ALREADY_SET (0xC0000000 | 0x0048) 122 - #define NT_STATUS_SECTION_NOT_IMAGE (0xC0000000 | 0x0049) 123 - #define NT_STATUS_SUSPEND_COUNT_EXCEEDED (0xC0000000 | 0x004a) 124 - #define NT_STATUS_THREAD_IS_TERMINATING (0xC0000000 | 0x004b) 125 - #define NT_STATUS_BAD_WORKING_SET_LIMIT (0xC0000000 | 0x004c) 126 - #define NT_STATUS_INCOMPATIBLE_FILE_MAP (0xC0000000 | 0x004d) 127 - #define NT_STATUS_SECTION_PROTECTION (0xC0000000 | 0x004e) 128 - #define NT_STATUS_EAS_NOT_SUPPORTED (0xC0000000 | 0x004f) 129 - #define NT_STATUS_EA_TOO_LARGE (0xC0000000 | 0x0050) 130 - #define NT_STATUS_NONEXISTENT_EA_ENTRY (0xC0000000 | 0x0051) 131 - #define NT_STATUS_NO_EAS_ON_FILE (0xC0000000 | 0x0052) 132 - #define NT_STATUS_EA_CORRUPT_ERROR (0xC0000000 | 0x0053) 133 - #define NT_STATUS_FILE_LOCK_CONFLICT (0xC0000000 | 0x0054) 134 - #define NT_STATUS_LOCK_NOT_GRANTED (0xC0000000 | 0x0055) 135 - #define NT_STATUS_DELETE_PENDING (0xC0000000 | 0x0056) 136 - #define NT_STATUS_CTL_FILE_NOT_SUPPORTED (0xC0000000 | 0x0057) 137 - #define NT_STATUS_UNKNOWN_REVISION (0xC0000000 | 0x0058) 138 - #define NT_STATUS_REVISION_MISMATCH (0xC0000000 | 0x0059) 139 - #define NT_STATUS_INVALID_OWNER (0xC0000000 | 0x005a) 140 - #define NT_STATUS_INVALID_PRIMARY_GROUP (0xC0000000 | 0x005b) 141 - #define NT_STATUS_NO_IMPERSONATION_TOKEN (0xC0000000 | 0x005c) 142 - #define NT_STATUS_CANT_DISABLE_MANDATORY (0xC0000000 | 0x005d) 143 - #define NT_STATUS_NO_LOGON_SERVERS (0xC0000000 | 0x005e) 144 - #define NT_STATUS_NO_SUCH_LOGON_SESSION (0xC0000000 | 0x005f) 145 - #define NT_STATUS_NO_SUCH_PRIVILEGE (0xC0000000 | 0x0060) 146 - #define NT_STATUS_PRIVILEGE_NOT_HELD (0xC0000000 | 0x0061) 147 - #define NT_STATUS_INVALID_ACCOUNT_NAME (0xC0000000 | 0x0062) 148 - #define NT_STATUS_USER_EXISTS (0xC0000000 | 0x0063) 149 - #define NT_STATUS_NO_SUCH_USER (0xC0000000 | 0x0064) 150 - #define NT_STATUS_GROUP_EXISTS (0xC0000000 | 0x0065) 151 - #define NT_STATUS_NO_SUCH_GROUP (0xC0000000 | 0x0066) 152 - #define NT_STATUS_MEMBER_IN_GROUP (0xC0000000 | 0x0067) 153 - #define NT_STATUS_MEMBER_NOT_IN_GROUP (0xC0000000 | 0x0068) 154 - #define NT_STATUS_LAST_ADMIN (0xC0000000 | 0x0069) 155 - #define NT_STATUS_WRONG_PASSWORD (0xC0000000 | 0x006a) 156 - #define NT_STATUS_ILL_FORMED_PASSWORD (0xC0000000 | 0x006b) 157 - #define NT_STATUS_PASSWORD_RESTRICTION (0xC0000000 | 0x006c) 158 - #define NT_STATUS_LOGON_FAILURE (0xC0000000 | 0x006d) 159 - #define NT_STATUS_ACCOUNT_RESTRICTION (0xC0000000 | 0x006e) 160 - #define NT_STATUS_INVALID_LOGON_HOURS (0xC0000000 | 0x006f) 161 - #define NT_STATUS_INVALID_WORKSTATION (0xC0000000 | 0x0070) 162 - #define NT_STATUS_PASSWORD_EXPIRED (0xC0000000 | 0x0071) 163 - #define NT_STATUS_ACCOUNT_DISABLED (0xC0000000 | 0x0072) 164 - #define NT_STATUS_NONE_MAPPED (0xC0000000 | 0x0073) 165 - #define NT_STATUS_TOO_MANY_LUIDS_REQUESTED (0xC0000000 | 0x0074) 166 - #define NT_STATUS_LUIDS_EXHAUSTED (0xC0000000 | 0x0075) 167 - #define NT_STATUS_INVALID_SUB_AUTHORITY (0xC0000000 | 0x0076) 168 - #define NT_STATUS_INVALID_ACL (0xC0000000 | 0x0077) 169 - #define NT_STATUS_INVALID_SID (0xC0000000 | 0x0078) 170 - #define NT_STATUS_INVALID_SECURITY_DESCR (0xC0000000 | 0x0079) 171 - #define NT_STATUS_PROCEDURE_NOT_FOUND (0xC0000000 | 0x007a) 172 - #define NT_STATUS_INVALID_IMAGE_FORMAT (0xC0000000 | 0x007b) 173 - #define NT_STATUS_NO_TOKEN (0xC0000000 | 0x007c) 174 - #define NT_STATUS_BAD_INHERITANCE_ACL (0xC0000000 | 0x007d) 175 - #define NT_STATUS_RANGE_NOT_LOCKED (0xC0000000 | 0x007e) 176 - #define NT_STATUS_DISK_FULL (0xC0000000 | 0x007f) 177 - #define NT_STATUS_SERVER_DISABLED (0xC0000000 | 0x0080) 178 - #define NT_STATUS_SERVER_NOT_DISABLED (0xC0000000 | 0x0081) 179 - #define NT_STATUS_TOO_MANY_GUIDS_REQUESTED (0xC0000000 | 0x0082) 180 - #define NT_STATUS_GUIDS_EXHAUSTED (0xC0000000 | 0x0083) 181 - #define NT_STATUS_INVALID_ID_AUTHORITY (0xC0000000 | 0x0084) 182 - #define NT_STATUS_AGENTS_EXHAUSTED (0xC0000000 | 0x0085) 183 - #define NT_STATUS_INVALID_VOLUME_LABEL (0xC0000000 | 0x0086) 184 - #define NT_STATUS_SECTION_NOT_EXTENDED (0xC0000000 | 0x0087) 185 - #define NT_STATUS_NOT_MAPPED_DATA (0xC0000000 | 0x0088) 186 - #define NT_STATUS_RESOURCE_DATA_NOT_FOUND (0xC0000000 | 0x0089) 187 - #define NT_STATUS_RESOURCE_TYPE_NOT_FOUND (0xC0000000 | 0x008a) 188 - #define NT_STATUS_RESOURCE_NAME_NOT_FOUND (0xC0000000 | 0x008b) 189 - #define NT_STATUS_ARRAY_BOUNDS_EXCEEDED (0xC0000000 | 0x008c) 190 - #define NT_STATUS_FLOAT_DENORMAL_OPERAND (0xC0000000 | 0x008d) 191 - #define NT_STATUS_FLOAT_DIVIDE_BY_ZERO (0xC0000000 | 0x008e) 192 - #define NT_STATUS_FLOAT_INEXACT_RESULT (0xC0000000 | 0x008f) 193 - #define NT_STATUS_FLOAT_INVALID_OPERATION (0xC0000000 | 0x0090) 194 - #define NT_STATUS_FLOAT_OVERFLOW (0xC0000000 | 0x0091) 195 - #define NT_STATUS_FLOAT_STACK_CHECK (0xC0000000 | 0x0092) 196 - #define NT_STATUS_FLOAT_UNDERFLOW (0xC0000000 | 0x0093) 197 - #define NT_STATUS_INTEGER_DIVIDE_BY_ZERO (0xC0000000 | 0x0094) 198 - #define NT_STATUS_INTEGER_OVERFLOW (0xC0000000 | 0x0095) 199 - #define NT_STATUS_PRIVILEGED_INSTRUCTION (0xC0000000 | 0x0096) 200 - #define NT_STATUS_TOO_MANY_PAGING_FILES (0xC0000000 | 0x0097) 201 - #define NT_STATUS_FILE_INVALID (0xC0000000 | 0x0098) 202 - #define NT_STATUS_ALLOTTED_SPACE_EXCEEDED (0xC0000000 | 0x0099) 203 - #define NT_STATUS_INSUFFICIENT_RESOURCES (0xC0000000 | 0x009a) 204 - #define NT_STATUS_DFS_EXIT_PATH_FOUND (0xC0000000 | 0x009b) 205 - #define NT_STATUS_DEVICE_DATA_ERROR (0xC0000000 | 0x009c) 206 - #define NT_STATUS_DEVICE_NOT_CONNECTED (0xC0000000 | 0x009d) 207 - #define NT_STATUS_DEVICE_POWER_FAILURE (0xC0000000 | 0x009e) 208 - #define NT_STATUS_FREE_VM_NOT_AT_BASE (0xC0000000 | 0x009f) 209 - #define NT_STATUS_MEMORY_NOT_ALLOCATED (0xC0000000 | 0x00a0) 210 - #define NT_STATUS_WORKING_SET_QUOTA (0xC0000000 | 0x00a1) 211 - #define NT_STATUS_MEDIA_WRITE_PROTECTED (0xC0000000 | 0x00a2) 212 - #define NT_STATUS_DEVICE_NOT_READY (0xC0000000 | 0x00a3) 213 - #define NT_STATUS_INVALID_GROUP_ATTRIBUTES (0xC0000000 | 0x00a4) 214 - #define NT_STATUS_BAD_IMPERSONATION_LEVEL (0xC0000000 | 0x00a5) 215 - #define NT_STATUS_CANT_OPEN_ANONYMOUS (0xC0000000 | 0x00a6) 216 - #define NT_STATUS_BAD_VALIDATION_CLASS (0xC0000000 | 0x00a7) 217 - #define NT_STATUS_BAD_TOKEN_TYPE (0xC0000000 | 0x00a8) 218 - #define NT_STATUS_BAD_MASTER_BOOT_RECORD (0xC0000000 | 0x00a9) 219 - #define NT_STATUS_INSTRUCTION_MISALIGNMENT (0xC0000000 | 0x00aa) 220 - #define NT_STATUS_INSTANCE_NOT_AVAILABLE (0xC0000000 | 0x00ab) 221 - #define NT_STATUS_PIPE_NOT_AVAILABLE (0xC0000000 | 0x00ac) 222 - #define NT_STATUS_INVALID_PIPE_STATE (0xC0000000 | 0x00ad) 223 - #define NT_STATUS_PIPE_BUSY (0xC0000000 | 0x00ae) 224 - #define NT_STATUS_ILLEGAL_FUNCTION (0xC0000000 | 0x00af) 225 - #define NT_STATUS_PIPE_DISCONNECTED (0xC0000000 | 0x00b0) 226 - #define NT_STATUS_PIPE_CLOSING (0xC0000000 | 0x00b1) 227 - #define NT_STATUS_PIPE_CONNECTED (0xC0000000 | 0x00b2) 228 - #define NT_STATUS_PIPE_LISTENING (0xC0000000 | 0x00b3) 229 - #define NT_STATUS_INVALID_READ_MODE (0xC0000000 | 0x00b4) 230 - #define NT_STATUS_IO_TIMEOUT (0xC0000000 | 0x00b5) 231 - #define NT_STATUS_FILE_FORCED_CLOSED (0xC0000000 | 0x00b6) 232 - #define NT_STATUS_PROFILING_NOT_STARTED (0xC0000000 | 0x00b7) 233 - #define NT_STATUS_PROFILING_NOT_STOPPED (0xC0000000 | 0x00b8) 234 - #define NT_STATUS_COULD_NOT_INTERPRET (0xC0000000 | 0x00b9) 235 - #define NT_STATUS_FILE_IS_A_DIRECTORY (0xC0000000 | 0x00ba) 236 - #define NT_STATUS_NOT_SUPPORTED (0xC0000000 | 0x00bb) 237 - #define NT_STATUS_REMOTE_NOT_LISTENING (0xC0000000 | 0x00bc) 238 - #define NT_STATUS_DUPLICATE_NAME (0xC0000000 | 0x00bd) 239 - #define NT_STATUS_BAD_NETWORK_PATH (0xC0000000 | 0x00be) 240 - #define NT_STATUS_NETWORK_BUSY (0xC0000000 | 0x00bf) 241 - #define NT_STATUS_DEVICE_DOES_NOT_EXIST (0xC0000000 | 0x00c0) 242 - #define NT_STATUS_TOO_MANY_COMMANDS (0xC0000000 | 0x00c1) 243 - #define NT_STATUS_ADAPTER_HARDWARE_ERROR (0xC0000000 | 0x00c2) 244 - #define NT_STATUS_INVALID_NETWORK_RESPONSE (0xC0000000 | 0x00c3) 245 - #define NT_STATUS_UNEXPECTED_NETWORK_ERROR (0xC0000000 | 0x00c4) 246 - #define NT_STATUS_BAD_REMOTE_ADAPTER (0xC0000000 | 0x00c5) 247 - #define NT_STATUS_PRINT_QUEUE_FULL (0xC0000000 | 0x00c6) 248 - #define NT_STATUS_NO_SPOOL_SPACE (0xC0000000 | 0x00c7) 249 - #define NT_STATUS_PRINT_CANCELLED (0xC0000000 | 0x00c8) 250 - #define NT_STATUS_NETWORK_NAME_DELETED (0xC0000000 | 0x00c9) 251 - #define NT_STATUS_NETWORK_ACCESS_DENIED (0xC0000000 | 0x00ca) 252 - #define NT_STATUS_BAD_DEVICE_TYPE (0xC0000000 | 0x00cb) 253 - #define NT_STATUS_BAD_NETWORK_NAME (0xC0000000 | 0x00cc) 254 - #define NT_STATUS_TOO_MANY_NAMES (0xC0000000 | 0x00cd) 255 - #define NT_STATUS_TOO_MANY_SESSIONS (0xC0000000 | 0x00ce) 256 - #define NT_STATUS_SHARING_PAUSED (0xC0000000 | 0x00cf) 257 - #define NT_STATUS_REQUEST_NOT_ACCEPTED (0xC0000000 | 0x00d0) 258 - #define NT_STATUS_REDIRECTOR_PAUSED (0xC0000000 | 0x00d1) 259 - #define NT_STATUS_NET_WRITE_FAULT (0xC0000000 | 0x00d2) 260 - #define NT_STATUS_PROFILING_AT_LIMIT (0xC0000000 | 0x00d3) 261 - #define NT_STATUS_NOT_SAME_DEVICE (0xC0000000 | 0x00d4) 262 - #define NT_STATUS_FILE_RENAMED (0xC0000000 | 0x00d5) 263 - #define NT_STATUS_VIRTUAL_CIRCUIT_CLOSED (0xC0000000 | 0x00d6) 264 - #define NT_STATUS_NO_SECURITY_ON_OBJECT (0xC0000000 | 0x00d7) 265 - #define NT_STATUS_CANT_WAIT (0xC0000000 | 0x00d8) 266 - #define NT_STATUS_PIPE_EMPTY (0xC0000000 | 0x00d9) 267 - #define NT_STATUS_CANT_ACCESS_DOMAIN_INFO (0xC0000000 | 0x00da) 268 - #define NT_STATUS_CANT_TERMINATE_SELF (0xC0000000 | 0x00db) 269 - #define NT_STATUS_INVALID_SERVER_STATE (0xC0000000 | 0x00dc) 270 - #define NT_STATUS_INVALID_DOMAIN_STATE (0xC0000000 | 0x00dd) 271 - #define NT_STATUS_INVALID_DOMAIN_ROLE (0xC0000000 | 0x00de) 272 - #define NT_STATUS_NO_SUCH_DOMAIN (0xC0000000 | 0x00df) 273 - #define NT_STATUS_DOMAIN_EXISTS (0xC0000000 | 0x00e0) 274 - #define NT_STATUS_DOMAIN_LIMIT_EXCEEDED (0xC0000000 | 0x00e1) 275 - #define NT_STATUS_OPLOCK_NOT_GRANTED (0xC0000000 | 0x00e2) 276 - #define NT_STATUS_INVALID_OPLOCK_PROTOCOL (0xC0000000 | 0x00e3) 277 - #define NT_STATUS_INTERNAL_DB_CORRUPTION (0xC0000000 | 0x00e4) 278 - #define NT_STATUS_INTERNAL_ERROR (0xC0000000 | 0x00e5) 279 - #define NT_STATUS_GENERIC_NOT_MAPPED (0xC0000000 | 0x00e6) 280 - #define NT_STATUS_BAD_DESCRIPTOR_FORMAT (0xC0000000 | 0x00e7) 281 - #define NT_STATUS_INVALID_USER_BUFFER (0xC0000000 | 0x00e8) 282 - #define NT_STATUS_UNEXPECTED_IO_ERROR (0xC0000000 | 0x00e9) 283 - #define NT_STATUS_UNEXPECTED_MM_CREATE_ERR (0xC0000000 | 0x00ea) 284 - #define NT_STATUS_UNEXPECTED_MM_MAP_ERROR (0xC0000000 | 0x00eb) 285 - #define NT_STATUS_UNEXPECTED_MM_EXTEND_ERR (0xC0000000 | 0x00ec) 286 - #define NT_STATUS_NOT_LOGON_PROCESS (0xC0000000 | 0x00ed) 287 - #define NT_STATUS_LOGON_SESSION_EXISTS (0xC0000000 | 0x00ee) 288 - #define NT_STATUS_INVALID_PARAMETER_1 (0xC0000000 | 0x00ef) 289 - #define NT_STATUS_INVALID_PARAMETER_2 (0xC0000000 | 0x00f0) 290 - #define NT_STATUS_INVALID_PARAMETER_3 (0xC0000000 | 0x00f1) 291 - #define NT_STATUS_INVALID_PARAMETER_4 (0xC0000000 | 0x00f2) 292 - #define NT_STATUS_INVALID_PARAMETER_5 (0xC0000000 | 0x00f3) 293 - #define NT_STATUS_INVALID_PARAMETER_6 (0xC0000000 | 0x00f4) 294 - #define NT_STATUS_INVALID_PARAMETER_7 (0xC0000000 | 0x00f5) 295 - #define NT_STATUS_INVALID_PARAMETER_8 (0xC0000000 | 0x00f6) 296 - #define NT_STATUS_INVALID_PARAMETER_9 (0xC0000000 | 0x00f7) 297 - #define NT_STATUS_INVALID_PARAMETER_10 (0xC0000000 | 0x00f8) 298 - #define NT_STATUS_INVALID_PARAMETER_11 (0xC0000000 | 0x00f9) 299 - #define NT_STATUS_INVALID_PARAMETER_12 (0xC0000000 | 0x00fa) 300 - #define NT_STATUS_REDIRECTOR_NOT_STARTED (0xC0000000 | 0x00fb) 301 - #define NT_STATUS_REDIRECTOR_STARTED (0xC0000000 | 0x00fc) 302 - #define NT_STATUS_STACK_OVERFLOW (0xC0000000 | 0x00fd) 303 - #define NT_STATUS_NO_SUCH_PACKAGE (0xC0000000 | 0x00fe) 304 - #define NT_STATUS_BAD_FUNCTION_TABLE (0xC0000000 | 0x00ff) 305 - #define NT_STATUS_VARIABLE_NOT_FOUND (0xC0000000 | 0x0100) 306 - #define NT_STATUS_DIRECTORY_NOT_EMPTY (0xC0000000 | 0x0101) 307 - #define NT_STATUS_FILE_CORRUPT_ERROR (0xC0000000 | 0x0102) 308 - #define NT_STATUS_NOT_A_DIRECTORY (0xC0000000 | 0x0103) 309 - #define NT_STATUS_BAD_LOGON_SESSION_STATE (0xC0000000 | 0x0104) 310 - #define NT_STATUS_LOGON_SESSION_COLLISION (0xC0000000 | 0x0105) 311 - #define NT_STATUS_NAME_TOO_LONG (0xC0000000 | 0x0106) 312 - #define NT_STATUS_FILES_OPEN (0xC0000000 | 0x0107) 313 - #define NT_STATUS_CONNECTION_IN_USE (0xC0000000 | 0x0108) 314 - #define NT_STATUS_MESSAGE_NOT_FOUND (0xC0000000 | 0x0109) 315 - #define NT_STATUS_PROCESS_IS_TERMINATING (0xC0000000 | 0x010a) 316 - #define NT_STATUS_INVALID_LOGON_TYPE (0xC0000000 | 0x010b) 317 - #define NT_STATUS_NO_GUID_TRANSLATION (0xC0000000 | 0x010c) 318 - #define NT_STATUS_CANNOT_IMPERSONATE (0xC0000000 | 0x010d) 319 - #define NT_STATUS_IMAGE_ALREADY_LOADED (0xC0000000 | 0x010e) 320 - #define NT_STATUS_ABIOS_NOT_PRESENT (0xC0000000 | 0x010f) 321 - #define NT_STATUS_ABIOS_LID_NOT_EXIST (0xC0000000 | 0x0110) 322 - #define NT_STATUS_ABIOS_LID_ALREADY_OWNED (0xC0000000 | 0x0111) 323 - #define NT_STATUS_ABIOS_NOT_LID_OWNER (0xC0000000 | 0x0112) 324 - #define NT_STATUS_ABIOS_INVALID_COMMAND (0xC0000000 | 0x0113) 325 - #define NT_STATUS_ABIOS_INVALID_LID (0xC0000000 | 0x0114) 326 - #define NT_STATUS_ABIOS_SELECTOR_NOT_AVAILABLE (0xC0000000 | 0x0115) 327 - #define NT_STATUS_ABIOS_INVALID_SELECTOR (0xC0000000 | 0x0116) 328 - #define NT_STATUS_NO_LDT (0xC0000000 | 0x0117) 329 - #define NT_STATUS_INVALID_LDT_SIZE (0xC0000000 | 0x0118) 330 - #define NT_STATUS_INVALID_LDT_OFFSET (0xC0000000 | 0x0119) 331 - #define NT_STATUS_INVALID_LDT_DESCRIPTOR (0xC0000000 | 0x011a) 332 - #define NT_STATUS_INVALID_IMAGE_NE_FORMAT (0xC0000000 | 0x011b) 333 - #define NT_STATUS_RXACT_INVALID_STATE (0xC0000000 | 0x011c) 334 - #define NT_STATUS_RXACT_COMMIT_FAILURE (0xC0000000 | 0x011d) 335 - #define NT_STATUS_MAPPED_FILE_SIZE_ZERO (0xC0000000 | 0x011e) 336 - #define NT_STATUS_TOO_MANY_OPENED_FILES (0xC0000000 | 0x011f) 337 - #define NT_STATUS_CANCELLED (0xC0000000 | 0x0120) 338 - #define NT_STATUS_CANNOT_DELETE (0xC0000000 | 0x0121) 339 - #define NT_STATUS_INVALID_COMPUTER_NAME (0xC0000000 | 0x0122) 340 - #define NT_STATUS_FILE_DELETED (0xC0000000 | 0x0123) 341 - #define NT_STATUS_SPECIAL_ACCOUNT (0xC0000000 | 0x0124) 342 - #define NT_STATUS_SPECIAL_GROUP (0xC0000000 | 0x0125) 343 - #define NT_STATUS_SPECIAL_USER (0xC0000000 | 0x0126) 344 - #define NT_STATUS_MEMBERS_PRIMARY_GROUP (0xC0000000 | 0x0127) 345 - #define NT_STATUS_FILE_CLOSED (0xC0000000 | 0x0128) 346 - #define NT_STATUS_TOO_MANY_THREADS (0xC0000000 | 0x0129) 347 - #define NT_STATUS_THREAD_NOT_IN_PROCESS (0xC0000000 | 0x012a) 348 - #define NT_STATUS_TOKEN_ALREADY_IN_USE (0xC0000000 | 0x012b) 349 - #define NT_STATUS_PAGEFILE_QUOTA_EXCEEDED (0xC0000000 | 0x012c) 350 - #define NT_STATUS_COMMITMENT_LIMIT (0xC0000000 | 0x012d) 351 - #define NT_STATUS_INVALID_IMAGE_LE_FORMAT (0xC0000000 | 0x012e) 352 - #define NT_STATUS_INVALID_IMAGE_NOT_MZ (0xC0000000 | 0x012f) 353 - #define NT_STATUS_INVALID_IMAGE_PROTECT (0xC0000000 | 0x0130) 354 - #define NT_STATUS_INVALID_IMAGE_WIN_16 (0xC0000000 | 0x0131) 355 - #define NT_STATUS_LOGON_SERVER_CONFLICT (0xC0000000 | 0x0132) 356 - #define NT_STATUS_TIME_DIFFERENCE_AT_DC (0xC0000000 | 0x0133) 357 - #define NT_STATUS_SYNCHRONIZATION_REQUIRED (0xC0000000 | 0x0134) 358 - #define NT_STATUS_DLL_NOT_FOUND (0xC0000000 | 0x0135) 359 - #define NT_STATUS_OPEN_FAILED (0xC0000000 | 0x0136) 360 - #define NT_STATUS_IO_PRIVILEGE_FAILED (0xC0000000 | 0x0137) 361 - #define NT_STATUS_ORDINAL_NOT_FOUND (0xC0000000 | 0x0138) 362 - #define NT_STATUS_ENTRYPOINT_NOT_FOUND (0xC0000000 | 0x0139) 363 - #define NT_STATUS_CONTROL_C_EXIT (0xC0000000 | 0x013a) 364 - #define NT_STATUS_LOCAL_DISCONNECT (0xC0000000 | 0x013b) 365 - #define NT_STATUS_REMOTE_DISCONNECT (0xC0000000 | 0x013c) 366 - #define NT_STATUS_REMOTE_RESOURCES (0xC0000000 | 0x013d) 367 - #define NT_STATUS_LINK_FAILED (0xC0000000 | 0x013e) 368 - #define NT_STATUS_LINK_TIMEOUT (0xC0000000 | 0x013f) 369 - #define NT_STATUS_INVALID_CONNECTION (0xC0000000 | 0x0140) 370 - #define NT_STATUS_INVALID_ADDRESS (0xC0000000 | 0x0141) 371 - #define NT_STATUS_DLL_INIT_FAILED (0xC0000000 | 0x0142) 372 - #define NT_STATUS_MISSING_SYSTEMFILE (0xC0000000 | 0x0143) 373 - #define NT_STATUS_UNHANDLED_EXCEPTION (0xC0000000 | 0x0144) 374 - #define NT_STATUS_APP_INIT_FAILURE (0xC0000000 | 0x0145) 375 - #define NT_STATUS_PAGEFILE_CREATE_FAILED (0xC0000000 | 0x0146) 376 - #define NT_STATUS_NO_PAGEFILE (0xC0000000 | 0x0147) 377 - #define NT_STATUS_INVALID_LEVEL (0xC0000000 | 0x0148) 378 - #define NT_STATUS_WRONG_PASSWORD_CORE (0xC0000000 | 0x0149) 379 - #define NT_STATUS_ILLEGAL_FLOAT_CONTEXT (0xC0000000 | 0x014a) 380 - #define NT_STATUS_PIPE_BROKEN (0xC0000000 | 0x014b) 381 - #define NT_STATUS_REGISTRY_CORRUPT (0xC0000000 | 0x014c) 382 - #define NT_STATUS_REGISTRY_IO_FAILED (0xC0000000 | 0x014d) 383 - #define NT_STATUS_NO_EVENT_PAIR (0xC0000000 | 0x014e) 384 - #define NT_STATUS_UNRECOGNIZED_VOLUME (0xC0000000 | 0x014f) 385 - #define NT_STATUS_SERIAL_NO_DEVICE_INITED (0xC0000000 | 0x0150) 386 - #define NT_STATUS_NO_SUCH_ALIAS (0xC0000000 | 0x0151) 387 - #define NT_STATUS_MEMBER_NOT_IN_ALIAS (0xC0000000 | 0x0152) 388 - #define NT_STATUS_MEMBER_IN_ALIAS (0xC0000000 | 0x0153) 389 - #define NT_STATUS_ALIAS_EXISTS (0xC0000000 | 0x0154) 390 - #define NT_STATUS_LOGON_NOT_GRANTED (0xC0000000 | 0x0155) 391 - #define NT_STATUS_TOO_MANY_SECRETS (0xC0000000 | 0x0156) 392 - #define NT_STATUS_SECRET_TOO_LONG (0xC0000000 | 0x0157) 393 - #define NT_STATUS_INTERNAL_DB_ERROR (0xC0000000 | 0x0158) 394 - #define NT_STATUS_FULLSCREEN_MODE (0xC0000000 | 0x0159) 395 - #define NT_STATUS_TOO_MANY_CONTEXT_IDS (0xC0000000 | 0x015a) 396 - #define NT_STATUS_LOGON_TYPE_NOT_GRANTED (0xC0000000 | 0x015b) 397 - #define NT_STATUS_NOT_REGISTRY_FILE (0xC0000000 | 0x015c) 398 - #define NT_STATUS_NT_CROSS_ENCRYPTION_REQUIRED (0xC0000000 | 0x015d) 399 - #define NT_STATUS_DOMAIN_CTRLR_CONFIG_ERROR (0xC0000000 | 0x015e) 400 - #define NT_STATUS_FT_MISSING_MEMBER (0xC0000000 | 0x015f) 401 - #define NT_STATUS_ILL_FORMED_SERVICE_ENTRY (0xC0000000 | 0x0160) 402 - #define NT_STATUS_ILLEGAL_CHARACTER (0xC0000000 | 0x0161) 403 - #define NT_STATUS_UNMAPPABLE_CHARACTER (0xC0000000 | 0x0162) 404 - #define NT_STATUS_UNDEFINED_CHARACTER (0xC0000000 | 0x0163) 405 - #define NT_STATUS_FLOPPY_VOLUME (0xC0000000 | 0x0164) 406 - #define NT_STATUS_FLOPPY_ID_MARK_NOT_FOUND (0xC0000000 | 0x0165) 407 - #define NT_STATUS_FLOPPY_WRONG_CYLINDER (0xC0000000 | 0x0166) 408 - #define NT_STATUS_FLOPPY_UNKNOWN_ERROR (0xC0000000 | 0x0167) 409 - #define NT_STATUS_FLOPPY_BAD_REGISTERS (0xC0000000 | 0x0168) 410 - #define NT_STATUS_DISK_RECALIBRATE_FAILED (0xC0000000 | 0x0169) 411 - #define NT_STATUS_DISK_OPERATION_FAILED (0xC0000000 | 0x016a) 412 - #define NT_STATUS_DISK_RESET_FAILED (0xC0000000 | 0x016b) 413 - #define NT_STATUS_SHARED_IRQ_BUSY (0xC0000000 | 0x016c) 414 - #define NT_STATUS_FT_ORPHANING (0xC0000000 | 0x016d) 415 - #define NT_STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT (0xC0000000 | 0x016e) 416 - #define NT_STATUS_PARTITION_FAILURE (0xC0000000 | 0x0172) 417 - #define NT_STATUS_INVALID_BLOCK_LENGTH (0xC0000000 | 0x0173) 418 - #define NT_STATUS_DEVICE_NOT_PARTITIONED (0xC0000000 | 0x0174) 419 - #define NT_STATUS_UNABLE_TO_LOCK_MEDIA (0xC0000000 | 0x0175) 420 - #define NT_STATUS_UNABLE_TO_UNLOAD_MEDIA (0xC0000000 | 0x0176) 421 - #define NT_STATUS_EOM_OVERFLOW (0xC0000000 | 0x0177) 422 - #define NT_STATUS_NO_MEDIA (0xC0000000 | 0x0178) 423 - #define NT_STATUS_NO_SUCH_MEMBER (0xC0000000 | 0x017a) 424 - #define NT_STATUS_INVALID_MEMBER (0xC0000000 | 0x017b) 425 - #define NT_STATUS_KEY_DELETED (0xC0000000 | 0x017c) 426 - #define NT_STATUS_NO_LOG_SPACE (0xC0000000 | 0x017d) 427 - #define NT_STATUS_TOO_MANY_SIDS (0xC0000000 | 0x017e) 428 - #define NT_STATUS_LM_CROSS_ENCRYPTION_REQUIRED (0xC0000000 | 0x017f) 429 - #define NT_STATUS_KEY_HAS_CHILDREN (0xC0000000 | 0x0180) 430 - #define NT_STATUS_CHILD_MUST_BE_VOLATILE (0xC0000000 | 0x0181) 431 - #define NT_STATUS_DEVICE_CONFIGURATION_ERROR (0xC0000000 | 0x0182) 432 - #define NT_STATUS_DRIVER_INTERNAL_ERROR (0xC0000000 | 0x0183) 433 - #define NT_STATUS_INVALID_DEVICE_STATE (0xC0000000 | 0x0184) 434 - #define NT_STATUS_IO_DEVICE_ERROR (0xC0000000 | 0x0185) 435 - #define NT_STATUS_DEVICE_PROTOCOL_ERROR (0xC0000000 | 0x0186) 436 - #define NT_STATUS_BACKUP_CONTROLLER (0xC0000000 | 0x0187) 437 - #define NT_STATUS_LOG_FILE_FULL (0xC0000000 | 0x0188) 438 - #define NT_STATUS_TOO_LATE (0xC0000000 | 0x0189) 439 - #define NT_STATUS_NO_TRUST_LSA_SECRET (0xC0000000 | 0x018a) 440 - #define NT_STATUS_NO_TRUST_SAM_ACCOUNT (0xC0000000 | 0x018b) 441 - #define NT_STATUS_TRUSTED_DOMAIN_FAILURE (0xC0000000 | 0x018c) 442 - #define NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE (0xC0000000 | 0x018d) 443 - #define NT_STATUS_EVENTLOG_FILE_CORRUPT (0xC0000000 | 0x018e) 444 - #define NT_STATUS_EVENTLOG_CANT_START (0xC0000000 | 0x018f) 445 - #define NT_STATUS_TRUST_FAILURE (0xC0000000 | 0x0190) 446 - #define NT_STATUS_MUTANT_LIMIT_EXCEEDED (0xC0000000 | 0x0191) 447 - #define NT_STATUS_NETLOGON_NOT_STARTED (0xC0000000 | 0x0192) 448 - #define NT_STATUS_ACCOUNT_EXPIRED (0xC0000000 | 0x0193) 449 - #define NT_STATUS_POSSIBLE_DEADLOCK (0xC0000000 | 0x0194) 450 - #define NT_STATUS_NETWORK_CREDENTIAL_CONFLICT (0xC0000000 | 0x0195) 451 - #define NT_STATUS_REMOTE_SESSION_LIMIT (0xC0000000 | 0x0196) 452 - #define NT_STATUS_EVENTLOG_FILE_CHANGED (0xC0000000 | 0x0197) 453 - #define NT_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT (0xC0000000 | 0x0198) 454 - #define NT_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT (0xC0000000 | 0x0199) 455 - #define NT_STATUS_NOLOGON_SERVER_TRUST_ACCOUNT (0xC0000000 | 0x019a) 456 - #define NT_STATUS_DOMAIN_TRUST_INCONSISTENT (0xC0000000 | 0x019b) 457 - #define NT_STATUS_FS_DRIVER_REQUIRED (0xC0000000 | 0x019c) 458 - #define NT_STATUS_INVALID_LOCK_RANGE (0xC0000000 | 0x01a1) 459 - #define NT_STATUS_NO_USER_SESSION_KEY (0xC0000000 | 0x0202) 460 - #define NT_STATUS_USER_SESSION_DELETED (0xC0000000 | 0x0203) 461 - #define NT_STATUS_RESOURCE_LANG_NOT_FOUND (0xC0000000 | 0x0204) 462 - #define NT_STATUS_INSUFF_SERVER_RESOURCES (0xC0000000 | 0x0205) 463 - #define NT_STATUS_INVALID_BUFFER_SIZE (0xC0000000 | 0x0206) 464 - #define NT_STATUS_INVALID_ADDRESS_COMPONENT (0xC0000000 | 0x0207) 465 - #define NT_STATUS_INVALID_ADDRESS_WILDCARD (0xC0000000 | 0x0208) 466 - #define NT_STATUS_TOO_MANY_ADDRESSES (0xC0000000 | 0x0209) 467 - #define NT_STATUS_ADDRESS_ALREADY_EXISTS (0xC0000000 | 0x020a) 468 - #define NT_STATUS_ADDRESS_CLOSED (0xC0000000 | 0x020b) 469 - #define NT_STATUS_CONNECTION_DISCONNECTED (0xC0000000 | 0x020c) 470 - #define NT_STATUS_CONNECTION_RESET (0xC0000000 | 0x020d) 471 - #define NT_STATUS_TOO_MANY_NODES (0xC0000000 | 0x020e) 472 - #define NT_STATUS_TRANSACTION_ABORTED (0xC0000000 | 0x020f) 473 - #define NT_STATUS_TRANSACTION_TIMED_OUT (0xC0000000 | 0x0210) 474 - #define NT_STATUS_TRANSACTION_NO_RELEASE (0xC0000000 | 0x0211) 475 - #define NT_STATUS_TRANSACTION_NO_MATCH (0xC0000000 | 0x0212) 476 - #define NT_STATUS_TRANSACTION_RESPONDED (0xC0000000 | 0x0213) 477 - #define NT_STATUS_TRANSACTION_INVALID_ID (0xC0000000 | 0x0214) 478 - #define NT_STATUS_TRANSACTION_INVALID_TYPE (0xC0000000 | 0x0215) 479 - #define NT_STATUS_NOT_SERVER_SESSION (0xC0000000 | 0x0216) 480 - #define NT_STATUS_NOT_CLIENT_SESSION (0xC0000000 | 0x0217) 481 - #define NT_STATUS_CANNOT_LOAD_REGISTRY_FILE (0xC0000000 | 0x0218) 482 - #define NT_STATUS_DEBUG_ATTACH_FAILED (0xC0000000 | 0x0219) 483 - #define NT_STATUS_SYSTEM_PROCESS_TERMINATED (0xC0000000 | 0x021a) 484 - #define NT_STATUS_DATA_NOT_ACCEPTED (0xC0000000 | 0x021b) 485 - #define NT_STATUS_NO_BROWSER_SERVERS_FOUND (0xC0000000 | 0x021c) 486 - #define NT_STATUS_VDM_HARD_ERROR (0xC0000000 | 0x021d) 487 - #define NT_STATUS_DRIVER_CANCEL_TIMEOUT (0xC0000000 | 0x021e) 488 - #define NT_STATUS_REPLY_MESSAGE_MISMATCH (0xC0000000 | 0x021f) 489 - #define NT_STATUS_MAPPED_ALIGNMENT (0xC0000000 | 0x0220) 490 - #define NT_STATUS_IMAGE_CHECKSUM_MISMATCH (0xC0000000 | 0x0221) 491 - #define NT_STATUS_LOST_WRITEBEHIND_DATA (0xC0000000 | 0x0222) 492 - #define NT_STATUS_CLIENT_SERVER_PARAMETERS_INVALID (0xC0000000 | 0x0223) 493 - #define NT_STATUS_PASSWORD_MUST_CHANGE (0xC0000000 | 0x0224) 494 - #define NT_STATUS_NOT_FOUND (0xC0000000 | 0x0225) 495 - #define NT_STATUS_NOT_TINY_STREAM (0xC0000000 | 0x0226) 496 - #define NT_STATUS_RECOVERY_FAILURE (0xC0000000 | 0x0227) 497 - #define NT_STATUS_STACK_OVERFLOW_READ (0xC0000000 | 0x0228) 498 - #define NT_STATUS_FAIL_CHECK (0xC0000000 | 0x0229) 499 - #define NT_STATUS_DUPLICATE_OBJECTID (0xC0000000 | 0x022a) 500 - #define NT_STATUS_OBJECTID_EXISTS (0xC0000000 | 0x022b) 501 - #define NT_STATUS_CONVERT_TO_LARGE (0xC0000000 | 0x022c) 502 - #define NT_STATUS_RETRY (0xC0000000 | 0x022d) 503 - #define NT_STATUS_FOUND_OUT_OF_SCOPE (0xC0000000 | 0x022e) 504 - #define NT_STATUS_ALLOCATE_BUCKET (0xC0000000 | 0x022f) 505 - #define NT_STATUS_PROPSET_NOT_FOUND (0xC0000000 | 0x0230) 506 - #define NT_STATUS_MARSHALL_OVERFLOW (0xC0000000 | 0x0231) 507 - #define NT_STATUS_INVALID_VARIANT (0xC0000000 | 0x0232) 508 - #define NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND (0xC0000000 | 0x0233) 509 - #define NT_STATUS_ACCOUNT_LOCKED_OUT (0xC0000000 | 0x0234) 510 - #define NT_STATUS_HANDLE_NOT_CLOSABLE (0xC0000000 | 0x0235) 511 - #define NT_STATUS_CONNECTION_REFUSED (0xC0000000 | 0x0236) 512 - #define NT_STATUS_GRACEFUL_DISCONNECT (0xC0000000 | 0x0237) 513 - #define NT_STATUS_ADDRESS_ALREADY_ASSOCIATED (0xC0000000 | 0x0238) 514 - #define NT_STATUS_ADDRESS_NOT_ASSOCIATED (0xC0000000 | 0x0239) 515 - #define NT_STATUS_CONNECTION_INVALID (0xC0000000 | 0x023a) 516 - #define NT_STATUS_CONNECTION_ACTIVE (0xC0000000 | 0x023b) 517 - #define NT_STATUS_NETWORK_UNREACHABLE (0xC0000000 | 0x023c) 518 - #define NT_STATUS_HOST_UNREACHABLE (0xC0000000 | 0x023d) 519 - #define NT_STATUS_PROTOCOL_UNREACHABLE (0xC0000000 | 0x023e) 520 - #define NT_STATUS_PORT_UNREACHABLE (0xC0000000 | 0x023f) 521 - #define NT_STATUS_REQUEST_ABORTED (0xC0000000 | 0x0240) 522 - #define NT_STATUS_CONNECTION_ABORTED (0xC0000000 | 0x0241) 523 - #define NT_STATUS_BAD_COMPRESSION_BUFFER (0xC0000000 | 0x0242) 524 - #define NT_STATUS_USER_MAPPED_FILE (0xC0000000 | 0x0243) 525 - #define NT_STATUS_AUDIT_FAILED (0xC0000000 | 0x0244) 526 - #define NT_STATUS_TIMER_RESOLUTION_NOT_SET (0xC0000000 | 0x0245) 527 - #define NT_STATUS_CONNECTION_COUNT_LIMIT (0xC0000000 | 0x0246) 528 - #define NT_STATUS_LOGIN_TIME_RESTRICTION (0xC0000000 | 0x0247) 529 - #define NT_STATUS_LOGIN_WKSTA_RESTRICTION (0xC0000000 | 0x0248) 530 - #define NT_STATUS_IMAGE_MP_UP_MISMATCH (0xC0000000 | 0x0249) 531 - #define NT_STATUS_INSUFFICIENT_LOGON_INFO (0xC0000000 | 0x0250) 532 - #define NT_STATUS_BAD_DLL_ENTRYPOINT (0xC0000000 | 0x0251) 533 - #define NT_STATUS_BAD_SERVICE_ENTRYPOINT (0xC0000000 | 0x0252) 534 - #define NT_STATUS_LPC_REPLY_LOST (0xC0000000 | 0x0253) 535 - #define NT_STATUS_IP_ADDRESS_CONFLICT1 (0xC0000000 | 0x0254) 536 - #define NT_STATUS_IP_ADDRESS_CONFLICT2 (0xC0000000 | 0x0255) 537 - #define NT_STATUS_REGISTRY_QUOTA_LIMIT (0xC0000000 | 0x0256) 538 - #define NT_STATUS_PATH_NOT_COVERED (0xC0000000 | 0x0257) 539 - #define NT_STATUS_NO_CALLBACK_ACTIVE (0xC0000000 | 0x0258) 540 - #define NT_STATUS_LICENSE_QUOTA_EXCEEDED (0xC0000000 | 0x0259) 541 - #define NT_STATUS_PWD_TOO_SHORT (0xC0000000 | 0x025a) 542 - #define NT_STATUS_PWD_TOO_RECENT (0xC0000000 | 0x025b) 543 - #define NT_STATUS_PWD_HISTORY_CONFLICT (0xC0000000 | 0x025c) 544 - #define NT_STATUS_PLUGPLAY_NO_DEVICE (0xC0000000 | 0x025e) 545 - #define NT_STATUS_UNSUPPORTED_COMPRESSION (0xC0000000 | 0x025f) 546 - #define NT_STATUS_INVALID_HW_PROFILE (0xC0000000 | 0x0260) 547 - #define NT_STATUS_INVALID_PLUGPLAY_DEVICE_PATH (0xC0000000 | 0x0261) 548 - #define NT_STATUS_DRIVER_ORDINAL_NOT_FOUND (0xC0000000 | 0x0262) 549 - #define NT_STATUS_DRIVER_ENTRYPOINT_NOT_FOUND (0xC0000000 | 0x0263) 550 - #define NT_STATUS_RESOURCE_NOT_OWNED (0xC0000000 | 0x0264) 551 - #define NT_STATUS_TOO_MANY_LINKS (0xC0000000 | 0x0265) 552 - #define NT_STATUS_QUOTA_LIST_INCONSISTENT (0xC0000000 | 0x0266) 553 - #define NT_STATUS_FILE_IS_OFFLINE (0xC0000000 | 0x0267) 554 - #define NT_STATUS_VOLUME_DISMOUNTED (0xC0000000 | 0x026e) 555 - #define NT_STATUS_NOT_A_REPARSE_POINT (0xC0000000 | 0x0275) 556 - #define NT_STATUS_DIRECTORY_IS_A_REPARSE_POINT (0xC0000000 | 0x0281) 557 - #define NT_STATUS_ENCRYPTION_FAILED (0xC0000000 | 0x028a) 558 - #define NT_STATUS_DECRYPTION_FAILED (0xC0000000 | 0x028b) 559 - #define NT_STATUS_RANGE_NOT_FOUND (0xC0000000 | 0x028c) 560 - #define NT_STATUS_NO_RECOVERY_POLICY (0xC0000000 | 0x028d) 561 - #define NT_STATUS_NO_EFS (0xC0000000 | 0x028e) 562 - #define NT_STATUS_WRONG_EFS (0xC0000000 | 0x028f) 563 - #define NT_STATUS_NO_USER_KEYS (0xC0000000 | 0x0290) 564 - #define NT_STATUS_VOLUME_NOT_UPGRADED (0xC0000000 | 0x029c) 565 - #define NT_STATUS_NETWORK_SESSION_EXPIRED (0xC0000000 | 0x035c) 566 - #define NT_STATUS_NO_SUCH_JOB (0xC0000000 | 0xEDE) /* scheduler */ 567 - #define NT_STATUS_NO_PREAUTH_INTEGRITY_HASH_OVERLAP (0xC0000000 | 0x5D0000) 568 - #define NT_STATUS_OS2_INVALID_LEVEL 0x007c0001 39 + #define NT_STATUS_OK 0x0000 // SUCCESS, 0 40 + #define NT_STATUS_PENDING 0x0103 // ERRHRD, ERRgeneral 41 + #define NT_STATUS_MORE_ENTRIES 0x0105 // ERRHRD, ERRgeneral 42 + #define NT_STATUS_SOME_NOT_MAPPED 0x0107 // ERRHRD, ERRgeneral 43 + #define NT_STATUS_NOTIFY_ENUM_DIR 0x010c // ERRSRV, ERR_NOTIFY_ENUM_DIR 44 + #define NT_STATUS_BUFFER_OVERFLOW 0x80000005 // ERRDOS, ERRmoredata 45 + #define NT_STATUS_NO_MORE_ENTRIES 0x8000001a // ERRHRD, ERRgeneral 46 + #define NT_STATUS_MEDIA_CHANGED 0x8000001c // ERRHRD, ERRgeneral 47 + #define NT_STATUS_END_OF_MEDIA 0x8000001e // ERRHRD, ERRgeneral 48 + #define NT_STATUS_MEDIA_CHECK 0x80000020 // ERRHRD, ERRgeneral 49 + #define NT_STATUS_NO_DATA_DETECTED 0x80000022 // ERRHRD, ERRgeneral 50 + #define NT_STATUS_STOPPED_ON_SYMLINK 0x8000002d // ERRDOS, ERRsymlink 51 + #define NT_STATUS_DEVICE_REQUIRES_CLEANING 0x80000288 // ERRHRD, ERRgeneral 52 + #define NT_STATUS_DEVICE_DOOR_OPEN 0x80000289 // ERRHRD, ERRgeneral 53 + #define NT_STATUS_UNSUCCESSFUL (0xC0000000 | 0x0001) // ERRDOS, ERRgeneral 54 + #define NT_STATUS_NOT_IMPLEMENTED (0xC0000000 | 0x0002) // ERRDOS, ERRbadfunc 55 + #define NT_STATUS_INVALID_INFO_CLASS (0xC0000000 | 0x0003) // ERRDOS, ERRbadpipe 56 + #define NT_STATUS_INFO_LENGTH_MISMATCH (0xC0000000 | 0x0004) // ERRDOS, 24 57 + #define NT_STATUS_ACCESS_VIOLATION (0xC0000000 | 0x0005) // ERRHRD, ERRgeneral 58 + #define NT_STATUS_IN_PAGE_ERROR (0xC0000000 | 0x0006) // ERRHRD, ERRgeneral 59 + #define NT_STATUS_PAGEFILE_QUOTA (0xC0000000 | 0x0007) // ERRHRD, ERRgeneral 60 + #define NT_STATUS_INVALID_HANDLE (0xC0000000 | 0x0008) // ERRDOS, ERRbadfid 61 + #define NT_STATUS_BAD_INITIAL_STACK (0xC0000000 | 0x0009) // ERRHRD, ERRgeneral 62 + #define NT_STATUS_BAD_INITIAL_PC (0xC0000000 | 0x000a) // ERRDOS, 193 63 + #define NT_STATUS_INVALID_CID (0xC0000000 | 0x000b) // ERRDOS, 87 64 + #define NT_STATUS_TIMER_NOT_CANCELED (0xC0000000 | 0x000c) // ERRHRD, ERRgeneral 65 + #define NT_STATUS_INVALID_PARAMETER (0xC0000000 | 0x000d) // ERRDOS, 87 66 + #define NT_STATUS_NO_SUCH_DEVICE (0xC0000000 | 0x000e) // ERRDOS, ERRbadfile 67 + #define NT_STATUS_NO_SUCH_FILE (0xC0000000 | 0x000f) // ERRDOS, ERRbadfile 68 + #define NT_STATUS_INVALID_DEVICE_REQUEST (0xC0000000 | 0x0010) // ERRDOS, ERRbadfunc 69 + #define NT_STATUS_END_OF_FILE (0xC0000000 | 0x0011) // ERRDOS, 38 70 + #define NT_STATUS_WRONG_VOLUME (0xC0000000 | 0x0012) // ERRDOS, 34 71 + #define NT_STATUS_NO_MEDIA_IN_DEVICE (0xC0000000 | 0x0013) // ERRDOS, 21 72 + #define NT_STATUS_UNRECOGNIZED_MEDIA (0xC0000000 | 0x0014) // ERRHRD, ERRgeneral 73 + #define NT_STATUS_NONEXISTENT_SECTOR (0xC0000000 | 0x0015) // ERRDOS, 27 74 + #define NT_STATUS_MORE_PROCESSING_REQUIRED (0xC0000000 | 0x0016) // ERRDOS, ERRmoredata 75 + #define NT_STATUS_NO_MEMORY (0xC0000000 | 0x0017) // ERRDOS, ERRnomem 76 + #define NT_STATUS_CONFLICTING_ADDRESSES (0xC0000000 | 0x0018) // ERRDOS, 487 77 + #define NT_STATUS_NOT_MAPPED_VIEW (0xC0000000 | 0x0019) // ERRDOS, 487 78 + #define NT_STATUS_UNABLE_TO_FREE_VM (0xC0000000 | 0x001a) // ERRDOS, 87 79 + #define NT_STATUS_UNABLE_TO_DELETE_SECTION (0xC0000000 | 0x001b) // ERRDOS, 87 80 + #define NT_STATUS_INVALID_SYSTEM_SERVICE (0xC0000000 | 0x001c) // ERRDOS, 2142 81 + #define NT_STATUS_ILLEGAL_INSTRUCTION (0xC0000000 | 0x001d) // ERRHRD, ERRgeneral 82 + #define NT_STATUS_INVALID_LOCK_SEQUENCE (0xC0000000 | 0x001e) // ERRDOS, ERRnoaccess 83 + #define NT_STATUS_INVALID_VIEW_SIZE (0xC0000000 | 0x001f) // ERRDOS, ERRnoaccess 84 + #define NT_STATUS_INVALID_FILE_FOR_SECTION (0xC0000000 | 0x0020) // ERRDOS, 193 85 + #define NT_STATUS_ALREADY_COMMITTED (0xC0000000 | 0x0021) // ERRDOS, ERRnoaccess 86 + #define NT_STATUS_ACCESS_DENIED (0xC0000000 | 0x0022) // ERRDOS, ERRnoaccess 87 + #define NT_STATUS_BUFFER_TOO_SMALL (0xC0000000 | 0x0023) // ERRDOS, 111 88 + #define NT_STATUS_OBJECT_TYPE_MISMATCH (0xC0000000 | 0x0024) // ERRDOS, ERRbadfid 89 + #define NT_STATUS_NONCONTINUABLE_EXCEPTION (0xC0000000 | 0x0025) // ERRHRD, ERRgeneral 90 + #define NT_STATUS_INVALID_DISPOSITION (0xC0000000 | 0x0026) // ERRHRD, ERRgeneral 91 + #define NT_STATUS_UNWIND (0xC0000000 | 0x0027) // ERRHRD, ERRgeneral 92 + #define NT_STATUS_BAD_STACK (0xC0000000 | 0x0028) // ERRHRD, ERRgeneral 93 + #define NT_STATUS_INVALID_UNWIND_TARGET (0xC0000000 | 0x0029) // ERRHRD, ERRgeneral 94 + #define NT_STATUS_NOT_LOCKED (0xC0000000 | 0x002a) // ERRDOS, 158 95 + #define NT_STATUS_PARITY_ERROR (0xC0000000 | 0x002b) // ERRHRD, ERRgeneral 96 + #define NT_STATUS_UNABLE_TO_DECOMMIT_VM (0xC0000000 | 0x002c) // ERRDOS, 487 97 + #define NT_STATUS_NOT_COMMITTED (0xC0000000 | 0x002d) // ERRDOS, 487 98 + #define NT_STATUS_INVALID_PORT_ATTRIBUTES (0xC0000000 | 0x002e) // ERRHRD, ERRgeneral 99 + #define NT_STATUS_PORT_MESSAGE_TOO_LONG (0xC0000000 | 0x002f) // ERRHRD, ERRgeneral 100 + #define NT_STATUS_INVALID_PARAMETER_MIX (0xC0000000 | 0x0030) // ERRDOS, 87 101 + #define NT_STATUS_INVALID_QUOTA_LOWER (0xC0000000 | 0x0031) // ERRHRD, ERRgeneral 102 + #define NT_STATUS_DISK_CORRUPT_ERROR (0xC0000000 | 0x0032) // ERRHRD, ERRgeneral 103 + #define NT_STATUS_OBJECT_NAME_INVALID (0xC0000000 | 0x0033) // ERRDOS, ERRbadfile 104 + #define NT_STATUS_OBJECT_NAME_NOT_FOUND (0xC0000000 | 0x0034) // ERRDOS, ERRbadfile 105 + #define NT_STATUS_OBJECT_NAME_COLLISION (0xC0000000 | 0x0035) // ERRDOS, ERRalreadyexists 106 + #define NT_STATUS_HANDLE_NOT_WAITABLE (0xC0000000 | 0x0036) // ERRHRD, ERRgeneral 107 + #define NT_STATUS_PORT_DISCONNECTED (0xC0000000 | 0x0037) // ERRDOS, ERRbadfid 108 + #define NT_STATUS_DEVICE_ALREADY_ATTACHED (0xC0000000 | 0x0038) // ERRHRD, ERRgeneral 109 + #define NT_STATUS_OBJECT_PATH_INVALID (0xC0000000 | 0x0039) // ERRDOS, 161 110 + #define NT_STATUS_OBJECT_PATH_NOT_FOUND (0xC0000000 | 0x003a) // ERRDOS, ERRbadpath 111 + #define NT_STATUS_OBJECT_PATH_SYNTAX_BAD (0xC0000000 | 0x003b) // ERRDOS, 161 112 + #define NT_STATUS_DATA_OVERRUN (0xC0000000 | 0x003c) // ERRHRD, ERRgeneral 113 + #define NT_STATUS_DATA_LATE_ERROR (0xC0000000 | 0x003d) // ERRHRD, ERRgeneral 114 + #define NT_STATUS_DATA_ERROR (0xC0000000 | 0x003e) // ERRDOS, 23 115 + #define NT_STATUS_CRC_ERROR (0xC0000000 | 0x003f) // ERRDOS, 23 116 + #define NT_STATUS_SECTION_TOO_BIG (0xC0000000 | 0x0040) // ERRDOS, ERRnomem 117 + #define NT_STATUS_PORT_CONNECTION_REFUSED (0xC0000000 | 0x0041) // ERRDOS, ERRnoaccess 118 + #define NT_STATUS_INVALID_PORT_HANDLE (0xC0000000 | 0x0042) // ERRDOS, ERRbadfid 119 + #define NT_STATUS_SHARING_VIOLATION (0xC0000000 | 0x0043) // ERRDOS, ERRbadshare 120 + #define NT_STATUS_QUOTA_EXCEEDED (0xC0000000 | 0x0044) // ERRHRD, ERRgeneral 121 + #define NT_STATUS_INVALID_PAGE_PROTECTION (0xC0000000 | 0x0045) // ERRDOS, 87 122 + #define NT_STATUS_MUTANT_NOT_OWNED (0xC0000000 | 0x0046) // ERRDOS, 288 123 + #define NT_STATUS_SEMAPHORE_LIMIT_EXCEEDED (0xC0000000 | 0x0047) // ERRDOS, 298 124 + #define NT_STATUS_PORT_ALREADY_SET (0xC0000000 | 0x0048) // ERRDOS, 87 125 + #define NT_STATUS_SECTION_NOT_IMAGE (0xC0000000 | 0x0049) // ERRDOS, 87 126 + #define NT_STATUS_SUSPEND_COUNT_EXCEEDED (0xC0000000 | 0x004a) // ERRDOS, 156 127 + #define NT_STATUS_THREAD_IS_TERMINATING (0xC0000000 | 0x004b) // ERRDOS, ERRnoaccess 128 + #define NT_STATUS_BAD_WORKING_SET_LIMIT (0xC0000000 | 0x004c) // ERRDOS, 87 129 + #define NT_STATUS_INCOMPATIBLE_FILE_MAP (0xC0000000 | 0x004d) // ERRDOS, 87 130 + #define NT_STATUS_SECTION_PROTECTION (0xC0000000 | 0x004e) // ERRDOS, 87 131 + #define NT_STATUS_EAS_NOT_SUPPORTED (0xC0000000 | 0x004f) // ERRDOS, ERReasnotsupported 132 + #define NT_STATUS_EA_TOO_LARGE (0xC0000000 | 0x0050) // ERRDOS, 255 133 + #define NT_STATUS_NONEXISTENT_EA_ENTRY (0xC0000000 | 0x0051) // ERRHRD, ERRgeneral 134 + #define NT_STATUS_NO_EAS_ON_FILE (0xC0000000 | 0x0052) // ERRHRD, ERRgeneral 135 + #define NT_STATUS_EA_CORRUPT_ERROR (0xC0000000 | 0x0053) // ERRHRD, ERRgeneral 136 + #define NT_STATUS_FILE_LOCK_CONFLICT (0xC0000000 | 0x0054) // ERRDOS, ERRlock 137 + #define NT_STATUS_LOCK_NOT_GRANTED (0xC0000000 | 0x0055) // ERRDOS, ERRlock 138 + #define NT_STATUS_DELETE_PENDING (0xC0000000 | 0x0056) // ERRDOS, ERRbadfile 139 + #define NT_STATUS_CTL_FILE_NOT_SUPPORTED (0xC0000000 | 0x0057) // ERRDOS, ERRunsup 140 + #define NT_STATUS_UNKNOWN_REVISION (0xC0000000 | 0x0058) // ERRHRD, ERRgeneral 141 + #define NT_STATUS_REVISION_MISMATCH (0xC0000000 | 0x0059) // ERRHRD, ERRgeneral 142 + #define NT_STATUS_INVALID_OWNER (0xC0000000 | 0x005a) // ERRHRD, ERRgeneral 143 + #define NT_STATUS_INVALID_PRIMARY_GROUP (0xC0000000 | 0x005b) // ERRHRD, ERRgeneral 144 + #define NT_STATUS_NO_IMPERSONATION_TOKEN (0xC0000000 | 0x005c) // ERRHRD, ERRgeneral 145 + #define NT_STATUS_CANT_DISABLE_MANDATORY (0xC0000000 | 0x005d) // ERRHRD, ERRgeneral 146 + #define NT_STATUS_NO_LOGON_SERVERS (0xC0000000 | 0x005e) // ERRDOS, 2215 147 + #define NT_STATUS_NO_SUCH_LOGON_SESSION (0xC0000000 | 0x005f) // ERRHRD, ERRgeneral 148 + #define NT_STATUS_NO_SUCH_PRIVILEGE (0xC0000000 | 0x0060) // ERRHRD, ERRgeneral 149 + #define NT_STATUS_PRIVILEGE_NOT_HELD (0xC0000000 | 0x0061) // ERRDOS, ERRnoaccess 150 + #define NT_STATUS_INVALID_ACCOUNT_NAME (0xC0000000 | 0x0062) // ERRHRD, ERRgeneral 151 + #define NT_STATUS_USER_EXISTS (0xC0000000 | 0x0063) // ERRHRD, ERRgeneral 152 + #define NT_STATUS_NO_SUCH_USER (0xC0000000 | 0x0064) // ERRDOS, ERRnoaccess 153 + #define NT_STATUS_GROUP_EXISTS (0xC0000000 | 0x0065) // ERRHRD, ERRgeneral 154 + #define NT_STATUS_NO_SUCH_GROUP (0xC0000000 | 0x0066) // ERRHRD, ERRgeneral 155 + #define NT_STATUS_MEMBER_IN_GROUP (0xC0000000 | 0x0067) // ERRHRD, ERRgeneral 156 + #define NT_STATUS_MEMBER_NOT_IN_GROUP (0xC0000000 | 0x0068) // ERRHRD, ERRgeneral 157 + #define NT_STATUS_LAST_ADMIN (0xC0000000 | 0x0069) // ERRHRD, ERRgeneral 158 + #define NT_STATUS_WRONG_PASSWORD (0xC0000000 | 0x006a) // ERRSRV, ERRbadpw 159 + #define NT_STATUS_ILL_FORMED_PASSWORD (0xC0000000 | 0x006b) // ERRHRD, ERRgeneral 160 + #define NT_STATUS_PASSWORD_RESTRICTION (0xC0000000 | 0x006c) // ERRHRD, ERRgeneral 161 + #define NT_STATUS_LOGON_FAILURE (0xC0000000 | 0x006d) // ERRDOS, ERRnoaccess 162 + #define NT_STATUS_ACCOUNT_RESTRICTION (0xC0000000 | 0x006e) // ERRHRD, ERRgeneral 163 + #define NT_STATUS_INVALID_LOGON_HOURS (0xC0000000 | 0x006f) // ERRSRV, ERRbadLogonTime 164 + #define NT_STATUS_INVALID_WORKSTATION (0xC0000000 | 0x0070) // ERRSRV, ERRbadclient 165 + #define NT_STATUS_PASSWORD_EXPIRED (0xC0000000 | 0x0071) // ERRSRV, ERRpasswordExpired 166 + #define NT_STATUS_ACCOUNT_DISABLED (0xC0000000 | 0x0072) // ERRSRV, ERRaccountexpired 167 + #define NT_STATUS_NONE_MAPPED (0xC0000000 | 0x0073) // ERRHRD, ERRgeneral 168 + #define NT_STATUS_TOO_MANY_LUIDS_REQUESTED (0xC0000000 | 0x0074) // ERRHRD, ERRgeneral 169 + #define NT_STATUS_LUIDS_EXHAUSTED (0xC0000000 | 0x0075) // ERRHRD, ERRgeneral 170 + #define NT_STATUS_INVALID_SUB_AUTHORITY (0xC0000000 | 0x0076) // ERRHRD, ERRgeneral 171 + #define NT_STATUS_INVALID_ACL (0xC0000000 | 0x0077) // ERRHRD, ERRgeneral 172 + #define NT_STATUS_INVALID_SID (0xC0000000 | 0x0078) // ERRHRD, ERRgeneral 173 + #define NT_STATUS_INVALID_SECURITY_DESCR (0xC0000000 | 0x0079) // ERRHRD, ERRgeneral 174 + #define NT_STATUS_PROCEDURE_NOT_FOUND (0xC0000000 | 0x007a) // ERRDOS, 127 175 + #define NT_STATUS_INVALID_IMAGE_FORMAT (0xC0000000 | 0x007b) // ERRDOS, 193 176 + #define NT_STATUS_NO_TOKEN (0xC0000000 | 0x007c) // ERRHRD, ERRgeneral 177 + #define NT_STATUS_BAD_INHERITANCE_ACL (0xC0000000 | 0x007d) // ERRHRD, ERRgeneral 178 + #define NT_STATUS_RANGE_NOT_LOCKED (0xC0000000 | 0x007e) // ERRDOS, 158 179 + #define NT_STATUS_DISK_FULL (0xC0000000 | 0x007f) // ERRDOS, 112 180 + #define NT_STATUS_SERVER_DISABLED (0xC0000000 | 0x0080) // ERRHRD, ERRgeneral 181 + #define NT_STATUS_SERVER_NOT_DISABLED (0xC0000000 | 0x0081) // ERRHRD, ERRgeneral 182 + #define NT_STATUS_TOO_MANY_GUIDS_REQUESTED (0xC0000000 | 0x0082) // ERRDOS, 68 183 + #define NT_STATUS_GUIDS_EXHAUSTED (0xC0000000 | 0x0083) // ERRDOS, 259 184 + #define NT_STATUS_INVALID_ID_AUTHORITY (0xC0000000 | 0x0084) // ERRHRD, ERRgeneral 185 + #define NT_STATUS_AGENTS_EXHAUSTED (0xC0000000 | 0x0085) // ERRDOS, 259 186 + #define NT_STATUS_INVALID_VOLUME_LABEL (0xC0000000 | 0x0086) // ERRDOS, 154 187 + #define NT_STATUS_SECTION_NOT_EXTENDED (0xC0000000 | 0x0087) // ERRDOS, 14 188 + #define NT_STATUS_NOT_MAPPED_DATA (0xC0000000 | 0x0088) // ERRDOS, 487 189 + #define NT_STATUS_RESOURCE_DATA_NOT_FOUND (0xC0000000 | 0x0089) // ERRHRD, ERRgeneral 190 + #define NT_STATUS_RESOURCE_TYPE_NOT_FOUND (0xC0000000 | 0x008a) // ERRHRD, ERRgeneral 191 + #define NT_STATUS_RESOURCE_NAME_NOT_FOUND (0xC0000000 | 0x008b) // ERRHRD, ERRgeneral 192 + #define NT_STATUS_ARRAY_BOUNDS_EXCEEDED (0xC0000000 | 0x008c) // ERRHRD, ERRgeneral 193 + #define NT_STATUS_FLOAT_DENORMAL_OPERAND (0xC0000000 | 0x008d) // ERRHRD, ERRgeneral 194 + #define NT_STATUS_FLOAT_DIVIDE_BY_ZERO (0xC0000000 | 0x008e) // ERRHRD, ERRgeneral 195 + #define NT_STATUS_FLOAT_INEXACT_RESULT (0xC0000000 | 0x008f) // ERRHRD, ERRgeneral 196 + #define NT_STATUS_FLOAT_INVALID_OPERATION (0xC0000000 | 0x0090) // ERRHRD, ERRgeneral 197 + #define NT_STATUS_FLOAT_OVERFLOW (0xC0000000 | 0x0091) // ERRHRD, ERRgeneral 198 + #define NT_STATUS_FLOAT_STACK_CHECK (0xC0000000 | 0x0092) // ERRHRD, ERRgeneral 199 + #define NT_STATUS_FLOAT_UNDERFLOW (0xC0000000 | 0x0093) // ERRHRD, ERRgeneral 200 + #define NT_STATUS_INTEGER_DIVIDE_BY_ZERO (0xC0000000 | 0x0094) // ERRHRD, ERRgeneral 201 + #define NT_STATUS_INTEGER_OVERFLOW (0xC0000000 | 0x0095) // ERRDOS, 534 202 + #define NT_STATUS_PRIVILEGED_INSTRUCTION (0xC0000000 | 0x0096) // ERRHRD, ERRgeneral 203 + #define NT_STATUS_TOO_MANY_PAGING_FILES (0xC0000000 | 0x0097) // ERRDOS, ERRnomem 204 + #define NT_STATUS_FILE_INVALID (0xC0000000 | 0x0098) // ERRHRD, ERRgeneral 205 + #define NT_STATUS_ALLOTTED_SPACE_EXCEEDED (0xC0000000 | 0x0099) // ERRHRD, ERRgeneral 206 + #define NT_STATUS_INSUFFICIENT_RESOURCES (0xC0000000 | 0x009a) // ERRDOS, ERRnoresource 207 + #define NT_STATUS_DFS_EXIT_PATH_FOUND (0xC0000000 | 0x009b) // ERRDOS, ERRbadpath 208 + #define NT_STATUS_DEVICE_DATA_ERROR (0xC0000000 | 0x009c) // ERRDOS, 23 209 + #define NT_STATUS_DEVICE_NOT_CONNECTED (0xC0000000 | 0x009d) // ERRHRD, ERRgeneral 210 + #define NT_STATUS_DEVICE_POWER_FAILURE (0xC0000000 | 0x009e) // ERRDOS, 21 211 + #define NT_STATUS_FREE_VM_NOT_AT_BASE (0xC0000000 | 0x009f) // ERRDOS, 487 212 + #define NT_STATUS_MEMORY_NOT_ALLOCATED (0xC0000000 | 0x00a0) // ERRDOS, 487 213 + #define NT_STATUS_WORKING_SET_QUOTA (0xC0000000 | 0x00a1) // ERRHRD, ERRgeneral 214 + #define NT_STATUS_MEDIA_WRITE_PROTECTED (0xC0000000 | 0x00a2) // ERRDOS, 19 215 + #define NT_STATUS_DEVICE_NOT_READY (0xC0000000 | 0x00a3) // ERRDOS, 21 216 + #define NT_STATUS_INVALID_GROUP_ATTRIBUTES (0xC0000000 | 0x00a4) // ERRHRD, ERRgeneral 217 + #define NT_STATUS_BAD_IMPERSONATION_LEVEL (0xC0000000 | 0x00a5) // ERRHRD, ERRgeneral 218 + #define NT_STATUS_CANT_OPEN_ANONYMOUS (0xC0000000 | 0x00a6) // ERRHRD, ERRgeneral 219 + #define NT_STATUS_BAD_VALIDATION_CLASS (0xC0000000 | 0x00a7) // ERRHRD, ERRgeneral 220 + #define NT_STATUS_BAD_TOKEN_TYPE (0xC0000000 | 0x00a8) // ERRHRD, ERRgeneral 221 + #define NT_STATUS_BAD_MASTER_BOOT_RECORD (0xC0000000 | 0x00a9) // ERRDOS, 87 222 + #define NT_STATUS_INSTRUCTION_MISALIGNMENT (0xC0000000 | 0x00aa) // ERRHRD, ERRgeneral 223 + #define NT_STATUS_INSTANCE_NOT_AVAILABLE (0xC0000000 | 0x00ab) // ERRDOS, ERRpipebusy 224 + #define NT_STATUS_PIPE_NOT_AVAILABLE (0xC0000000 | 0x00ac) // ERRDOS, ERRpipebusy 225 + #define NT_STATUS_INVALID_PIPE_STATE (0xC0000000 | 0x00ad) // ERRDOS, ERRbadpipe 226 + #define NT_STATUS_PIPE_BUSY (0xC0000000 | 0x00ae) // ERRDOS, ERRpipebusy 227 + #define NT_STATUS_ILLEGAL_FUNCTION (0xC0000000 | 0x00af) // ERRDOS, ERRbadfunc 228 + #define NT_STATUS_PIPE_DISCONNECTED (0xC0000000 | 0x00b0) // ERRDOS, ERRnotconnected 229 + #define NT_STATUS_PIPE_CLOSING (0xC0000000 | 0x00b1) // ERRDOS, ERRpipeclosing 230 + #define NT_STATUS_PIPE_CONNECTED (0xC0000000 | 0x00b2) // ERRHRD, ERRgeneral 231 + #define NT_STATUS_PIPE_LISTENING (0xC0000000 | 0x00b3) // ERRHRD, ERRgeneral 232 + #define NT_STATUS_INVALID_READ_MODE (0xC0000000 | 0x00b4) // ERRDOS, ERRbadpipe 233 + #define NT_STATUS_IO_TIMEOUT (0xC0000000 | 0x00b5) // ERRDOS, 121 234 + #define NT_STATUS_FILE_FORCED_CLOSED (0xC0000000 | 0x00b6) // ERRDOS, 38 235 + #define NT_STATUS_PROFILING_NOT_STARTED (0xC0000000 | 0x00b7) // ERRHRD, ERRgeneral 236 + #define NT_STATUS_PROFILING_NOT_STOPPED (0xC0000000 | 0x00b8) // ERRHRD, ERRgeneral 237 + #define NT_STATUS_COULD_NOT_INTERPRET (0xC0000000 | 0x00b9) // ERRHRD, ERRgeneral 238 + #define NT_STATUS_FILE_IS_A_DIRECTORY (0xC0000000 | 0x00ba) // ERRDOS, ERRnoaccess 239 + #define NT_STATUS_NOT_SUPPORTED (0xC0000000 | 0x00bb) // ERRDOS, ERRunsup 240 + #define NT_STATUS_REMOTE_NOT_LISTENING (0xC0000000 | 0x00bc) // ERRDOS, 51 241 + #define NT_STATUS_DUPLICATE_NAME (0xC0000000 | 0x00bd) // ERRDOS, 52 242 + #define NT_STATUS_BAD_NETWORK_PATH (0xC0000000 | 0x00be) // ERRDOS, 53 243 + #define NT_STATUS_NETWORK_BUSY (0xC0000000 | 0x00bf) // ERRDOS, 54 244 + #define NT_STATUS_DEVICE_DOES_NOT_EXIST (0xC0000000 | 0x00c0) // ERRDOS, 55 245 + #define NT_STATUS_TOO_MANY_COMMANDS (0xC0000000 | 0x00c1) // ERRDOS, 56 246 + #define NT_STATUS_ADAPTER_HARDWARE_ERROR (0xC0000000 | 0x00c2) // ERRDOS, 57 247 + #define NT_STATUS_INVALID_NETWORK_RESPONSE (0xC0000000 | 0x00c3) // ERRDOS, 58 248 + #define NT_STATUS_UNEXPECTED_NETWORK_ERROR (0xC0000000 | 0x00c4) // ERRDOS, 59 249 + #define NT_STATUS_BAD_REMOTE_ADAPTER (0xC0000000 | 0x00c5) // ERRDOS, 60 250 + #define NT_STATUS_PRINT_QUEUE_FULL (0xC0000000 | 0x00c6) // ERRDOS, 61 251 + #define NT_STATUS_NO_SPOOL_SPACE (0xC0000000 | 0x00c7) // ERRDOS, 62 252 + #define NT_STATUS_PRINT_CANCELLED (0xC0000000 | 0x00c8) // ERRDOS, 63 253 + #define NT_STATUS_NETWORK_NAME_DELETED (0xC0000000 | 0x00c9) // ERRDOS, 64 254 + #define NT_STATUS_NETWORK_ACCESS_DENIED (0xC0000000 | 0x00ca) // ERRDOS, 65 255 + #define NT_STATUS_BAD_DEVICE_TYPE (0xC0000000 | 0x00cb) // ERRDOS, 66 256 + #define NT_STATUS_BAD_NETWORK_NAME (0xC0000000 | 0x00cc) // ERRDOS, ERRnosuchshare 257 + #define NT_STATUS_TOO_MANY_NAMES (0xC0000000 | 0x00cd) // ERRDOS, 68 258 + #define NT_STATUS_TOO_MANY_SESSIONS (0xC0000000 | 0x00ce) // ERRDOS, 69 259 + #define NT_STATUS_SHARING_PAUSED (0xC0000000 | 0x00cf) // ERRDOS, 70 260 + #define NT_STATUS_REQUEST_NOT_ACCEPTED (0xC0000000 | 0x00d0) // ERRDOS, 71 261 + #define NT_STATUS_REDIRECTOR_PAUSED (0xC0000000 | 0x00d1) // ERRDOS, 72 262 + #define NT_STATUS_NET_WRITE_FAULT (0xC0000000 | 0x00d2) // ERRDOS, 88 263 + #define NT_STATUS_PROFILING_AT_LIMIT (0xC0000000 | 0x00d3) // ERRHRD, ERRgeneral 264 + #define NT_STATUS_NOT_SAME_DEVICE (0xC0000000 | 0x00d4) // ERRDOS, ERRdiffdevice 265 + #define NT_STATUS_FILE_RENAMED (0xC0000000 | 0x00d5) // ERRDOS, ERRnoaccess 266 + #define NT_STATUS_VIRTUAL_CIRCUIT_CLOSED (0xC0000000 | 0x00d6) // ERRDOS, 240 267 + #define NT_STATUS_NO_SECURITY_ON_OBJECT (0xC0000000 | 0x00d7) // ERRHRD, ERRgeneral 268 + #define NT_STATUS_CANT_WAIT (0xC0000000 | 0x00d8) // ERRHRD, ERRgeneral 269 + #define NT_STATUS_PIPE_EMPTY (0xC0000000 | 0x00d9) // ERRDOS, ERRpipeclosing 270 + #define NT_STATUS_CANT_ACCESS_DOMAIN_INFO (0xC0000000 | 0x00da) // ERRHRD, ERRgeneral 271 + #define NT_STATUS_CANT_TERMINATE_SELF (0xC0000000 | 0x00db) // ERRHRD, ERRgeneral 272 + #define NT_STATUS_INVALID_SERVER_STATE (0xC0000000 | 0x00dc) // ERRHRD, ERRgeneral 273 + #define NT_STATUS_INVALID_DOMAIN_STATE (0xC0000000 | 0x00dd) // ERRHRD, ERRgeneral 274 + #define NT_STATUS_INVALID_DOMAIN_ROLE (0xC0000000 | 0x00de) // ERRHRD, ERRgeneral 275 + #define NT_STATUS_NO_SUCH_DOMAIN (0xC0000000 | 0x00df) // ERRHRD, ERRgeneral 276 + #define NT_STATUS_DOMAIN_EXISTS (0xC0000000 | 0x00e0) // ERRHRD, ERRgeneral 277 + #define NT_STATUS_DOMAIN_LIMIT_EXCEEDED (0xC0000000 | 0x00e1) // ERRHRD, ERRgeneral 278 + #define NT_STATUS_OPLOCK_NOT_GRANTED (0xC0000000 | 0x00e2) // ERRDOS, 300 279 + #define NT_STATUS_INVALID_OPLOCK_PROTOCOL (0xC0000000 | 0x00e3) // ERRDOS, 301 280 + #define NT_STATUS_INTERNAL_DB_CORRUPTION (0xC0000000 | 0x00e4) // ERRHRD, ERRgeneral 281 + #define NT_STATUS_INTERNAL_ERROR (0xC0000000 | 0x00e5) // ERRHRD, ERRgeneral 282 + #define NT_STATUS_GENERIC_NOT_MAPPED (0xC0000000 | 0x00e6) // ERRHRD, ERRgeneral 283 + #define NT_STATUS_BAD_DESCRIPTOR_FORMAT (0xC0000000 | 0x00e7) // ERRHRD, ERRgeneral 284 + #define NT_STATUS_INVALID_USER_BUFFER (0xC0000000 | 0x00e8) // ERRHRD, ERRgeneral 285 + #define NT_STATUS_UNEXPECTED_IO_ERROR (0xC0000000 | 0x00e9) // ERRHRD, ERRgeneral 286 + #define NT_STATUS_UNEXPECTED_MM_CREATE_ERR (0xC0000000 | 0x00ea) // ERRHRD, ERRgeneral 287 + #define NT_STATUS_UNEXPECTED_MM_MAP_ERROR (0xC0000000 | 0x00eb) // ERRHRD, ERRgeneral 288 + #define NT_STATUS_UNEXPECTED_MM_EXTEND_ERR (0xC0000000 | 0x00ec) // ERRHRD, ERRgeneral 289 + #define NT_STATUS_NOT_LOGON_PROCESS (0xC0000000 | 0x00ed) // ERRHRD, ERRgeneral 290 + #define NT_STATUS_LOGON_SESSION_EXISTS (0xC0000000 | 0x00ee) // ERRHRD, ERRgeneral 291 + #define NT_STATUS_INVALID_PARAMETER_1 (0xC0000000 | 0x00ef) // ERRDOS, 87 292 + #define NT_STATUS_INVALID_PARAMETER_2 (0xC0000000 | 0x00f0) // ERRDOS, 87 293 + #define NT_STATUS_INVALID_PARAMETER_3 (0xC0000000 | 0x00f1) // ERRDOS, 87 294 + #define NT_STATUS_INVALID_PARAMETER_4 (0xC0000000 | 0x00f2) // ERRDOS, 87 295 + #define NT_STATUS_INVALID_PARAMETER_5 (0xC0000000 | 0x00f3) // ERRDOS, 87 296 + #define NT_STATUS_INVALID_PARAMETER_6 (0xC0000000 | 0x00f4) // ERRDOS, 87 297 + #define NT_STATUS_INVALID_PARAMETER_7 (0xC0000000 | 0x00f5) // ERRDOS, 87 298 + #define NT_STATUS_INVALID_PARAMETER_8 (0xC0000000 | 0x00f6) // ERRDOS, 87 299 + #define NT_STATUS_INVALID_PARAMETER_9 (0xC0000000 | 0x00f7) // ERRDOS, 87 300 + #define NT_STATUS_INVALID_PARAMETER_10 (0xC0000000 | 0x00f8) // ERRDOS, 87 301 + #define NT_STATUS_INVALID_PARAMETER_11 (0xC0000000 | 0x00f9) // ERRDOS, 87 302 + #define NT_STATUS_INVALID_PARAMETER_12 (0xC0000000 | 0x00fa) // ERRDOS, 87 303 + #define NT_STATUS_REDIRECTOR_NOT_STARTED (0xC0000000 | 0x00fb) // ERRDOS, ERRbadpath 304 + #define NT_STATUS_REDIRECTOR_STARTED (0xC0000000 | 0x00fc) // ERRHRD, ERRgeneral 305 + #define NT_STATUS_STACK_OVERFLOW (0xC0000000 | 0x00fd) // ERRHRD, ERRgeneral 306 + #define NT_STATUS_NO_SUCH_PACKAGE (0xC0000000 | 0x00fe) // ERRHRD, ERRgeneral 307 + #define NT_STATUS_BAD_FUNCTION_TABLE (0xC0000000 | 0x00ff) // ERRHRD, ERRgeneral 308 + #define NT_STATUS_VARIABLE_NOT_FOUND (0xC0000000 | 0x0100) // ERRDOS, 203 309 + #define NT_STATUS_DIRECTORY_NOT_EMPTY (0xC0000000 | 0x0101) // ERRDOS, 145 310 + #define NT_STATUS_FILE_CORRUPT_ERROR (0xC0000000 | 0x0102) // ERRHRD, ERRgeneral 311 + #define NT_STATUS_NOT_A_DIRECTORY (0xC0000000 | 0x0103) // ERRDOS, 267 312 + #define NT_STATUS_BAD_LOGON_SESSION_STATE (0xC0000000 | 0x0104) // ERRHRD, ERRgeneral 313 + #define NT_STATUS_LOGON_SESSION_COLLISION (0xC0000000 | 0x0105) // ERRHRD, ERRgeneral 314 + #define NT_STATUS_NAME_TOO_LONG (0xC0000000 | 0x0106) // ERRDOS, 206 315 + #define NT_STATUS_FILES_OPEN (0xC0000000 | 0x0107) // ERRDOS, 2401 316 + #define NT_STATUS_CONNECTION_IN_USE (0xC0000000 | 0x0108) // ERRDOS, 2404 317 + #define NT_STATUS_MESSAGE_NOT_FOUND (0xC0000000 | 0x0109) // ERRHRD, ERRgeneral 318 + #define NT_STATUS_PROCESS_IS_TERMINATING (0xC0000000 | 0x010a) // ERRDOS, ERRnoaccess 319 + #define NT_STATUS_INVALID_LOGON_TYPE (0xC0000000 | 0x010b) // ERRHRD, ERRgeneral 320 + #define NT_STATUS_NO_GUID_TRANSLATION (0xC0000000 | 0x010c) // ERRHRD, ERRgeneral 321 + #define NT_STATUS_CANNOT_IMPERSONATE (0xC0000000 | 0x010d) // ERRHRD, ERRgeneral 322 + #define NT_STATUS_IMAGE_ALREADY_LOADED (0xC0000000 | 0x010e) // ERRHRD, ERRgeneral 323 + #define NT_STATUS_ABIOS_NOT_PRESENT (0xC0000000 | 0x010f) // ERRHRD, ERRgeneral 324 + #define NT_STATUS_ABIOS_LID_NOT_EXIST (0xC0000000 | 0x0110) // ERRHRD, ERRgeneral 325 + #define NT_STATUS_ABIOS_LID_ALREADY_OWNED (0xC0000000 | 0x0111) // ERRHRD, ERRgeneral 326 + #define NT_STATUS_ABIOS_NOT_LID_OWNER (0xC0000000 | 0x0112) // ERRHRD, ERRgeneral 327 + #define NT_STATUS_ABIOS_INVALID_COMMAND (0xC0000000 | 0x0113) // ERRHRD, ERRgeneral 328 + #define NT_STATUS_ABIOS_INVALID_LID (0xC0000000 | 0x0114) // ERRHRD, ERRgeneral 329 + #define NT_STATUS_ABIOS_SELECTOR_NOT_AVAILABLE (0xC0000000 | 0x0115) // ERRHRD, ERRgeneral 330 + #define NT_STATUS_ABIOS_INVALID_SELECTOR (0xC0000000 | 0x0116) // ERRHRD, ERRgeneral 331 + #define NT_STATUS_NO_LDT (0xC0000000 | 0x0117) // ERRHRD, ERRgeneral 332 + #define NT_STATUS_INVALID_LDT_SIZE (0xC0000000 | 0x0118) // ERRHRD, ERRgeneral 333 + #define NT_STATUS_INVALID_LDT_OFFSET (0xC0000000 | 0x0119) // ERRHRD, ERRgeneral 334 + #define NT_STATUS_INVALID_LDT_DESCRIPTOR (0xC0000000 | 0x011a) // ERRHRD, ERRgeneral 335 + #define NT_STATUS_INVALID_IMAGE_NE_FORMAT (0xC0000000 | 0x011b) // ERRDOS, 193 336 + #define NT_STATUS_RXACT_INVALID_STATE (0xC0000000 | 0x011c) // ERRHRD, ERRgeneral 337 + #define NT_STATUS_RXACT_COMMIT_FAILURE (0xC0000000 | 0x011d) // ERRHRD, ERRgeneral 338 + #define NT_STATUS_MAPPED_FILE_SIZE_ZERO (0xC0000000 | 0x011e) // ERRHRD, ERRgeneral 339 + #define NT_STATUS_TOO_MANY_OPENED_FILES (0xC0000000 | 0x011f) // ERRDOS, ERRnofids 340 + #define NT_STATUS_CANCELLED (0xC0000000 | 0x0120) // ERRHRD, ERRgeneral 341 + #define NT_STATUS_CANNOT_DELETE (0xC0000000 | 0x0121) // ERRDOS, ERRnoaccess 342 + #define NT_STATUS_INVALID_COMPUTER_NAME (0xC0000000 | 0x0122) // ERRHRD, ERRgeneral 343 + #define NT_STATUS_FILE_DELETED (0xC0000000 | 0x0123) // ERRDOS, ERRnoaccess 344 + #define NT_STATUS_SPECIAL_ACCOUNT (0xC0000000 | 0x0124) // ERRHRD, ERRgeneral 345 + #define NT_STATUS_SPECIAL_GROUP (0xC0000000 | 0x0125) // ERRHRD, ERRgeneral 346 + #define NT_STATUS_SPECIAL_USER (0xC0000000 | 0x0126) // ERRHRD, ERRgeneral 347 + #define NT_STATUS_MEMBERS_PRIMARY_GROUP (0xC0000000 | 0x0127) // ERRHRD, ERRgeneral 348 + #define NT_STATUS_FILE_CLOSED (0xC0000000 | 0x0128) // ERRDOS, ERRbadfid 349 + #define NT_STATUS_TOO_MANY_THREADS (0xC0000000 | 0x0129) // ERRHRD, ERRgeneral 350 + #define NT_STATUS_THREAD_NOT_IN_PROCESS (0xC0000000 | 0x012a) // ERRHRD, ERRgeneral 351 + #define NT_STATUS_TOKEN_ALREADY_IN_USE (0xC0000000 | 0x012b) // ERRHRD, ERRgeneral 352 + #define NT_STATUS_PAGEFILE_QUOTA_EXCEEDED (0xC0000000 | 0x012c) // ERRHRD, ERRgeneral 353 + #define NT_STATUS_COMMITMENT_LIMIT (0xC0000000 | 0x012d) // ERRHRD, ERRgeneral 354 + #define NT_STATUS_INVALID_IMAGE_LE_FORMAT (0xC0000000 | 0x012e) // ERRDOS, 193 355 + #define NT_STATUS_INVALID_IMAGE_NOT_MZ (0xC0000000 | 0x012f) // ERRDOS, 193 356 + #define NT_STATUS_INVALID_IMAGE_PROTECT (0xC0000000 | 0x0130) // ERRDOS, 193 357 + #define NT_STATUS_INVALID_IMAGE_WIN_16 (0xC0000000 | 0x0131) // ERRDOS, 193 358 + #define NT_STATUS_LOGON_SERVER_CONFLICT (0xC0000000 | 0x0132) // ERRHRD, ERRgeneral 359 + #define NT_STATUS_TIME_DIFFERENCE_AT_DC (0xC0000000 | 0x0133) // ERRHRD, ERRgeneral 360 + #define NT_STATUS_SYNCHRONIZATION_REQUIRED (0xC0000000 | 0x0134) // ERRHRD, ERRgeneral 361 + #define NT_STATUS_DLL_NOT_FOUND (0xC0000000 | 0x0135) // ERRDOS, 126 362 + #define NT_STATUS_OPEN_FAILED (0xC0000000 | 0x0136) // ERRHRD, ERRgeneral 363 + #define NT_STATUS_IO_PRIVILEGE_FAILED (0xC0000000 | 0x0137) // ERRHRD, ERRgeneral 364 + #define NT_STATUS_ORDINAL_NOT_FOUND (0xC0000000 | 0x0138) // ERRDOS, 182 365 + #define NT_STATUS_ENTRYPOINT_NOT_FOUND (0xC0000000 | 0x0139) // ERRDOS, 127 366 + #define NT_STATUS_CONTROL_C_EXIT (0xC0000000 | 0x013a) // ERRHRD, ERRgeneral 367 + #define NT_STATUS_LOCAL_DISCONNECT (0xC0000000 | 0x013b) // ERRDOS, 64 368 + #define NT_STATUS_REMOTE_DISCONNECT (0xC0000000 | 0x013c) // ERRDOS, 64 369 + #define NT_STATUS_REMOTE_RESOURCES (0xC0000000 | 0x013d) // ERRDOS, 51 370 + #define NT_STATUS_LINK_FAILED (0xC0000000 | 0x013e) // ERRDOS, 59 371 + #define NT_STATUS_LINK_TIMEOUT (0xC0000000 | 0x013f) // ERRDOS, 59 372 + #define NT_STATUS_INVALID_CONNECTION (0xC0000000 | 0x0140) // ERRDOS, 59 373 + #define NT_STATUS_INVALID_ADDRESS (0xC0000000 | 0x0141) // ERRDOS, 59 374 + #define NT_STATUS_DLL_INIT_FAILED (0xC0000000 | 0x0142) // ERRHRD, ERRgeneral 375 + #define NT_STATUS_MISSING_SYSTEMFILE (0xC0000000 | 0x0143) // ERRHRD, ERRgeneral 376 + #define NT_STATUS_UNHANDLED_EXCEPTION (0xC0000000 | 0x0144) // ERRHRD, ERRgeneral 377 + #define NT_STATUS_APP_INIT_FAILURE (0xC0000000 | 0x0145) // ERRHRD, ERRgeneral 378 + #define NT_STATUS_PAGEFILE_CREATE_FAILED (0xC0000000 | 0x0146) // ERRHRD, ERRgeneral 379 + #define NT_STATUS_NO_PAGEFILE (0xC0000000 | 0x0147) // ERRHRD, ERRgeneral 380 + #define NT_STATUS_INVALID_LEVEL (0xC0000000 | 0x0148) // ERRDOS, 124 381 + #define NT_STATUS_WRONG_PASSWORD_CORE (0xC0000000 | 0x0149) // ERRDOS, 86 382 + #define NT_STATUS_ILLEGAL_FLOAT_CONTEXT (0xC0000000 | 0x014a) // ERRHRD, ERRgeneral 383 + #define NT_STATUS_PIPE_BROKEN (0xC0000000 | 0x014b) // ERRDOS, 109 384 + #define NT_STATUS_REGISTRY_CORRUPT (0xC0000000 | 0x014c) // ERRHRD, ERRgeneral 385 + #define NT_STATUS_REGISTRY_IO_FAILED (0xC0000000 | 0x014d) // ERRHRD, ERRgeneral 386 + #define NT_STATUS_NO_EVENT_PAIR (0xC0000000 | 0x014e) // ERRHRD, ERRgeneral 387 + #define NT_STATUS_UNRECOGNIZED_VOLUME (0xC0000000 | 0x014f) // ERRHRD, ERRgeneral 388 + #define NT_STATUS_SERIAL_NO_DEVICE_INITED (0xC0000000 | 0x0150) // ERRHRD, ERRgeneral 389 + #define NT_STATUS_NO_SUCH_ALIAS (0xC0000000 | 0x0151) // ERRHRD, ERRgeneral 390 + #define NT_STATUS_MEMBER_NOT_IN_ALIAS (0xC0000000 | 0x0152) // ERRHRD, ERRgeneral 391 + #define NT_STATUS_MEMBER_IN_ALIAS (0xC0000000 | 0x0153) // ERRHRD, ERRgeneral 392 + #define NT_STATUS_ALIAS_EXISTS (0xC0000000 | 0x0154) // ERRHRD, ERRgeneral 393 + #define NT_STATUS_LOGON_NOT_GRANTED (0xC0000000 | 0x0155) // ERRHRD, ERRgeneral 394 + #define NT_STATUS_TOO_MANY_SECRETS (0xC0000000 | 0x0156) // ERRHRD, ERRgeneral 395 + #define NT_STATUS_SECRET_TOO_LONG (0xC0000000 | 0x0157) // ERRHRD, ERRgeneral 396 + #define NT_STATUS_INTERNAL_DB_ERROR (0xC0000000 | 0x0158) // ERRHRD, ERRgeneral 397 + #define NT_STATUS_FULLSCREEN_MODE (0xC0000000 | 0x0159) // ERRHRD, ERRgeneral 398 + #define NT_STATUS_TOO_MANY_CONTEXT_IDS (0xC0000000 | 0x015a) // ERRHRD, ERRgeneral 399 + #define NT_STATUS_LOGON_TYPE_NOT_GRANTED (0xC0000000 | 0x015b) // ERRDOS, ERRnoaccess 400 + #define NT_STATUS_NOT_REGISTRY_FILE (0xC0000000 | 0x015c) // ERRHRD, ERRgeneral 401 + #define NT_STATUS_NT_CROSS_ENCRYPTION_REQUIRED (0xC0000000 | 0x015d) // ERRHRD, ERRgeneral 402 + #define NT_STATUS_DOMAIN_CTRLR_CONFIG_ERROR (0xC0000000 | 0x015e) // ERRHRD, ERRgeneral 403 + #define NT_STATUS_FT_MISSING_MEMBER (0xC0000000 | 0x015f) // ERRHRD, ERRgeneral 404 + #define NT_STATUS_ILL_FORMED_SERVICE_ENTRY (0xC0000000 | 0x0160) // ERRHRD, ERRgeneral 405 + #define NT_STATUS_ILLEGAL_CHARACTER (0xC0000000 | 0x0161) // ERRHRD, ERRgeneral 406 + #define NT_STATUS_UNMAPPABLE_CHARACTER (0xC0000000 | 0x0162) // ERRHRD, ERRgeneral 407 + #define NT_STATUS_UNDEFINED_CHARACTER (0xC0000000 | 0x0163) // ERRHRD, ERRgeneral 408 + #define NT_STATUS_FLOPPY_VOLUME (0xC0000000 | 0x0164) // ERRHRD, ERRgeneral 409 + #define NT_STATUS_FLOPPY_ID_MARK_NOT_FOUND (0xC0000000 | 0x0165) // ERRHRD, ERRgeneral 410 + #define NT_STATUS_FLOPPY_WRONG_CYLINDER (0xC0000000 | 0x0166) // ERRHRD, ERRgeneral 411 + #define NT_STATUS_FLOPPY_UNKNOWN_ERROR (0xC0000000 | 0x0167) // ERRHRD, ERRgeneral 412 + #define NT_STATUS_FLOPPY_BAD_REGISTERS (0xC0000000 | 0x0168) // ERRHRD, ERRgeneral 413 + #define NT_STATUS_DISK_RECALIBRATE_FAILED (0xC0000000 | 0x0169) // ERRHRD, ERRgeneral 414 + #define NT_STATUS_DISK_OPERATION_FAILED (0xC0000000 | 0x016a) // ERRHRD, ERRgeneral 415 + #define NT_STATUS_DISK_RESET_FAILED (0xC0000000 | 0x016b) // ERRHRD, ERRgeneral 416 + #define NT_STATUS_SHARED_IRQ_BUSY (0xC0000000 | 0x016c) // ERRHRD, ERRgeneral 417 + #define NT_STATUS_FT_ORPHANING (0xC0000000 | 0x016d) // ERRHRD, ERRgeneral 418 + #define NT_STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT (0xC0000000 | 0x016e) // ERRHRD, ERRgeneral 419 + #define NT_STATUS_PARTITION_FAILURE (0xC0000000 | 0x0172) // ERRHRD, ERRgeneral 420 + #define NT_STATUS_INVALID_BLOCK_LENGTH (0xC0000000 | 0x0173) // ERRHRD, ERRgeneral 421 + #define NT_STATUS_DEVICE_NOT_PARTITIONED (0xC0000000 | 0x0174) // ERRHRD, ERRgeneral 422 + #define NT_STATUS_UNABLE_TO_LOCK_MEDIA (0xC0000000 | 0x0175) // ERRHRD, ERRgeneral 423 + #define NT_STATUS_UNABLE_TO_UNLOAD_MEDIA (0xC0000000 | 0x0176) // ERRHRD, ERRgeneral 424 + #define NT_STATUS_EOM_OVERFLOW (0xC0000000 | 0x0177) // ERRHRD, ERRgeneral 425 + #define NT_STATUS_NO_MEDIA (0xC0000000 | 0x0178) // ERRHRD, ERRgeneral 426 + #define NT_STATUS_NO_SUCH_MEMBER (0xC0000000 | 0x017a) // ERRHRD, ERRgeneral 427 + #define NT_STATUS_INVALID_MEMBER (0xC0000000 | 0x017b) // ERRHRD, ERRgeneral 428 + #define NT_STATUS_KEY_DELETED (0xC0000000 | 0x017c) // ERRHRD, ERRgeneral 429 + #define NT_STATUS_NO_LOG_SPACE (0xC0000000 | 0x017d) // ERRHRD, ERRgeneral 430 + #define NT_STATUS_TOO_MANY_SIDS (0xC0000000 | 0x017e) // ERRHRD, ERRgeneral 431 + #define NT_STATUS_LM_CROSS_ENCRYPTION_REQUIRED (0xC0000000 | 0x017f) // ERRHRD, ERRgeneral 432 + #define NT_STATUS_KEY_HAS_CHILDREN (0xC0000000 | 0x0180) // ERRHRD, ERRgeneral 433 + #define NT_STATUS_CHILD_MUST_BE_VOLATILE (0xC0000000 | 0x0181) // ERRHRD, ERRgeneral 434 + #define NT_STATUS_DEVICE_CONFIGURATION_ERROR (0xC0000000 | 0x0182) // ERRDOS, 87 435 + #define NT_STATUS_DRIVER_INTERNAL_ERROR (0xC0000000 | 0x0183) // ERRHRD, ERRgeneral 436 + #define NT_STATUS_INVALID_DEVICE_STATE (0xC0000000 | 0x0184) // ERRDOS, 22 437 + #define NT_STATUS_IO_DEVICE_ERROR (0xC0000000 | 0x0185) // ERRHRD, ERRgeneral 438 + #define NT_STATUS_DEVICE_PROTOCOL_ERROR (0xC0000000 | 0x0186) // ERRHRD, ERRgeneral 439 + #define NT_STATUS_BACKUP_CONTROLLER (0xC0000000 | 0x0187) // ERRHRD, ERRgeneral 440 + #define NT_STATUS_LOG_FILE_FULL (0xC0000000 | 0x0188) // ERRHRD, ERRgeneral 441 + #define NT_STATUS_TOO_LATE (0xC0000000 | 0x0189) // ERRDOS, 19 442 + #define NT_STATUS_NO_TRUST_LSA_SECRET (0xC0000000 | 0x018a) // ERRDOS, ERRnoaccess 443 + #define NT_STATUS_NO_TRUST_SAM_ACCOUNT (0xC0000000 | 0x018b) // ERRDOS, ERRnoaccess 444 + #define NT_STATUS_TRUSTED_DOMAIN_FAILURE (0xC0000000 | 0x018c) // ERRDOS, ERRnoaccess 445 + #define NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE (0xC0000000 | 0x018d) // ERRDOS, ERRnoaccess 446 + #define NT_STATUS_EVENTLOG_FILE_CORRUPT (0xC0000000 | 0x018e) // ERRHRD, ERRgeneral 447 + #define NT_STATUS_EVENTLOG_CANT_START (0xC0000000 | 0x018f) // ERRHRD, ERRgeneral 448 + #define NT_STATUS_TRUST_FAILURE (0xC0000000 | 0x0190) // ERRDOS, ERRnoaccess 449 + #define NT_STATUS_MUTANT_LIMIT_EXCEEDED (0xC0000000 | 0x0191) // ERRHRD, ERRgeneral 450 + #define NT_STATUS_NETLOGON_NOT_STARTED (0xC0000000 | 0x0192) // ERRDOS, ERRnetlogonNotStarted 451 + #define NT_STATUS_ACCOUNT_EXPIRED (0xC0000000 | 0x0193) // ERRSRV, ERRaccountexpired 452 + #define NT_STATUS_POSSIBLE_DEADLOCK (0xC0000000 | 0x0194) // ERRHRD, ERRgeneral 453 + #define NT_STATUS_NETWORK_CREDENTIAL_CONFLICT (0xC0000000 | 0x0195) // ERRHRD, ERRgeneral 454 + #define NT_STATUS_REMOTE_SESSION_LIMIT (0xC0000000 | 0x0196) // ERRHRD, ERRgeneral 455 + #define NT_STATUS_EVENTLOG_FILE_CHANGED (0xC0000000 | 0x0197) // ERRHRD, ERRgeneral 456 + #define NT_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT (0xC0000000 | 0x0198) // ERRDOS, ERRnoaccess 457 + #define NT_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT (0xC0000000 | 0x0199) // ERRDOS, ERRnoaccess 458 + #define NT_STATUS_NOLOGON_SERVER_TRUST_ACCOUNT (0xC0000000 | 0x019a) // ERRDOS, ERRnoaccess 459 + #define NT_STATUS_DOMAIN_TRUST_INCONSISTENT (0xC0000000 | 0x019b) // ERRDOS, ERRnoaccess 460 + #define NT_STATUS_FS_DRIVER_REQUIRED (0xC0000000 | 0x019c) // ERRHRD, ERRgeneral 461 + #define NT_STATUS_INVALID_LOCK_RANGE (0xC0000000 | 0x01a1) // ERRHRD, ERRgeneral 462 + #define NT_STATUS_NO_USER_SESSION_KEY (0xC0000000 | 0x0202) // ERRHRD, ERRgeneral 463 + #define NT_STATUS_USER_SESSION_DELETED (0xC0000000 | 0x0203) // ERRDOS, 59 464 + #define NT_STATUS_RESOURCE_LANG_NOT_FOUND (0xC0000000 | 0x0204) // ERRHRD, ERRgeneral 465 + #define NT_STATUS_INSUFF_SERVER_RESOURCES (0xC0000000 | 0x0205) // ERRDOS, ERRnoresource 466 + #define NT_STATUS_INVALID_BUFFER_SIZE (0xC0000000 | 0x0206) // ERRHRD, ERRgeneral 467 + #define NT_STATUS_INVALID_ADDRESS_COMPONENT (0xC0000000 | 0x0207) // ERRHRD, ERRgeneral 468 + #define NT_STATUS_INVALID_ADDRESS_WILDCARD (0xC0000000 | 0x0208) // ERRHRD, ERRgeneral 469 + #define NT_STATUS_TOO_MANY_ADDRESSES (0xC0000000 | 0x0209) // ERRDOS, 68 470 + #define NT_STATUS_ADDRESS_ALREADY_EXISTS (0xC0000000 | 0x020a) // ERRDOS, 52 471 + #define NT_STATUS_ADDRESS_CLOSED (0xC0000000 | 0x020b) // ERRDOS, 64 472 + #define NT_STATUS_CONNECTION_DISCONNECTED (0xC0000000 | 0x020c) // ERRDOS, 64 473 + #define NT_STATUS_CONNECTION_RESET (0xC0000000 | 0x020d) // ERRDOS, 64 474 + #define NT_STATUS_TOO_MANY_NODES (0xC0000000 | 0x020e) // ERRDOS, 68 475 + #define NT_STATUS_TRANSACTION_ABORTED (0xC0000000 | 0x020f) // ERRDOS, 59 476 + #define NT_STATUS_TRANSACTION_TIMED_OUT (0xC0000000 | 0x0210) // ERRDOS, 59 477 + #define NT_STATUS_TRANSACTION_NO_RELEASE (0xC0000000 | 0x0211) // ERRDOS, 59 478 + #define NT_STATUS_TRANSACTION_NO_MATCH (0xC0000000 | 0x0212) // ERRDOS, 59 479 + #define NT_STATUS_TRANSACTION_RESPONDED (0xC0000000 | 0x0213) // ERRDOS, 59 480 + #define NT_STATUS_TRANSACTION_INVALID_ID (0xC0000000 | 0x0214) // ERRDOS, 59 481 + #define NT_STATUS_TRANSACTION_INVALID_TYPE (0xC0000000 | 0x0215) // ERRDOS, 59 482 + #define NT_STATUS_NOT_SERVER_SESSION (0xC0000000 | 0x0216) // ERRDOS, ERRunsup 483 + #define NT_STATUS_NOT_CLIENT_SESSION (0xC0000000 | 0x0217) // ERRDOS, ERRunsup 484 + #define NT_STATUS_CANNOT_LOAD_REGISTRY_FILE (0xC0000000 | 0x0218) // ERRHRD, ERRgeneral 485 + #define NT_STATUS_DEBUG_ATTACH_FAILED (0xC0000000 | 0x0219) // ERRHRD, ERRgeneral 486 + #define NT_STATUS_SYSTEM_PROCESS_TERMINATED (0xC0000000 | 0x021a) // ERRHRD, ERRgeneral 487 + #define NT_STATUS_DATA_NOT_ACCEPTED (0xC0000000 | 0x021b) // ERRHRD, ERRgeneral 488 + #define NT_STATUS_NO_BROWSER_SERVERS_FOUND (0xC0000000 | 0x021c) // ERRHRD, ERRgeneral 489 + #define NT_STATUS_VDM_HARD_ERROR (0xC0000000 | 0x021d) // ERRHRD, ERRgeneral 490 + #define NT_STATUS_DRIVER_CANCEL_TIMEOUT (0xC0000000 | 0x021e) // ERRHRD, ERRgeneral 491 + #define NT_STATUS_REPLY_MESSAGE_MISMATCH (0xC0000000 | 0x021f) // ERRHRD, ERRgeneral 492 + #define NT_STATUS_MAPPED_ALIGNMENT (0xC0000000 | 0x0220) // ERRHRD, ERRgeneral 493 + #define NT_STATUS_IMAGE_CHECKSUM_MISMATCH (0xC0000000 | 0x0221) // ERRDOS, 193 494 + #define NT_STATUS_LOST_WRITEBEHIND_DATA (0xC0000000 | 0x0222) // ERRHRD, ERRgeneral 495 + #define NT_STATUS_CLIENT_SERVER_PARAMETERS_INVALID (0xC0000000 | 0x0223) // ERRHRD, ERRgeneral 496 + #define NT_STATUS_PASSWORD_MUST_CHANGE (0xC0000000 | 0x0224) // ERRSRV, ERRpasswordExpired 497 + #define NT_STATUS_NOT_FOUND (0xC0000000 | 0x0225) // ERRHRD, ERRgeneral 498 + #define NT_STATUS_NOT_TINY_STREAM (0xC0000000 | 0x0226) // ERRHRD, ERRgeneral 499 + #define NT_STATUS_RECOVERY_FAILURE (0xC0000000 | 0x0227) // ERRHRD, ERRgeneral 500 + #define NT_STATUS_STACK_OVERFLOW_READ (0xC0000000 | 0x0228) // ERRHRD, ERRgeneral 501 + #define NT_STATUS_FAIL_CHECK (0xC0000000 | 0x0229) // ERRHRD, ERRgeneral 502 + #define NT_STATUS_DUPLICATE_OBJECTID (0xC0000000 | 0x022a) // ERRHRD, ERRgeneral 503 + #define NT_STATUS_OBJECTID_EXISTS (0xC0000000 | 0x022b) // ERRHRD, ERRgeneral 504 + #define NT_STATUS_CONVERT_TO_LARGE (0xC0000000 | 0x022c) // ERRHRD, ERRgeneral 505 + #define NT_STATUS_RETRY (0xC0000000 | 0x022d) // ERRHRD, ERRgeneral 506 + #define NT_STATUS_FOUND_OUT_OF_SCOPE (0xC0000000 | 0x022e) // ERRHRD, ERRgeneral 507 + #define NT_STATUS_ALLOCATE_BUCKET (0xC0000000 | 0x022f) // ERRHRD, ERRgeneral 508 + #define NT_STATUS_PROPSET_NOT_FOUND (0xC0000000 | 0x0230) // ERRHRD, ERRgeneral 509 + #define NT_STATUS_MARSHALL_OVERFLOW (0xC0000000 | 0x0231) // ERRHRD, ERRgeneral 510 + #define NT_STATUS_INVALID_VARIANT (0xC0000000 | 0x0232) // ERRHRD, ERRgeneral 511 + #define NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND (0xC0000000 | 0x0233) // ERRHRD, ERRgeneral 512 + #define NT_STATUS_ACCOUNT_LOCKED_OUT (0xC0000000 | 0x0234) // ERRDOS, ERRnoaccess 513 + #define NT_STATUS_HANDLE_NOT_CLOSABLE (0xC0000000 | 0x0235) // ERRDOS, ERRbadfid 514 + #define NT_STATUS_CONNECTION_REFUSED (0xC0000000 | 0x0236) // ERRHRD, ERRgeneral 515 + #define NT_STATUS_GRACEFUL_DISCONNECT (0xC0000000 | 0x0237) // ERRHRD, ERRgeneral 516 + #define NT_STATUS_ADDRESS_ALREADY_ASSOCIATED (0xC0000000 | 0x0238) // ERRHRD, ERRgeneral 517 + #define NT_STATUS_ADDRESS_NOT_ASSOCIATED (0xC0000000 | 0x0239) // ERRHRD, ERRgeneral 518 + #define NT_STATUS_CONNECTION_INVALID (0xC0000000 | 0x023a) // ERRHRD, ERRgeneral 519 + #define NT_STATUS_CONNECTION_ACTIVE (0xC0000000 | 0x023b) // ERRHRD, ERRgeneral 520 + #define NT_STATUS_NETWORK_UNREACHABLE (0xC0000000 | 0x023c) // ERRHRD, ERRgeneral 521 + #define NT_STATUS_HOST_UNREACHABLE (0xC0000000 | 0x023d) // ERRHRD, ERRgeneral 522 + #define NT_STATUS_PROTOCOL_UNREACHABLE (0xC0000000 | 0x023e) // ERRHRD, ERRgeneral 523 + #define NT_STATUS_PORT_UNREACHABLE (0xC0000000 | 0x023f) // ERRHRD, ERRgeneral 524 + #define NT_STATUS_REQUEST_ABORTED (0xC0000000 | 0x0240) // ERRHRD, ERRgeneral 525 + #define NT_STATUS_CONNECTION_ABORTED (0xC0000000 | 0x0241) // ERRHRD, ERRgeneral 526 + #define NT_STATUS_BAD_COMPRESSION_BUFFER (0xC0000000 | 0x0242) // ERRHRD, ERRgeneral 527 + #define NT_STATUS_USER_MAPPED_FILE (0xC0000000 | 0x0243) // ERRHRD, ERRgeneral 528 + #define NT_STATUS_AUDIT_FAILED (0xC0000000 | 0x0244) // ERRHRD, ERRgeneral 529 + #define NT_STATUS_TIMER_RESOLUTION_NOT_SET (0xC0000000 | 0x0245) // ERRHRD, ERRgeneral 530 + #define NT_STATUS_CONNECTION_COUNT_LIMIT (0xC0000000 | 0x0246) // ERRHRD, ERRgeneral 531 + #define NT_STATUS_LOGIN_TIME_RESTRICTION (0xC0000000 | 0x0247) // ERRHRD, ERRgeneral 532 + #define NT_STATUS_LOGIN_WKSTA_RESTRICTION (0xC0000000 | 0x0248) // ERRHRD, ERRgeneral 533 + #define NT_STATUS_IMAGE_MP_UP_MISMATCH (0xC0000000 | 0x0249) // ERRDOS, 193 534 + #define NT_STATUS_INSUFFICIENT_LOGON_INFO (0xC0000000 | 0x0250) // ERRHRD, ERRgeneral 535 + #define NT_STATUS_BAD_DLL_ENTRYPOINT (0xC0000000 | 0x0251) // ERRHRD, ERRgeneral 536 + #define NT_STATUS_BAD_SERVICE_ENTRYPOINT (0xC0000000 | 0x0252) // ERRHRD, ERRgeneral 537 + #define NT_STATUS_LPC_REPLY_LOST (0xC0000000 | 0x0253) // ERRHRD, ERRgeneral 538 + #define NT_STATUS_IP_ADDRESS_CONFLICT1 (0xC0000000 | 0x0254) // ERRHRD, ERRgeneral 539 + #define NT_STATUS_IP_ADDRESS_CONFLICT2 (0xC0000000 | 0x0255) // ERRHRD, ERRgeneral 540 + #define NT_STATUS_REGISTRY_QUOTA_LIMIT (0xC0000000 | 0x0256) // ERRHRD, ERRgeneral 541 + #define NT_STATUS_PATH_NOT_COVERED (0xC0000000 | 0x0257) // ERRSRV, 3 542 + #define NT_STATUS_NO_CALLBACK_ACTIVE (0xC0000000 | 0x0258) // ERRHRD, ERRgeneral 543 + #define NT_STATUS_LICENSE_QUOTA_EXCEEDED (0xC0000000 | 0x0259) // ERRHRD, ERRgeneral 544 + #define NT_STATUS_PWD_TOO_SHORT (0xC0000000 | 0x025a) // ERRHRD, ERRgeneral 545 + #define NT_STATUS_PWD_TOO_RECENT (0xC0000000 | 0x025b) // ERRHRD, ERRgeneral 546 + #define NT_STATUS_PWD_HISTORY_CONFLICT (0xC0000000 | 0x025c) // ERRHRD, ERRgeneral 547 + #define NT_STATUS_PLUGPLAY_NO_DEVICE (0xC0000000 | 0x025e) // ERRHRD, ERRgeneral 548 + #define NT_STATUS_UNSUPPORTED_COMPRESSION (0xC0000000 | 0x025f) // ERRHRD, ERRgeneral 549 + #define NT_STATUS_INVALID_HW_PROFILE (0xC0000000 | 0x0260) // ERRHRD, ERRgeneral 550 + #define NT_STATUS_INVALID_PLUGPLAY_DEVICE_PATH (0xC0000000 | 0x0261) // ERRHRD, ERRgeneral 551 + #define NT_STATUS_DRIVER_ORDINAL_NOT_FOUND (0xC0000000 | 0x0262) // ERRDOS, 182 552 + #define NT_STATUS_DRIVER_ENTRYPOINT_NOT_FOUND (0xC0000000 | 0x0263) // ERRDOS, 127 553 + #define NT_STATUS_RESOURCE_NOT_OWNED (0xC0000000 | 0x0264) // ERRDOS, 288 554 + #define NT_STATUS_TOO_MANY_LINKS (0xC0000000 | 0x0265) // ERRDOS, ErrTooManyLinks 555 + #define NT_STATUS_QUOTA_LIST_INCONSISTENT (0xC0000000 | 0x0266) // ERRHRD, ERRgeneral 556 + #define NT_STATUS_FILE_IS_OFFLINE (0xC0000000 | 0x0267) // ERRHRD, ERRgeneral 557 + #define NT_STATUS_VOLUME_DISMOUNTED (0xC0000000 | 0x026e) // ERRDOS, 21 558 + #define NT_STATUS_NOT_A_REPARSE_POINT (0xC0000000 | 0x0275) // ERRHRD, ERRgeneral 559 + #define NT_STATUS_DIRECTORY_IS_A_REPARSE_POINT (0xC0000000 | 0x0281) // ERRDOS, 161 560 + #define NT_STATUS_ENCRYPTION_FAILED (0xC0000000 | 0x028a) // ERRDOS, ERRnoaccess 561 + #define NT_STATUS_DECRYPTION_FAILED (0xC0000000 | 0x028b) // ERRDOS, ERRnoaccess 562 + #define NT_STATUS_RANGE_NOT_FOUND (0xC0000000 | 0x028c) // ERRHRD, ERRgeneral 563 + #define NT_STATUS_NO_RECOVERY_POLICY (0xC0000000 | 0x028d) // ERRDOS, ERRnoaccess 564 + #define NT_STATUS_NO_EFS (0xC0000000 | 0x028e) // ERRDOS, ERRnoaccess 565 + #define NT_STATUS_WRONG_EFS (0xC0000000 | 0x028f) // ERRDOS, ERRnoaccess 566 + #define NT_STATUS_NO_USER_KEYS (0xC0000000 | 0x0290) // ERRDOS, ERRnoaccess 567 + #define NT_STATUS_VOLUME_NOT_UPGRADED (0xC0000000 | 0x029c) // ERRDOS, ERRbadfunc 568 + #define NT_STATUS_NETWORK_SESSION_EXPIRED (0xC0000000 | 0x035c) // ERRHRD, ERRgeneral 569 + /* scheduler */ 570 + #define NT_STATUS_NO_SUCH_JOB (0xC0000000 | 0xEDE) // ERRHRD, ERRgeneral 571 + #define NT_STATUS_NO_PREAUTH_INTEGRITY_HASH_OVERLAP (0xC0000000 | 0x5D0000) // ERRHRD, ERRgeneral 572 + #define NT_STATUS_OS2_INVALID_LEVEL 0x007c0001 // ERRDOS, ERRunknownlevel 569 573 570 574 #endif /* _NTERR_H */
+174 -701
fs/smb/client/smb1maperror.c
··· 6 6 * 7 7 * Error mapping routines from Samba libsmb/errormap.c 8 8 * Copyright (C) Andrew Tridgell 2001 9 + * Copyright (C) Luke Kenneth Casson Leighton 1997-2001. 9 10 */ 10 11 12 + #include <linux/bsearch.h> 11 13 #include "cifsproto.h" 12 14 #include "smb1proto.h" 13 15 #include "smberr.h" 14 16 #include "nterr.h" 15 17 #include "cifs_debug.h" 16 18 17 - struct smb_to_posix_error { 18 - __u16 smb_err; 19 - int posix_code; 20 - }; 19 + static __always_inline int smb1_posix_error_cmp(const void *_key, const void *_pivot) 20 + { 21 + __u16 key = *(__u16 *)_key; 22 + const struct smb_to_posix_error *pivot = _pivot; 23 + 24 + if (key < pivot->smb_err) 25 + return -1; 26 + if (key > pivot->smb_err) 27 + return 1; 28 + return 0; 29 + } 21 30 22 31 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} 32 + /* 33 + * Automatically generated by the `gen_smb1_mapping` script, 34 + * sorted by DOS error code (ascending). 35 + */ 36 + #include "smb1_err_dos_map.c" 62 37 }; 63 38 64 39 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} 40 + /* 41 + * Automatically generated by the `gen_smb1_mapping` script, 42 + * sorted by SRV error code (ascending). 43 + */ 44 + #include "smb1_err_srv_map.c" 103 45 }; 104 46 105 47 /***************************************************************************** 106 48 *convert a NT status code to a dos class/code 107 49 *****************************************************************************/ 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 - ERRSRV, ERR_NOTIFY_ENUM_DIR, NT_STATUS_NOTIFY_ENUM_DIR}, { 116 - ERRDOS, ERRmoredata, NT_STATUS_BUFFER_OVERFLOW}, { 117 - ERRDOS, ERRmoredata, NT_STATUS_MORE_PROCESSING_REQUIRED}, { 118 - ERRDOS, ERRnoaccess, NT_STATUS_PRIVILEGE_NOT_HELD}, { 119 - ERRDOS, ERRgeneral, NT_STATUS_UNSUCCESSFUL}, { 120 - ERRDOS, ERRbadfunc, NT_STATUS_NOT_IMPLEMENTED}, { 121 - ERRDOS, ERRbadpipe, NT_STATUS_INVALID_INFO_CLASS}, { 122 - ERRDOS, 24, NT_STATUS_INFO_LENGTH_MISMATCH}, { 123 - ERRHRD, ERRgeneral, NT_STATUS_ACCESS_VIOLATION}, { 124 - ERRHRD, ERRgeneral, NT_STATUS_IN_PAGE_ERROR}, { 125 - ERRHRD, ERRgeneral, NT_STATUS_PAGEFILE_QUOTA}, { 126 - ERRDOS, ERRbadfid, NT_STATUS_INVALID_HANDLE}, { 127 - ERRHRD, ERRgeneral, NT_STATUS_BAD_INITIAL_STACK}, { 128 - ERRDOS, 193, NT_STATUS_BAD_INITIAL_PC}, { 129 - ERRDOS, 87, NT_STATUS_INVALID_CID}, { 130 - ERRHRD, ERRgeneral, NT_STATUS_TIMER_NOT_CANCELED}, { 131 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER}, { 132 - ERRDOS, ERRbadfile, NT_STATUS_NO_SUCH_DEVICE}, { 133 - ERRDOS, ERRbadfile, NT_STATUS_NO_SUCH_FILE}, { 134 - ERRDOS, ERRbadfunc, NT_STATUS_INVALID_DEVICE_REQUEST}, { 135 - ERRDOS, 38, NT_STATUS_END_OF_FILE}, { 136 - ERRDOS, 34, NT_STATUS_WRONG_VOLUME}, { 137 - ERRDOS, 21, NT_STATUS_NO_MEDIA_IN_DEVICE}, { 138 - ERRHRD, ERRgeneral, NT_STATUS_UNRECOGNIZED_MEDIA}, { 139 - ERRDOS, 27, NT_STATUS_NONEXISTENT_SECTOR}, 140 - /* { This NT error code was 'sqashed' 141 - from NT_STATUS_MORE_PROCESSING_REQUIRED to NT_STATUS_OK 142 - during the session setup } */ 143 - { 144 - ERRDOS, ERRnomem, NT_STATUS_NO_MEMORY}, { 145 - ERRDOS, 487, NT_STATUS_CONFLICTING_ADDRESSES}, { 146 - ERRDOS, 487, NT_STATUS_NOT_MAPPED_VIEW}, { 147 - ERRDOS, 87, NT_STATUS_UNABLE_TO_FREE_VM}, { 148 - ERRDOS, 87, NT_STATUS_UNABLE_TO_DELETE_SECTION}, { 149 - ERRDOS, 2142, NT_STATUS_INVALID_SYSTEM_SERVICE}, { 150 - ERRHRD, ERRgeneral, NT_STATUS_ILLEGAL_INSTRUCTION}, { 151 - ERRDOS, ERRnoaccess, NT_STATUS_INVALID_LOCK_SEQUENCE}, { 152 - ERRDOS, ERRnoaccess, NT_STATUS_INVALID_VIEW_SIZE}, { 153 - ERRDOS, 193, NT_STATUS_INVALID_FILE_FOR_SECTION}, { 154 - ERRDOS, ERRnoaccess, NT_STATUS_ALREADY_COMMITTED}, 155 - /* { This NT error code was 'sqashed' 156 - from NT_STATUS_ACCESS_DENIED to NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE 157 - during the session setup } */ 158 - { 159 - ERRDOS, ERRnoaccess, NT_STATUS_ACCESS_DENIED}, { 160 - ERRDOS, 111, NT_STATUS_BUFFER_TOO_SMALL}, { 161 - ERRDOS, ERRbadfid, NT_STATUS_OBJECT_TYPE_MISMATCH}, { 162 - ERRHRD, ERRgeneral, NT_STATUS_NONCONTINUABLE_EXCEPTION}, { 163 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_DISPOSITION}, { 164 - ERRHRD, ERRgeneral, NT_STATUS_UNWIND}, { 165 - ERRHRD, ERRgeneral, NT_STATUS_BAD_STACK}, { 166 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_UNWIND_TARGET}, { 167 - ERRDOS, 158, NT_STATUS_NOT_LOCKED}, { 168 - ERRHRD, ERRgeneral, NT_STATUS_PARITY_ERROR}, { 169 - ERRDOS, 487, NT_STATUS_UNABLE_TO_DECOMMIT_VM}, { 170 - ERRDOS, 487, NT_STATUS_NOT_COMMITTED}, { 171 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_PORT_ATTRIBUTES}, { 172 - ERRHRD, ERRgeneral, NT_STATUS_PORT_MESSAGE_TOO_LONG}, { 173 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_MIX}, { 174 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_QUOTA_LOWER}, { 175 - ERRHRD, ERRgeneral, NT_STATUS_DISK_CORRUPT_ERROR}, { 176 - /* mapping changed since shell does lookup on * expects FileNotFound */ 177 - ERRDOS, ERRbadfile, NT_STATUS_OBJECT_NAME_INVALID}, { 178 - ERRDOS, ERRbadfile, NT_STATUS_OBJECT_NAME_NOT_FOUND}, { 179 - ERRDOS, ERRalreadyexists, NT_STATUS_OBJECT_NAME_COLLISION}, { 180 - ERRHRD, ERRgeneral, NT_STATUS_HANDLE_NOT_WAITABLE}, { 181 - ERRDOS, ERRbadfid, NT_STATUS_PORT_DISCONNECTED}, { 182 - ERRHRD, ERRgeneral, NT_STATUS_DEVICE_ALREADY_ATTACHED}, { 183 - ERRDOS, 161, NT_STATUS_OBJECT_PATH_INVALID}, { 184 - ERRDOS, ERRbadpath, NT_STATUS_OBJECT_PATH_NOT_FOUND}, { 185 - ERRDOS, 161, NT_STATUS_OBJECT_PATH_SYNTAX_BAD}, { 186 - ERRHRD, ERRgeneral, NT_STATUS_DATA_OVERRUN}, { 187 - ERRHRD, ERRgeneral, NT_STATUS_DATA_LATE_ERROR}, { 188 - ERRDOS, 23, NT_STATUS_DATA_ERROR}, { 189 - ERRDOS, 23, NT_STATUS_CRC_ERROR}, { 190 - ERRDOS, ERRnomem, NT_STATUS_SECTION_TOO_BIG}, { 191 - ERRDOS, ERRnoaccess, NT_STATUS_PORT_CONNECTION_REFUSED}, { 192 - ERRDOS, ERRbadfid, NT_STATUS_INVALID_PORT_HANDLE}, { 193 - ERRDOS, ERRbadshare, NT_STATUS_SHARING_VIOLATION}, { 194 - ERRHRD, ERRgeneral, NT_STATUS_QUOTA_EXCEEDED}, { 195 - ERRDOS, 87, NT_STATUS_INVALID_PAGE_PROTECTION}, { 196 - ERRDOS, 288, NT_STATUS_MUTANT_NOT_OWNED}, { 197 - ERRDOS, 298, NT_STATUS_SEMAPHORE_LIMIT_EXCEEDED}, { 198 - ERRDOS, 87, NT_STATUS_PORT_ALREADY_SET}, { 199 - ERRDOS, 87, NT_STATUS_SECTION_NOT_IMAGE}, { 200 - ERRDOS, 156, NT_STATUS_SUSPEND_COUNT_EXCEEDED}, { 201 - ERRDOS, ERRnoaccess, NT_STATUS_THREAD_IS_TERMINATING}, { 202 - ERRDOS, 87, NT_STATUS_BAD_WORKING_SET_LIMIT}, { 203 - ERRDOS, 87, NT_STATUS_INCOMPATIBLE_FILE_MAP}, { 204 - ERRDOS, 87, NT_STATUS_SECTION_PROTECTION}, { 205 - ERRDOS, ERReasnotsupported, NT_STATUS_EAS_NOT_SUPPORTED}, { 206 - ERRDOS, 255, NT_STATUS_EA_TOO_LARGE}, { 207 - ERRHRD, ERRgeneral, NT_STATUS_NONEXISTENT_EA_ENTRY}, { 208 - ERRHRD, ERRgeneral, NT_STATUS_NO_EAS_ON_FILE}, { 209 - ERRHRD, ERRgeneral, NT_STATUS_EA_CORRUPT_ERROR}, { 210 - ERRDOS, ERRlock, NT_STATUS_FILE_LOCK_CONFLICT}, { 211 - ERRDOS, ERRlock, NT_STATUS_LOCK_NOT_GRANTED}, { 212 - ERRDOS, ERRbadfile, NT_STATUS_DELETE_PENDING}, { 213 - ERRDOS, ERRunsup, NT_STATUS_CTL_FILE_NOT_SUPPORTED}, { 214 - ERRHRD, ERRgeneral, NT_STATUS_UNKNOWN_REVISION}, { 215 - ERRHRD, ERRgeneral, NT_STATUS_REVISION_MISMATCH}, { 216 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_OWNER}, { 217 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_PRIMARY_GROUP}, { 218 - ERRHRD, ERRgeneral, NT_STATUS_NO_IMPERSONATION_TOKEN}, { 219 - ERRHRD, ERRgeneral, NT_STATUS_CANT_DISABLE_MANDATORY}, { 220 - ERRDOS, 2215, NT_STATUS_NO_LOGON_SERVERS}, { 221 - ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_LOGON_SESSION}, { 222 - ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_PRIVILEGE}, { 223 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_ACCOUNT_NAME}, { 224 - ERRHRD, ERRgeneral, NT_STATUS_USER_EXISTS}, 225 - /* { This NT error code was 'sqashed' 226 - from NT_STATUS_NO_SUCH_USER to NT_STATUS_LOGON_FAILURE 227 - during the session setup } */ 228 - { 229 - ERRDOS, ERRnoaccess, NT_STATUS_NO_SUCH_USER}, { /* could map to 2238 */ 230 - ERRHRD, ERRgeneral, NT_STATUS_GROUP_EXISTS}, { 231 - ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_GROUP}, { 232 - ERRHRD, ERRgeneral, NT_STATUS_MEMBER_IN_GROUP}, { 233 - ERRHRD, ERRgeneral, NT_STATUS_MEMBER_NOT_IN_GROUP}, { 234 - ERRHRD, ERRgeneral, NT_STATUS_LAST_ADMIN}, 235 - /* { This NT error code was 'sqashed' 236 - from NT_STATUS_WRONG_PASSWORD to NT_STATUS_LOGON_FAILURE 237 - during the session setup } */ 238 - { 239 - ERRSRV, ERRbadpw, NT_STATUS_WRONG_PASSWORD}, { 240 - ERRHRD, ERRgeneral, NT_STATUS_ILL_FORMED_PASSWORD}, { 241 - ERRHRD, ERRgeneral, NT_STATUS_PASSWORD_RESTRICTION}, { 242 - ERRDOS, ERRnoaccess, NT_STATUS_LOGON_FAILURE}, { 243 - ERRHRD, ERRgeneral, NT_STATUS_ACCOUNT_RESTRICTION}, { 244 - ERRSRV, ERRbadLogonTime, NT_STATUS_INVALID_LOGON_HOURS}, { 245 - ERRSRV, ERRbadclient, NT_STATUS_INVALID_WORKSTATION}, { 246 - ERRSRV, ERRpasswordExpired, NT_STATUS_PASSWORD_EXPIRED}, { 247 - ERRSRV, ERRaccountexpired, NT_STATUS_ACCOUNT_DISABLED}, { 248 - ERRHRD, ERRgeneral, NT_STATUS_NONE_MAPPED}, { 249 - ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_LUIDS_REQUESTED}, { 250 - ERRHRD, ERRgeneral, NT_STATUS_LUIDS_EXHAUSTED}, { 251 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_SUB_AUTHORITY}, { 252 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_ACL}, { 253 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_SID}, { 254 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_SECURITY_DESCR}, { 255 - ERRDOS, 127, NT_STATUS_PROCEDURE_NOT_FOUND}, { 256 - ERRDOS, 193, NT_STATUS_INVALID_IMAGE_FORMAT}, { 257 - ERRHRD, ERRgeneral, NT_STATUS_NO_TOKEN}, { 258 - ERRHRD, ERRgeneral, NT_STATUS_BAD_INHERITANCE_ACL}, { 259 - ERRDOS, 158, NT_STATUS_RANGE_NOT_LOCKED}, { 260 - ERRDOS, 112, NT_STATUS_DISK_FULL}, { 261 - ERRHRD, ERRgeneral, NT_STATUS_SERVER_DISABLED}, { 262 - ERRHRD, ERRgeneral, NT_STATUS_SERVER_NOT_DISABLED}, { 263 - ERRDOS, 68, NT_STATUS_TOO_MANY_GUIDS_REQUESTED}, { 264 - ERRDOS, 259, NT_STATUS_GUIDS_EXHAUSTED}, { 265 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_ID_AUTHORITY}, { 266 - ERRDOS, 259, NT_STATUS_AGENTS_EXHAUSTED}, { 267 - ERRDOS, 154, NT_STATUS_INVALID_VOLUME_LABEL}, { 268 - ERRDOS, 14, NT_STATUS_SECTION_NOT_EXTENDED}, { 269 - ERRDOS, 487, NT_STATUS_NOT_MAPPED_DATA}, { 270 - ERRHRD, ERRgeneral, NT_STATUS_RESOURCE_DATA_NOT_FOUND}, { 271 - ERRHRD, ERRgeneral, NT_STATUS_RESOURCE_TYPE_NOT_FOUND}, { 272 - ERRHRD, ERRgeneral, NT_STATUS_RESOURCE_NAME_NOT_FOUND}, { 273 - ERRHRD, ERRgeneral, NT_STATUS_ARRAY_BOUNDS_EXCEEDED}, { 274 - ERRHRD, ERRgeneral, NT_STATUS_FLOAT_DENORMAL_OPERAND}, { 275 - ERRHRD, ERRgeneral, NT_STATUS_FLOAT_DIVIDE_BY_ZERO}, { 276 - ERRHRD, ERRgeneral, NT_STATUS_FLOAT_INEXACT_RESULT}, { 277 - ERRHRD, ERRgeneral, NT_STATUS_FLOAT_INVALID_OPERATION}, { 278 - ERRHRD, ERRgeneral, NT_STATUS_FLOAT_OVERFLOW}, { 279 - ERRHRD, ERRgeneral, NT_STATUS_FLOAT_STACK_CHECK}, { 280 - ERRHRD, ERRgeneral, NT_STATUS_FLOAT_UNDERFLOW}, { 281 - ERRHRD, ERRgeneral, NT_STATUS_INTEGER_DIVIDE_BY_ZERO}, { 282 - ERRDOS, 534, NT_STATUS_INTEGER_OVERFLOW}, { 283 - ERRHRD, ERRgeneral, NT_STATUS_PRIVILEGED_INSTRUCTION}, { 284 - ERRDOS, ERRnomem, NT_STATUS_TOO_MANY_PAGING_FILES}, { 285 - ERRHRD, ERRgeneral, NT_STATUS_FILE_INVALID}, { 286 - ERRHRD, ERRgeneral, NT_STATUS_ALLOTTED_SPACE_EXCEEDED}, 287 - /* { This NT error code was 'sqashed' 288 - from NT_STATUS_INSUFFICIENT_RESOURCES to 289 - NT_STATUS_INSUFF_SERVER_RESOURCES during the session setup } */ 290 - { 291 - ERRDOS, ERRnoresource, NT_STATUS_INSUFFICIENT_RESOURCES}, { 292 - ERRDOS, ERRbadpath, NT_STATUS_DFS_EXIT_PATH_FOUND}, { 293 - ERRDOS, 23, NT_STATUS_DEVICE_DATA_ERROR}, { 294 - ERRHRD, ERRgeneral, NT_STATUS_DEVICE_NOT_CONNECTED}, { 295 - ERRDOS, 21, NT_STATUS_DEVICE_POWER_FAILURE}, { 296 - ERRDOS, 487, NT_STATUS_FREE_VM_NOT_AT_BASE}, { 297 - ERRDOS, 487, NT_STATUS_MEMORY_NOT_ALLOCATED}, { 298 - ERRHRD, ERRgeneral, NT_STATUS_WORKING_SET_QUOTA}, { 299 - ERRDOS, 19, NT_STATUS_MEDIA_WRITE_PROTECTED}, { 300 - ERRDOS, 21, NT_STATUS_DEVICE_NOT_READY}, { 301 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_GROUP_ATTRIBUTES}, { 302 - ERRHRD, ERRgeneral, NT_STATUS_BAD_IMPERSONATION_LEVEL}, { 303 - ERRHRD, ERRgeneral, NT_STATUS_CANT_OPEN_ANONYMOUS}, { 304 - ERRHRD, ERRgeneral, NT_STATUS_BAD_VALIDATION_CLASS}, { 305 - ERRHRD, ERRgeneral, NT_STATUS_BAD_TOKEN_TYPE}, { 306 - ERRDOS, 87, NT_STATUS_BAD_MASTER_BOOT_RECORD}, { 307 - ERRHRD, ERRgeneral, NT_STATUS_INSTRUCTION_MISALIGNMENT}, { 308 - ERRDOS, ERRpipebusy, NT_STATUS_INSTANCE_NOT_AVAILABLE}, { 309 - ERRDOS, ERRpipebusy, NT_STATUS_PIPE_NOT_AVAILABLE}, { 310 - ERRDOS, ERRbadpipe, NT_STATUS_INVALID_PIPE_STATE}, { 311 - ERRDOS, ERRpipebusy, NT_STATUS_PIPE_BUSY}, { 312 - ERRDOS, ERRbadfunc, NT_STATUS_ILLEGAL_FUNCTION}, { 313 - ERRDOS, ERRnotconnected, NT_STATUS_PIPE_DISCONNECTED}, { 314 - ERRDOS, ERRpipeclosing, NT_STATUS_PIPE_CLOSING}, { 315 - ERRHRD, ERRgeneral, NT_STATUS_PIPE_CONNECTED}, { 316 - ERRHRD, ERRgeneral, NT_STATUS_PIPE_LISTENING}, { 317 - ERRDOS, ERRbadpipe, NT_STATUS_INVALID_READ_MODE}, { 318 - ERRDOS, 121, NT_STATUS_IO_TIMEOUT}, { 319 - ERRDOS, 38, NT_STATUS_FILE_FORCED_CLOSED}, { 320 - ERRHRD, ERRgeneral, NT_STATUS_PROFILING_NOT_STARTED}, { 321 - ERRHRD, ERRgeneral, NT_STATUS_PROFILING_NOT_STOPPED}, { 322 - ERRHRD, ERRgeneral, NT_STATUS_COULD_NOT_INTERPRET}, { 323 - ERRDOS, ERRnoaccess, NT_STATUS_FILE_IS_A_DIRECTORY}, { 324 - ERRDOS, ERRunsup, NT_STATUS_NOT_SUPPORTED}, { 325 - ERRDOS, 51, NT_STATUS_REMOTE_NOT_LISTENING}, { 326 - ERRDOS, 52, NT_STATUS_DUPLICATE_NAME}, { 327 - ERRDOS, 53, NT_STATUS_BAD_NETWORK_PATH}, { 328 - ERRDOS, 54, NT_STATUS_NETWORK_BUSY}, { 329 - ERRDOS, 55, NT_STATUS_DEVICE_DOES_NOT_EXIST}, { 330 - ERRDOS, 56, NT_STATUS_TOO_MANY_COMMANDS}, { 331 - ERRDOS, 57, NT_STATUS_ADAPTER_HARDWARE_ERROR}, { 332 - ERRDOS, 58, NT_STATUS_INVALID_NETWORK_RESPONSE}, { 333 - ERRDOS, 59, NT_STATUS_UNEXPECTED_NETWORK_ERROR}, { 334 - ERRDOS, 60, NT_STATUS_BAD_REMOTE_ADAPTER}, { 335 - ERRDOS, 61, NT_STATUS_PRINT_QUEUE_FULL}, { 336 - ERRDOS, 62, NT_STATUS_NO_SPOOL_SPACE}, { 337 - ERRDOS, 63, NT_STATUS_PRINT_CANCELLED}, { 338 - ERRDOS, 64, NT_STATUS_NETWORK_NAME_DELETED}, { 339 - ERRDOS, 65, NT_STATUS_NETWORK_ACCESS_DENIED}, { 340 - ERRDOS, 66, NT_STATUS_BAD_DEVICE_TYPE}, { 341 - ERRDOS, ERRnosuchshare, NT_STATUS_BAD_NETWORK_NAME}, { 342 - ERRDOS, 68, NT_STATUS_TOO_MANY_NAMES}, { 343 - ERRDOS, 69, NT_STATUS_TOO_MANY_SESSIONS}, { 344 - ERRDOS, 70, NT_STATUS_SHARING_PAUSED}, { 345 - ERRDOS, 71, NT_STATUS_REQUEST_NOT_ACCEPTED}, { 346 - ERRDOS, 72, NT_STATUS_REDIRECTOR_PAUSED}, { 347 - ERRDOS, 88, NT_STATUS_NET_WRITE_FAULT}, { 348 - ERRHRD, ERRgeneral, NT_STATUS_PROFILING_AT_LIMIT}, { 349 - ERRDOS, ERRdiffdevice, NT_STATUS_NOT_SAME_DEVICE}, { 350 - ERRDOS, ERRnoaccess, NT_STATUS_FILE_RENAMED}, { 351 - ERRDOS, 240, NT_STATUS_VIRTUAL_CIRCUIT_CLOSED}, { 352 - ERRHRD, ERRgeneral, NT_STATUS_NO_SECURITY_ON_OBJECT}, { 353 - ERRHRD, ERRgeneral, NT_STATUS_CANT_WAIT}, { 354 - ERRDOS, ERRpipeclosing, NT_STATUS_PIPE_EMPTY}, { 355 - ERRHRD, ERRgeneral, NT_STATUS_CANT_ACCESS_DOMAIN_INFO}, { 356 - ERRHRD, ERRgeneral, NT_STATUS_CANT_TERMINATE_SELF}, { 357 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_SERVER_STATE}, { 358 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_DOMAIN_STATE}, { 359 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_DOMAIN_ROLE}, { 360 - ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_DOMAIN}, { 361 - ERRHRD, ERRgeneral, NT_STATUS_DOMAIN_EXISTS}, { 362 - ERRHRD, ERRgeneral, NT_STATUS_DOMAIN_LIMIT_EXCEEDED}, { 363 - ERRDOS, 300, NT_STATUS_OPLOCK_NOT_GRANTED}, { 364 - ERRDOS, 301, NT_STATUS_INVALID_OPLOCK_PROTOCOL}, { 365 - ERRHRD, ERRgeneral, NT_STATUS_INTERNAL_DB_CORRUPTION}, { 366 - ERRHRD, ERRgeneral, NT_STATUS_INTERNAL_ERROR}, { 367 - ERRHRD, ERRgeneral, NT_STATUS_GENERIC_NOT_MAPPED}, { 368 - ERRHRD, ERRgeneral, NT_STATUS_BAD_DESCRIPTOR_FORMAT}, { 369 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_USER_BUFFER}, { 370 - ERRHRD, ERRgeneral, NT_STATUS_UNEXPECTED_IO_ERROR}, { 371 - ERRHRD, ERRgeneral, NT_STATUS_UNEXPECTED_MM_CREATE_ERR}, { 372 - ERRHRD, ERRgeneral, NT_STATUS_UNEXPECTED_MM_MAP_ERROR}, { 373 - ERRHRD, ERRgeneral, NT_STATUS_UNEXPECTED_MM_EXTEND_ERR}, { 374 - ERRHRD, ERRgeneral, NT_STATUS_NOT_LOGON_PROCESS}, { 375 - ERRHRD, ERRgeneral, NT_STATUS_LOGON_SESSION_EXISTS}, { 376 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_1}, { 377 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_2}, { 378 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_3}, { 379 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_4}, { 380 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_5}, { 381 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_6}, { 382 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_7}, { 383 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_8}, { 384 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_9}, { 385 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_10}, { 386 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_11}, { 387 - ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_12}, { 388 - ERRDOS, ERRbadpath, NT_STATUS_REDIRECTOR_NOT_STARTED}, { 389 - ERRHRD, ERRgeneral, NT_STATUS_REDIRECTOR_STARTED}, { 390 - ERRHRD, ERRgeneral, NT_STATUS_STACK_OVERFLOW}, { 391 - ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_PACKAGE}, { 392 - ERRHRD, ERRgeneral, NT_STATUS_BAD_FUNCTION_TABLE}, { 393 - ERRDOS, 203, NT_STATUS_VARIABLE_NOT_FOUND}, { 394 - ERRDOS, 145, NT_STATUS_DIRECTORY_NOT_EMPTY}, { 395 - ERRHRD, ERRgeneral, NT_STATUS_FILE_CORRUPT_ERROR}, { 396 - ERRDOS, 267, NT_STATUS_NOT_A_DIRECTORY}, { 397 - ERRHRD, ERRgeneral, NT_STATUS_BAD_LOGON_SESSION_STATE}, { 398 - ERRHRD, ERRgeneral, NT_STATUS_LOGON_SESSION_COLLISION}, { 399 - ERRDOS, 206, NT_STATUS_NAME_TOO_LONG}, { 400 - ERRDOS, 2401, NT_STATUS_FILES_OPEN}, { 401 - ERRDOS, 2404, NT_STATUS_CONNECTION_IN_USE}, { 402 - ERRHRD, ERRgeneral, NT_STATUS_MESSAGE_NOT_FOUND}, { 403 - ERRDOS, ERRnoaccess, NT_STATUS_PROCESS_IS_TERMINATING}, { 404 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_LOGON_TYPE}, { 405 - ERRHRD, ERRgeneral, NT_STATUS_NO_GUID_TRANSLATION}, { 406 - ERRHRD, ERRgeneral, NT_STATUS_CANNOT_IMPERSONATE}, { 407 - ERRHRD, ERRgeneral, NT_STATUS_IMAGE_ALREADY_LOADED}, { 408 - ERRHRD, ERRgeneral, NT_STATUS_ABIOS_NOT_PRESENT}, { 409 - ERRHRD, ERRgeneral, NT_STATUS_ABIOS_LID_NOT_EXIST}, { 410 - ERRHRD, ERRgeneral, NT_STATUS_ABIOS_LID_ALREADY_OWNED}, { 411 - ERRHRD, ERRgeneral, NT_STATUS_ABIOS_NOT_LID_OWNER}, { 412 - ERRHRD, ERRgeneral, NT_STATUS_ABIOS_INVALID_COMMAND}, { 413 - ERRHRD, ERRgeneral, NT_STATUS_ABIOS_INVALID_LID}, { 414 - ERRHRD, ERRgeneral, NT_STATUS_ABIOS_SELECTOR_NOT_AVAILABLE}, { 415 - ERRHRD, ERRgeneral, NT_STATUS_ABIOS_INVALID_SELECTOR}, { 416 - ERRHRD, ERRgeneral, NT_STATUS_NO_LDT}, { 417 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_LDT_SIZE}, { 418 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_LDT_OFFSET}, { 419 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_LDT_DESCRIPTOR}, { 420 - ERRDOS, 193, NT_STATUS_INVALID_IMAGE_NE_FORMAT}, { 421 - ERRHRD, ERRgeneral, NT_STATUS_RXACT_INVALID_STATE}, { 422 - ERRHRD, ERRgeneral, NT_STATUS_RXACT_COMMIT_FAILURE}, { 423 - ERRHRD, ERRgeneral, NT_STATUS_MAPPED_FILE_SIZE_ZERO}, { 424 - ERRDOS, ERRnofids, NT_STATUS_TOO_MANY_OPENED_FILES}, { 425 - ERRHRD, ERRgeneral, NT_STATUS_CANCELLED}, { 426 - ERRDOS, ERRnoaccess, NT_STATUS_CANNOT_DELETE}, { 427 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_COMPUTER_NAME}, { 428 - ERRDOS, ERRnoaccess, NT_STATUS_FILE_DELETED}, { 429 - ERRHRD, ERRgeneral, NT_STATUS_SPECIAL_ACCOUNT}, { 430 - ERRHRD, ERRgeneral, NT_STATUS_SPECIAL_GROUP}, { 431 - ERRHRD, ERRgeneral, NT_STATUS_SPECIAL_USER}, { 432 - ERRHRD, ERRgeneral, NT_STATUS_MEMBERS_PRIMARY_GROUP}, { 433 - ERRDOS, ERRbadfid, NT_STATUS_FILE_CLOSED}, { 434 - ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_THREADS}, { 435 - ERRHRD, ERRgeneral, NT_STATUS_THREAD_NOT_IN_PROCESS}, { 436 - ERRHRD, ERRgeneral, NT_STATUS_TOKEN_ALREADY_IN_USE}, { 437 - ERRHRD, ERRgeneral, NT_STATUS_PAGEFILE_QUOTA_EXCEEDED}, { 438 - ERRHRD, ERRgeneral, NT_STATUS_COMMITMENT_LIMIT}, { 439 - ERRDOS, 193, NT_STATUS_INVALID_IMAGE_LE_FORMAT}, { 440 - ERRDOS, 193, NT_STATUS_INVALID_IMAGE_NOT_MZ}, { 441 - ERRDOS, 193, NT_STATUS_INVALID_IMAGE_PROTECT}, { 442 - ERRDOS, 193, NT_STATUS_INVALID_IMAGE_WIN_16}, { 443 - ERRHRD, ERRgeneral, NT_STATUS_LOGON_SERVER_CONFLICT}, { 444 - ERRHRD, ERRgeneral, NT_STATUS_TIME_DIFFERENCE_AT_DC}, { 445 - ERRHRD, ERRgeneral, NT_STATUS_SYNCHRONIZATION_REQUIRED}, { 446 - ERRDOS, 126, NT_STATUS_DLL_NOT_FOUND}, { 447 - ERRHRD, ERRgeneral, NT_STATUS_OPEN_FAILED}, { 448 - ERRHRD, ERRgeneral, NT_STATUS_IO_PRIVILEGE_FAILED}, { 449 - ERRDOS, 182, NT_STATUS_ORDINAL_NOT_FOUND}, { 450 - ERRDOS, 127, NT_STATUS_ENTRYPOINT_NOT_FOUND}, { 451 - ERRHRD, ERRgeneral, NT_STATUS_CONTROL_C_EXIT}, { 452 - ERRDOS, 64, NT_STATUS_LOCAL_DISCONNECT}, { 453 - ERRDOS, 64, NT_STATUS_REMOTE_DISCONNECT}, { 454 - ERRDOS, 51, NT_STATUS_REMOTE_RESOURCES}, { 455 - ERRDOS, 59, NT_STATUS_LINK_FAILED}, { 456 - ERRDOS, 59, NT_STATUS_LINK_TIMEOUT}, { 457 - ERRDOS, 59, NT_STATUS_INVALID_CONNECTION}, { 458 - ERRDOS, 59, NT_STATUS_INVALID_ADDRESS}, { 459 - ERRHRD, ERRgeneral, NT_STATUS_DLL_INIT_FAILED}, { 460 - ERRHRD, ERRgeneral, NT_STATUS_MISSING_SYSTEMFILE}, { 461 - ERRHRD, ERRgeneral, NT_STATUS_UNHANDLED_EXCEPTION}, { 462 - ERRHRD, ERRgeneral, NT_STATUS_APP_INIT_FAILURE}, { 463 - ERRHRD, ERRgeneral, NT_STATUS_PAGEFILE_CREATE_FAILED}, { 464 - ERRHRD, ERRgeneral, NT_STATUS_NO_PAGEFILE}, { 465 - ERRDOS, 124, NT_STATUS_INVALID_LEVEL}, { 466 - ERRDOS, 86, NT_STATUS_WRONG_PASSWORD_CORE}, { 467 - ERRHRD, ERRgeneral, NT_STATUS_ILLEGAL_FLOAT_CONTEXT}, { 468 - ERRDOS, 109, NT_STATUS_PIPE_BROKEN}, { 469 - ERRHRD, ERRgeneral, NT_STATUS_REGISTRY_CORRUPT}, { 470 - ERRHRD, ERRgeneral, NT_STATUS_REGISTRY_IO_FAILED}, { 471 - ERRHRD, ERRgeneral, NT_STATUS_NO_EVENT_PAIR}, { 472 - ERRHRD, ERRgeneral, NT_STATUS_UNRECOGNIZED_VOLUME}, { 473 - ERRHRD, ERRgeneral, NT_STATUS_SERIAL_NO_DEVICE_INITED}, { 474 - ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_ALIAS}, { 475 - ERRHRD, ERRgeneral, NT_STATUS_MEMBER_NOT_IN_ALIAS}, { 476 - ERRHRD, ERRgeneral, NT_STATUS_MEMBER_IN_ALIAS}, { 477 - ERRHRD, ERRgeneral, NT_STATUS_ALIAS_EXISTS}, { 478 - ERRHRD, ERRgeneral, NT_STATUS_LOGON_NOT_GRANTED}, { 479 - ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_SECRETS}, { 480 - ERRHRD, ERRgeneral, NT_STATUS_SECRET_TOO_LONG}, { 481 - ERRHRD, ERRgeneral, NT_STATUS_INTERNAL_DB_ERROR}, { 482 - ERRHRD, ERRgeneral, NT_STATUS_FULLSCREEN_MODE}, { 483 - ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_CONTEXT_IDS}, { 484 - ERRDOS, ERRnoaccess, NT_STATUS_LOGON_TYPE_NOT_GRANTED}, { 485 - ERRHRD, ERRgeneral, NT_STATUS_NOT_REGISTRY_FILE}, { 486 - ERRHRD, ERRgeneral, NT_STATUS_NT_CROSS_ENCRYPTION_REQUIRED}, { 487 - ERRHRD, ERRgeneral, NT_STATUS_DOMAIN_CTRLR_CONFIG_ERROR}, { 488 - ERRHRD, ERRgeneral, NT_STATUS_FT_MISSING_MEMBER}, { 489 - ERRHRD, ERRgeneral, NT_STATUS_ILL_FORMED_SERVICE_ENTRY}, { 490 - ERRHRD, ERRgeneral, NT_STATUS_ILLEGAL_CHARACTER}, { 491 - ERRHRD, ERRgeneral, NT_STATUS_UNMAPPABLE_CHARACTER}, { 492 - ERRHRD, ERRgeneral, NT_STATUS_UNDEFINED_CHARACTER}, { 493 - ERRHRD, ERRgeneral, NT_STATUS_FLOPPY_VOLUME}, { 494 - ERRHRD, ERRgeneral, NT_STATUS_FLOPPY_ID_MARK_NOT_FOUND}, { 495 - ERRHRD, ERRgeneral, NT_STATUS_FLOPPY_WRONG_CYLINDER}, { 496 - ERRHRD, ERRgeneral, NT_STATUS_FLOPPY_UNKNOWN_ERROR}, { 497 - ERRHRD, ERRgeneral, NT_STATUS_FLOPPY_BAD_REGISTERS}, { 498 - ERRHRD, ERRgeneral, NT_STATUS_DISK_RECALIBRATE_FAILED}, { 499 - ERRHRD, ERRgeneral, NT_STATUS_DISK_OPERATION_FAILED}, { 500 - ERRHRD, ERRgeneral, NT_STATUS_DISK_RESET_FAILED}, { 501 - ERRHRD, ERRgeneral, NT_STATUS_SHARED_IRQ_BUSY}, { 502 - ERRHRD, ERRgeneral, NT_STATUS_FT_ORPHANING}, { 503 - ERRHRD, ERRgeneral, NT_STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT}, { 504 - ERRHRD, ERRgeneral, NT_STATUS_PARTITION_FAILURE}, { 505 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_BLOCK_LENGTH}, { 506 - ERRHRD, ERRgeneral, NT_STATUS_DEVICE_NOT_PARTITIONED}, { 507 - ERRHRD, ERRgeneral, NT_STATUS_UNABLE_TO_LOCK_MEDIA}, { 508 - ERRHRD, ERRgeneral, NT_STATUS_UNABLE_TO_UNLOAD_MEDIA}, { 509 - ERRHRD, ERRgeneral, NT_STATUS_EOM_OVERFLOW}, { 510 - ERRHRD, ERRgeneral, NT_STATUS_NO_MEDIA}, { 511 - ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_MEMBER}, { 512 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_MEMBER}, { 513 - ERRHRD, ERRgeneral, NT_STATUS_KEY_DELETED}, { 514 - ERRHRD, ERRgeneral, NT_STATUS_NO_LOG_SPACE}, { 515 - ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_SIDS}, { 516 - ERRHRD, ERRgeneral, NT_STATUS_LM_CROSS_ENCRYPTION_REQUIRED}, { 517 - ERRHRD, ERRgeneral, NT_STATUS_KEY_HAS_CHILDREN}, { 518 - ERRHRD, ERRgeneral, NT_STATUS_CHILD_MUST_BE_VOLATILE}, { 519 - ERRDOS, 87, NT_STATUS_DEVICE_CONFIGURATION_ERROR}, { 520 - ERRHRD, ERRgeneral, NT_STATUS_DRIVER_INTERNAL_ERROR}, { 521 - ERRDOS, 22, NT_STATUS_INVALID_DEVICE_STATE}, { 522 - ERRHRD, ERRgeneral, NT_STATUS_IO_DEVICE_ERROR}, { 523 - ERRHRD, ERRgeneral, NT_STATUS_DEVICE_PROTOCOL_ERROR}, { 524 - ERRHRD, ERRgeneral, NT_STATUS_BACKUP_CONTROLLER}, { 525 - ERRHRD, ERRgeneral, NT_STATUS_LOG_FILE_FULL}, { 526 - ERRDOS, 19, NT_STATUS_TOO_LATE}, { 527 - ERRDOS, ERRnoaccess, NT_STATUS_NO_TRUST_LSA_SECRET}, 528 - /* { This NT error code was 'sqashed' 529 - from NT_STATUS_NO_TRUST_SAM_ACCOUNT to 530 - NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE during the session setup } */ 531 - { 532 - ERRDOS, ERRnoaccess, NT_STATUS_NO_TRUST_SAM_ACCOUNT}, { 533 - ERRDOS, ERRnoaccess, NT_STATUS_TRUSTED_DOMAIN_FAILURE}, { 534 - ERRDOS, ERRnoaccess, NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE}, { 535 - ERRHRD, ERRgeneral, NT_STATUS_EVENTLOG_FILE_CORRUPT}, { 536 - ERRHRD, ERRgeneral, NT_STATUS_EVENTLOG_CANT_START}, { 537 - ERRDOS, ERRnoaccess, NT_STATUS_TRUST_FAILURE}, { 538 - ERRHRD, ERRgeneral, NT_STATUS_MUTANT_LIMIT_EXCEEDED}, { 539 - ERRDOS, ERRnetlogonNotStarted, NT_STATUS_NETLOGON_NOT_STARTED}, { 540 - ERRSRV, ERRaccountexpired, NT_STATUS_ACCOUNT_EXPIRED}, { 541 - ERRHRD, ERRgeneral, NT_STATUS_POSSIBLE_DEADLOCK}, { 542 - ERRHRD, ERRgeneral, NT_STATUS_NETWORK_CREDENTIAL_CONFLICT}, { 543 - ERRHRD, ERRgeneral, NT_STATUS_REMOTE_SESSION_LIMIT}, { 544 - ERRHRD, ERRgeneral, NT_STATUS_EVENTLOG_FILE_CHANGED}, { 545 - ERRDOS, ERRnoaccess, NT_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT}, { 546 - ERRDOS, ERRnoaccess, NT_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT}, { 547 - ERRDOS, ERRnoaccess, NT_STATUS_NOLOGON_SERVER_TRUST_ACCOUNT}, 548 - /* { This NT error code was 'sqashed' 549 - from NT_STATUS_DOMAIN_TRUST_INCONSISTENT to NT_STATUS_LOGON_FAILURE 550 - during the session setup } */ 551 - { 552 - ERRDOS, ERRnoaccess, NT_STATUS_DOMAIN_TRUST_INCONSISTENT}, { 553 - ERRHRD, ERRgeneral, NT_STATUS_FS_DRIVER_REQUIRED}, { 554 - ERRHRD, ERRgeneral, NT_STATUS_NO_USER_SESSION_KEY}, { 555 - ERRDOS, 59, NT_STATUS_USER_SESSION_DELETED}, { 556 - ERRHRD, ERRgeneral, NT_STATUS_RESOURCE_LANG_NOT_FOUND}, { 557 - ERRDOS, ERRnoresource, NT_STATUS_INSUFF_SERVER_RESOURCES}, { 558 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_BUFFER_SIZE}, { 559 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_ADDRESS_COMPONENT}, { 560 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_ADDRESS_WILDCARD}, { 561 - ERRDOS, 68, NT_STATUS_TOO_MANY_ADDRESSES}, { 562 - ERRDOS, 52, NT_STATUS_ADDRESS_ALREADY_EXISTS}, { 563 - ERRDOS, 64, NT_STATUS_ADDRESS_CLOSED}, { 564 - ERRDOS, 64, NT_STATUS_CONNECTION_DISCONNECTED}, { 565 - ERRDOS, 64, NT_STATUS_CONNECTION_RESET}, { 566 - ERRDOS, 68, NT_STATUS_TOO_MANY_NODES}, { 567 - ERRDOS, 59, NT_STATUS_TRANSACTION_ABORTED}, { 568 - ERRDOS, 59, NT_STATUS_TRANSACTION_TIMED_OUT}, { 569 - ERRDOS, 59, NT_STATUS_TRANSACTION_NO_RELEASE}, { 570 - ERRDOS, 59, NT_STATUS_TRANSACTION_NO_MATCH}, { 571 - ERRDOS, 59, NT_STATUS_TRANSACTION_RESPONDED}, { 572 - ERRDOS, 59, NT_STATUS_TRANSACTION_INVALID_ID}, { 573 - ERRDOS, 59, NT_STATUS_TRANSACTION_INVALID_TYPE}, { 574 - ERRDOS, ERRunsup, NT_STATUS_NOT_SERVER_SESSION}, { 575 - ERRDOS, ERRunsup, NT_STATUS_NOT_CLIENT_SESSION}, { 576 - ERRHRD, ERRgeneral, NT_STATUS_CANNOT_LOAD_REGISTRY_FILE}, { 577 - ERRHRD, ERRgeneral, NT_STATUS_DEBUG_ATTACH_FAILED}, { 578 - ERRHRD, ERRgeneral, NT_STATUS_SYSTEM_PROCESS_TERMINATED}, { 579 - ERRHRD, ERRgeneral, NT_STATUS_DATA_NOT_ACCEPTED}, { 580 - ERRHRD, ERRgeneral, NT_STATUS_NO_BROWSER_SERVERS_FOUND}, { 581 - ERRHRD, ERRgeneral, NT_STATUS_VDM_HARD_ERROR}, { 582 - ERRHRD, ERRgeneral, NT_STATUS_DRIVER_CANCEL_TIMEOUT}, { 583 - ERRHRD, ERRgeneral, NT_STATUS_REPLY_MESSAGE_MISMATCH}, { 584 - ERRHRD, ERRgeneral, NT_STATUS_MAPPED_ALIGNMENT}, { 585 - ERRDOS, 193, NT_STATUS_IMAGE_CHECKSUM_MISMATCH}, { 586 - ERRHRD, ERRgeneral, NT_STATUS_LOST_WRITEBEHIND_DATA}, { 587 - ERRHRD, ERRgeneral, NT_STATUS_CLIENT_SERVER_PARAMETERS_INVALID}, { 588 - ERRSRV, ERRpasswordExpired, NT_STATUS_PASSWORD_MUST_CHANGE}, { 589 - ERRHRD, ERRgeneral, NT_STATUS_NOT_FOUND}, { 590 - ERRHRD, ERRgeneral, NT_STATUS_NOT_TINY_STREAM}, { 591 - ERRHRD, ERRgeneral, NT_STATUS_RECOVERY_FAILURE}, { 592 - ERRHRD, ERRgeneral, NT_STATUS_STACK_OVERFLOW_READ}, { 593 - ERRHRD, ERRgeneral, NT_STATUS_FAIL_CHECK}, { 594 - ERRHRD, ERRgeneral, NT_STATUS_DUPLICATE_OBJECTID}, { 595 - ERRHRD, ERRgeneral, NT_STATUS_OBJECTID_EXISTS}, { 596 - ERRHRD, ERRgeneral, NT_STATUS_CONVERT_TO_LARGE}, { 597 - ERRHRD, ERRgeneral, NT_STATUS_RETRY}, { 598 - ERRHRD, ERRgeneral, NT_STATUS_FOUND_OUT_OF_SCOPE}, { 599 - ERRHRD, ERRgeneral, NT_STATUS_ALLOCATE_BUCKET}, { 600 - ERRHRD, ERRgeneral, NT_STATUS_PROPSET_NOT_FOUND}, { 601 - ERRHRD, ERRgeneral, NT_STATUS_MARSHALL_OVERFLOW}, { 602 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_VARIANT}, { 603 - ERRHRD, ERRgeneral, NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND}, { 604 - ERRDOS, ERRnoaccess, NT_STATUS_ACCOUNT_LOCKED_OUT}, { 605 - ERRDOS, ERRbadfid, NT_STATUS_HANDLE_NOT_CLOSABLE}, { 606 - ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_REFUSED}, { 607 - ERRHRD, ERRgeneral, NT_STATUS_GRACEFUL_DISCONNECT}, { 608 - ERRHRD, ERRgeneral, NT_STATUS_ADDRESS_ALREADY_ASSOCIATED}, { 609 - ERRHRD, ERRgeneral, NT_STATUS_ADDRESS_NOT_ASSOCIATED}, { 610 - ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_INVALID}, { 611 - ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_ACTIVE}, { 612 - ERRHRD, ERRgeneral, NT_STATUS_NETWORK_UNREACHABLE}, { 613 - ERRHRD, ERRgeneral, NT_STATUS_HOST_UNREACHABLE}, { 614 - ERRHRD, ERRgeneral, NT_STATUS_PROTOCOL_UNREACHABLE}, { 615 - ERRHRD, ERRgeneral, NT_STATUS_PORT_UNREACHABLE}, { 616 - ERRHRD, ERRgeneral, NT_STATUS_REQUEST_ABORTED}, { 617 - ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_ABORTED}, { 618 - ERRHRD, ERRgeneral, NT_STATUS_BAD_COMPRESSION_BUFFER}, { 619 - ERRHRD, ERRgeneral, NT_STATUS_USER_MAPPED_FILE}, { 620 - ERRHRD, ERRgeneral, NT_STATUS_AUDIT_FAILED}, { 621 - ERRHRD, ERRgeneral, NT_STATUS_TIMER_RESOLUTION_NOT_SET}, { 622 - ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_COUNT_LIMIT}, { 623 - ERRHRD, ERRgeneral, NT_STATUS_LOGIN_TIME_RESTRICTION}, { 624 - ERRHRD, ERRgeneral, NT_STATUS_LOGIN_WKSTA_RESTRICTION}, { 625 - ERRDOS, 193, NT_STATUS_IMAGE_MP_UP_MISMATCH}, { 626 - ERRHRD, ERRgeneral, NT_STATUS_INSUFFICIENT_LOGON_INFO}, { 627 - ERRHRD, ERRgeneral, NT_STATUS_BAD_DLL_ENTRYPOINT}, { 628 - ERRHRD, ERRgeneral, NT_STATUS_BAD_SERVICE_ENTRYPOINT}, { 629 - ERRHRD, ERRgeneral, NT_STATUS_LPC_REPLY_LOST}, { 630 - ERRHRD, ERRgeneral, NT_STATUS_IP_ADDRESS_CONFLICT1}, { 631 - ERRHRD, ERRgeneral, NT_STATUS_IP_ADDRESS_CONFLICT2}, { 632 - ERRHRD, ERRgeneral, NT_STATUS_REGISTRY_QUOTA_LIMIT}, { 633 - ERRSRV, 3, NT_STATUS_PATH_NOT_COVERED}, { 634 - ERRHRD, ERRgeneral, NT_STATUS_NO_CALLBACK_ACTIVE}, { 635 - ERRHRD, ERRgeneral, NT_STATUS_LICENSE_QUOTA_EXCEEDED}, { 636 - ERRHRD, ERRgeneral, NT_STATUS_PWD_TOO_SHORT}, { 637 - ERRHRD, ERRgeneral, NT_STATUS_PWD_TOO_RECENT}, { 638 - ERRHRD, ERRgeneral, NT_STATUS_PWD_HISTORY_CONFLICT}, { 639 - ERRHRD, ERRgeneral, NT_STATUS_PLUGPLAY_NO_DEVICE}, { 640 - ERRHRD, ERRgeneral, NT_STATUS_UNSUPPORTED_COMPRESSION}, { 641 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_HW_PROFILE}, { 642 - ERRHRD, ERRgeneral, NT_STATUS_INVALID_PLUGPLAY_DEVICE_PATH}, { 643 - ERRDOS, 182, NT_STATUS_DRIVER_ORDINAL_NOT_FOUND}, { 644 - ERRDOS, 127, NT_STATUS_DRIVER_ENTRYPOINT_NOT_FOUND}, { 645 - ERRDOS, 288, NT_STATUS_RESOURCE_NOT_OWNED}, { 646 - ERRDOS, ErrTooManyLinks, NT_STATUS_TOO_MANY_LINKS}, { 647 - ERRHRD, ERRgeneral, NT_STATUS_QUOTA_LIST_INCONSISTENT}, { 648 - ERRHRD, ERRgeneral, NT_STATUS_FILE_IS_OFFLINE}, { 649 - ERRDOS, 21, NT_STATUS_VOLUME_DISMOUNTED}, { 650 - ERRDOS, 161, NT_STATUS_DIRECTORY_IS_A_REPARSE_POINT}, { 651 - ERRDOS, ERRnoaccess, NT_STATUS_ENCRYPTION_FAILED}, { 652 - ERRDOS, ERRnoaccess, NT_STATUS_DECRYPTION_FAILED}, { 653 - ERRHRD, ERRgeneral, NT_STATUS_RANGE_NOT_FOUND}, { 654 - ERRDOS, ERRnoaccess, NT_STATUS_NO_RECOVERY_POLICY}, { 655 - ERRDOS, ERRnoaccess, NT_STATUS_NO_EFS}, { 656 - ERRDOS, ERRnoaccess, NT_STATUS_WRONG_EFS}, { 657 - ERRDOS, ERRnoaccess, NT_STATUS_NO_USER_KEYS}, { 658 - ERRDOS, ERRbadfunc, NT_STATUS_VOLUME_NOT_UPGRADED}, { 659 - ERRDOS, ERRsymlink, NT_STATUS_STOPPED_ON_SYMLINK}, { 660 - ERRDOS, ERRunknownlevel, NT_STATUS_OS2_INVALID_LEVEL}, { 661 - 0, 0, 0 } 662 - }; 663 50 664 - /***************************************************************************** 665 - Print an error message from the status code 666 - *****************************************************************************/ 667 - static void 668 - cifs_print_status(__u32 status_code) 51 + static __always_inline int ntstatus_to_dos_cmp(const void *_key, const void *_pivot) 669 52 { 670 - int idx = 0; 53 + __u32 key = *(__u32 *)_key; 54 + const struct ntstatus_to_dos_err *pivot = _pivot; 671 55 672 - while (nt_errs[idx].nt_errstr != NULL) { 673 - if (nt_errs[idx].nt_errcode == status_code) { 674 - pr_notice("Status code returned 0x%08x %s\n", 675 - status_code, nt_errs[idx].nt_errstr); 676 - return; 677 - } 678 - idx++; 679 - } 680 - return; 56 + if (key < pivot->ntstatus) 57 + return -1; 58 + if (key > pivot->ntstatus) 59 + return 1; 60 + return 0; 681 61 } 682 62 63 + /* NT status -> dos error map */ 64 + static const struct ntstatus_to_dos_err ntstatus_to_dos_map[] = { 65 + /* 66 + * Automatically generated by the `gen_smb1_mapping` script, 67 + * sorted by NT status code (ascending). 68 + */ 69 + #include "smb1_mapping_table.c" 70 + }; 683 71 684 - static void 685 - ntstatus_to_dos(__u32 ntstatus, __u8 *eclass, __u16 *ecode) 72 + static const struct ntstatus_to_dos_err * 73 + search_ntstatus_to_dos_map(__u32 ntstatus) 686 74 { 687 - int i; 688 - if (ntstatus == 0) { 689 - *eclass = 0; 690 - *ecode = 0; 691 - return; 692 - } 693 - for (i = 0; ntstatus_to_dos_map[i].ntstatus; i++) { 694 - if (ntstatus == ntstatus_to_dos_map[i].ntstatus) { 695 - *eclass = ntstatus_to_dos_map[i].dos_class; 696 - *ecode = ntstatus_to_dos_map[i].dos_code; 697 - return; 698 - } 699 - } 700 - *eclass = ERRHRD; 701 - *ecode = ERRgeneral; 75 + return __inline_bsearch(&ntstatus, ntstatus_to_dos_map, 76 + ARRAY_SIZE(ntstatus_to_dos_map), 77 + sizeof(struct ntstatus_to_dos_err), 78 + ntstatus_to_dos_cmp); 79 + } 80 + 81 + static const struct smb_to_posix_error * 82 + search_mapping_table_ERRDOS(__u16 smb_err) 83 + { 84 + return __inline_bsearch(&smb_err, mapping_table_ERRDOS, 85 + ARRAY_SIZE(mapping_table_ERRDOS), 86 + sizeof(struct smb_to_posix_error), 87 + smb1_posix_error_cmp); 88 + } 89 + 90 + static const struct smb_to_posix_error * 91 + search_mapping_table_ERRSRV(__u16 smb_err) 92 + { 93 + return __inline_bsearch(&smb_err, mapping_table_ERRSRV, 94 + ARRAY_SIZE(mapping_table_ERRSRV), 95 + sizeof(struct smb_to_posix_error), 96 + smb1_posix_error_cmp); 702 97 } 703 98 704 99 int 705 100 map_smb_to_linux_error(char *buf, bool logErr) 706 101 { 707 102 struct smb_hdr *smb = (struct smb_hdr *)buf; 708 - unsigned int i; 709 103 int rc = -EIO; /* if transport error smb error may not be set */ 710 104 __u8 smberrclass; 711 105 __u16 smberrcode; 106 + const struct smb_to_posix_error *err_map = NULL; 712 107 713 108 /* BB if NT Status codes - map NT BB */ 714 109 ··· 115 720 /* translate the newer STATUS codes to old style SMB errors 116 721 * and then to POSIX errors */ 117 722 __u32 err = le32_to_cpu(smb->Status.CifsError); 118 - if (logErr && (err != (NT_STATUS_MORE_PROCESSING_REQUIRED))) 119 - cifs_print_status(err); 120 - else if (cifsFYI & CIFS_RC) 121 - cifs_print_status(err); 122 - ntstatus_to_dos(err, &smberrclass, &smberrcode); 723 + const struct ntstatus_to_dos_err *map = search_ntstatus_to_dos_map(err); 724 + 725 + if (map) { 726 + if ((logErr && err != NT_STATUS_MORE_PROCESSING_REQUIRED) || 727 + (cifsFYI & CIFS_RC)) 728 + pr_notice("Status code returned 0x%08x %s\n", 729 + map->ntstatus, map->nt_errstr); 730 + 731 + smberrclass = map->dos_class; 732 + smberrcode = map->dos_code; 733 + } else { 734 + smberrclass = ERRHRD; 735 + smberrcode = ERRgeneral; 736 + } 123 737 } else { 124 738 smberrclass = smb->Status.DosError.ErrorClass; 125 739 smberrcode = le16_to_cpu(smb->Status.DosError.Error); ··· 136 732 137 733 /* old style errors */ 138 734 139 - /* DOS class smb error codes - map DOS */ 140 735 if (smberrclass == ERRDOS) { 736 + /* DOS class smb error codes - map DOS */ 141 737 /* 1 byte field no need to byte reverse */ 142 - for (i = 0; 143 - i < 144 - sizeof(mapping_table_ERRDOS) / 145 - sizeof(struct smb_to_posix_error); i++) { 146 - if (mapping_table_ERRDOS[i].smb_err == 0) 147 - break; 148 - else if (mapping_table_ERRDOS[i].smb_err == 149 - smberrcode) { 150 - rc = mapping_table_ERRDOS[i].posix_code; 151 - break; 152 - } 153 - /* else try next error mapping one to see if match */ 154 - } 738 + err_map = search_mapping_table_ERRDOS(smberrcode); 155 739 } else if (smberrclass == ERRSRV) { 156 740 /* server class of error codes */ 157 - for (i = 0; 158 - i < 159 - sizeof(mapping_table_ERRSRV) / 160 - sizeof(struct smb_to_posix_error); i++) { 161 - if (mapping_table_ERRSRV[i].smb_err == 0) 162 - break; 163 - else if (mapping_table_ERRSRV[i].smb_err == 164 - smberrcode) { 165 - rc = mapping_table_ERRSRV[i].posix_code; 166 - break; 167 - } 168 - /* else try next error mapping to see if match */ 169 - } 741 + err_map = search_mapping_table_ERRSRV(smberrcode); 170 742 } 743 + if (err_map) 744 + rc = err_map->posix_code; 171 745 /* else ERRHRD class errors or junk - return EIO */ 172 746 173 747 /* special cases for NT status codes which cannot be translated to DOS codes */ ··· 193 811 194 812 return rc; 195 813 } 814 + 815 + #define DEFINE_CHECK_SORT_FUNC(__array, __field) \ 816 + static int __init __array ## _is_sorted(void) \ 817 + { \ 818 + unsigned int i; \ 819 + \ 820 + /* Check whether the array is sorted in ascending order */ \ 821 + for (i = 1; i < ARRAY_SIZE(__array); i++) { \ 822 + if (__array[i].__field >= \ 823 + __array[i - 1].__field) \ 824 + continue; \ 825 + \ 826 + pr_err(#__array " array order is incorrect\n"); \ 827 + return -EINVAL; \ 828 + } \ 829 + \ 830 + return 0; \ 831 + } 832 + 833 + /* ntstatus_to_dos_map_is_sorted */ 834 + DEFINE_CHECK_SORT_FUNC(ntstatus_to_dos_map, ntstatus); 835 + /* mapping_table_ERRDOS_is_sorted */ 836 + DEFINE_CHECK_SORT_FUNC(mapping_table_ERRDOS, smb_err); 837 + /* mapping_table_ERRSRV_is_sorted */ 838 + DEFINE_CHECK_SORT_FUNC(mapping_table_ERRSRV, smb_err); 839 + 840 + int __init smb1_init_maperror(void) 841 + { 842 + int rc; 843 + 844 + rc = ntstatus_to_dos_map_is_sorted(); 845 + if (rc) 846 + return rc; 847 + 848 + rc = mapping_table_ERRDOS_is_sorted(); 849 + if (rc) 850 + return rc; 851 + 852 + rc = mapping_table_ERRSRV_is_sorted(); 853 + if (rc) 854 + return rc; 855 + 856 + return rc; 857 + } 858 + 859 + #if IS_ENABLED(CONFIG_SMB1_KUNIT_TESTS) 860 + #define EXPORT_SYMBOL_FOR_SMB_TEST(sym) \ 861 + EXPORT_SYMBOL_FOR_MODULES(sym, "smb1maperror_test") 862 + 863 + const struct ntstatus_to_dos_err * 864 + search_ntstatus_to_dos_map_test(__u32 ntstatus) 865 + { 866 + return search_ntstatus_to_dos_map(ntstatus); 867 + } 868 + EXPORT_SYMBOL_FOR_SMB_TEST(search_ntstatus_to_dos_map_test); 869 + 870 + const struct ntstatus_to_dos_err * 871 + ntstatus_to_dos_map_test = ntstatus_to_dos_map; 872 + EXPORT_SYMBOL_FOR_SMB_TEST(ntstatus_to_dos_map_test); 873 + 874 + unsigned int ntstatus_to_dos_num = ARRAY_SIZE(ntstatus_to_dos_map); 875 + EXPORT_SYMBOL_FOR_SMB_TEST(ntstatus_to_dos_num); 876 + 877 + const struct smb_to_posix_error * 878 + search_mapping_table_ERRDOS_test(__u16 smb_err) 879 + { 880 + return search_mapping_table_ERRDOS(smb_err); 881 + } 882 + EXPORT_SYMBOL_FOR_SMB_TEST(search_mapping_table_ERRDOS_test); 883 + 884 + const struct smb_to_posix_error * 885 + mapping_table_ERRDOS_test = mapping_table_ERRDOS; 886 + EXPORT_SYMBOL_FOR_SMB_TEST(mapping_table_ERRDOS_test); 887 + 888 + unsigned int mapping_table_ERRDOS_num = ARRAY_SIZE(mapping_table_ERRDOS); 889 + EXPORT_SYMBOL_FOR_SMB_TEST(mapping_table_ERRDOS_num); 890 + 891 + const struct smb_to_posix_error * 892 + search_mapping_table_ERRSRV_test(__u16 smb_err) 893 + { 894 + return search_mapping_table_ERRSRV(smb_err); 895 + } 896 + EXPORT_SYMBOL_FOR_SMB_TEST(search_mapping_table_ERRSRV_test); 897 + 898 + const struct smb_to_posix_error * 899 + mapping_table_ERRSRV_test = mapping_table_ERRSRV; 900 + EXPORT_SYMBOL_FOR_SMB_TEST(mapping_table_ERRSRV_test); 901 + 902 + unsigned int mapping_table_ERRSRV_num = ARRAY_SIZE(mapping_table_ERRSRV); 903 + EXPORT_SYMBOL_FOR_SMB_TEST(mapping_table_ERRSRV_num); 904 + #endif
+77
fs/smb/client/smb1maperror_test.c
··· 1 + // SPDX-License-Identifier: GPL-2.0-or-later 2 + /* 3 + * 4 + * KUnit tests of SMB1 maperror 5 + * 6 + * Copyright (C) 2026 KylinSoft Co., Ltd. All rights reserved. 7 + * Author(s): Youling Tang <tangyouling@kylinos.cn> 8 + * ChenXiaoSong <chenxiaosong@kylinos.cn> 9 + * 10 + */ 11 + 12 + #include <kunit/test.h> 13 + #include "smb1proto.h" 14 + #include "nterr.h" 15 + #include "smberr.h" 16 + 17 + #define DEFINE_CHECK_SEARCH_FUNC(__struct_name, __field, \ 18 + __array, __num) \ 19 + static void check_search_ ## __array(struct kunit *test) \ 20 + { \ 21 + unsigned int i; \ 22 + const struct __struct_name *expect, *result; \ 23 + \ 24 + for (i = 0; i < __num; i++) { \ 25 + expect = &__array ## _test[i]; \ 26 + result = search_ ## __array ## _test(expect->__field); \ 27 + KUNIT_ASSERT_NOT_NULL(test, result); \ 28 + test_cmp_ ## __struct_name(test, expect, result); \ 29 + } \ 30 + } 31 + 32 + static void 33 + test_cmp_ntstatus_to_dos_err(struct kunit *test, 34 + const struct ntstatus_to_dos_err *expect, 35 + const struct ntstatus_to_dos_err *result) 36 + { 37 + KUNIT_EXPECT_EQ(test, expect->dos_class, result->dos_class); 38 + KUNIT_EXPECT_EQ(test, expect->dos_code, result->dos_code); 39 + KUNIT_EXPECT_EQ(test, expect->ntstatus, result->ntstatus); 40 + KUNIT_EXPECT_STREQ(test, expect->nt_errstr, result->nt_errstr); 41 + } 42 + 43 + static void 44 + test_cmp_smb_to_posix_error(struct kunit *test, 45 + const struct smb_to_posix_error *expect, 46 + const struct smb_to_posix_error *result) 47 + { 48 + KUNIT_EXPECT_EQ(test, expect->smb_err, result->smb_err); 49 + KUNIT_EXPECT_EQ(test, expect->posix_code, result->posix_code); 50 + } 51 + 52 + /* check_search_ntstatus_to_dos_map */ 53 + DEFINE_CHECK_SEARCH_FUNC(ntstatus_to_dos_err, ntstatus, ntstatus_to_dos_map, 54 + ntstatus_to_dos_num); 55 + /* check_search_mapping_table_ERRDOS */ 56 + DEFINE_CHECK_SEARCH_FUNC(smb_to_posix_error, smb_err, mapping_table_ERRDOS, 57 + mapping_table_ERRDOS_num); 58 + /* check_search_mapping_table_ERRSRV */ 59 + DEFINE_CHECK_SEARCH_FUNC(smb_to_posix_error, smb_err, mapping_table_ERRSRV, 60 + mapping_table_ERRSRV_num); 61 + 62 + static struct kunit_case maperror_test_cases[] = { 63 + KUNIT_CASE(check_search_ntstatus_to_dos_map), 64 + KUNIT_CASE(check_search_mapping_table_ERRDOS), 65 + KUNIT_CASE(check_search_mapping_table_ERRSRV), 66 + {} 67 + }; 68 + 69 + static struct kunit_suite maperror_suite = { 70 + .name = "smb1_maperror", 71 + .test_cases = maperror_test_cases, 72 + }; 73 + 74 + kunit_test_suite(maperror_suite); 75 + 76 + MODULE_LICENSE("GPL"); 77 + MODULE_DESCRIPTION("KUnit tests of SMB1 maperror");
+15
fs/smb/client/smb1proto.h
··· 234 234 * smb1maperror.c 235 235 */ 236 236 int map_smb_to_linux_error(char *buf, bool logErr); 237 + int smb1_init_maperror(void); 237 238 int map_and_check_smb_error(struct TCP_Server_Info *server, 238 239 struct mid_q_entry *mid, bool logErr); 240 + #if IS_ENABLED(CONFIG_SMB1_KUNIT_TESTS) 241 + extern const struct ntstatus_to_dos_err *ntstatus_to_dos_map_test; 242 + extern unsigned int ntstatus_to_dos_num; 243 + const struct ntstatus_to_dos_err * 244 + search_ntstatus_to_dos_map_test(__u32 ntstatus); 245 + extern const struct smb_to_posix_error *mapping_table_ERRDOS_test; 246 + extern unsigned int mapping_table_ERRDOS_num; 247 + const struct smb_to_posix_error * 248 + search_mapping_table_ERRDOS_test(__u16 smb_err); 249 + extern const struct smb_to_posix_error *mapping_table_ERRSRV_test; 250 + extern unsigned int mapping_table_ERRSRV_num; 251 + const struct smb_to_posix_error * 252 + search_mapping_table_ERRSRV_test(__u16 smb_err); 253 + #endif 239 254 240 255 /* 241 256 * smb1misc.c
+12 -8
fs/smb/client/smb2file.c
··· 27 27 { 28 28 struct smb2_err_rsp *err = iov->iov_base; 29 29 struct smb2_symlink_err_rsp *sym = ERR_PTR(-EINVAL); 30 + u8 *end = (u8 *)err + iov->iov_len; 30 31 u32 len; 31 32 32 33 if (err->ErrorContextCount) { 33 - struct smb2_error_context_rsp *p, *end; 34 + struct smb2_error_context_rsp *p; 34 35 35 36 len = (u32)err->ErrorContextCount * (offsetof(struct smb2_error_context_rsp, 36 37 ErrorContextData) + ··· 40 39 return ERR_PTR(-EINVAL); 41 40 42 41 p = (struct smb2_error_context_rsp *)err->ErrorData; 43 - end = (struct smb2_error_context_rsp *)((u8 *)err + iov->iov_len); 44 - do { 42 + while ((u8 *)p + sizeof(*p) <= end) { 45 43 if (le32_to_cpu(p->ErrorId) == SMB2_ERROR_ID_DEFAULT) { 46 44 sym = (struct smb2_symlink_err_rsp *)p->ErrorContextData; 47 45 break; ··· 50 50 51 51 len = ALIGN(le32_to_cpu(p->ErrorDataLength), 8); 52 52 p = (struct smb2_error_context_rsp *)(p->ErrorContextData + len); 53 - } while (p < end); 53 + } 54 54 } else if (le32_to_cpu(err->ByteCount) >= sizeof(*sym) && 55 55 iov->iov_len >= SMB2_SYMLINK_STRUCT_SIZE) { 56 56 sym = (struct smb2_symlink_err_rsp *)err->ErrorData; 57 57 } 58 58 59 - if (!IS_ERR(sym) && (le32_to_cpu(sym->SymLinkErrorTag) != SYMLINK_ERROR_TAG || 60 - le32_to_cpu(sym->ReparseTag) != IO_REPARSE_TAG_SYMLINK)) 59 + if (!IS_ERR(sym) && 60 + ((u8 *)sym + sizeof(*sym) > end || 61 + le32_to_cpu(sym->SymLinkErrorTag) != SYMLINK_ERROR_TAG || 62 + le32_to_cpu(sym->ReparseTag) != IO_REPARSE_TAG_SYMLINK)) 61 63 sym = ERR_PTR(-EINVAL); 62 64 63 65 return sym; ··· 130 128 print_len = le16_to_cpu(sym->PrintNameLength); 131 129 print_offs = le16_to_cpu(sym->PrintNameOffset); 132 130 133 - if (iov->iov_len < SMB2_SYMLINK_STRUCT_SIZE + sub_offs + sub_len || 134 - iov->iov_len < SMB2_SYMLINK_STRUCT_SIZE + print_offs + print_len) 131 + if ((char *)sym->PathBuffer + sub_offs + sub_len > 132 + (char *)iov->iov_base + iov->iov_len || 133 + (char *)sym->PathBuffer + print_offs + print_len > 134 + (char *)iov->iov_base + iov->iov_len) 135 135 return -EINVAL; 136 136 137 137 return smb2_parse_native_symlink(path,
+152 -250
fs/smb/client/smb2inode.c
··· 128 128 nlen = ea->ea_name_length; 129 129 vlen = le16_to_cpu(ea->ea_value_length); 130 130 if (nlen != SMB2_WSL_XATTR_NAME_LEN || 131 - (u8 *)ea + nlen + 1 + vlen > end) 131 + (u8 *)ea->ea_data + nlen + 1 + vlen > end) 132 132 return -EINVAL; 133 133 134 134 switch (vlen) { ··· 163 163 } 164 164 return 0; 165 165 } 166 + 167 + /* 168 + * If @cfile is NULL, then need to account for trailing CLOSE request in the 169 + * compound chain. 170 + */ 171 + static void set_next_compound(struct cifs_tcon *tcon, 172 + struct cifsFileInfo *cfile, 173 + int i, int num_cmds, 174 + struct smb_rqst *rqst, int *num_rqst) 175 + { 176 + int k = !cfile ? 1 : 0; 177 + 178 + if (i + 1 < num_cmds + k) 179 + smb2_set_next_command(tcon, &rqst[*num_rqst]); 180 + if (i + k > 0) 181 + smb2_set_related(&rqst[*num_rqst]); 182 + (*num_rqst)++; 183 + } 184 + 185 + #define COMP_PID(cfile) ((cfile) ? (cfile)->fid.persistent_fid : COMPOUND_FID) 186 + #define COMP_VID(cfile) ((cfile) ? (cfile)->fid.volatile_fid : COMPOUND_FID) 166 187 167 188 /* 168 189 * note: If cfile is passed, the reference to it is dropped here. ··· 305 284 rqst[num_rqst].rq_iov = &vars->qi_iov; 306 285 rqst[num_rqst].rq_nvec = 1; 307 286 308 - if (cfile) { 309 - rc = SMB2_query_info_init(tcon, server, 310 - &rqst[num_rqst], 311 - cfile->fid.persistent_fid, 312 - cfile->fid.volatile_fid, 313 - FILE_ALL_INFORMATION, 314 - SMB2_O_INFO_FILE, 0, 315 - sizeof(struct smb2_file_all_info) + 316 - PATH_MAX * 2, 0, NULL); 317 - } else { 318 - rc = SMB2_query_info_init(tcon, server, 319 - &rqst[num_rqst], 320 - COMPOUND_FID, 321 - COMPOUND_FID, 322 - FILE_ALL_INFORMATION, 323 - SMB2_O_INFO_FILE, 0, 324 - sizeof(struct smb2_file_all_info) + 325 - PATH_MAX * 2, 0, NULL); 326 - } 327 - if (!rc && (!cfile || num_rqst > 1)) { 328 - smb2_set_next_command(tcon, &rqst[num_rqst]); 329 - smb2_set_related(&rqst[num_rqst]); 330 - } else if (rc) { 287 + rc = SMB2_query_info_init(tcon, server, 288 + &rqst[num_rqst], 289 + COMP_PID(cfile), COMP_VID(cfile), 290 + FILE_ALL_INFORMATION, 291 + SMB2_O_INFO_FILE, 0, 292 + sizeof(struct smb2_file_all_info) + 293 + PATH_MAX * 2, 0, NULL); 294 + if (rc) 331 295 goto finished; 332 - } 333 - num_rqst++; 296 + set_next_compound(tcon, cfile, i, num_cmds, rqst, &num_rqst); 334 297 trace_smb3_query_info_compound_enter(xid, tcon->tid, 335 298 ses->Suid, full_path); 336 299 break; ··· 322 317 rqst[num_rqst].rq_iov = &vars->qi_iov; 323 318 rqst[num_rqst].rq_nvec = 1; 324 319 325 - if (cfile) { 326 - /* TBD: fix following to allow for longer SIDs */ 327 - rc = SMB2_query_info_init(tcon, server, 328 - &rqst[num_rqst], 329 - cfile->fid.persistent_fid, 330 - cfile->fid.volatile_fid, 331 - SMB_FIND_FILE_POSIX_INFO, 332 - SMB2_O_INFO_FILE, 0, 333 - sizeof(struct smb311_posix_qinfo) + 334 - (PATH_MAX * 2) + 335 - (sizeof(struct smb_sid) * 2), 0, NULL); 336 - } else { 337 - rc = SMB2_query_info_init(tcon, server, 338 - &rqst[num_rqst], 339 - COMPOUND_FID, 340 - COMPOUND_FID, 341 - SMB_FIND_FILE_POSIX_INFO, 342 - SMB2_O_INFO_FILE, 0, 343 - sizeof(struct smb311_posix_qinfo) + 344 - (PATH_MAX * 2) + 345 - (sizeof(struct smb_sid) * 2), 0, NULL); 346 - } 347 - if (!rc && (!cfile || num_rqst > 1)) { 348 - smb2_set_next_command(tcon, &rqst[num_rqst]); 349 - smb2_set_related(&rqst[num_rqst]); 350 - } else if (rc) { 320 + /* TBD: fix following to allow for longer SIDs */ 321 + rc = SMB2_query_info_init(tcon, server, 322 + &rqst[num_rqst], 323 + COMP_PID(cfile), COMP_VID(cfile), 324 + SMB_FIND_FILE_POSIX_INFO, 325 + SMB2_O_INFO_FILE, 0, 326 + sizeof(struct smb311_posix_qinfo) + 327 + (PATH_MAX * 2) + 328 + (sizeof(struct smb_sid) * 2), 0, NULL); 329 + if (rc) 351 330 goto finished; 352 - } 353 - num_rqst++; 331 + set_next_compound(tcon, cfile, i, num_cmds, rqst, &num_rqst); 354 332 trace_smb3_posix_query_info_compound_enter(xid, tcon->tid, 355 333 ses->Suid, full_path); 356 334 break; ··· 351 363 size[0] = 1; /* sizeof __u8 See MS-FSCC section 2.4.11 */ 352 364 data[0] = &delete_pending[0]; 353 365 354 - if (cfile) { 355 - rc = SMB2_set_info_init(tcon, server, 356 - &rqst[num_rqst], 357 - cfile->fid.persistent_fid, 358 - cfile->fid.volatile_fid, 359 - current->tgid, 360 - FILE_DISPOSITION_INFORMATION, 361 - SMB2_O_INFO_FILE, 0, 362 - data, size); 363 - } else { 364 - rc = SMB2_set_info_init(tcon, server, 365 - &rqst[num_rqst], 366 - COMPOUND_FID, 367 - COMPOUND_FID, 368 - current->tgid, 369 - FILE_DISPOSITION_INFORMATION, 370 - SMB2_O_INFO_FILE, 0, 371 - data, size); 372 - } 373 - if (!rc && (!cfile || num_rqst > 1)) { 374 - smb2_set_next_command(tcon, &rqst[num_rqst]); 375 - smb2_set_related(&rqst[num_rqst]); 376 - } else if (rc) { 366 + rc = SMB2_set_info_init(tcon, server, 367 + &rqst[num_rqst], 368 + COMP_PID(cfile), COMP_VID(cfile), 369 + current->tgid, FILE_DISPOSITION_INFORMATION, 370 + SMB2_O_INFO_FILE, 0, 371 + data, size); 372 + if (rc) 377 373 goto finished; 378 - } 379 - num_rqst++; 374 + set_next_compound(tcon, cfile, i, num_cmds, rqst, &num_rqst); 380 375 trace_smb3_unlink_enter(xid, tcon->tid, ses->Suid, full_path); 381 376 break; 382 377 case SMB2_OP_SET_EOF: ··· 369 398 size[0] = in_iov[i].iov_len; 370 399 data[0] = in_iov[i].iov_base; 371 400 372 - if (cfile) { 373 - rc = SMB2_set_info_init(tcon, server, 374 - &rqst[num_rqst], 375 - cfile->fid.persistent_fid, 376 - cfile->fid.volatile_fid, 377 - current->tgid, 378 - FILE_END_OF_FILE_INFORMATION, 379 - SMB2_O_INFO_FILE, 0, 380 - data, size); 381 - } else { 382 - rc = SMB2_set_info_init(tcon, server, 383 - &rqst[num_rqst], 384 - COMPOUND_FID, 385 - COMPOUND_FID, 386 - current->tgid, 387 - FILE_END_OF_FILE_INFORMATION, 388 - SMB2_O_INFO_FILE, 0, 389 - data, size); 390 - } 391 - if (!rc && (!cfile || num_rqst > 1)) { 392 - smb2_set_next_command(tcon, &rqst[num_rqst]); 393 - smb2_set_related(&rqst[num_rqst]); 394 - } else if (rc) { 401 + rc = SMB2_set_info_init(tcon, server, 402 + &rqst[num_rqst], 403 + COMP_PID(cfile), COMP_VID(cfile), 404 + current->tgid, FILE_END_OF_FILE_INFORMATION, 405 + SMB2_O_INFO_FILE, 0, 406 + data, size); 407 + if (rc) 395 408 goto finished; 396 - } 397 - num_rqst++; 409 + set_next_compound(tcon, cfile, i, num_cmds, rqst, &num_rqst); 398 410 trace_smb3_set_eof_enter(xid, tcon->tid, ses->Suid, full_path); 399 411 break; 400 412 case SMB2_OP_SET_INFO: ··· 387 433 size[0] = in_iov[i].iov_len; 388 434 data[0] = in_iov[i].iov_base; 389 435 390 - if (cfile) { 391 - rc = SMB2_set_info_init(tcon, server, 392 - &rqst[num_rqst], 393 - cfile->fid.persistent_fid, 394 - cfile->fid.volatile_fid, current->tgid, 395 - FILE_BASIC_INFORMATION, 396 - SMB2_O_INFO_FILE, 0, data, size); 397 - } else { 398 - rc = SMB2_set_info_init(tcon, server, 399 - &rqst[num_rqst], 400 - COMPOUND_FID, 401 - COMPOUND_FID, current->tgid, 402 - FILE_BASIC_INFORMATION, 403 - SMB2_O_INFO_FILE, 0, data, size); 404 - } 405 - if (!rc && (!cfile || num_rqst > 1)) { 406 - smb2_set_next_command(tcon, &rqst[num_rqst]); 407 - smb2_set_related(&rqst[num_rqst]); 408 - } else if (rc) { 436 + rc = SMB2_set_info_init(tcon, server, 437 + &rqst[num_rqst], 438 + COMP_PID(cfile), COMP_VID(cfile), 439 + current->tgid, FILE_BASIC_INFORMATION, 440 + SMB2_O_INFO_FILE, 0, data, size); 441 + if (rc) 409 442 goto finished; 410 - } 411 - num_rqst++; 443 + set_next_compound(tcon, cfile, i, num_cmds, rqst, &num_rqst); 412 444 trace_smb3_set_info_compound_enter(xid, tcon->tid, 413 445 ses->Suid, full_path); 414 446 break; ··· 414 474 size[1] = len + 2 /* null */; 415 475 data[1] = in_iov[i].iov_base; 416 476 417 - if (cfile) { 418 - rc = SMB2_set_info_init(tcon, server, 419 - &rqst[num_rqst], 420 - cfile->fid.persistent_fid, 421 - cfile->fid.volatile_fid, 422 - current->tgid, FILE_RENAME_INFORMATION, 423 - SMB2_O_INFO_FILE, 0, data, size); 424 - } else { 425 - rc = SMB2_set_info_init(tcon, server, 426 - &rqst[num_rqst], 427 - COMPOUND_FID, COMPOUND_FID, 428 - current->tgid, FILE_RENAME_INFORMATION, 429 - SMB2_O_INFO_FILE, 0, data, size); 430 - } 431 - if (!rc && (!cfile || num_rqst > 1)) { 432 - smb2_set_next_command(tcon, &rqst[num_rqst]); 433 - smb2_set_related(&rqst[num_rqst]); 434 - } else if (rc) { 477 + rc = SMB2_set_info_init(tcon, server, 478 + &rqst[num_rqst], 479 + COMP_PID(cfile), COMP_VID(cfile), 480 + current->tgid, FILE_RENAME_INFORMATION, 481 + SMB2_O_INFO_FILE, 0, data, size); 482 + 483 + if (rc) 435 484 goto finished; 436 - } 437 - num_rqst++; 485 + set_next_compound(tcon, cfile, i, num_cmds, rqst, &num_rqst); 438 486 trace_smb3_rename_enter(xid, tcon->tid, ses->Suid, full_path); 439 487 break; 440 488 case SMB2_OP_HARDLINK: 441 - rqst[num_rqst].rq_iov = &vars->si_iov[0]; 489 + rqst[num_rqst].rq_iov = vars->hl_iov; 442 490 rqst[num_rqst].rq_nvec = 2; 443 491 444 492 len = in_iov[i].iov_len; ··· 442 514 data[1] = in_iov[i].iov_base; 443 515 444 516 rc = SMB2_set_info_init(tcon, server, 445 - &rqst[num_rqst], COMPOUND_FID, 446 - COMPOUND_FID, current->tgid, 447 - FILE_LINK_INFORMATION, 517 + &rqst[num_rqst], 518 + COMP_PID(cfile), COMP_VID(cfile), 519 + current->tgid, FILE_LINK_INFORMATION, 448 520 SMB2_O_INFO_FILE, 0, data, size); 449 521 if (rc) 450 522 goto finished; 451 - smb2_set_next_command(tcon, &rqst[num_rqst]); 452 - smb2_set_related(&rqst[num_rqst++]); 523 + set_next_compound(tcon, cfile, i, num_cmds, rqst, &num_rqst); 453 524 trace_smb3_hardlink_enter(xid, tcon->tid, ses->Suid, full_path); 454 525 break; 455 526 case SMB2_OP_SET_REPARSE: 456 527 rqst[num_rqst].rq_iov = vars->io_iov; 457 528 rqst[num_rqst].rq_nvec = ARRAY_SIZE(vars->io_iov); 458 529 459 - if (cfile) { 460 - rc = SMB2_ioctl_init(tcon, server, &rqst[num_rqst], 461 - cfile->fid.persistent_fid, 462 - cfile->fid.volatile_fid, 463 - FSCTL_SET_REPARSE_POINT, 464 - in_iov[i].iov_base, 465 - in_iov[i].iov_len, 0); 466 - } else { 467 - rc = SMB2_ioctl_init(tcon, server, &rqst[num_rqst], 468 - COMPOUND_FID, COMPOUND_FID, 469 - FSCTL_SET_REPARSE_POINT, 470 - in_iov[i].iov_base, 471 - in_iov[i].iov_len, 0); 472 - } 473 - if (!rc && (!cfile || num_rqst > 1)) { 474 - smb2_set_next_command(tcon, &rqst[num_rqst]); 475 - smb2_set_related(&rqst[num_rqst]); 476 - } else if (rc) { 530 + rc = SMB2_ioctl_init(tcon, server, &rqst[num_rqst], 531 + COMP_PID(cfile), COMP_VID(cfile), 532 + FSCTL_SET_REPARSE_POINT, 533 + in_iov[i].iov_base, 534 + in_iov[i].iov_len, 0); 535 + if (rc) 477 536 goto finished; 478 - } 479 - num_rqst++; 537 + set_next_compound(tcon, cfile, i, num_cmds, rqst, &num_rqst); 480 538 trace_smb3_set_reparse_compound_enter(xid, tcon->tid, 481 539 ses->Suid, full_path); 482 540 break; ··· 470 556 rqst[num_rqst].rq_iov = vars->io_iov; 471 557 rqst[num_rqst].rq_nvec = ARRAY_SIZE(vars->io_iov); 472 558 473 - if (cfile) { 474 - rc = SMB2_ioctl_init(tcon, server, &rqst[num_rqst], 475 - cfile->fid.persistent_fid, 476 - cfile->fid.volatile_fid, 477 - FSCTL_GET_REPARSE_POINT, 478 - NULL, 0, CIFSMaxBufSize); 479 - } else { 480 - rc = SMB2_ioctl_init(tcon, server, &rqst[num_rqst], 481 - COMPOUND_FID, COMPOUND_FID, 482 - FSCTL_GET_REPARSE_POINT, 483 - NULL, 0, CIFSMaxBufSize); 484 - } 485 - if (!rc && (!cfile || num_rqst > 1)) { 486 - smb2_set_next_command(tcon, &rqst[num_rqst]); 487 - smb2_set_related(&rqst[num_rqst]); 488 - } else if (rc) { 559 + rc = SMB2_ioctl_init(tcon, server, &rqst[num_rqst], 560 + COMP_PID(cfile), COMP_VID(cfile), 561 + FSCTL_GET_REPARSE_POINT, 562 + NULL, 0, CIFSMaxBufSize); 563 + if (rc) 489 564 goto finished; 490 - } 491 - num_rqst++; 565 + set_next_compound(tcon, cfile, i, num_cmds, rqst, &num_rqst); 492 566 trace_smb3_get_reparse_compound_enter(xid, tcon->tid, 493 567 ses->Suid, full_path); 494 568 break; ··· 484 582 rqst[num_rqst].rq_iov = &vars->ea_iov; 485 583 rqst[num_rqst].rq_nvec = 1; 486 584 487 - if (cfile) { 488 - rc = SMB2_query_info_init(tcon, server, 489 - &rqst[num_rqst], 490 - cfile->fid.persistent_fid, 491 - cfile->fid.volatile_fid, 492 - FILE_FULL_EA_INFORMATION, 493 - SMB2_O_INFO_FILE, 0, 494 - SMB2_WSL_MAX_QUERY_EA_RESP_SIZE, 495 - sizeof(wsl_query_eas), 496 - (void *)wsl_query_eas); 497 - } else { 498 - rc = SMB2_query_info_init(tcon, server, 499 - &rqst[num_rqst], 500 - COMPOUND_FID, 501 - COMPOUND_FID, 502 - FILE_FULL_EA_INFORMATION, 503 - SMB2_O_INFO_FILE, 0, 504 - SMB2_WSL_MAX_QUERY_EA_RESP_SIZE, 505 - sizeof(wsl_query_eas), 506 - (void *)wsl_query_eas); 507 - } 508 - if (!rc && (!cfile || num_rqst > 1)) { 509 - smb2_set_next_command(tcon, &rqst[num_rqst]); 510 - smb2_set_related(&rqst[num_rqst]); 511 - } else if (rc) { 585 + rc = SMB2_query_info_init(tcon, server, 586 + &rqst[num_rqst], 587 + COMP_PID(cfile), COMP_VID(cfile), 588 + FILE_FULL_EA_INFORMATION, 589 + SMB2_O_INFO_FILE, 0, 590 + SMB2_WSL_MAX_QUERY_EA_RESP_SIZE, 591 + sizeof(wsl_query_eas), 592 + (void *)wsl_query_eas); 593 + if (rc) 512 594 goto finished; 513 - } 514 - num_rqst++; 595 + set_next_compound(tcon, cfile, i, num_cmds, rqst, &num_rqst); 515 596 trace_smb3_query_wsl_ea_compound_enter(xid, tcon->tid, 516 597 ses->Suid, full_path); 517 598 break; ··· 1041 1156 cifs_i = CIFS_I(inode); 1042 1157 dosattrs = cifs_i->cifsAttrs | ATTR_READONLY; 1043 1158 data.Attributes = cpu_to_le32(dosattrs); 1044 - cifs_get_writable_path(tcon, name, FIND_ANY, &cfile); 1159 + cifs_get_writable_path(tcon, name, inode, FIND_ANY, &cfile); 1045 1160 oparms = CIFS_OPARMS(cifs_sb, tcon, name, FILE_WRITE_ATTRIBUTES, 1046 1161 FILE_CREATE, CREATE_NOT_FILE, ACL_NO_MODE); 1047 1162 tmprc = smb2_compound_op(xid, tcon, cifs_sb, name, ··· 1217 1332 const char *from_name, const char *to_name, 1218 1333 struct cifs_sb_info *cifs_sb) 1219 1334 { 1335 + struct inode *inode = source_dentry ? d_inode(source_dentry) : NULL; 1220 1336 struct cifsFileInfo *cfile; 1221 1337 __u32 co = file_create_options(source_dentry); 1222 1338 1223 1339 drop_cached_dir_by_name(xid, tcon, from_name, cifs_sb); 1224 - cifs_get_writable_path(tcon, from_name, FIND_WITH_DELETE, &cfile); 1340 + cifs_get_writable_path(tcon, from_name, inode, 1341 + FIND_WITH_DELETE, &cfile); 1225 1342 1226 1343 int rc = smb2_set_path_attr(xid, tcon, from_name, to_name, cifs_sb, 1227 1344 co, DELETE, SMB2_OP_RENAME, cfile, source_dentry); 1228 1345 if (rc == -EINVAL) { 1229 1346 cifs_dbg(FYI, "invalid lease key, resending request without lease"); 1230 - cifs_get_writable_path(tcon, from_name, FIND_WITH_DELETE, &cfile); 1347 + cifs_get_writable_path(tcon, from_name, inode, 1348 + FIND_WITH_DELETE, &cfile); 1231 1349 rc = smb2_set_path_attr(xid, tcon, from_name, to_name, cifs_sb, 1232 1350 co, DELETE, SMB2_OP_RENAME, cfile, NULL); 1233 1351 } 1234 1352 return rc; 1353 + } 1354 + 1355 + static int clear_tmpfile_attr(const unsigned int xid, struct cifs_tcon *tcon, 1356 + struct inode *inode, const char *full_path) 1357 + { 1358 + struct TCP_Server_Info *server = cifs_pick_channel(tcon->ses); 1359 + struct cifsInodeInfo *cinode = CIFS_I(inode); 1360 + FILE_BASIC_INFO fi; 1361 + 1362 + cinode->cifsAttrs &= ~(ATTR_TEMPORARY | ATTR_HIDDEN); 1363 + fi = (FILE_BASIC_INFO) { 1364 + .Attributes = cpu_to_le32(cinode->cifsAttrs), 1365 + }; 1366 + return server->ops->set_file_info(inode, full_path, &fi, xid); 1235 1367 } 1236 1368 1237 1369 int smb2_create_hardlink(const unsigned int xid, ··· 1257 1355 const char *from_name, const char *to_name, 1258 1356 struct cifs_sb_info *cifs_sb) 1259 1357 { 1358 + struct inode *inode = source_dentry ? d_inode(source_dentry) : NULL; 1260 1359 __u32 co = file_create_options(source_dentry); 1360 + struct cifsFileInfo *cfile; 1361 + int rc; 1261 1362 1363 + if (inode && test_bit(CIFS_INO_TMPFILE, &CIFS_I(inode)->flags)) { 1364 + rc = clear_tmpfile_attr(xid, tcon, inode, from_name); 1365 + if (rc) 1366 + return rc; 1367 + } 1368 + 1369 + cifs_get_writable_path(tcon, from_name, inode, 1370 + FIND_WITH_DELETE, &cfile); 1262 1371 return smb2_set_path_attr(xid, tcon, from_name, to_name, 1263 1372 cifs_sb, co, FILE_READ_ATTRIBUTES, 1264 - SMB2_OP_HARDLINK, NULL, NULL); 1373 + SMB2_OP_HARDLINK, cfile, NULL); 1265 1374 } 1266 1375 1267 1376 int ··· 1281 1368 struct cifs_sb_info *cifs_sb, bool set_alloc, 1282 1369 struct dentry *dentry) 1283 1370 { 1371 + struct inode *inode = dentry ? d_inode(dentry) : NULL; 1372 + __le64 eof = cpu_to_le64(size); 1284 1373 struct cifs_open_parms oparms; 1285 1374 struct cifsFileInfo *cfile; 1286 1375 struct kvec in_iov; 1287 - __le64 eof = cpu_to_le64(size); 1288 1376 int rc; 1289 1377 1290 1378 in_iov.iov_base = &eof; 1291 1379 in_iov.iov_len = sizeof(eof); 1292 - cifs_get_writable_path(tcon, full_path, FIND_ANY, &cfile); 1380 + cifs_get_writable_path(tcon, full_path, inode, FIND_ANY, &cfile); 1293 1381 1294 1382 oparms = CIFS_OPARMS(cifs_sb, tcon, full_path, FILE_WRITE_DATA, 1295 1383 FILE_OPEN, 0, ACL_NO_MODE); ··· 1300 1386 cfile, NULL, NULL, dentry); 1301 1387 if (rc == -EINVAL) { 1302 1388 cifs_dbg(FYI, "invalid lease key, resending request without lease"); 1303 - cifs_get_writable_path(tcon, full_path, FIND_ANY, &cfile); 1389 + cifs_get_writable_path(tcon, full_path, 1390 + inode, FIND_ANY, &cfile); 1304 1391 rc = smb2_compound_op(xid, tcon, cifs_sb, 1305 1392 full_path, &oparms, &in_iov, 1306 1393 &(int){SMB2_OP_SET_EOF}, 1, ··· 1331 1416 (buf->LastWriteTime == 0) && (buf->ChangeTime == 0)) { 1332 1417 if (buf->Attributes == 0) 1333 1418 goto out; /* would be a no op, no sense sending this */ 1334 - cifs_get_writable_path(tcon, full_path, FIND_ANY, &cfile); 1419 + cifs_get_writable_path(tcon, full_path, 1420 + inode, FIND_ANY, &cfile); 1335 1421 } 1336 1422 1337 1423 oparms = CIFS_OPARMS(cifs_sb, tcon, full_path, FILE_WRITE_ATTRIBUTES, ··· 1391 1475 1392 1476 if (tcon->posix_extensions) { 1393 1477 cmds[1] = SMB2_OP_POSIX_QUERY_INFO; 1394 - cifs_get_writable_path(tcon, full_path, FIND_ANY, &cfile); 1478 + cifs_get_writable_path(tcon, full_path, NULL, FIND_ANY, &cfile); 1395 1479 rc = smb2_compound_op(xid, tcon, cifs_sb, full_path, &oparms, 1396 1480 in_iov, cmds, 2, cfile, out_iov, out_buftype, NULL); 1397 1481 if (!rc) { ··· 1400 1484 } 1401 1485 } else { 1402 1486 cmds[1] = SMB2_OP_QUERY_INFO; 1403 - cifs_get_writable_path(tcon, full_path, FIND_ANY, &cfile); 1487 + cifs_get_writable_path(tcon, full_path, NULL, FIND_ANY, &cfile); 1404 1488 rc = smb2_compound_op(xid, tcon, cifs_sb, full_path, &oparms, 1405 1489 in_iov, cmds, 2, cfile, out_iov, out_buftype, NULL); 1406 1490 if (!rc) { ··· 1482 1566 struct dentry *dentry, 1483 1567 const unsigned int xid) 1484 1568 { 1485 - struct cifs_sb_info *cifs_sb = CIFS_SB(d_inode(dentry)->i_sb); 1486 1569 struct cifsInodeInfo *cinode = CIFS_I(d_inode(dentry)); 1570 + struct cifs_sb_info *cifs_sb = CIFS_SB(dentry); 1487 1571 __le16 *utf16_path __free(kfree) = NULL; 1488 1572 __u32 co = file_create_options(dentry); 1489 1573 int cmds[] = { ··· 1495 1579 char *to_name __free(kfree) = NULL; 1496 1580 __u32 attrs = cinode->cifsAttrs; 1497 1581 struct cifs_open_parms oparms; 1498 - static atomic_t sillycounter; 1499 1582 struct cifsFileInfo *cfile; 1500 1583 struct tcon_link *tlink; 1501 1584 struct cifs_tcon *tcon; 1502 1585 struct kvec iov[2]; 1503 - const char *ppath; 1504 - void *page; 1505 - size_t len; 1506 1586 int rc; 1507 1587 1508 1588 tlink = cifs_sb_tlink(cifs_sb); ··· 1506 1594 return PTR_ERR(tlink); 1507 1595 tcon = tlink_tcon(tlink); 1508 1596 1509 - page = alloc_dentry_path(); 1510 - 1511 - ppath = build_path_from_dentry(dentry->d_parent, page); 1512 - if (IS_ERR(ppath)) { 1513 - rc = PTR_ERR(ppath); 1597 + to_name = cifs_silly_fullpath(dentry); 1598 + if (IS_ERR(to_name)) { 1599 + rc = PTR_ERR(to_name); 1600 + to_name = NULL; 1514 1601 goto out; 1515 1602 } 1516 1603 1517 - len = strlen(ppath) + strlen("/.__smb1234") + 1; 1518 - to_name = kmalloc(len, GFP_KERNEL); 1519 - if (!to_name) { 1520 - rc = -ENOMEM; 1521 - goto out; 1522 - } 1523 - 1524 - scnprintf(to_name, len, "%s%c.__smb%04X", ppath, CIFS_DIR_SEP(cifs_sb), 1525 - atomic_inc_return(&sillycounter) & 0xffff); 1526 - 1527 - utf16_path = utf16_smb2_path(cifs_sb, to_name, len); 1604 + utf16_path = utf16_smb2_path(cifs_sb, to_name, strlen(to_name)); 1528 1605 if (!utf16_path) { 1529 1606 rc = -ENOMEM; 1530 1607 goto out; ··· 1536 1635 iov[1].iov_base = utf16_path; 1537 1636 iov[1].iov_len = sizeof(*utf16_path) * UniStrlen((wchar_t *)utf16_path); 1538 1637 1539 - cifs_get_writable_path(tcon, full_path, FIND_WITH_DELETE, &cfile); 1638 + cifs_get_writable_path(tcon, full_path, d_inode(dentry), 1639 + FIND_WITH_DELETE, &cfile); 1540 1640 rc = smb2_compound_op(xid, tcon, cifs_sb, full_path, &oparms, iov, 1541 1641 cmds, num_cmds, cfile, NULL, NULL, dentry); 1542 1642 if (rc == -EINVAL) { 1543 1643 cifs_dbg(FYI, "invalid lease key, resending request without lease\n"); 1544 - cifs_get_writable_path(tcon, full_path, FIND_WITH_DELETE, &cfile); 1644 + cifs_get_writable_path(tcon, full_path, d_inode(dentry), 1645 + FIND_WITH_DELETE, &cfile); 1545 1646 rc = smb2_compound_op(xid, tcon, cifs_sb, full_path, &oparms, iov, 1546 1647 cmds, num_cmds, cfile, NULL, NULL, NULL); 1547 1648 } ··· 1556 1653 } 1557 1654 out: 1558 1655 cifs_put_tlink(tlink); 1559 - free_dentry_path(page); 1560 1656 return rc; 1561 1657 }
-3
fs/smb/client/smb2maperror.c
··· 112 112 #define EXPORT_SYMBOL_FOR_SMB_TEST(sym) \ 113 113 EXPORT_SYMBOL_FOR_MODULES(sym, "smb2maperror_test") 114 114 115 - /* Previous prototype for eliminating the build warning. */ 116 - const struct status_to_posix_error *smb2_get_err_map_test(__u32 smb2_status); 117 - 118 115 const struct status_to_posix_error *smb2_get_err_map_test(__u32 smb2_status) 119 116 { 120 117 return smb2_get_err_map(smb2_status);
+3 -5
fs/smb/client/smb2maperror_test.c
··· 9 9 */ 10 10 11 11 #include <kunit/test.h> 12 + #include "cifsglob.h" 12 13 #include "smb2glob.h" 13 - 14 - const struct status_to_posix_error *smb2_get_err_map_test(__u32 smb2_status); 15 - extern const struct status_to_posix_error *smb2_error_map_table_test; 16 - extern unsigned int smb2_error_map_num; 14 + #include "smb2proto.h" 17 15 18 16 static void 19 17 test_cmp_map(struct kunit *test, const struct status_to_posix_error *expect) ··· 19 21 const struct status_to_posix_error *result; 20 22 21 23 result = smb2_get_err_map_test(expect->smb2_status); 22 - KUNIT_EXPECT_PTR_NE(test, NULL, result); 24 + KUNIT_ASSERT_NOT_NULL(test, result); 23 25 KUNIT_EXPECT_EQ(test, expect->smb2_status, result->smb2_status); 24 26 KUNIT_EXPECT_EQ(test, expect->posix_error, result->posix_error); 25 27 KUNIT_EXPECT_STREQ(test, expect->status_string, result->status_string);
+6 -1
fs/smb/client/smb2proto.h
··· 14 14 #include <linux/key-type.h> 15 15 #include "cached_dir.h" 16 16 17 - struct statfs; 18 17 struct smb_rqst; 19 18 20 19 /* ··· 23 24 */ 24 25 int map_smb2_to_linux_error(char *buf, bool log_err); 25 26 int smb2_init_maperror(void); 27 + #if IS_ENABLED(CONFIG_SMB_KUNIT_TESTS) 28 + const struct status_to_posix_error *smb2_get_err_map_test(__u32 smb2_status); 29 + extern const struct status_to_posix_error *smb2_error_map_table_test; 30 + extern unsigned int smb2_error_map_num; 31 + #endif 32 + 26 33 int smb2_check_message(char *buf, unsigned int pdu_len, unsigned int len, 27 34 struct TCP_Server_Info *server); 28 35 unsigned int smb2_calc_size(void *buf);
+271 -144
fs/smb/client/smberr.h
··· 9 9 * 10 10 */ 11 11 12 - #define SUCCESS 0x00 /* The request was successful. */ 13 - #define ERRDOS 0x01 /* Error is from the core DOS operating system set */ 14 - #define ERRSRV 0x02 /* Error is generated by the file server daemon */ 15 - #define ERRHRD 0x03 /* Error is a hardware error. */ 16 - #define ERRCMD 0xFF /* Command was not in the "SMB" format. */ 12 + struct smb_to_posix_error { 13 + __u16 smb_err; 14 + int posix_code; 15 + }; 16 + 17 + /* The request was successful. */ 18 + #define SUCCESS 0x00 19 + /* Error is from the core DOS operating system set */ 20 + #define ERRDOS 0x01 21 + /* Error is generated by the file server daemon */ 22 + #define ERRSRV 0x02 23 + /* Error is a hardware error. */ 24 + #define ERRHRD 0x03 25 + /* Command was not in the "SMB" format. */ 26 + #define ERRCMD 0xFF 17 27 18 28 /* The following error codes may be generated with the SUCCESS error class.*/ 19 29 20 30 /*#define SUCCESS 0 The request was successful. */ 21 31 22 - /* The following error codes may be generated with the ERRDOS error class.*/ 32 + /* 33 + * The following error codes may be generated with the ERRDOS error class. 34 + * The comment at the end of each definition indicates the POSIX error 35 + * code; it is used to generate the `mapping_table_ERRDOS` array. 36 + */ 23 37 24 - #define ERRbadfunc 1 /* Invalid function. The server did not 25 - recognize or could not perform a 26 - system call generated by the server, 27 - e.g., set the DIRECTORY attribute on 28 - a data file, invalid seek mode. */ 29 - #define ERRbadfile 2 /* File not found. The last component 30 - of a file's pathname could not be 31 - found. */ 32 - #define ERRbadpath 3 /* Directory invalid. A directory 33 - component in a pathname could not be 34 - found. */ 35 - #define ERRnofids 4 /* Too many open files. The server has 36 - no file handles available. */ 37 - #define ERRnoaccess 5 /* Access denied, the client's context 38 - does not permit the requested 39 - function. This includes the 40 - following conditions: invalid rename 41 - command, write to Fid open for read 42 - only, read on Fid open for write 43 - only, attempt to delete a non-empty 44 - directory */ 45 - #define ERRbadfid 6 /* Invalid file handle. The file handle 46 - specified was not recognized by the 47 - server. */ 48 - #define ERRbadmcb 7 /* Memory control blocks destroyed. */ 49 - #define ERRnomem 8 /* Insufficient server memory to 50 - perform the requested function. */ 51 - #define ERRbadmem 9 /* Invalid memory block address. */ 52 - #define ERRbadenv 10 /* Invalid environment. */ 53 - #define ERRbadformat 11 /* Invalid format. */ 54 - #define ERRbadaccess 12 /* Invalid open mode. */ 55 - #define ERRbaddata 13 /* Invalid data (generated only by 56 - IOCTL calls within the server). */ 57 - #define ERRbaddrive 15 /* Invalid drive specified. */ 58 - #define ERRremcd 16 /* A Delete Directory request attempted 59 - to remove the server's current 60 - directory. */ 61 - #define ERRdiffdevice 17 /* Not same device (e.g., a cross 62 - volume rename was attempted */ 63 - #define ERRnofiles 18 /* A File Search command can find no 64 - more files matching the specified 65 - criteria. */ 66 - #define ERRwriteprot 19 /* media is write protected */ 38 + /* 39 + * Invalid function. The server did not 40 + * recognize or could not perform a 41 + * system call generated by the server, 42 + * e.g., set the DIRECTORY attribute on 43 + * a data file, invalid seek mode. 44 + */ 45 + #define ERRbadfunc 1 // -EINVAL 46 + /* 47 + * File not found. The last component 48 + * of a file's pathname could not be 49 + * found. 50 + */ 51 + #define ERRbadfile 2 // -ENOENT 52 + /* 53 + * Directory invalid. A directory 54 + * component in a pathname could not be 55 + * found. 56 + */ 57 + #define ERRbadpath 3 // -ENOTDIR 58 + /* 59 + * Too many open files. The server has 60 + * no file handles available. 61 + */ 62 + #define ERRnofids 4 // -EMFILE 63 + /* 64 + * Access denied, the client's context 65 + * does not permit the requested 66 + * function. This includes the 67 + * following conditions: invalid rename 68 + * command, write to Fid open for read 69 + * only, read on Fid open for write 70 + * only, attempt to delete a non-empty 71 + * directory 72 + */ 73 + #define ERRnoaccess 5 // -EACCES 74 + /* 75 + * Invalid file handle. The file handle 76 + * specified was not recognized by the 77 + * server. 78 + */ 79 + #define ERRbadfid 6 // -EBADF 80 + /* Memory control blocks destroyed. */ 81 + #define ERRbadmcb 7 // -EIO 82 + /* 83 + * Insufficient server memory to 84 + * perform the requested function. 85 + */ 86 + #define ERRnomem 8 // -EREMOTEIO 87 + /* Invalid memory block address. */ 88 + #define ERRbadmem 9 // -EFAULT 89 + /* Invalid environment. */ 90 + #define ERRbadenv 10 // -EFAULT 91 + /* Invalid format. */ 92 + #define ERRbadformat 11 // -EINVAL 93 + /* Invalid open mode. */ 94 + #define ERRbadaccess 12 // -EACCES 95 + /* 96 + * Invalid data (generated only by 97 + * IOCTL calls within the server). 98 + */ 99 + #define ERRbaddata 13 // -EIO 100 + /* Invalid drive specified. */ 101 + #define ERRbaddrive 15 // -ENXIO 102 + /* 103 + * A Delete Directory request attempted 104 + * to remove the server's current 105 + * directory. 106 + */ 107 + #define ERRremcd 16 // -EACCES 108 + /* 109 + * Not same device (e.g., a cross 110 + * volume rename was attempted 111 + */ 112 + #define ERRdiffdevice 17 // -EXDEV 113 + /* 114 + * A File Search command can find no 115 + * more files matching the specified 116 + * criteria. 117 + */ 118 + #define ERRnofiles 18 // -ENOENT 119 + /* media is write protected */ 120 + #define ERRwriteprot 19 // -EROFS 67 121 #define ERRgeneral 31 68 - #define ERRbadshare 32 /* The sharing mode specified for an 69 - Open conflicts with existing FIDs on 70 - the file. */ 71 - #define ERRlock 33 /* A Lock request conflicted with an 72 - existing lock or specified an 73 - invalid mode, or an Unlock requested 74 - attempted to remove a lock held by 75 - another process. */ 76 - #define ERRunsup 50 77 - #define ERRnosuchshare 67 78 - #define ERRfilexists 80 /* The file named in the request 79 - already exists. */ 80 - #define ERRinvparm 87 81 - #define ERRdiskfull 112 82 - #define ERRinvname 123 83 - #define ERRunknownlevel 124 84 - #define ERRdirnotempty 145 85 - #define ERRnotlocked 158 86 - #define ERRcancelviolation 173 87 - #define ERRalreadyexists 183 122 + /* 123 + * The sharing mode specified for an 124 + * Open conflicts with existing FIDs on 125 + * the file. 126 + */ 127 + #define ERRbadshare 32 // -EBUSY 128 + /* 129 + * A Lock request conflicted with an 130 + * existing lock or specified an 131 + * invalid mode, or an Unlock requested 132 + * attempted to remove a lock held by 133 + * another process. 134 + */ 135 + #define ERRlock 33 // -EACCES 136 + #define ERRunsup 50 // -EINVAL 137 + #define ERRnosuchshare 67 // -ENXIO 138 + /* 139 + * The file named in the request 140 + * already exists. 141 + */ 142 + #define ERRfilexists 80 // -EEXIST 143 + #define ERRinvparm 87 // -EINVAL 144 + #define ERRdiskfull 112 // -ENOSPC 145 + #define ERRinvname 123 // -ENOENT 146 + #define ERRunknownlevel 124 // -EOPNOTSUPP 147 + #define ERRdirnotempty 145 // -ENOTEMPTY 148 + #define ERRnotlocked 158 // -ENOLCK 149 + #define ERRcancelviolation 173 // -ENOLCK 150 + #define ERRalreadyexists 183 // -EEXIST 88 151 #define ERRbadpipe 230 89 152 #define ERRpipebusy 231 90 153 #define ERRpipeclosing 232 91 154 #define ERRnotconnected 233 92 - #define ERRmoredata 234 93 - #define ERReasnotsupported 282 94 - #define ErrQuota 0x200 /* The operation would cause a quota 95 - limit to be exceeded. */ 96 - #define ErrNotALink 0x201 /* A link operation was performed on a 97 - pathname that was not a link. */ 155 + #define ERRmoredata 234 // -EOVERFLOW 156 + #define ERReasnotsupported 282 // -EOPNOTSUPP 157 + /* 158 + * The operation would cause a quota 159 + * limit to be exceeded. 160 + */ 161 + #define ErrQuota 0x200 // -EDQUOT 162 + /* 163 + * A link operation was performed on a 164 + * pathname that was not a link. 165 + */ 166 + #define ErrNotALink 0x201 // -ENOLINK 167 + #define ERRnetlogonNotStarted 2455 // -ENOPROTOOPT 98 168 99 169 /* Below errors are used internally (do not come over the wire) for passthrough 100 170 from STATUS codes to POSIX only */ 101 - #define ERRsymlink 0xFFFD 102 - #define ErrTooManyLinks 0xFFFE 171 + #define ERRsymlink 0xFFFD // -EOPNOTSUPP 172 + #define ErrTooManyLinks 0xFFFE // -EMLINK 103 173 104 - /* Following error codes may be generated with the ERRSRV error class.*/ 174 + /* 175 + * The following error codes may be generated with the ERRSRV error class. 176 + * The comment at the end of each definition indicates the POSIX error 177 + * code; it is used to generate the `mapping_table_ERRSRV` array. 178 + */ 105 179 106 - #define ERRerror 1 /* Non-specific error code. It is 107 - returned under the following 108 - conditions: resource other than disk 109 - space exhausted (e.g. TIDs), first 110 - SMB command was not negotiate, 111 - multiple negotiates attempted, and 112 - internal server error. */ 113 - #define ERRbadpw 2 /* Bad password - name/password pair in 114 - a TreeConnect or Session Setup are 115 - invalid. */ 116 - #define ERRbadtype 3 /* used for indicating DFS referral 117 - needed */ 118 - #define ERRaccess 4 /* The client does not have the 119 - necessary access rights within the 120 - specified context for requested 121 - function. */ 122 - #define ERRinvtid 5 /* The Tid specified in a command was 123 - invalid. */ 124 - #define ERRinvnetname 6 /* Invalid network name in tree 125 - connect. */ 126 - #define ERRinvdevice 7 /* Invalid device - printer request 127 - made to non-printer connection or 128 - non-printer request made to printer 129 - connection. */ 130 - #define ERRqfull 49 /* Print queue full (files) -- returned 131 - by open print file. */ 132 - #define ERRqtoobig 50 /* Print queue full -- no space. */ 133 - #define ERRqeof 51 /* EOF on print queue dump */ 134 - #define ERRinvpfid 52 /* Invalid print file FID. */ 135 - #define ERRsmbcmd 64 /* The server did not recognize the 136 - command received. */ 137 - #define ERRsrverror 65 /* The server encountered an internal 138 - error, e.g., system file 139 - unavailable. */ 140 - #define ERRbadBID 66 /* (obsolete) */ 141 - #define ERRfilespecs 67 /* The Fid and pathname parameters 142 - contained an invalid combination of 143 - values. */ 144 - #define ERRbadLink 68 /* (obsolete) */ 145 - #define ERRbadpermits 69 /* The access permissions specified for 146 - a file or directory are not a valid 147 - combination. */ 148 - #define ERRbadPID 70 149 - #define ERRsetattrmode 71 /* attribute (mode) is invalid */ 150 - #define ERRpaused 81 /* Server is paused */ 151 - #define ERRmsgoff 82 /* reserved - messaging off */ 152 - #define ERRnoroom 83 /* reserved - no room for message */ 153 - #define ERRrmuns 87 /* reserved - too many remote names */ 154 - #define ERRtimeout 88 /* operation timed out */ 155 - #define ERRnoresource 89 /* No resources available for request 156 - */ 157 - #define ERRtoomanyuids 90 /* Too many UIDs active on this session 158 - */ 159 - #define ERRbaduid 91 /* The UID is not known as a valid user 160 - */ 161 - #define ERRusempx 250 /* temporarily unable to use raw */ 162 - #define ERRusestd 251 /* temporarily unable to use either raw 163 - or mpx */ 164 - #define ERR_NOTIFY_ENUM_DIR 1024 165 - #define ERRnoSuchUser 2238 /* user account does not exist */ 166 - #define ERRaccountexpired 2239 167 - #define ERRbadclient 2240 /* can not logon from this client */ 168 - #define ERRbadLogonTime 2241 /* logon hours do not allow this */ 169 - #define ERRpasswordExpired 2242 170 - #define ERRnetlogonNotStarted 2455 171 - #define ERRnosupport 0xFFFF 180 + /* 181 + * Non-specific error code. It is 182 + * returned under the following 183 + * conditions: resource other than disk 184 + * space exhausted (e.g. TIDs), first 185 + * SMB command was not negotiate, 186 + * multiple negotiates attempted, and 187 + * internal server error. 188 + */ 189 + #define ERRerror 1 // -EIO 190 + /* 191 + * Bad password - name/password pair in 192 + * a TreeConnect or Session Setup are 193 + * invalid. 194 + */ 195 + #define ERRbadpw 2 // -EACCES 196 + /* 197 + * used for indicating DFS referral 198 + * needed 199 + */ 200 + #define ERRbadtype 3 // -EREMOTE 201 + /* 202 + * The client does not have the 203 + * necessary access rights within the 204 + * specified context for requested 205 + * function. 206 + */ 207 + #define ERRaccess 4 // -EACCES 208 + /* 209 + * The Tid specified in a command was 210 + * invalid. 211 + */ 212 + #define ERRinvtid 5 // -ENXIO 213 + /* 214 + * Invalid network name in tree 215 + * connect. 216 + */ 217 + #define ERRinvnetname 6 // -ENXIO 218 + /* 219 + * Invalid device - printer request 220 + * made to non-printer connection or 221 + * non-printer request made to printer 222 + * connection. 223 + */ 224 + #define ERRinvdevice 7 // -ENXIO 225 + /* 226 + * Print queue full (files) -- returned 227 + * by open print file. 228 + */ 229 + #define ERRqfull 49 // -ENOSPC 230 + /* Print queue full -- no space. */ 231 + #define ERRqtoobig 50 // -ENOSPC 232 + /* EOF on print queue dump */ 233 + #define ERRqeof 51 // -EIO 234 + /* Invalid print file FID. */ 235 + #define ERRinvpfid 52 // -EBADF 236 + /* 237 + * The server did not recognize the 238 + * command received. 239 + */ 240 + #define ERRsmbcmd 64 // -EBADRQC 241 + /* 242 + * The server encountered an internal 243 + * error, e.g., system file 244 + * unavailable. 245 + */ 246 + #define ERRsrverror 65 // -EIO 247 + /* (obsolete) */ 248 + #define ERRbadBID 66 // -EIO 249 + /* 250 + * The Fid and pathname parameters 251 + * contained an invalid combination of 252 + * values. 253 + */ 254 + #define ERRfilespecs 67 // -EINVAL 255 + /* (obsolete) */ 256 + #define ERRbadLink 68 // -EIO 257 + /* 258 + * The access permissions specified for 259 + * a file or directory are not a valid 260 + * combination. 261 + */ 262 + #define ERRbadpermits 69 // -EINVAL 263 + #define ERRbadPID 70 // -ESRCH 264 + /* attribute (mode) is invalid */ 265 + #define ERRsetattrmode 71 // -EINVAL 266 + /* Server is paused */ 267 + #define ERRpaused 81 // -EHOSTDOWN 268 + /* reserved - messaging off */ 269 + #define ERRmsgoff 82 // -EHOSTDOWN 270 + /* reserved - no room for message */ 271 + #define ERRnoroom 83 // -ENOSPC 272 + /* reserved - too many remote names */ 273 + #define ERRrmuns 87 // -EUSERS 274 + /* operation timed out */ 275 + #define ERRtimeout 88 // -ETIME 276 + /* No resources available for request */ 277 + #define ERRnoresource 89 // -EREMOTEIO 278 + /* Too many UIDs active on this session */ 279 + #define ERRtoomanyuids 90 // -EUSERS 280 + /* The UID is not known as a valid user */ 281 + #define ERRbaduid 91 // -EACCES 282 + /* temporarily unable to use raw */ 283 + #define ERRusempx 250 // -EIO 284 + /* 285 + * temporarily unable to use either raw 286 + * or mpx 287 + */ 288 + #define ERRusestd 251 // -EIO 289 + #define ERR_NOTIFY_ENUM_DIR 1024 // -ENOBUFS 290 + /* user account does not exist */ 291 + #define ERRnoSuchUser 2238 // -EACCES 292 + #define ERRaccountexpired 2239 // -EKEYEXPIRED 293 + /* can not logon from this client */ 294 + #define ERRbadclient 2240 // -EACCES 295 + /* logon hours do not allow this */ 296 + #define ERRbadLogonTime 2241 // -EACCES 297 + #define ERRpasswordExpired 2242 // -EKEYEXPIRED 298 + #define ERRnosupport 0xFFFF // -EINVAL
+1
include/linux/dcache.h
··· 264 264 extern struct dentry * d_make_root(struct inode *); 265 265 266 266 extern void d_mark_tmpfile(struct file *, struct inode *); 267 + void d_mark_tmpfile_name(struct file *file, const struct qstr *name); 267 268 extern void d_tmpfile(struct file *, struct inode *); 268 269 269 270 extern struct dentry *d_find_alias(struct inode *);