From fe86b20ebd62f497564fd3187e8509496b63600e Mon Sep 17 00:00:00 2001 From: erdgeist <> Date: Thu, 4 Dec 2003 22:53:17 +0000 Subject: nu_header.h split up in nu_server.h and nu_defines.h --- src/nu_defines.h | 718 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/nu_server.c | 131 ++++++---- src/nu_server.h | 43 ++++ 3 files changed, 841 insertions(+), 51 deletions(-) create mode 100755 src/nu_defines.h create mode 100755 src/nu_server.h (limited to 'src') diff --git a/src/nu_defines.h b/src/nu_defines.h new file mode 100755 index 0000000..a3d6f29 --- /dev/null +++ b/src/nu_defines.h @@ -0,0 +1,718 @@ +#define SMB_HEADER_PROTOCOL_MAGIC 0x424d53ff + +typedef enum { + SMB_COMMAND_FLAG_ANDX = 0x01, + +} SMB_COMMAND_FLAG; + +typedef enum { + SMB_COM_CREATE_DIRECTORY = 0x00, + SMB_COM_DELETE_DIRECTORY = 0x01, + SMB_COM_OPEN = 0x02, + SMB_COM_CREATE = 0x03, + SMB_COM_CLOSE = 0x04, + SMB_COM_FLUSH = 0x05, + SMB_COM_DELETE = 0x06, + SMB_COM_RENAME = 0x07, + SMB_COM_QUERY_INFORMATION = 0x08, + SMB_COM_SET_INFORMATION = 0x09, + SMB_COM_READ = 0x0A, + SMB_COM_WRITE = 0x0B, + SMB_COM_LOCK_BYTE_RANGE = 0x0C, + SMB_COM_UNLOCK_BYTE_RANGE = 0x0D, + SMB_COM_CREATE_TEMPORARY = 0x0E, + SMB_COM_CREATE_NEW = 0x0F, + + SMB_COM_CHECK_DIRECTORY = 0x10, + SMB_COM_PROCESS_EXIT = 0x11, + SMB_COM_SEEK = 0x12, + SMB_COM_LOCK_AND_READ = 0x13, + SMB_COM_WRITE_AND_UNLOCK = 0x14, + /* ... */ + SMB_COM_READ_RAW = 0x1A, + SMB_COM_READ_MPX = 0x1B, + SMB_COM_READ_MPX_SECONDARY = 0x1C, + SMB_COM_WRITE_RAW = 0x1D, + SMB_COM_WRITE_MPX = 0x1E, + SMB_COM_WRITE_MPX_SECONDARY = 0x1F, + + SMB_COM_WRITE_COMPLETE = 0x20, + SMB_COM_QUERY_SERVER = 0x21, + SMB_COM_SET_INFORMATION2 = 0x22, + SMB_COM_QUERY_INFORMATION2 = 0x23, + SMB_COM_LOCKING_ANDX = 0x24, + SMB_COM_TRANSACTION = 0x25, + SMB_COM_TRANSACTION_SECONDARY = 0x26, + SMB_COM_IOCTL = 0x27, + SMB_COM_IOCTL_SECONDARY = 0x28, + SMB_COM_COPY = 0x29, + SMB_COM_MOVE = 0x2A, + SMB_COM_ECHO = 0x2B, + SMB_COM_WRITE_AND_CLOSE = 0x2C, + SMB_COM_OPEN_ANDX = 0x2D, + SMB_COM_READ_ANDX = 0x2E, + SMB_COM_WRITE_ANDX = 0x2F, + + SMB_COM_NEW_FILE_SIZE = 0x30, + SMB_COM_CLOSE_AND_TREE_DISC = 0x31, + SMB_COM_TRANSACTION2 = 0x32, + SMB_COM_TRANSACTION2_SECONDARY = 0x33, + SMB_COM_FIND_CLOSE2 = 0x34, + SMB_COM_FIND_NOTIFY_CLOSE = 0x35, + /* ... */ + + SMB_COM_TREE_CONNECT = 0x70, + SMB_COM_TREE_DISCONNECT = 0x71, + SMB_COM_NEGOTIATE = 0x72, + SMB_COM_SESSION_SETUP_ANDX = 0x73, + SMB_COM_LOGOFF_ANDX = 0x74, + SMB_COM_TREE_CONNECT_ANDX = 0x75, + /* ... */ + + SMB_COM_QUERY_INFORMATION_DISK = 0x80, + SMB_COM_SEARCH = 0x81, + SMB_COM_FIND = 0x82, + SMB_COM_FIND_UNIQUE = 0x83, + SMB_COM_FIND_CLOSE = 0x84, + /* ... */ + + SMB_COM_NT_TRANSACT = 0xA0, + SMB_COM_NT_TRANSACT_SECONDARY = 0xA1, + SMB_COM_NT_CREATE_ANDX = 0xA2, + /* ... */ + SMB_COM_NT_CANCEL = 0xA4, + SMB_COM_NT_RENAME = 0xA5, + /* ... */ + + SMB_COM_OPEN_PRINT_FILE = 0xC0, + SMB_COM_WRITE_PRINT_FILE = 0xC1, + SMB_COM_CLOSE_PRINT_FILE = 0xC2, + SMB_COM_GET_PRINT_QUEUE = 0xC3, + /* ... */ + + SMB_COM_READ_BULK = 0xD8, + SMB_COM_WRITE_BULK = 0xD9, + SMB_COM_WRITE_BULK_DATA = 0xDA +} SMB_COMMAND; + +typedef enum { + STATUS_SUCCESS = 0x00000000, + STATUS_WAIT_0 = 0x00000000, + STATUS_WAIT_1 = 0x00000001, + STATUS_WAIT_2 = 0x00000002, + STATUS_WAIT_3 = 0x00000003, + STATUS_WAIT_63 = 0x0000003F, + STATUS_ABANDONED = 0x00000080, + STATUS_ABANDONED_WAIT_0 = 0x00000080, + STATUS_ABANDONED_WAIT_63 = 0x000000BF, + STATUS_USER_APC = 0x000000C0, + STATUS_KERNEL_APC = 0x00000100, + STATUS_ALERTED = 0x00000101, + STATUS_TIMEOUT = 0x00000102, + STATUS_PENDING = 0x00000103, + STATUS_REPARSE = 0x00000104, + STATUS_MORE_ENTRIES = 0x00000105, + STATUS_NOT_ALL_ASSIGNED = 0x00000106, + STATUS_SOME_NOT_MAPPED = 0x00000107, + STATUS_OPLOCK_BREAK_IN_PROGRESS = 0x00000108, + STATUS_VOLUME_MOUNTED = 0x00000109, + STATUS_RXACT_COMMITTED = 0x0000010A, + STATUS_NOTIFY_CLEANUP = 0x0000010B, + STATUS_NOTIFY_ENUM_DIR = 0x0000010C, + STATUS_NO_QUOTAS_FOR_ACCOUNT = 0x0000010D, + STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED = 0x0000010E, + STATUS_PAGE_FAULT_TRANSITION = 0x00000110, + STATUS_PAGE_FAULT_DEMAND_ZERO = 0x00000111, + STATUS_PAGE_FAULT_COPY_ON_WRITE = 0x00000112, + STATUS_PAGE_FAULT_GUARD_PAGE = 0x00000113, + STATUS_PAGE_FAULT_PAGING_FILE = 0x00000114, + STATUS_CACHE_PAGE_LOCKED = 0x00000115, + STATUS_CRASH_DUMP = 0x00000116, + STATUS_BUFFER_ALL_ZEROS = 0x00000117, + STATUS_REPARSE_OBJECT = 0x00000118, + STATUS_OBJECT_NAME_EXISTS = 0x40000000, + STATUS_THREAD_WAS_SUSPENDED = 0x40000001, + STATUS_WORKING_SET_LIMIT_RANGE = 0x40000002, + STATUS_IMAGE_NOT_AT_BASE = 0x40000003, + STATUS_RXACT_STATE_CREATED = 0x40000004, + STATUS_SEGMENT_NOTIFICATION = 0x40000005, + STATUS_LOCAL_USER_SESSION_KEY = 0x40000006, + STATUS_BAD_CURRENT_DIRECTORY = 0x40000007, + STATUS_SERIAL_MORE_WRITES = 0x40000008, + STATUS_REGISTRY_RECOVERED = 0x40000009, + STATUS_FT_READ_RECOVERY_FROM_BACKUP = 0x4000000A, + STATUS_FT_WRITE_RECOVERY = 0x4000000B, + STATUS_SERIAL_COUNTER_TIMEOUT = 0x4000000C, + STATUS_NULL_LM_PASSWORD = 0x4000000D, + STATUS_IMAGE_MACHINE_TYPE_MISMATCH = 0x4000000E, + STATUS_RECEIVE_PARTIAL = 0x4000000F, + STATUS_RECEIVE_EXPEDITED = 0x40000010, + STATUS_RECEIVE_PARTIAL_EXPEDITED = 0x40000011, + STATUS_EVENT_DONE = 0x40000012, + STATUS_EVENT_PENDING = 0x40000013, + STATUS_CHECKING_FILE_SYSTEM = 0x40000014, + STATUS_FATAL_APP_EXIT = 0x40000015, + STATUS_PREDEFINED_HANDLE = 0x40000016, + STATUS_WAS_UNLOCKED = 0x40000017, + STATUS_SERVICE_NOTIFICATION = 0x40000018, + STATUS_WAS_LOCKED = 0x40000019, + STATUS_LOG_HARD_ERROR = 0x4000001A, + STATUS_ALREADY_WIN32 = 0x4000001B, + STATUS_WX86_UNSIMULATE = 0x4000001C, + STATUS_WX86_CONTINUE = 0x4000001D, + STATUS_WX86_SINGLE_STEP = 0x4000001E, + STATUS_WX86_BREAKPOINT = 0x4000001F, + STATUS_WX86_EXCEPTION_CONTINUE = 0x40000020, + STATUS_WX86_EXCEPTION_LASTCHANCE = 0x40000021, + STATUS_WX86_EXCEPTION_CHAIN = 0x40000022, + STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE = 0x40000023, + STATUS_NO_YIELD_PERFORMED = 0x40000024, + STATUS_TIMER_RESUME_IGNORED = 0x40000025, + STATUS_GUARD_PAGE_VIOLATION = 0x80000001, + STATUS_DATATYPE_MISALIGNMENT = 0x80000002, + STATUS_BREAKPOINT = 0x80000003, + STATUS_SINGLE_STEP = 0x80000004, + STATUS_BUFFER_OVERFLOW = 0x80000005, + STATUS_NO_MORE_FILES = 0x80000006, + STATUS_WAKE_SYSTEM_DEBUGGER = 0x80000007, + STATUS_HANDLES_CLOSED = 0x8000000A, + STATUS_NO_INHERITANCE = 0x8000000B, + STATUS_GUID_SUBSTITUTION_MADE = 0x8000000C, + STATUS_PARTIAL_COPY = 0x8000000D, + STATUS_DEVICE_PAPER_EMPTY = 0x8000000E, + STATUS_DEVICE_POWERED_OFF = 0x8000000F, + STATUS_DEVICE_OFF_LINE = 0x80000010, + STATUS_DEVICE_BUSY = 0x80000011, + STATUS_NO_MORE_EAS = 0x80000012, + STATUS_INVALID_EA_NAME = 0x80000013, + STATUS_EA_LIST_INCONSISTENT = 0x80000014, + STATUS_INVALID_EA_FLAG = 0x80000015, + STATUS_VERIFY_REQUIRED = 0x80000016, + STATUS_EXTRANEOUS_INFORMATION = 0x80000017, + STATUS_RXACT_COMMIT_NECESSARY = 0x80000018, + STATUS_NO_MORE_ENTRIES = 0x8000001A, + STATUS_FILEMARK_DETECTED = 0x8000001B, + STATUS_MEDIA_CHANGED = 0x8000001C, + STATUS_BUS_RESET = 0x8000001D, + STATUS_END_OF_MEDIA = 0x8000001E, + STATUS_BEGINNING_OF_MEDIA = 0x8000001F, + STATUS_MEDIA_CHECK = 0x80000020, + STATUS_SETMARK_DETECTED = 0x80000021, + STATUS_NO_DATA_DETECTED = 0x80000022, + STATUS_REDIRECTOR_HAS_OPEN_HANDLES = 0x80000023, + STATUS_SERVER_HAS_OPEN_HANDLES = 0x80000024, + STATUS_ALREADY_DISCONNECTED = 0x80000025, + STATUS_LONGJUMP = 0x80000026, + STATUS_UNSUCCESSFUL = 0xC0000001, + STATUS_NOT_IMPLEMENTED = 0xC0000002, + STATUS_INVALID_INFO_CLASS = 0xC0000003, + STATUS_INFO_LENGTH_MISMATCH = 0xC0000004, + STATUS_ACCESS_VIOLATION = 0xC0000005, + STATUS_IN_PAGE_ERROR = 0xC0000006, + STATUS_PAGEFILE_QUOTA = 0xC0000007, + STATUS_INVALID_HANDLE = 0xC0000008, + STATUS_BAD_INITIAL_STACK = 0xC0000009, + STATUS_BAD_INITIAL_PC = 0xC000000A, + STATUS_INVALID_CID = 0xC000000B, + STATUS_TIMER_NOT_CANCELED = 0xC000000C, + STATUS_INVALID_PARAMETER = 0xC000000D, + STATUS_NO_SUCH_DEVICE = 0xC000000E, + STATUS_NO_SUCH_FILE = 0xC000000F, + STATUS_INVALID_DEVICE_REQUEST = 0xC0000010, + STATUS_END_OF_FILE = 0xC0000011, + STATUS_WRONG_VOLUME = 0xC0000012, + STATUS_NO_MEDIA_IN_DEVICE = 0xC0000013, + STATUS_UNRECOGNIZED_MEDIA = 0xC0000014, + STATUS_NONEXISTENT_SECTOR = 0xC0000015, + STATUS_MORE_PROCESSING_REQUIRED = 0xC0000016, + STATUS_NO_MEMORY = 0xC0000017, + STATUS_CONFLICTING_ADDRESSES = 0xC0000018, + STATUS_NOT_MAPPED_VIEW = 0xC0000019, + STATUS_UNABLE_TO_FREE_VM = 0xC000001A, + STATUS_UNABLE_TO_DELETE_SECTION = 0xC000001B, + STATUS_INVALID_SYSTEM_SERVICE = 0xC000001C, + STATUS_ILLEGAL_INSTRUCTION = 0xC000001D, + STATUS_INVALID_LOCK_SEQUENCE = 0xC000001E, + STATUS_INVALID_VIEW_SIZE = 0xC000001F, + STATUS_INVALID_FILE_FOR_SECTION = 0xC0000020, + STATUS_ALREADY_COMMITTED = 0xC0000021, + STATUS_ACCESS_DENIED = 0xC0000022, + STATUS_BUFFER_TOO_SMALL = 0xC0000023, + STATUS_OBJECT_TYPE_MISMATCH = 0xC0000024, + STATUS_NONCONTINUABLE_EXCEPTION = 0xC0000025, + STATUS_INVALID_DISPOSITION = 0xC0000026, + STATUS_UNWIND = 0xC0000027, + STATUS_BAD_STACK = 0xC0000028, + STATUS_INVALID_UNWIND_TARGET = 0xC0000029, + STATUS_NOT_LOCKED = 0xC000002A, + STATUS_PARITY_ERROR = 0xC000002B, + STATUS_UNABLE_TO_DECOMMIT_VM = 0xC000002C, + STATUS_NOT_COMMITTED = 0xC000002D, + STATUS_INVALID_PORT_ATTRIBUTES = 0xC000002E, + STATUS_PORT_MESSAGE_TOO_LONG = 0xC000002F, + STATUS_INVALID_PARAMETER_MIX = 0xC0000030, + STATUS_INVALID_QUOTA_LOWER = 0xC0000031, + STATUS_DISK_CORRUPT_ERROR = 0xC0000032, + STATUS_OBJECT_NAME_INVALID = 0xC0000033, + STATUS_OBJECT_NAME_NOT_FOUND = 0xC0000034, + STATUS_OBJECT_NAME_COLLISION = 0xC0000035, + STATUS_PORT_DISCONNECTED = 0xC0000037, + STATUS_DEVICE_ALREADY_ATTACHED = 0xC0000038, + STATUS_OBJECT_PATH_INVALID = 0xC0000039, + STATUS_OBJECT_PATH_NOT_FOUND = 0xC000003A, + STATUS_OBJECT_PATH_SYNTAX_BAD = 0xC000003B, + STATUS_DATA_OVERRUN = 0xC000003C, + STATUS_DATA_LATE_ERROR = 0xC000003D, + STATUS_DATA_ERROR = 0xC000003E, + STATUS_CRC_ERROR = 0xC000003F, + STATUS_SECTION_TOO_BIG = 0xC0000040, + STATUS_PORT_CONNECTION_REFUSED = 0xC0000041, + STATUS_INVALID_PORT_HANDLE = 0xC0000042, + STATUS_SHARING_VIOLATION = 0xC0000043, + STATUS_QUOTA_EXCEEDED = 0xC0000044, + STATUS_INVALID_PAGE_PROTECTION = 0xC0000045, + STATUS_MUTANT_NOT_OWNED = 0xC0000046, + STATUS_SEMAPHORE_LIMIT_EXCEEDED = 0xC0000047, + STATUS_PORT_ALREADY_SET = 0xC0000048, + STATUS_SECTION_NOT_IMAGE = 0xC0000049, + STATUS_SUSPEND_COUNT_EXCEEDED = 0xC000004A, + STATUS_THREAD_IS_TERMINATING = 0xC000004B, + STATUS_BAD_WORKING_SET_LIMIT = 0xC000004C, + STATUS_INCOMPATIBLE_FILE_MAP = 0xC000004D, + STATUS_SECTION_PROTECTION = 0xC000004E, + STATUS_EAS_NOT_SUPPORTED = 0xC000004F, + STATUS_EA_TOO_LARGE = 0xC0000050, + STATUS_NONEXISTENT_EA_ENTRY = 0xC0000051, + STATUS_NO_EAS_ON_FILE = 0xC0000052, + STATUS_EA_CORRUPT_ERROR = 0xC0000053, + STATUS_FILE_LOCK_CONFLICT = 0xC0000054, + STATUS_LOCK_NOT_GRANTED = 0xC0000055, + STATUS_DELETE_PENDING = 0xC0000056, + STATUS_CTL_FILE_NOT_SUPPORTED = 0xC0000057, + STATUS_UNKNOWN_REVISION = 0xC0000058, + STATUS_REVISION_MISMATCH = 0xC0000059, + STATUS_INVALID_OWNER = 0xC000005A, + STATUS_INVALID_PRIMARY_GROUP = 0xC000005B, + STATUS_NO_IMPERSONATION_TOKEN = 0xC000005C, + STATUS_CANT_DISABLE_MANDATORY = 0xC000005D, + STATUS_NO_LOGON_SERVERS = 0xC000005E, + STATUS_NO_SUCH_LOGON_SESSION = 0xC000005F, + STATUS_NO_SUCH_PRIVILEGE = 0xC0000060, + STATUS_PRIVILEGE_NOT_HELD = 0xC0000061, + STATUS_INVALID_ACCOUNT_NAME = 0xC0000062, + STATUS_USER_EXISTS = 0xC0000063, + STATUS_NO_SUCH_USER = 0xC0000064, + STATUS_GROUP_EXISTS = 0xC0000065, + STATUS_NO_SUCH_GROUP = 0xC0000066, + STATUS_MEMBER_IN_GROUP = 0xC0000067, + STATUS_MEMBER_NOT_IN_GROUP = 0xC0000068, + STATUS_LAST_ADMIN = 0xC0000069, + STATUS_WRONG_PASSWORD = 0xC000006A, + STATUS_ILL_FORMED_PASSWORD = 0xC000006B, + STATUS_PASSWORD_RESTRICTION = 0xC000006C, + STATUS_LOGON_FAILURE = 0xC000006D, + STATUS_ACCOUNT_RESTRICTION = 0xC000006E, + STATUS_INVALID_LOGON_HOURS = 0xC000006F, + STATUS_INVALID_WORKSTATION = 0xC0000070, + STATUS_PASSWORD_EXPIRED = 0xC0000071, + STATUS_ACCOUNT_DISABLED = 0xC0000072, + STATUS_NONE_MAPPED = 0xC0000073, + STATUS_TOO_MANY_LUIDS_REQUESTED = 0xC0000074, + STATUS_LUIDS_EXHAUSTED = 0xC0000075, + STATUS_INVALID_SUB_AUTHORITY = 0xC0000076, + STATUS_INVALID_ACL = 0xC0000077, + STATUS_INVALID_SID = 0xC0000078, + STATUS_INVALID_SECURITY_DESCR = 0xC0000079, + STATUS_PROCEDURE_NOT_FOUND = 0xC000007A, + STATUS_INVALID_IMAGE_FORMAT = 0xC000007B, + STATUS_NO_TOKEN = 0xC000007C, + STATUS_BAD_INHERITANCE_ACL = 0xC000007D, + STATUS_RANGE_NOT_LOCKED = 0xC000007E, + STATUS_DISK_FULL = 0xC000007F, + STATUS_SERVER_DISABLED = 0xC0000080, + STATUS_SERVER_NOT_DISABLED = 0xC0000081, + STATUS_TOO_MANY_GUIDS_REQUESTED = 0xC0000082, + STATUS_GUIDS_EXHAUSTED = 0xC0000083, + STATUS_INVALID_ID_AUTHORITY = 0xC0000084, + STATUS_AGENTS_EXHAUSTED = 0xC0000085, + STATUS_INVALID_VOLUME_LABEL = 0xC0000086, + STATUS_SECTION_NOT_EXTENDED = 0xC0000087, + STATUS_NOT_MAPPED_DATA = 0xC0000088, + STATUS_RESOURCE_DATA_NOT_FOUND = 0xC0000089, + STATUS_RESOURCE_TYPE_NOT_FOUND = 0xC000008A, + STATUS_RESOURCE_NAME_NOT_FOUND = 0xC000008B, + STATUS_ARRAY_BOUNDS_EXCEEDED = 0xC000008C, + STATUS_FLOAT_DENORMAL_OPERAND = 0xC000008D, + STATUS_FLOAT_DIVIDE_BY_ZERO = 0xC000008E, + STATUS_FLOAT_INEXACT_RESULT = 0xC000008F, + STATUS_FLOAT_INVALID_OPERATION = 0xC0000090, + STATUS_FLOAT_OVERFLOW = 0xC0000091, + STATUS_FLOAT_STACK_CHECK = 0xC0000092, + STATUS_FLOAT_UNDERFLOW = 0xC0000093, + STATUS_INTEGER_DIVIDE_BY_ZERO = 0xC0000094, + STATUS_INTEGER_OVERFLOW = 0xC0000095, + STATUS_PRIVILEGED_INSTRUCTION = 0xC0000096, + STATUS_TOO_MANY_PAGING_FILES = 0xC0000097, + STATUS_FILE_INVALID = 0xC0000098, + STATUS_ALLOTTED_SPACE_EXCEEDED = 0xC0000099, + STATUS_INSUFFICIENT_RESOURCES = 0xC000009A, + STATUS_DFS_EXIT_PATH_FOUND = 0xC000009B, + STATUS_DEVICE_DATA_ERROR = 0xC000009C, + STATUS_DEVICE_NOT_CONNECTED = 0xC000009D, + STATUS_DEVICE_POWER_FAILURE = 0xC000009E, + STATUS_FREE_VM_NOT_AT_BASE = 0xC000009F, + STATUS_MEMORY_NOT_ALLOCATED = 0xC00000A0, + STATUS_WORKING_SET_QUOTA = 0xC00000A1, + STATUS_MEDIA_WRITE_PROTECTED = 0xC00000A2, + STATUS_DEVICE_NOT_READY = 0xC00000A3, + STATUS_INVALID_GROUP_ATTRIBUTES = 0xC00000A4, + STATUS_BAD_IMPERSONATION_LEVEL = 0xC00000A5, + STATUS_CANT_OPEN_ANONYMOUS = 0xC00000A6, + STATUS_BAD_VALIDATION_CLASS = 0xC00000A7, + STATUS_BAD_TOKEN_TYPE = 0xC00000A8, + STATUS_BAD_MASTER_BOOT_RECORD = 0xC00000A9, + STATUS_INSTRUCTION_MISALIGNMENT = 0xC00000AA, + STATUS_INSTANCE_NOT_AVAILABLE = 0xC00000AB, + STATUS_PIPE_NOT_AVAILABLE = 0xC00000AC, + STATUS_INVALID_PIPE_STATE = 0xC00000AD, + STATUS_PIPE_BUSY = 0xC00000AE, + STATUS_ILLEGAL_FUNCTION = 0xC00000AF, + STATUS_PIPE_DISCONNECTED = 0xC00000B0, + STATUS_PIPE_CLOSING = 0xC00000B1, + STATUS_PIPE_CONNECTED = 0xC00000B2, + STATUS_PIPE_LISTENING = 0xC00000B3, + STATUS_INVALID_READ_MODE = 0xC00000B4, + STATUS_IO_TIMEOUT = 0xC00000B5, + STATUS_FILE_FORCED_CLOSED = 0xC00000B6, + STATUS_PROFILING_NOT_STARTED = 0xC00000B7, + STATUS_PROFILING_NOT_STOPPED = 0xC00000B8, + STATUS_COULD_NOT_INTERPRET = 0xC00000B9, + STATUS_FILE_IS_A_DIRECTORY = 0xC00000BA, + STATUS_NOT_SUPPORTED = 0xC00000BB, + STATUS_REMOTE_NOT_LISTENING = 0xC00000BC, + STATUS_DUPLICATE_NAME = 0xC00000BD, + STATUS_BAD_NETWORK_PATH = 0xC00000BE, + STATUS_NETWORK_BUSY = 0xC00000BF, + STATUS_DEVICE_DOES_NOT_EXIST = 0xC00000C0, + STATUS_TOO_MANY_COMMANDS = 0xC00000C1, + STATUS_ADAPTER_HARDWARE_ERROR = 0xC00000C2, + STATUS_INVALID_NETWORK_RESPONSE = 0xC00000C3, + STATUS_UNEXPECTED_NETWORK_ERROR = 0xC00000C4, + STATUS_BAD_REMOTE_ADAPTER = 0xC00000C5, + STATUS_PRINT_QUEUE_FULL = 0xC00000C6, + STATUS_NO_SPOOL_SPACE = 0xC00000C7, + STATUS_PRINT_CANCELLED = 0xC00000C8, + STATUS_NETWORK_NAME_DELETED = 0xC00000C9, + STATUS_NETWORK_ACCESS_DENIED = 0xC00000CA, + STATUS_BAD_DEVICE_TYPE = 0xC00000CB, + STATUS_BAD_NETWORK_NAME = 0xC00000CC, + STATUS_TOO_MANY_NAMES = 0xC00000CD, + STATUS_TOO_MANY_SESSIONS = 0xC00000CE, + STATUS_SHARING_PAUSED = 0xC00000CF, + STATUS_REQUEST_NOT_ACCEPTED = 0xC00000D0, + STATUS_REDIRECTOR_PAUSED = 0xC00000D1, + STATUS_NET_WRITE_FAULT = 0xC00000D2, + STATUS_PROFILING_AT_LIMIT = 0xC00000D3, + STATUS_NOT_SAME_DEVICE = 0xC00000D4, + STATUS_FILE_RENAMED = 0xC00000D5, + STATUS_VIRTUAL_CIRCUIT_CLOSED = 0xC00000D6, + STATUS_NO_SECURITY_ON_OBJECT = 0xC00000D7, + STATUS_CANT_WAIT = 0xC00000D8, + STATUS_PIPE_EMPTY = 0xC00000D9, + STATUS_CANT_ACCESS_DOMAIN_INFO = 0xC00000DA, + STATUS_CANT_TERMINATE_SELF = 0xC00000DB, + STATUS_INVALID_SERVER_STATE = 0xC00000DC, + STATUS_INVALID_DOMAIN_STATE = 0xC00000DD, + STATUS_INVALID_DOMAIN_ROLE = 0xC00000DE, + STATUS_NO_SUCH_DOMAIN = 0xC00000DF, + STATUS_DOMAIN_EXISTS = 0xC00000E0, + STATUS_DOMAIN_LIMIT_EXCEEDED = 0xC00000E1, + STATUS_OPLOCK_NOT_GRANTED = 0xC00000E2, + STATUS_INVALID_OPLOCK_PROTOCOL = 0xC00000E3, + STATUS_INTERNAL_DB_CORRUPTION = 0xC00000E4, + STATUS_INTERNAL_ERROR = 0xC00000E5, + STATUS_GENERIC_NOT_MAPPED = 0xC00000E6, + STATUS_BAD_DESCRIPTOR_FORMAT = 0xC00000E7, + STATUS_INVALID_USER_BUFFER = 0xC00000E8, + STATUS_UNEXPECTED_IO_ERROR = 0xC00000E9, + STATUS_UNEXPECTED_MM_CREATE_ERR = 0xC00000EA, + STATUS_UNEXPECTED_MM_MAP_ERROR = 0xC00000EB, + STATUS_UNEXPECTED_MM_EXTEND_ERR = 0xC00000EC, + STATUS_NOT_LOGON_PROCESS = 0xC00000ED, + STATUS_LOGON_SESSION_EXISTS = 0xC00000EE, + STATUS_INVALID_PARAMETER_1 = 0xC00000EF, + STATUS_INVALID_PARAMETER_2 = 0xC00000F0, + STATUS_INVALID_PARAMETER_3 = 0xC00000F1, + STATUS_INVALID_PARAMETER_4 = 0xC00000F2, + STATUS_INVALID_PARAMETER_5 = 0xC00000F3, + STATUS_INVALID_PARAMETER_6 = 0xC00000F4, + STATUS_INVALID_PARAMETER_7 = 0xC00000F5, + STATUS_INVALID_PARAMETER_8 = 0xC00000F6, + STATUS_INVALID_PARAMETER_9 = 0xC00000F7, + STATUS_INVALID_PARAMETER_10 = 0xC00000F8, + STATUS_INVALID_PARAMETER_11 = 0xC00000F9, + STATUS_INVALID_PARAMETER_12 = 0xC00000FA, + STATUS_REDIRECTOR_NOT_STARTED = 0xC00000FB, + STATUS_REDIRECTOR_STARTED = 0xC00000FC, + STATUS_STACK_OVERFLOW = 0xC00000FD, + STATUS_NO_SUCH_PACKAGE = 0xC00000FE, + STATUS_BAD_FUNCTION_TABLE = 0xC00000FF, + STATUS_VARIABLE_NOT_FOUND = 0xC0000100, + STATUS_DIRECTORY_NOT_EMPTY = 0xC0000101, + STATUS_FILE_CORRUPT_ERROR = 0xC0000102, + STATUS_NOT_A_DIRECTORY = 0xC0000103, + STATUS_BAD_LOGON_SESSION_STATE = 0xC0000104, + STATUS_LOGON_SESSION_COLLISION = 0xC0000105, + STATUS_NAME_TOO_LONG = 0xC0000106, + STATUS_FILES_OPEN = 0xC0000107, + STATUS_CONNECTION_IN_USE = 0xC0000108, + STATUS_MESSAGE_NOT_FOUND = 0xC0000109, + STATUS_PROCESS_IS_TERMINATING = 0xC000010A, + STATUS_INVALID_LOGON_TYPE = 0xC000010B, + STATUS_NO_GUID_TRANSLATION = 0xC000010C, + STATUS_CANNOT_IMPERSONATE = 0xC000010D, + STATUS_IMAGE_ALREADY_LOADED = 0xC000010E, + STATUS_ABIOS_NOT_PRESENT = 0xC000010F, + STATUS_ABIOS_LID_NOT_EXIST = 0xC0000110, + STATUS_ABIOS_LID_ALREADY_OWNED = 0xC0000111, + STATUS_ABIOS_NOT_LID_OWNER = 0xC0000112, + STATUS_ABIOS_INVALID_COMMAND = 0xC0000113, + STATUS_ABIOS_INVALID_LID = 0xC0000114, + STATUS_ABIOS_SELECTOR_NOT_AVAILABLE = 0xC0000115, + STATUS_ABIOS_INVALID_SELECTOR = 0xC0000116, + STATUS_NO_LDT = 0xC0000117, + STATUS_INVALID_LDT_SIZE = 0xC0000118, + STATUS_INVALID_LDT_OFFSET = 0xC0000119, + STATUS_INVALID_LDT_DESCRIPTOR = 0xC000011A, + STATUS_INVALID_IMAGE_NE_FORMAT = 0xC000011B, + STATUS_RXACT_INVALID_STATE = 0xC000011C, + STATUS_RXACT_COMMIT_FAILURE = 0xC000011D, + STATUS_MAPPED_FILE_SIZE_ZERO = 0xC000011E, + STATUS_TOO_MANY_OPENED_FILES = 0xC000011F, + STATUS_CANCELLED = 0xC0000120, + STATUS_CANNOT_DELETE = 0xC0000121, + STATUS_INVALID_COMPUTER_NAME = 0xC0000122, + STATUS_FILE_DELETED = 0xC0000123, + STATUS_SPECIAL_ACCOUNT = 0xC0000124, + STATUS_SPECIAL_GROUP = 0xC0000125, + STATUS_SPECIAL_USER = 0xC0000126, + STATUS_MEMBERS_PRIMARY_GROUP = 0xC0000127, + STATUS_FILE_CLOSED = 0xC0000128, + STATUS_TOO_MANY_THREADS = 0xC0000129, + STATUS_THREAD_NOT_IN_PROCESS = 0xC000012A, + STATUS_TOKEN_ALREADY_IN_USE = 0xC000012B, + STATUS_PAGEFILE_QUOTA_EXCEEDED = 0xC000012C, + STATUS_COMMITMENT_LIMIT = 0xC000012D, + STATUS_INVALID_IMAGE_LE_FORMAT = 0xC000012E, + STATUS_INVALID_IMAGE_NOT_MZ = 0xC000012F, + STATUS_INVALID_IMAGE_PROTECT = 0xC0000130, + STATUS_INVALID_IMAGE_WIN_16 = 0xC0000131, + STATUS_LOGON_SERVER_CONFLICT = 0xC0000132, + STATUS_TIME_DIFFERENCE_AT_DC = 0xC0000133, + STATUS_SYNCHRONIZATION_REQUIRED = 0xC0000134, + STATUS_DLL_NOT_FOUND = 0xC0000135, + STATUS_OPEN_FAILED = 0xC0000136, + STATUS_IO_PRIVILEGE_FAILED = 0xC0000137, + STATUS_ORDINAL_NOT_FOUND = 0xC0000138, + STATUS_ENTRYPOINT_NOT_FOUND = 0xC0000139, + STATUS_CONTROL_C_EXIT = 0xC000013A, + STATUS_LOCAL_DISCONNECT = 0xC000013B, + STATUS_REMOTE_DISCONNECT = 0xC000013C, + STATUS_REMOTE_RESOURCES = 0xC000013D, + STATUS_LINK_FAILED = 0xC000013E, + STATUS_LINK_TIMEOUT = 0xC000013F, + STATUS_INVALID_CONNECTION = 0xC0000140, + STATUS_INVALID_ADDRESS = 0xC0000141, + STATUS_DLL_INIT_FAILED = 0xC0000142, + STATUS_MISSING_SYSTEMFILE = 0xC0000143, + STATUS_UNHANDLED_EXCEPTION = 0xC0000144, + STATUS_APP_INIT_FAILURE = 0xC0000145, + STATUS_PAGEFILE_CREATE_FAILED = 0xC0000146, + STATUS_NO_PAGEFILE = 0xC0000147, + STATUS_INVALID_LEVEL = 0xC0000148, + STATUS_WRONG_PASSWORD_CORE = 0xC0000149, + STATUS_ILLEGAL_FLOAT_CONTEXT = 0xC000014A, + STATUS_PIPE_BROKEN = 0xC000014B, + STATUS_REGISTRY_CORRUPT = 0xC000014C, + STATUS_REGISTRY_IO_FAILED = 0xC000014D, + STATUS_NO_EVENT_PAIR = 0xC000014E, + STATUS_UNRECOGNIZED_VOLUME = 0xC000014F, + STATUS_SERIAL_NO_DEVICE_INITED = 0xC0000150, + STATUS_NO_SUCH_ALIAS = 0xC0000151, + STATUS_MEMBER_NOT_IN_ALIAS = 0xC0000152, + STATUS_MEMBER_IN_ALIAS = 0xC0000153, + STATUS_ALIAS_EXISTS = 0xC0000154, + STATUS_LOGON_NOT_GRANTED = 0xC0000155, + STATUS_TOO_MANY_SECRETS = 0xC0000156, + STATUS_SECRET_TOO_LONG = 0xC0000157, + STATUS_INTERNAL_DB_ERROR = 0xC0000158, + STATUS_FULLSCREEN_MODE = 0xC0000159, + STATUS_TOO_MANY_CONTEXT_IDS = 0xC000015A, + STATUS_LOGON_TYPE_NOT_GRANTED = 0xC000015B, + STATUS_NOT_REGISTRY_FILE = 0xC000015C, + STATUS_NT_CROSS_ENCRYPTION_REQUIRED = 0xC000015D, + STATUS_DOMAIN_CTRLR_CONFIG_ERROR = 0xC000015E, + STATUS_FT_MISSING_MEMBER = 0xC000015F, + STATUS_ILL_FORMED_SERVICE_ENTRY = 0xC0000160, + STATUS_ILLEGAL_CHARACTER = 0xC0000161, + STATUS_UNMAPPABLE_CHARACTER = 0xC0000162, + STATUS_UNDEFINED_CHARACTER = 0xC0000163, + STATUS_FLOPPY_VOLUME = 0xC0000164, + STATUS_FLOPPY_ID_MARK_NOT_FOUND = 0xC0000165, + STATUS_FLOPPY_WRONG_CYLINDER = 0xC0000166, + STATUS_FLOPPY_UNKNOWN_ERROR = 0xC0000167, + STATUS_FLOPPY_BAD_REGISTERS = 0xC0000168, + STATUS_DISK_RECALIBRATE_FAILED = 0xC0000169, + STATUS_DISK_OPERATION_FAILED = 0xC000016A, + STATUS_DISK_RESET_FAILED = 0xC000016B, + STATUS_SHARED_IRQ_BUSY = 0xC000016C, + STATUS_FT_ORPHANING = 0xC000016D, + STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT = 0xC000016E, + STATUS_PARTITION_FAILURE = 0xC0000172, + STATUS_INVALID_BLOCK_LENGTH = 0xC0000173, + STATUS_DEVICE_NOT_PARTITIONED = 0xC0000174, + STATUS_UNABLE_TO_LOCK_MEDIA = 0xC0000175, + STATUS_UNABLE_TO_UNLOAD_MEDIA = 0xC0000176, + STATUS_EOM_OVERFLOW = 0xC0000177, + STATUS_NO_MEDIA = 0xC0000178, + STATUS_NO_SUCH_MEMBER = 0xC000017A, + STATUS_INVALID_MEMBER = 0xC000017B, + STATUS_KEY_DELETED = 0xC000017C, + STATUS_NO_LOG_SPACE = 0xC000017D, + STATUS_TOO_MANY_SIDS = 0xC000017E, + STATUS_LM_CROSS_ENCRYPTION_REQUIRED = 0xC000017F, + STATUS_KEY_HAS_CHILDREN = 0xC0000180, + STATUS_CHILD_MUST_BE_VOLATILE = 0xC0000181, + STATUS_DEVICE_CONFIGURATION_ERROR = 0xC0000182, + STATUS_DRIVER_INTERNAL_ERROR = 0xC0000183, + STATUS_INVALID_DEVICE_STATE = 0xC0000184, + STATUS_IO_DEVICE_ERROR = 0xC0000185, + STATUS_DEVICE_PROTOCOL_ERROR = 0xC0000186, + STATUS_BACKUP_CONTROLLER = 0xC0000187, + STATUS_LOG_FILE_FULL = 0xC0000188, + STATUS_TOO_LATE = 0xC0000189, + STATUS_NO_TRUST_LSA_SECRET = 0xC000018A, + STATUS_NO_TRUST_SAM_ACCOUNT = 0xC000018B, + STATUS_TRUSTED_DOMAIN_FAILURE = 0xC000018C, + STATUS_TRUSTED_RELATIONSHIP_FAILURE = 0xC000018D, + STATUS_EVENTLOG_FILE_CORRUPT = 0xC000018E, + STATUS_EVENTLOG_CANT_START = 0xC000018F, + STATUS_TRUST_FAILURE = 0xC0000190, + STATUS_MUTANT_LIMIT_EXCEEDED = 0xC0000191, + STATUS_NETLOGON_NOT_STARTED = 0xC0000192, + STATUS_ACCOUNT_EXPIRED = 0xC0000193, + STATUS_POSSIBLE_DEADLOCK = 0xC0000194, + STATUS_NETWORK_CREDENTIAL_CONFLICT = 0xC0000195, + STATUS_REMOTE_SESSION_LIMIT = 0xC0000196, + STATUS_EVENTLOG_FILE_CHANGED = 0xC0000197, + STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT = 0xC0000198, + STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT = 0xC0000199, + STATUS_NOLOGON_SERVER_TRUST_ACCOUNT = 0xC000019A, + STATUS_DOMAIN_TRUST_INCONSISTENT = 0xC000019B, + STATUS_FS_DRIVER_REQUIRED = 0xC000019C, + STATUS_NO_USER_SESSION_KEY = 0xC0000202, + STATUS_USER_SESSION_DELETED = 0xC0000203, + STATUS_RESOURCE_LANG_NOT_FOUND = 0xC0000204, + STATUS_INSUFF_SERVER_RESOURCES = 0xC0000205, + STATUS_INVALID_BUFFER_SIZE = 0xC0000206, + STATUS_INVALID_ADDRESS_COMPONENT = 0xC0000207, + STATUS_INVALID_ADDRESS_WILDCARD = 0xC0000208, + STATUS_TOO_MANY_ADDRESSES = 0xC0000209, + STATUS_ADDRESS_ALREADY_EXISTS = 0xC000020A, + STATUS_ADDRESS_CLOSED = 0xC000020B, + STATUS_CONNECTION_DISCONNECTED = 0xC000020C, + STATUS_CONNECTION_RESET = 0xC000020D, + STATUS_TOO_MANY_NODES = 0xC000020E, + STATUS_TRANSACTION_ABORTED = 0xC000020F, + STATUS_TRANSACTION_TIMED_OUT = 0xC0000210, + STATUS_TRANSACTION_NO_RELEASE = 0xC0000211, + STATUS_TRANSACTION_NO_MATCH = 0xC0000212, + STATUS_TRANSACTION_RESPONDED = 0xC0000213, + STATUS_TRANSACTION_INVALID_ID = 0xC0000214, + STATUS_TRANSACTION_INVALID_TYPE = 0xC0000215, + STATUS_NOT_SERVER_SESSION = 0xC0000216, + STATUS_NOT_CLIENT_SESSION = 0xC0000217, + STATUS_CANNOT_LOAD_REGISTRY_FILE = 0xC0000218, + STATUS_DEBUG_ATTACH_FAILED = 0xC0000219, + STATUS_SYSTEM_PROCESS_TERMINATED = 0xC000021A, + STATUS_DATA_NOT_ACCEPTED = 0xC000021B, + STATUS_NO_BROWSER_SERVERS_FOUND = 0xC000021C, + STATUS_VDM_HARD_ERROR = 0xC000021D, + STATUS_DRIVER_CANCEL_TIMEOUT = 0xC000021E, + STATUS_REPLY_MESSAGE_MISMATCH = 0xC000021F, + STATUS_MAPPED_ALIGNMENT = 0xC0000220, + STATUS_IMAGE_CHECKSUM_MISMATCH = 0xC0000221, + STATUS_LOST_WRITEBEHIND_DATA = 0xC0000222, + STATUS_CLIENT_SERVER_PARAMETERS_INVALID = 0xC0000223, + STATUS_PASSWORD_MUST_CHANGE = 0xC0000224, + STATUS_NOT_FOUND = 0xC0000225, + STATUS_NOT_TINY_STREAM = 0xC0000226, + STATUS_RECOVERY_FAILURE = 0xC0000227, + STATUS_STACK_OVERFLOW_READ = 0xC0000228, + STATUS_FAIL_CHECK = 0xC0000229, + STATUS_DUPLICATE_OBJECTID = 0xC000022A, + STATUS_OBJECTID_EXISTS = 0xC000022B, + STATUS_CONVERT_TO_LARGE = 0xC000022C, + STATUS_RETRY = 0xC000022D, + STATUS_FOUND_OUT_OF_SCOPE = 0xC000022E, + STATUS_ALLOCATE_BUCKET = 0xC000022F, + STATUS_PROPSET_NOT_FOUND = 0xC0000230, + STATUS_MARSHALL_OVERFLOW = 0xC0000231, + STATUS_INVALID_VARIANT = 0xC0000232, + STATUS_DOMAIN_CONTROLLER_NOT_FOUND = 0xC0000233, + STATUS_ACCOUNT_LOCKED_OUT = 0xC0000234, + STATUS_HANDLE_NOT_CLOSABLE = 0xC0000235, + STATUS_CONNECTION_REFUSED = 0xC0000236, + STATUS_GRACEFUL_DISCONNECT = 0xC0000237, + STATUS_ADDRESS_ALREADY_ASSOCIATED = 0xC0000238, + STATUS_ADDRESS_NOT_ASSOCIATED = 0xC0000239, + STATUS_CONNECTION_INVALID = 0xC000023A, + STATUS_CONNECTION_ACTIVE = 0xC000023B, + STATUS_NETWORK_UNREACHABLE = 0xC000023C, + STATUS_HOST_UNREACHABLE = 0xC000023D, + STATUS_PROTOCOL_UNREACHABLE = 0xC000023E, + STATUS_PORT_UNREACHABLE = 0xC000023F, + STATUS_REQUEST_ABORTED = 0xC0000240, + STATUS_CONNECTION_ABORTED = 0xC0000241, + STATUS_BAD_COMPRESSION_BUFFER = 0xC0000242, + STATUS_USER_MAPPED_FILE = 0xC0000243, + STATUS_AUDIT_FAILED = 0xC0000244, + STATUS_TIMER_RESOLUTION_NOT_SET = 0xC0000245, + STATUS_CONNECTION_COUNT_LIMIT = 0xC0000246, + STATUS_LOGIN_TIME_RESTRICTION = 0xC0000247, + STATUS_LOGIN_WKSTA_RESTRICTION = 0xC0000248, + STATUS_IMAGE_MP_UP_MISMATCH = 0xC0000249, + STATUS_INSUFFICIENT_LOGON_INFO = 0xC0000250, + STATUS_BAD_DLL_ENTRYPOINT = 0xC0000251, + STATUS_BAD_SERVICE_ENTRYPOINT = 0xC0000252, + STATUS_LPC_REPLY_LOST = 0xC0000253, + STATUS_IP_ADDRESS_CONFLICT1 = 0xC0000254, + STATUS_IP_ADDRESS_CONFLICT2 = 0xC0000255, + STATUS_REGISTRY_QUOTA_LIMIT = 0xC0000256, + STATUS_PATH_NOT_COVERED = 0xC0000257, + STATUS_NO_CALLBACK_ACTIVE = 0xC0000258, + STATUS_LICENSE_QUOTA_EXCEEDED = 0xC0000259, + STATUS_PWD_TOO_SHORT = 0xC000025A, + STATUS_PWD_TOO_RECENT = 0xC000025B, + STATUS_PWD_HISTORY_CONFLICT = 0xC000025C, + STATUS_PLUGPLAY_NO_DEVICE = 0xC000025E, + STATUS_UNSUPPORTED_COMPRESSION = 0xC000025F, + STATUS_INVALID_HW_PROFILE = 0xC0000260, + STATUS_INVALID_PLUGPLAY_DEVICE_PATH = 0xC0000261, + STATUS_DRIVER_ORDINAL_NOT_FOUND = 0xC0000262, + STATUS_DRIVER_ENTRYPOINT_NOT_FOUND = 0xC0000263, + STATUS_RESOURCE_NOT_OWNED = 0xC0000264, + STATUS_TOO_MANY_LINKS = 0xC0000265, + STATUS_QUOTA_LIST_INCONSISTENT = 0xC0000266, + STATUS_FILE_IS_OFFLINE = 0xC0000267, + STATUS_EVALUATION_EXPIRATION = 0xC0000268, + STATUS_ILLEGAL_DLL_RELOCATION = 0xC0000269, + STATUS_LICENSE_VIOLATION = 0xC000026A, + STATUS_DLL_INIT_FAILED_LOGOFF = 0xC000026B, + STATUS_DRIVER_UNABLE_TO_LOAD = 0xC000026C, + STATUS_DFS_UNAVAILABLE = 0xC000026D, + STATUS_VOLUME_DISMOUNTED = 0xC000026E, + STATUS_WX86_INTERNAL_ERROR = 0xC000026F, + STATUS_WX86_FLOAT_STACK_CHECK = 0xC0000270, + STATUS_WOW_ASSERTION = 0xC0009898 +} SMB_STATUS; diff --git a/src/nu_server.c b/src/nu_server.c index ddd555e..d79967c 100755 --- a/src/nu_server.c +++ b/src/nu_server.c @@ -32,30 +32,58 @@ static void netbios_read( SMB_HEADER **buf) { bailout( "Short read." ); } -static void netbios_write( SMB_COMMAND cmd, - SMB_HEADER *buf, - SMB_PARAMS *buf2, - SMB_BYTES *buf3 ) { - BYTE buf_[4] = { 0, 0, 0, 0 }; - if(!buf2 ) buf2 = (SMB_PARAMS*)buf_; - if(!buf3 ) buf3 = (SMB_BYTES*)buf_; - - struct iovec iov[16] = { {buf , sizeof(SMB_HEADER) }, - {buf2, 1 + buf2->WordCount * 2}, - {buf3, 2 + buf3->ByteCount } }; - - buf->netbios_command = cmd; - buf->netbios_flags = 0; - buf->netbios_size = htons( sizeof(SMB_HEADER) - 4 + - 1 + buf2->WordCount * 2 + - 2 + buf3->ByteCount ); +static void netbios_write( SMB_HEADER *buf, + SMB_DATA *data, + int datacount ) { + struct iovec iov[1 + 2 * SMB_MAXREQUEST] = { {buf , sizeof(SMB_HEADER) } }; + int i, sizeout = sizeof( SMB_HEADER ); + + for( i=0; i < datacount; ++i ) + iov[1+2*i].iov_base = data[i].params, + sizeout += iov[1+2*i].iov_len = 1 + data[i].params->WordCount * 2, + iov[2+2*i].iov_base = data[i].bytes, + sizeout += iov[2+2*i].iov_len = 2 + data[i].bytes->ByteCount; + + buf->netbios_command = buf->netbios_flags = 0; + buf->netbios_size = htons( sizeout ); buf->Flags = 0x88; buf->Flags2 = 0x4001; - if( writev( childsock, iov, 3 ) < htons( buf->netbios_size ) + 4 ) + if( writev( childsock, iov, 1 + 2 * datacount ) < sizeout + 4 ) bailout( "Write failed." ); } +static const BYTE SMB_COM_NEGOTIATE_bytes[] = { 8,0,0x67,0x61,0x74,0x6c,0x69,0x6e,0x67,0 }; +static WORD SMB_COM_NEGOTIATE_params[] = { +0x0511, 0x0000, 0x0001, 0x0001, 0x0000, 0x0100, 0x0000, 0x0100, 0x0000, +0x0000, 0xC049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; + +static SMB_STATUS handle_SMB_COM_NEGOTIATE( SMB_DATA *data ) { + struct timeval t; gettimeofday( &t, NULL ); + SMB_COM_NEGOTIATE_params[8] = getpid(); + SMB_COM_NEGOTIATE_params[9] = getppid(); + *(QWORD*)(SMB_COM_NEGOTIATE_params+12) = getnttime( &t ); + + data->params = SMB_COM_NEGOTIATE_bytes; data->bytes = SMB_COM_NEGOTIATE_params; + return STATUS_SUCCESS; +} + +static const BYTE SMB_SESSION_SETUP_ANDX_bytes[] = { +19,0,'O','S',0,'g','a','t','l','i','n','g',0,'g','a','t','l','i','n','g',0}; +static BYTE SMB_SESSION_SETUP_ANDX_params[] = { 4, 0, 0, 23, 0, 1, 0, 0, 0 }; + +static SMB_STATUS handle_SMB_SESSION_SETUP_ANDX( SMB_DATA *data ) { + data->params = SMB_SESSION_SETUP_ANDX_bytes; data->bytes = SMB_SESSION_SETUP_ANDX_params; + return STATUS_SUCCESS; +} + +static‰int command_handler_match( const void *a, const void *b ) { return *(BYTE*)a - *(BYTE*)b; } +static SMB_COMMAND_HANDLER command_handler[] = { + { { SMB_COM_NEGOTIATE, 0x00, handle_SMB_COM_NEGOTIATE }, + { SMB_COM_SESSION_SETUP_ANDX, 0x01, handle_SMB_COM_SESSION_SETUP_ANDX } + } +}; + static void child( ) { SMB_HEADER *inpacket = NULL; @@ -69,6 +97,12 @@ static void child( ) { write( childsock, inpacket, 4); while( 1 ) { + SMB_COMMAND cmd; + SMB_DATA requests[ 1 + SMB_MAXREQUESTS ]; + SMB_STATUS status = STATUS_SUCCESS; + WORD sizeout = sizeof( SMB_HEADER ); + int num_requests = 0; + netbios_read( &inpacket ); if( inpacket->netbios_command != 0 ) @@ -76,46 +110,41 @@ static void child( ) { if( inpacket->Protocol != SMB_HEADER_PROTOCOL_MAGIC ) bailout( "Protocol identifier mismatch"); - switch( inpacket->Command ) { - case SMB_COM_NEGOTIATE: - { - const BYTE bytes[] = { 8,0,0x67,0x61,0x74,0x6c,0x69,0x6e,0x67,0 }; - WORD params[] = { 0x0511, 0x0000, 0x0001, 0x0001, 0x0000, 0x0100, - 0x0000, 0x0100, 0x0000, 0x0000, 0xC049, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; - struct timeval t; gettimeofday( &t, NULL ); - - *(DWORD*)&inpacket->Status = STATUS_SUCCESS; - params[8] = getpid(); params[9] = getppid(); - *(QWORD*)¶ms[12] = getnttime( &t ); - netbios_write( 0, inpacket, (SMB_PARAMS*)params, (SMB_BYTES*)bytes); - break; - } -/* case SMB_COM_SESSION_SETUP_ANDX: - { - const BYTE bytes[] = { 19, 0, 'O', 'S', 0, 'g', 'a', 't', 'l', - 'i', 'n', 'g', 0, 'g', 'a', 't', 'l', 'i', - 'n', 'g', 0}; - BYTE params[] = { 4, 0, 0, 23, 0, 1, 0, 0, 0 }; - - } */ - default: - { - fprintf( stderr, "Got message: %02X\n", inpacket->Command ); - *(DWORD*)&inpacket->Status = 0x00400002; - netbios_write( 0, inpacket, NULL, NULL ); - break; - } + cmd = inpacket->Command; + requests[ 0 ].params = (SMB_PARAMS*)(inpacket+1); + + while( (status == STATUS_SUCCESS) && (cmd != 0xff) ) { + SMB_COMMAND_HANDLER *handler = (SMB_COMMAND_HANDLER*)bsearch( cmd, command_handler, + sizeof(command_handler)/sizeof(*command_handler), sizeof(*command_handler), command_handler_match); + + requests[ num_request ].bytes = 2 + *((WORD*)requests[ num_request ].params) + (BYTE*)requests[ num_request ].params; + if( handler ) { + if( handler->flags & SMB_COMMAND_FLAG_ANDX ) { + cmd = ((BYTE*)requests[ num_requests ].params)[3]; + requests[ num_requests+1 ].params = ((BYTE*)inpacket) + ((WORD*)requests[ num_requests ].params)[2]; + } + + status = handler->handler( &requests( num_requests ) ); + + if( (status == STATUS_SUCCESS) && (handler->flags & SMB_COMMAND_FLAG_ANDX) ) { + sizeout += 3 + 2 * requests[ num_requests ].params->WordCount + requests[ num_requests ].bytes->ByteCount; + ((WORD*)requests[ num_requests ].params)[2] = sizeout; + ((BYTE*)requests[ num_requests ].params)[3] = cmd; + } + num_requests++; + } else + status = 0x00400002; } + memcpy( inpacket->status, &status, 4 ); /* not aligned, maybe we might do a store DWORD on x86 */ + netbios_write( inpacket, requests, num_requests ); } /* End main loop */ } -int main() -{ +int main() { struct sockaddr_in sa; int l=1; - + signal( SIGINT, sigint); bzero( &sa, sizeof( sa)); diff --git a/src/nu_server.h b/src/nu_server.h new file mode 100755 index 0000000..0a2ecc2 --- /dev/null +++ b/src/nu_server.h @@ -0,0 +1,43 @@ +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef int64_t QWORD; + +#include "nu_defines.h" + +typedef struct { + BYTE netbios_command; + BYTE netbios_flags; + WORD netbios_size; + DWORD Protocol; /* Protocol identifier 0xFF,"SMB" */ + BYTE Command; /* Command Code, look below */ + BYTE Status[4]; + BYTE Flags; + WORD Flags2; + WORD Pad[6]; /* Ensure 12 bytes len */ + WORD TreeID; + WORD ProcessID; + WORD UserID; + WORD MultiplexID; +} SMB_HEADER; + +typedef struct { + BYTE WordCount; + WORD Buffer[0]; +} SMB_PARAMS; + +typedef struct { + WORD ByteCount; + BYTE Buffer[0]; +} SMB_BYTES; + +typedef struct { + SMB_PARAMS *params; + SMB_BYTES *bytes; +} SMB_DATA; + +typedef struct { + SMB_COMMAND cmd; + SMB_COMMAND_FLAG flags; + SMB_STATUS (*handler)(SMB_DATA *data); +} SMB_COMMAND_HANDLER; -- cgit v1.2.3