Main Page | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

sys/libcommon/debug.c

Go to the documentation of this file.
00001 /*
00002  *  This program is free software; you can redistribute it and/or
00003  *  modify it under the terms of the GNU General Public License
00004  *  as published by the Free Software Foundation; either version
00005  *  2 of the License, or (at your option) any later version.
00006  *
00007  *  Copyright 2004 Spiro Trikaliotis
00008  *
00009  */
00010 
00022 // #define DBG_IS_DEBUG_C
00023 
00024 #include <wdm.h>
00025 // #include <ntddk.h>
00026 #include "cbm_driver.h"
00027 
00028 #include "../../arch/windows/debug.c"
00029 
00031 #ifndef min
00032 # define min(_x, _y) ( ((_x) < (_y)) ? (_x) : (_y) )
00033 #endif
00034 
00035 #if 0
00036     #define REPORT_BUG(_no, _a, _b, _c, _d, _str) KeBugCheckEx(_no, _a, _b, _c, _d)
00037 #else
00038     #define REPORT_BUG(_no, _a, _b, _c, _d, _str) \
00039         DbgPrint("--- REPORT_BUG: %04x (%08x, %08x, %08x, %08x). '%s' " \
00040         "in %s, %s(), line %u\n", \
00041         _no, _a, _b, _c, _d, _str, \
00042         __FILE__, __FUNCTION__, __LINE__);
00043 #endif
00044 
00045 
00046 
00048 typedef
00049 struct NTSTATUS_DEBUGCODE
00050 {
00052    const UCHAR *Name;
00053    
00055    NTSTATUS Value;
00056    
00057 } NTSTATUS_DEBUGCODE;
00058 
00060 #define DEFINE_STATUSCODE(_x) { #_x, _x }
00061 
00063 #define _MARKLASTENTRY ((NTSTATUS) -1)
00064 
00066 #define _LASTENTRY { "", _MARKLASTENTRY }
00067 
00069 const
00070 NTSTATUS_DEBUGCODE text[] =
00071 {
00072     DEFINE_STATUSCODE(STATUS_SUCCESS),
00073     DEFINE_STATUSCODE(STATUS_SUCCESS),
00074     DEFINE_STATUSCODE(STATUS_WAIT_0),
00075     DEFINE_STATUSCODE(STATUS_WAIT_1),
00076     DEFINE_STATUSCODE(STATUS_WAIT_2),
00077     DEFINE_STATUSCODE(STATUS_WAIT_3),
00078     DEFINE_STATUSCODE(STATUS_WAIT_63),
00079     DEFINE_STATUSCODE(STATUS_ABANDONED),
00080     DEFINE_STATUSCODE(STATUS_ABANDONED_WAIT_0),
00081     DEFINE_STATUSCODE(STATUS_ABANDONED_WAIT_63),
00082     DEFINE_STATUSCODE(STATUS_USER_APC),
00083     DEFINE_STATUSCODE(STATUS_KERNEL_APC),
00084     DEFINE_STATUSCODE(STATUS_ALERTED),
00085     DEFINE_STATUSCODE(STATUS_TIMEOUT),
00086     DEFINE_STATUSCODE(STATUS_PENDING),
00087     DEFINE_STATUSCODE(STATUS_REPARSE),
00088     DEFINE_STATUSCODE(STATUS_MORE_ENTRIES),
00089     DEFINE_STATUSCODE(STATUS_NOT_ALL_ASSIGNED),
00090     DEFINE_STATUSCODE(STATUS_SOME_NOT_MAPPED),
00091     DEFINE_STATUSCODE(STATUS_OPLOCK_BREAK_IN_PROGRESS),
00092     DEFINE_STATUSCODE(STATUS_VOLUME_MOUNTED),
00093     DEFINE_STATUSCODE(STATUS_RXACT_COMMITTED),
00094     DEFINE_STATUSCODE(STATUS_NOTIFY_CLEANUP),
00095     DEFINE_STATUSCODE(STATUS_NOTIFY_ENUM_DIR),
00096     DEFINE_STATUSCODE(STATUS_NO_QUOTAS_FOR_ACCOUNT),
00097     DEFINE_STATUSCODE(STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED),
00098     DEFINE_STATUSCODE(STATUS_PAGE_FAULT_TRANSITION),
00099     DEFINE_STATUSCODE(STATUS_PAGE_FAULT_DEMAND_ZERO),
00100     DEFINE_STATUSCODE(STATUS_PAGE_FAULT_COPY_ON_WRITE),
00101     DEFINE_STATUSCODE(STATUS_PAGE_FAULT_GUARD_PAGE),
00102     DEFINE_STATUSCODE(STATUS_PAGE_FAULT_PAGING_FILE),
00103     DEFINE_STATUSCODE(STATUS_CACHE_PAGE_LOCKED),
00104     DEFINE_STATUSCODE(STATUS_CRASH_DUMP),
00105     DEFINE_STATUSCODE(STATUS_BUFFER_ALL_ZEROS),
00106     DEFINE_STATUSCODE(STATUS_REPARSE_OBJECT),
00107     DEFINE_STATUSCODE(STATUS_RESOURCE_REQUIREMENTS_CHANGED),
00108     DEFINE_STATUSCODE(STATUS_TRANSLATION_COMPLETE),
00109     DEFINE_STATUSCODE(STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY),
00110     DEFINE_STATUSCODE(DBG_EXCEPTION_HANDLED),
00111     DEFINE_STATUSCODE(DBG_CONTINUE),
00112     DEFINE_STATUSCODE(STATUS_OBJECT_NAME_EXISTS),
00113     DEFINE_STATUSCODE(STATUS_THREAD_WAS_SUSPENDED),
00114     DEFINE_STATUSCODE(STATUS_WORKING_SET_LIMIT_RANGE),
00115     DEFINE_STATUSCODE(STATUS_IMAGE_NOT_AT_BASE),
00116     DEFINE_STATUSCODE(STATUS_RXACT_STATE_CREATED),
00117     DEFINE_STATUSCODE(STATUS_SEGMENT_NOTIFICATION),
00118     DEFINE_STATUSCODE(STATUS_LOCAL_USER_SESSION_KEY),
00119     DEFINE_STATUSCODE(STATUS_BAD_CURRENT_DIRECTORY),
00120     DEFINE_STATUSCODE(STATUS_SERIAL_MORE_WRITES),
00121     DEFINE_STATUSCODE(STATUS_REGISTRY_RECOVERED),
00122     DEFINE_STATUSCODE(STATUS_FT_READ_RECOVERY_FROM_BACKUP),
00123     DEFINE_STATUSCODE(STATUS_FT_WRITE_RECOVERY),
00124     DEFINE_STATUSCODE(STATUS_SERIAL_COUNTER_TIMEOUT),
00125     DEFINE_STATUSCODE(STATUS_NULL_LM_PASSWORD),
00126     DEFINE_STATUSCODE(STATUS_IMAGE_MACHINE_TYPE_MISMATCH),
00127     DEFINE_STATUSCODE(STATUS_RECEIVE_PARTIAL),
00128     DEFINE_STATUSCODE(STATUS_RECEIVE_EXPEDITED),
00129     DEFINE_STATUSCODE(STATUS_RECEIVE_PARTIAL_EXPEDITED),
00130     DEFINE_STATUSCODE(STATUS_EVENT_DONE),
00131     DEFINE_STATUSCODE(STATUS_EVENT_PENDING),
00132     DEFINE_STATUSCODE(STATUS_CHECKING_FILE_SYSTEM),
00133     DEFINE_STATUSCODE(STATUS_FATAL_APP_EXIT),
00134     DEFINE_STATUSCODE(STATUS_PREDEFINED_HANDLE),
00135     DEFINE_STATUSCODE(STATUS_WAS_UNLOCKED),
00136     DEFINE_STATUSCODE(STATUS_SERVICE_NOTIFICATION),
00137     DEFINE_STATUSCODE(STATUS_WAS_LOCKED),
00138     DEFINE_STATUSCODE(STATUS_LOG_HARD_ERROR),
00139     DEFINE_STATUSCODE(STATUS_ALREADY_WIN32),
00140     DEFINE_STATUSCODE(STATUS_WX86_UNSIMULATE),
00141     DEFINE_STATUSCODE(STATUS_WX86_CONTINUE),
00142     DEFINE_STATUSCODE(STATUS_WX86_SINGLE_STEP),
00143     DEFINE_STATUSCODE(STATUS_WX86_BREAKPOINT),
00144     DEFINE_STATUSCODE(STATUS_WX86_EXCEPTION_CONTINUE),
00145     DEFINE_STATUSCODE(STATUS_WX86_EXCEPTION_LASTCHANCE),
00146     DEFINE_STATUSCODE(STATUS_WX86_EXCEPTION_CHAIN),
00147     DEFINE_STATUSCODE(STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE),
00148     DEFINE_STATUSCODE(STATUS_NO_YIELD_PERFORMED),
00149     DEFINE_STATUSCODE(STATUS_TIMER_RESUME_IGNORED),
00150     DEFINE_STATUSCODE(STATUS_ARBITRATION_UNHANDLED),
00151     DEFINE_STATUSCODE(STATUS_CARDBUS_NOT_SUPPORTED),
00152     DEFINE_STATUSCODE(STATUS_WX86_CREATEWX86TIB),
00153     DEFINE_STATUSCODE(STATUS_MP_PROCESSOR_MISMATCH),
00154     DEFINE_STATUSCODE(DBG_REPLY_LATER),
00155     DEFINE_STATUSCODE(DBG_UNABLE_TO_PROVIDE_HANDLE),
00156     DEFINE_STATUSCODE(DBG_TERMINATE_THREAD),
00157     DEFINE_STATUSCODE(DBG_TERMINATE_PROCESS),
00158     DEFINE_STATUSCODE(DBG_CONTROL_C),
00159     DEFINE_STATUSCODE(DBG_PRINTEXCEPTION_C),
00160     DEFINE_STATUSCODE(DBG_RIPEXCEPTION),
00161     DEFINE_STATUSCODE(DBG_CONTROL_BREAK),
00162     DEFINE_STATUSCODE(STATUS_GUARD_PAGE_VIOLATION),
00163     DEFINE_STATUSCODE(STATUS_DATATYPE_MISALIGNMENT),
00164     DEFINE_STATUSCODE(STATUS_BREAKPOINT),
00165     DEFINE_STATUSCODE(STATUS_SINGLE_STEP),
00166     DEFINE_STATUSCODE(STATUS_BUFFER_OVERFLOW),
00167     DEFINE_STATUSCODE(STATUS_NO_MORE_FILES),
00168     DEFINE_STATUSCODE(STATUS_WAKE_SYSTEM_DEBUGGER),
00169     DEFINE_STATUSCODE(STATUS_HANDLES_CLOSED),
00170     DEFINE_STATUSCODE(STATUS_NO_INHERITANCE),
00171     DEFINE_STATUSCODE(STATUS_GUID_SUBSTITUTION_MADE),
00172     DEFINE_STATUSCODE(STATUS_PARTIAL_COPY),
00173     DEFINE_STATUSCODE(STATUS_DEVICE_PAPER_EMPTY),
00174     DEFINE_STATUSCODE(STATUS_DEVICE_POWERED_OFF),
00175     DEFINE_STATUSCODE(STATUS_DEVICE_OFF_LINE),
00176     DEFINE_STATUSCODE(STATUS_DEVICE_BUSY),
00177     DEFINE_STATUSCODE(STATUS_NO_MORE_EAS),
00178     DEFINE_STATUSCODE(STATUS_INVALID_EA_NAME),
00179     DEFINE_STATUSCODE(STATUS_EA_LIST_INCONSISTENT),
00180     DEFINE_STATUSCODE(STATUS_INVALID_EA_FLAG),
00181     DEFINE_STATUSCODE(STATUS_VERIFY_REQUIRED),
00182     DEFINE_STATUSCODE(STATUS_EXTRANEOUS_INFORMATION),
00183     DEFINE_STATUSCODE(STATUS_RXACT_COMMIT_NECESSARY),
00184     DEFINE_STATUSCODE(STATUS_NO_MORE_ENTRIES),
00185     DEFINE_STATUSCODE(STATUS_FILEMARK_DETECTED),
00186     DEFINE_STATUSCODE(STATUS_MEDIA_CHANGED),
00187     DEFINE_STATUSCODE(STATUS_BUS_RESET),
00188     DEFINE_STATUSCODE(STATUS_END_OF_MEDIA),
00189     DEFINE_STATUSCODE(STATUS_BEGINNING_OF_MEDIA),
00190     DEFINE_STATUSCODE(STATUS_MEDIA_CHECK),
00191     DEFINE_STATUSCODE(STATUS_SETMARK_DETECTED),
00192     DEFINE_STATUSCODE(STATUS_NO_DATA_DETECTED),
00193     DEFINE_STATUSCODE(STATUS_REDIRECTOR_HAS_OPEN_HANDLES),
00194     DEFINE_STATUSCODE(STATUS_SERVER_HAS_OPEN_HANDLES),
00195     DEFINE_STATUSCODE(STATUS_ALREADY_DISCONNECTED),
00196     DEFINE_STATUSCODE(STATUS_LONGJUMP),
00197     DEFINE_STATUSCODE(DBG_EXCEPTION_NOT_HANDLED),
00198     DEFINE_STATUSCODE(STATUS_UNSUCCESSFUL),
00199     DEFINE_STATUSCODE(STATUS_NOT_IMPLEMENTED),
00200     DEFINE_STATUSCODE(STATUS_INVALID_INFO_CLASS),
00201     DEFINE_STATUSCODE(STATUS_INFO_LENGTH_MISMATCH),
00202     DEFINE_STATUSCODE(STATUS_ACCESS_VIOLATION),
00203     DEFINE_STATUSCODE(STATUS_IN_PAGE_ERROR),
00204     DEFINE_STATUSCODE(STATUS_PAGEFILE_QUOTA),
00205     DEFINE_STATUSCODE(STATUS_INVALID_HANDLE),
00206     DEFINE_STATUSCODE(STATUS_BAD_INITIAL_STACK),
00207     DEFINE_STATUSCODE(STATUS_BAD_INITIAL_PC),
00208     DEFINE_STATUSCODE(STATUS_INVALID_CID),
00209     DEFINE_STATUSCODE(STATUS_TIMER_NOT_CANCELED),
00210     DEFINE_STATUSCODE(STATUS_INVALID_PARAMETER),
00211     DEFINE_STATUSCODE(STATUS_NO_SUCH_DEVICE),
00212     DEFINE_STATUSCODE(STATUS_NO_SUCH_FILE),
00213     DEFINE_STATUSCODE(STATUS_INVALID_DEVICE_REQUEST),
00214     DEFINE_STATUSCODE(STATUS_END_OF_FILE),
00215     DEFINE_STATUSCODE(STATUS_WRONG_VOLUME),
00216     DEFINE_STATUSCODE(STATUS_NO_MEDIA_IN_DEVICE),
00217     DEFINE_STATUSCODE(STATUS_UNRECOGNIZED_MEDIA),
00218     DEFINE_STATUSCODE(STATUS_NONEXISTENT_SECTOR),
00219     DEFINE_STATUSCODE(STATUS_MORE_PROCESSING_REQUIRED),
00220     DEFINE_STATUSCODE(STATUS_NO_MEMORY),
00221     DEFINE_STATUSCODE(STATUS_CONFLICTING_ADDRESSES),
00222     DEFINE_STATUSCODE(STATUS_NOT_MAPPED_VIEW),
00223     DEFINE_STATUSCODE(STATUS_UNABLE_TO_FREE_VM),
00224     DEFINE_STATUSCODE(STATUS_UNABLE_TO_DELETE_SECTION),
00225     DEFINE_STATUSCODE(STATUS_INVALID_SYSTEM_SERVICE),
00226     DEFINE_STATUSCODE(STATUS_ILLEGAL_INSTRUCTION),
00227     DEFINE_STATUSCODE(STATUS_INVALID_LOCK_SEQUENCE),
00228     DEFINE_STATUSCODE(STATUS_INVALID_VIEW_SIZE),
00229     DEFINE_STATUSCODE(STATUS_INVALID_FILE_FOR_SECTION),
00230     DEFINE_STATUSCODE(STATUS_ALREADY_COMMITTED),
00231     DEFINE_STATUSCODE(STATUS_ACCESS_DENIED),
00232     DEFINE_STATUSCODE(STATUS_BUFFER_TOO_SMALL),
00233     DEFINE_STATUSCODE(STATUS_OBJECT_TYPE_MISMATCH),
00234     DEFINE_STATUSCODE(STATUS_NONCONTINUABLE_EXCEPTION),
00235     DEFINE_STATUSCODE(STATUS_INVALID_DISPOSITION),
00236     DEFINE_STATUSCODE(STATUS_UNWIND),
00237     DEFINE_STATUSCODE(STATUS_BAD_STACK),
00238     DEFINE_STATUSCODE(STATUS_INVALID_UNWIND_TARGET),
00239     DEFINE_STATUSCODE(STATUS_NOT_LOCKED),
00240     DEFINE_STATUSCODE(STATUS_PARITY_ERROR),
00241     DEFINE_STATUSCODE(STATUS_UNABLE_TO_DECOMMIT_VM),
00242     DEFINE_STATUSCODE(STATUS_NOT_COMMITTED),
00243     DEFINE_STATUSCODE(STATUS_INVALID_PORT_ATTRIBUTES),
00244     DEFINE_STATUSCODE(STATUS_PORT_MESSAGE_TOO_LONG),
00245     DEFINE_STATUSCODE(STATUS_INVALID_PARAMETER_MIX),
00246     DEFINE_STATUSCODE(STATUS_INVALID_QUOTA_LOWER),
00247     DEFINE_STATUSCODE(STATUS_DISK_CORRUPT_ERROR),
00248     DEFINE_STATUSCODE(STATUS_OBJECT_NAME_INVALID),
00249     DEFINE_STATUSCODE(STATUS_OBJECT_NAME_NOT_FOUND),
00250     DEFINE_STATUSCODE(STATUS_OBJECT_NAME_COLLISION),
00251     DEFINE_STATUSCODE(STATUS_PORT_DISCONNECTED),
00252     DEFINE_STATUSCODE(STATUS_DEVICE_ALREADY_ATTACHED),
00253     DEFINE_STATUSCODE(STATUS_OBJECT_PATH_INVALID),
00254     DEFINE_STATUSCODE(STATUS_OBJECT_PATH_NOT_FOUND),
00255     DEFINE_STATUSCODE(STATUS_OBJECT_PATH_SYNTAX_BAD),
00256     DEFINE_STATUSCODE(STATUS_DATA_OVERRUN),
00257     DEFINE_STATUSCODE(STATUS_DATA_LATE_ERROR),
00258     DEFINE_STATUSCODE(STATUS_DATA_ERROR),
00259     DEFINE_STATUSCODE(STATUS_CRC_ERROR),
00260     DEFINE_STATUSCODE(STATUS_SECTION_TOO_BIG),
00261     DEFINE_STATUSCODE(STATUS_PORT_CONNECTION_REFUSED),
00262     DEFINE_STATUSCODE(STATUS_INVALID_PORT_HANDLE),
00263     DEFINE_STATUSCODE(STATUS_SHARING_VIOLATION),
00264     DEFINE_STATUSCODE(STATUS_QUOTA_EXCEEDED),
00265     DEFINE_STATUSCODE(STATUS_INVALID_PAGE_PROTECTION),
00266     DEFINE_STATUSCODE(STATUS_MUTANT_NOT_OWNED),
00267     DEFINE_STATUSCODE(STATUS_SEMAPHORE_LIMIT_EXCEEDED),
00268     DEFINE_STATUSCODE(STATUS_PORT_ALREADY_SET),
00269     DEFINE_STATUSCODE(STATUS_SECTION_NOT_IMAGE),
00270     DEFINE_STATUSCODE(STATUS_SUSPEND_COUNT_EXCEEDED),
00271     DEFINE_STATUSCODE(STATUS_THREAD_IS_TERMINATING),
00272     DEFINE_STATUSCODE(STATUS_BAD_WORKING_SET_LIMIT),
00273     DEFINE_STATUSCODE(STATUS_INCOMPATIBLE_FILE_MAP),
00274     DEFINE_STATUSCODE(STATUS_SECTION_PROTECTION),
00275     DEFINE_STATUSCODE(STATUS_EAS_NOT_SUPPORTED),
00276     DEFINE_STATUSCODE(STATUS_EA_TOO_LARGE),
00277     DEFINE_STATUSCODE(STATUS_NONEXISTENT_EA_ENTRY),
00278     DEFINE_STATUSCODE(STATUS_NO_EAS_ON_FILE),
00279     DEFINE_STATUSCODE(STATUS_EA_CORRUPT_ERROR),
00280     DEFINE_STATUSCODE(STATUS_FILE_LOCK_CONFLICT),
00281     DEFINE_STATUSCODE(STATUS_LOCK_NOT_GRANTED),
00282     DEFINE_STATUSCODE(STATUS_DELETE_PENDING),
00283     DEFINE_STATUSCODE(STATUS_CTL_FILE_NOT_SUPPORTED),
00284     DEFINE_STATUSCODE(STATUS_UNKNOWN_REVISION),
00285     DEFINE_STATUSCODE(STATUS_REVISION_MISMATCH),
00286     DEFINE_STATUSCODE(STATUS_INVALID_OWNER),
00287     DEFINE_STATUSCODE(STATUS_INVALID_PRIMARY_GROUP),
00288     DEFINE_STATUSCODE(STATUS_NO_IMPERSONATION_TOKEN),
00289     DEFINE_STATUSCODE(STATUS_CANT_DISABLE_MANDATORY),
00290     DEFINE_STATUSCODE(STATUS_NO_LOGON_SERVERS),
00291     DEFINE_STATUSCODE(STATUS_NO_SUCH_LOGON_SESSION),
00292     DEFINE_STATUSCODE(STATUS_NO_SUCH_PRIVILEGE),
00293     DEFINE_STATUSCODE(STATUS_PRIVILEGE_NOT_HELD),
00294     DEFINE_STATUSCODE(STATUS_INVALID_ACCOUNT_NAME),
00295     DEFINE_STATUSCODE(STATUS_USER_EXISTS),
00296     DEFINE_STATUSCODE(STATUS_NO_SUCH_USER),
00297     DEFINE_STATUSCODE(STATUS_GROUP_EXISTS),
00298     DEFINE_STATUSCODE(STATUS_NO_SUCH_GROUP),
00299     DEFINE_STATUSCODE(STATUS_MEMBER_IN_GROUP),
00300     DEFINE_STATUSCODE(STATUS_MEMBER_NOT_IN_GROUP),
00301     DEFINE_STATUSCODE(STATUS_LAST_ADMIN),
00302     DEFINE_STATUSCODE(STATUS_WRONG_PASSWORD),
00303     DEFINE_STATUSCODE(STATUS_ILL_FORMED_PASSWORD),
00304     DEFINE_STATUSCODE(STATUS_PASSWORD_RESTRICTION),
00305     DEFINE_STATUSCODE(STATUS_LOGON_FAILURE),
00306     DEFINE_STATUSCODE(STATUS_ACCOUNT_RESTRICTION),
00307     DEFINE_STATUSCODE(STATUS_INVALID_LOGON_HOURS),
00308     DEFINE_STATUSCODE(STATUS_INVALID_WORKSTATION),
00309     DEFINE_STATUSCODE(STATUS_PASSWORD_EXPIRED),
00310     DEFINE_STATUSCODE(STATUS_ACCOUNT_DISABLED),
00311     DEFINE_STATUSCODE(STATUS_NONE_MAPPED),
00312     DEFINE_STATUSCODE(STATUS_TOO_MANY_LUIDS_REQUESTED),
00313     DEFINE_STATUSCODE(STATUS_LUIDS_EXHAUSTED),
00314     DEFINE_STATUSCODE(STATUS_INVALID_SUB_AUTHORITY),
00315     DEFINE_STATUSCODE(STATUS_INVALID_ACL),
00316     DEFINE_STATUSCODE(STATUS_INVALID_SID),
00317     DEFINE_STATUSCODE(STATUS_INVALID_SECURITY_DESCR),
00318     DEFINE_STATUSCODE(STATUS_PROCEDURE_NOT_FOUND),
00319     DEFINE_STATUSCODE(STATUS_INVALID_IMAGE_FORMAT),
00320     DEFINE_STATUSCODE(STATUS_NO_TOKEN),
00321     DEFINE_STATUSCODE(STATUS_BAD_INHERITANCE_ACL),
00322     DEFINE_STATUSCODE(STATUS_RANGE_NOT_LOCKED),
00323     DEFINE_STATUSCODE(STATUS_DISK_FULL),
00324     DEFINE_STATUSCODE(STATUS_SERVER_DISABLED),
00325     DEFINE_STATUSCODE(STATUS_SERVER_NOT_DISABLED),
00326     DEFINE_STATUSCODE(STATUS_TOO_MANY_GUIDS_REQUESTED),
00327     DEFINE_STATUSCODE(STATUS_GUIDS_EXHAUSTED),
00328     DEFINE_STATUSCODE(STATUS_INVALID_ID_AUTHORITY),
00329     DEFINE_STATUSCODE(STATUS_AGENTS_EXHAUSTED),
00330     DEFINE_STATUSCODE(STATUS_INVALID_VOLUME_LABEL),
00331     DEFINE_STATUSCODE(STATUS_SECTION_NOT_EXTENDED),
00332     DEFINE_STATUSCODE(STATUS_NOT_MAPPED_DATA),
00333     DEFINE_STATUSCODE(STATUS_RESOURCE_DATA_NOT_FOUND),
00334     DEFINE_STATUSCODE(STATUS_RESOURCE_TYPE_NOT_FOUND),
00335     DEFINE_STATUSCODE(STATUS_RESOURCE_NAME_NOT_FOUND),
00336     DEFINE_STATUSCODE(STATUS_ARRAY_BOUNDS_EXCEEDED),
00337     DEFINE_STATUSCODE(STATUS_FLOAT_DENORMAL_OPERAND),
00338     DEFINE_STATUSCODE(STATUS_FLOAT_DIVIDE_BY_ZERO),
00339     DEFINE_STATUSCODE(STATUS_FLOAT_INEXACT_RESULT),
00340     DEFINE_STATUSCODE(STATUS_FLOAT_INVALID_OPERATION),
00341     DEFINE_STATUSCODE(STATUS_FLOAT_OVERFLOW),
00342     DEFINE_STATUSCODE(STATUS_FLOAT_STACK_CHECK),
00343     DEFINE_STATUSCODE(STATUS_FLOAT_UNDERFLOW),
00344     DEFINE_STATUSCODE(STATUS_INTEGER_DIVIDE_BY_ZERO),
00345     DEFINE_STATUSCODE(STATUS_INTEGER_OVERFLOW),
00346     DEFINE_STATUSCODE(STATUS_PRIVILEGED_INSTRUCTION),
00347     DEFINE_STATUSCODE(STATUS_TOO_MANY_PAGING_FILES),
00348     DEFINE_STATUSCODE(STATUS_FILE_INVALID),
00349     DEFINE_STATUSCODE(STATUS_ALLOTTED_SPACE_EXCEEDED),
00350     DEFINE_STATUSCODE(STATUS_INSUFFICIENT_RESOURCES),
00351     DEFINE_STATUSCODE(STATUS_DFS_EXIT_PATH_FOUND),
00352     DEFINE_STATUSCODE(STATUS_DEVICE_DATA_ERROR),
00353     DEFINE_STATUSCODE(STATUS_DEVICE_NOT_CONNECTED),
00354     DEFINE_STATUSCODE(STATUS_DEVICE_POWER_FAILURE),
00355     DEFINE_STATUSCODE(STATUS_FREE_VM_NOT_AT_BASE),
00356     DEFINE_STATUSCODE(STATUS_MEMORY_NOT_ALLOCATED),
00357     DEFINE_STATUSCODE(STATUS_WORKING_SET_QUOTA),
00358     DEFINE_STATUSCODE(STATUS_MEDIA_WRITE_PROTECTED),
00359     DEFINE_STATUSCODE(STATUS_DEVICE_NOT_READY),
00360     DEFINE_STATUSCODE(STATUS_INVALID_GROUP_ATTRIBUTES),
00361     DEFINE_STATUSCODE(STATUS_BAD_IMPERSONATION_LEVEL),
00362     DEFINE_STATUSCODE(STATUS_CANT_OPEN_ANONYMOUS),
00363     DEFINE_STATUSCODE(STATUS_BAD_VALIDATION_CLASS),
00364     DEFINE_STATUSCODE(STATUS_BAD_TOKEN_TYPE),
00365     DEFINE_STATUSCODE(STATUS_BAD_MASTER_BOOT_RECORD),
00366     DEFINE_STATUSCODE(STATUS_INSTRUCTION_MISALIGNMENT),
00367     DEFINE_STATUSCODE(STATUS_INSTANCE_NOT_AVAILABLE),
00368     DEFINE_STATUSCODE(STATUS_PIPE_NOT_AVAILABLE),
00369     DEFINE_STATUSCODE(STATUS_INVALID_PIPE_STATE),
00370     DEFINE_STATUSCODE(STATUS_PIPE_BUSY),
00371     DEFINE_STATUSCODE(STATUS_ILLEGAL_FUNCTION),
00372     DEFINE_STATUSCODE(STATUS_PIPE_DISCONNECTED),
00373     DEFINE_STATUSCODE(STATUS_PIPE_CLOSING),
00374     DEFINE_STATUSCODE(STATUS_PIPE_CONNECTED),
00375     DEFINE_STATUSCODE(STATUS_PIPE_LISTENING),
00376     DEFINE_STATUSCODE(STATUS_INVALID_READ_MODE),
00377     DEFINE_STATUSCODE(STATUS_IO_TIMEOUT),
00378     DEFINE_STATUSCODE(STATUS_FILE_FORCED_CLOSED),
00379     DEFINE_STATUSCODE(STATUS_PROFILING_NOT_STARTED),
00380     DEFINE_STATUSCODE(STATUS_PROFILING_NOT_STOPPED),
00381     DEFINE_STATUSCODE(STATUS_COULD_NOT_INTERPRET),
00382     DEFINE_STATUSCODE(STATUS_FILE_IS_A_DIRECTORY),
00383     DEFINE_STATUSCODE(STATUS_NOT_SUPPORTED),
00384     DEFINE_STATUSCODE(STATUS_REMOTE_NOT_LISTENING),
00385     DEFINE_STATUSCODE(STATUS_DUPLICATE_NAME),
00386     DEFINE_STATUSCODE(STATUS_BAD_NETWORK_PATH),
00387     DEFINE_STATUSCODE(STATUS_NETWORK_BUSY),
00388     DEFINE_STATUSCODE(STATUS_DEVICE_DOES_NOT_EXIST),
00389     DEFINE_STATUSCODE(STATUS_TOO_MANY_COMMANDS),
00390     DEFINE_STATUSCODE(STATUS_ADAPTER_HARDWARE_ERROR),
00391     DEFINE_STATUSCODE(STATUS_INVALID_NETWORK_RESPONSE),
00392     DEFINE_STATUSCODE(STATUS_UNEXPECTED_NETWORK_ERROR),
00393     DEFINE_STATUSCODE(STATUS_BAD_REMOTE_ADAPTER),
00394     DEFINE_STATUSCODE(STATUS_PRINT_QUEUE_FULL),
00395     DEFINE_STATUSCODE(STATUS_NO_SPOOL_SPACE),
00396     DEFINE_STATUSCODE(STATUS_PRINT_CANCELLED),
00397     DEFINE_STATUSCODE(STATUS_NETWORK_NAME_DELETED),
00398     DEFINE_STATUSCODE(STATUS_NETWORK_ACCESS_DENIED),
00399     DEFINE_STATUSCODE(STATUS_BAD_DEVICE_TYPE),
00400     DEFINE_STATUSCODE(STATUS_BAD_NETWORK_NAME),
00401     DEFINE_STATUSCODE(STATUS_TOO_MANY_NAMES),
00402     DEFINE_STATUSCODE(STATUS_TOO_MANY_SESSIONS),
00403     DEFINE_STATUSCODE(STATUS_SHARING_PAUSED),
00404     DEFINE_STATUSCODE(STATUS_REQUEST_NOT_ACCEPTED),
00405     DEFINE_STATUSCODE(STATUS_REDIRECTOR_PAUSED),
00406     DEFINE_STATUSCODE(STATUS_NET_WRITE_FAULT),
00407     DEFINE_STATUSCODE(STATUS_PROFILING_AT_LIMIT),
00408     DEFINE_STATUSCODE(STATUS_NOT_SAME_DEVICE),
00409     DEFINE_STATUSCODE(STATUS_FILE_RENAMED),
00410     DEFINE_STATUSCODE(STATUS_VIRTUAL_CIRCUIT_CLOSED),
00411     DEFINE_STATUSCODE(STATUS_NO_SECURITY_ON_OBJECT),
00412     DEFINE_STATUSCODE(STATUS_CANT_WAIT),
00413     DEFINE_STATUSCODE(STATUS_PIPE_EMPTY),
00414     DEFINE_STATUSCODE(STATUS_CANT_ACCESS_DOMAIN_INFO),
00415     DEFINE_STATUSCODE(STATUS_CANT_TERMINATE_SELF),
00416     DEFINE_STATUSCODE(STATUS_INVALID_SERVER_STATE),
00417     DEFINE_STATUSCODE(STATUS_INVALID_DOMAIN_STATE),
00418     DEFINE_STATUSCODE(STATUS_INVALID_DOMAIN_ROLE),
00419     DEFINE_STATUSCODE(STATUS_NO_SUCH_DOMAIN),
00420     DEFINE_STATUSCODE(STATUS_DOMAIN_EXISTS),
00421     DEFINE_STATUSCODE(STATUS_DOMAIN_LIMIT_EXCEEDED),
00422     DEFINE_STATUSCODE(STATUS_OPLOCK_NOT_GRANTED),
00423     DEFINE_STATUSCODE(STATUS_INVALID_OPLOCK_PROTOCOL),
00424     DEFINE_STATUSCODE(STATUS_INTERNAL_DB_CORRUPTION),
00425     DEFINE_STATUSCODE(STATUS_INTERNAL_ERROR),
00426     DEFINE_STATUSCODE(STATUS_GENERIC_NOT_MAPPED),
00427     DEFINE_STATUSCODE(STATUS_BAD_DESCRIPTOR_FORMAT),
00428     DEFINE_STATUSCODE(STATUS_INVALID_USER_BUFFER),
00429     DEFINE_STATUSCODE(STATUS_UNEXPECTED_IO_ERROR),
00430     DEFINE_STATUSCODE(STATUS_UNEXPECTED_MM_CREATE_ERR),
00431     DEFINE_STATUSCODE(STATUS_UNEXPECTED_MM_MAP_ERROR),
00432     DEFINE_STATUSCODE(STATUS_UNEXPECTED_MM_EXTEND_ERR),
00433     DEFINE_STATUSCODE(STATUS_NOT_LOGON_PROCESS),
00434     DEFINE_STATUSCODE(STATUS_LOGON_SESSION_EXISTS),
00435     DEFINE_STATUSCODE(STATUS_INVALID_PARAMETER_1),
00436     DEFINE_STATUSCODE(STATUS_INVALID_PARAMETER_2),
00437     DEFINE_STATUSCODE(STATUS_INVALID_PARAMETER_3),
00438     DEFINE_STATUSCODE(STATUS_INVALID_PARAMETER_4),
00439     DEFINE_STATUSCODE(STATUS_INVALID_PARAMETER_5),
00440     DEFINE_STATUSCODE(STATUS_INVALID_PARAMETER_6),
00441     DEFINE_STATUSCODE(STATUS_INVALID_PARAMETER_7),
00442     DEFINE_STATUSCODE(STATUS_INVALID_PARAMETER_8),
00443     DEFINE_STATUSCODE(STATUS_INVALID_PARAMETER_9),
00444     DEFINE_STATUSCODE(STATUS_INVALID_PARAMETER_10),
00445     DEFINE_STATUSCODE(STATUS_INVALID_PARAMETER_11),
00446     DEFINE_STATUSCODE(STATUS_INVALID_PARAMETER_12),
00447     DEFINE_STATUSCODE(STATUS_REDIRECTOR_NOT_STARTED),
00448     DEFINE_STATUSCODE(STATUS_REDIRECTOR_STARTED),
00449     DEFINE_STATUSCODE(STATUS_STACK_OVERFLOW),
00450     DEFINE_STATUSCODE(STATUS_NO_SUCH_PACKAGE),
00451     DEFINE_STATUSCODE(STATUS_BAD_FUNCTION_TABLE),
00452     DEFINE_STATUSCODE(STATUS_VARIABLE_NOT_FOUND),
00453     DEFINE_STATUSCODE(STATUS_DIRECTORY_NOT_EMPTY),
00454     DEFINE_STATUSCODE(STATUS_FILE_CORRUPT_ERROR),
00455     DEFINE_STATUSCODE(STATUS_NOT_A_DIRECTORY),
00456     DEFINE_STATUSCODE(STATUS_BAD_LOGON_SESSION_STATE),
00457     DEFINE_STATUSCODE(STATUS_LOGON_SESSION_COLLISION),
00458     DEFINE_STATUSCODE(STATUS_NAME_TOO_LONG),
00459     DEFINE_STATUSCODE(STATUS_FILES_OPEN),
00460     DEFINE_STATUSCODE(STATUS_CONNECTION_IN_USE),
00461     DEFINE_STATUSCODE(STATUS_MESSAGE_NOT_FOUND),
00462     DEFINE_STATUSCODE(STATUS_PROCESS_IS_TERMINATING),
00463     DEFINE_STATUSCODE(STATUS_INVALID_LOGON_TYPE),
00464     DEFINE_STATUSCODE(STATUS_NO_GUID_TRANSLATION),
00465     DEFINE_STATUSCODE(STATUS_CANNOT_IMPERSONATE),
00466     DEFINE_STATUSCODE(STATUS_IMAGE_ALREADY_LOADED),
00467     DEFINE_STATUSCODE(STATUS_ABIOS_NOT_PRESENT),
00468     DEFINE_STATUSCODE(STATUS_ABIOS_LID_NOT_EXIST),
00469     DEFINE_STATUSCODE(STATUS_ABIOS_LID_ALREADY_OWNED),
00470     DEFINE_STATUSCODE(STATUS_ABIOS_NOT_LID_OWNER),
00471     DEFINE_STATUSCODE(STATUS_ABIOS_INVALID_COMMAND),
00472     DEFINE_STATUSCODE(STATUS_ABIOS_INVALID_LID),
00473     DEFINE_STATUSCODE(STATUS_ABIOS_SELECTOR_NOT_AVAILABLE),
00474     DEFINE_STATUSCODE(STATUS_ABIOS_INVALID_SELECTOR),
00475     DEFINE_STATUSCODE(STATUS_NO_LDT),
00476     DEFINE_STATUSCODE(STATUS_INVALID_LDT_SIZE),
00477     DEFINE_STATUSCODE(STATUS_INVALID_LDT_OFFSET),
00478     DEFINE_STATUSCODE(STATUS_INVALID_LDT_DESCRIPTOR),
00479     DEFINE_STATUSCODE(STATUS_INVALID_IMAGE_NE_FORMAT),
00480     DEFINE_STATUSCODE(STATUS_RXACT_INVALID_STATE),
00481     DEFINE_STATUSCODE(STATUS_RXACT_COMMIT_FAILURE),
00482     DEFINE_STATUSCODE(STATUS_MAPPED_FILE_SIZE_ZERO),
00483     DEFINE_STATUSCODE(STATUS_TOO_MANY_OPENED_FILES),
00484     DEFINE_STATUSCODE(STATUS_CANCELLED),
00485     DEFINE_STATUSCODE(STATUS_CANNOT_DELETE),
00486     DEFINE_STATUSCODE(STATUS_INVALID_COMPUTER_NAME),
00487     DEFINE_STATUSCODE(STATUS_FILE_DELETED),
00488     DEFINE_STATUSCODE(STATUS_SPECIAL_ACCOUNT),
00489     DEFINE_STATUSCODE(STATUS_SPECIAL_GROUP),
00490     DEFINE_STATUSCODE(STATUS_SPECIAL_USER),
00491     DEFINE_STATUSCODE(STATUS_MEMBERS_PRIMARY_GROUP),
00492     DEFINE_STATUSCODE(STATUS_FILE_CLOSED),
00493     DEFINE_STATUSCODE(STATUS_TOO_MANY_THREADS),
00494     DEFINE_STATUSCODE(STATUS_THREAD_NOT_IN_PROCESS),
00495     DEFINE_STATUSCODE(STATUS_TOKEN_ALREADY_IN_USE),
00496     DEFINE_STATUSCODE(STATUS_PAGEFILE_QUOTA_EXCEEDED),
00497     DEFINE_STATUSCODE(STATUS_COMMITMENT_LIMIT),
00498     DEFINE_STATUSCODE(STATUS_INVALID_IMAGE_LE_FORMAT),
00499     DEFINE_STATUSCODE(STATUS_INVALID_IMAGE_NOT_MZ),
00500     DEFINE_STATUSCODE(STATUS_INVALID_IMAGE_PROTECT),
00501     DEFINE_STATUSCODE(STATUS_INVALID_IMAGE_WIN_16),
00502     DEFINE_STATUSCODE(STATUS_LOGON_SERVER_CONFLICT),
00503     DEFINE_STATUSCODE(STATUS_TIME_DIFFERENCE_AT_DC),
00504     DEFINE_STATUSCODE(STATUS_SYNCHRONIZATION_REQUIRED),
00505     DEFINE_STATUSCODE(STATUS_DLL_NOT_FOUND),
00506     DEFINE_STATUSCODE(STATUS_OPEN_FAILED),
00507     DEFINE_STATUSCODE(STATUS_IO_PRIVILEGE_FAILED),
00508     DEFINE_STATUSCODE(STATUS_ORDINAL_NOT_FOUND),
00509     DEFINE_STATUSCODE(STATUS_ENTRYPOINT_NOT_FOUND),
00510     DEFINE_STATUSCODE(STATUS_CONTROL_C_EXIT),
00511     DEFINE_STATUSCODE(STATUS_LOCAL_DISCONNECT),
00512     DEFINE_STATUSCODE(STATUS_REMOTE_DISCONNECT),
00513     DEFINE_STATUSCODE(STATUS_REMOTE_RESOURCES),
00514     DEFINE_STATUSCODE(STATUS_LINK_FAILED),
00515     DEFINE_STATUSCODE(STATUS_LINK_TIMEOUT),
00516     DEFINE_STATUSCODE(STATUS_INVALID_CONNECTION),
00517     DEFINE_STATUSCODE(STATUS_INVALID_ADDRESS),
00518     DEFINE_STATUSCODE(STATUS_DLL_INIT_FAILED),
00519     DEFINE_STATUSCODE(STATUS_MISSING_SYSTEMFILE),
00520     DEFINE_STATUSCODE(STATUS_UNHANDLED_EXCEPTION),
00521     DEFINE_STATUSCODE(STATUS_APP_INIT_FAILURE),
00522     DEFINE_STATUSCODE(STATUS_PAGEFILE_CREATE_FAILED),
00523     DEFINE_STATUSCODE(STATUS_NO_PAGEFILE),
00524     DEFINE_STATUSCODE(STATUS_INVALID_LEVEL),
00525     DEFINE_STATUSCODE(STATUS_WRONG_PASSWORD_CORE),
00526     DEFINE_STATUSCODE(STATUS_ILLEGAL_FLOAT_CONTEXT),
00527     DEFINE_STATUSCODE(STATUS_PIPE_BROKEN),
00528     DEFINE_STATUSCODE(STATUS_REGISTRY_CORRUPT),
00529     DEFINE_STATUSCODE(STATUS_REGISTRY_IO_FAILED),
00530     DEFINE_STATUSCODE(STATUS_NO_EVENT_PAIR),
00531     DEFINE_STATUSCODE(STATUS_UNRECOGNIZED_VOLUME),
00532     DEFINE_STATUSCODE(STATUS_SERIAL_NO_DEVICE_INITED),
00533     DEFINE_STATUSCODE(STATUS_NO_SUCH_ALIAS),
00534     DEFINE_STATUSCODE(STATUS_MEMBER_NOT_IN_ALIAS),
00535     DEFINE_STATUSCODE(STATUS_MEMBER_IN_ALIAS),
00536     DEFINE_STATUSCODE(STATUS_ALIAS_EXISTS),
00537     DEFINE_STATUSCODE(STATUS_LOGON_NOT_GRANTED),
00538     DEFINE_STATUSCODE(STATUS_TOO_MANY_SECRETS),
00539     DEFINE_STATUSCODE(STATUS_SECRET_TOO_LONG),
00540     DEFINE_STATUSCODE(STATUS_INTERNAL_DB_ERROR),
00541     DEFINE_STATUSCODE(STATUS_FULLSCREEN_MODE),
00542     DEFINE_STATUSCODE(STATUS_TOO_MANY_CONTEXT_IDS),
00543     DEFINE_STATUSCODE(STATUS_LOGON_TYPE_NOT_GRANTED),
00544     DEFINE_STATUSCODE(STATUS_NOT_REGISTRY_FILE),
00545     DEFINE_STATUSCODE(STATUS_NT_CROSS_ENCRYPTION_REQUIRED),
00546     DEFINE_STATUSCODE(STATUS_DOMAIN_CTRLR_CONFIG_ERROR),
00547     DEFINE_STATUSCODE(STATUS_FT_MISSING_MEMBER),
00548     DEFINE_STATUSCODE(STATUS_ILL_FORMED_SERVICE_ENTRY),
00549     DEFINE_STATUSCODE(STATUS_ILLEGAL_CHARACTER),
00550     DEFINE_STATUSCODE(STATUS_UNMAPPABLE_CHARACTER),
00551     DEFINE_STATUSCODE(STATUS_UNDEFINED_CHARACTER),
00552     DEFINE_STATUSCODE(STATUS_FLOPPY_VOLUME),
00553     DEFINE_STATUSCODE(STATUS_FLOPPY_ID_MARK_NOT_FOUND),
00554     DEFINE_STATUSCODE(STATUS_FLOPPY_WRONG_CYLINDER),
00555     DEFINE_STATUSCODE(STATUS_FLOPPY_UNKNOWN_ERROR),
00556     DEFINE_STATUSCODE(STATUS_FLOPPY_BAD_REGISTERS),
00557     DEFINE_STATUSCODE(STATUS_DISK_RECALIBRATE_FAILED),
00558     DEFINE_STATUSCODE(STATUS_DISK_OPERATION_FAILED),
00559     DEFINE_STATUSCODE(STATUS_DISK_RESET_FAILED),
00560     DEFINE_STATUSCODE(STATUS_SHARED_IRQ_BUSY),
00561     DEFINE_STATUSCODE(STATUS_FT_ORPHANING),
00562     DEFINE_STATUSCODE(STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT),
00563     DEFINE_STATUSCODE(STATUS_PARTITION_FAILURE),
00564     DEFINE_STATUSCODE(STATUS_INVALID_BLOCK_LENGTH),
00565     DEFINE_STATUSCODE(STATUS_DEVICE_NOT_PARTITIONED),
00566     DEFINE_STATUSCODE(STATUS_UNABLE_TO_LOCK_MEDIA),
00567     DEFINE_STATUSCODE(STATUS_UNABLE_TO_UNLOAD_MEDIA),
00568     DEFINE_STATUSCODE(STATUS_EOM_OVERFLOW),
00569     DEFINE_STATUSCODE(STATUS_NO_MEDIA),
00570     DEFINE_STATUSCODE(STATUS_NO_SUCH_MEMBER),
00571     DEFINE_STATUSCODE(STATUS_INVALID_MEMBER),
00572     DEFINE_STATUSCODE(STATUS_KEY_DELETED),
00573     DEFINE_STATUSCODE(STATUS_NO_LOG_SPACE),
00574     DEFINE_STATUSCODE(STATUS_TOO_MANY_SIDS),
00575     DEFINE_STATUSCODE(STATUS_LM_CROSS_ENCRYPTION_REQUIRED),
00576     DEFINE_STATUSCODE(STATUS_KEY_HAS_CHILDREN),
00577     DEFINE_STATUSCODE(STATUS_CHILD_MUST_BE_VOLATILE),
00578     DEFINE_STATUSCODE(STATUS_DEVICE_CONFIGURATION_ERROR),
00579     DEFINE_STATUSCODE(STATUS_DRIVER_INTERNAL_ERROR),
00580     DEFINE_STATUSCODE(STATUS_INVALID_DEVICE_STATE),
00581     DEFINE_STATUSCODE(STATUS_IO_DEVICE_ERROR),
00582     DEFINE_STATUSCODE(STATUS_DEVICE_PROTOCOL_ERROR),
00583     DEFINE_STATUSCODE(STATUS_BACKUP_CONTROLLER),
00584     DEFINE_STATUSCODE(STATUS_LOG_FILE_FULL),
00585     DEFINE_STATUSCODE(STATUS_TOO_LATE),
00586     DEFINE_STATUSCODE(STATUS_NO_TRUST_LSA_SECRET),
00587     DEFINE_STATUSCODE(STATUS_NO_TRUST_SAM_ACCOUNT),
00588     DEFINE_STATUSCODE(STATUS_TRUSTED_DOMAIN_FAILURE),
00589     DEFINE_STATUSCODE(STATUS_TRUSTED_RELATIONSHIP_FAILURE),
00590     DEFINE_STATUSCODE(STATUS_EVENTLOG_FILE_CORRUPT),
00591     DEFINE_STATUSCODE(STATUS_EVENTLOG_CANT_START),
00592     DEFINE_STATUSCODE(STATUS_TRUST_FAILURE),
00593     DEFINE_STATUSCODE(STATUS_MUTANT_LIMIT_EXCEEDED),
00594     DEFINE_STATUSCODE(STATUS_NETLOGON_NOT_STARTED),
00595     DEFINE_STATUSCODE(STATUS_ACCOUNT_EXPIRED),
00596     DEFINE_STATUSCODE(STATUS_POSSIBLE_DEADLOCK),
00597     DEFINE_STATUSCODE(STATUS_NETWORK_CREDENTIAL_CONFLICT),
00598     DEFINE_STATUSCODE(STATUS_REMOTE_SESSION_LIMIT),
00599     DEFINE_STATUSCODE(STATUS_EVENTLOG_FILE_CHANGED),
00600     DEFINE_STATUSCODE(STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT),
00601     DEFINE_STATUSCODE(STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT),
00602     DEFINE_STATUSCODE(STATUS_NOLOGON_SERVER_TRUST_ACCOUNT),
00603     DEFINE_STATUSCODE(STATUS_DOMAIN_TRUST_INCONSISTENT),
00604     DEFINE_STATUSCODE(STATUS_FS_DRIVER_REQUIRED),
00605     DEFINE_STATUSCODE(STATUS_NO_USER_SESSION_KEY),
00606     DEFINE_STATUSCODE(STATUS_USER_SESSION_DELETED),
00607     DEFINE_STATUSCODE(STATUS_RESOURCE_LANG_NOT_FOUND),
00608     DEFINE_STATUSCODE(STATUS_INSUFF_SERVER_RESOURCES),
00609     DEFINE_STATUSCODE(STATUS_INVALID_BUFFER_SIZE),
00610     DEFINE_STATUSCODE(STATUS_INVALID_ADDRESS_COMPONENT),
00611     DEFINE_STATUSCODE(STATUS_INVALID_ADDRESS_WILDCARD),
00612     DEFINE_STATUSCODE(STATUS_TOO_MANY_ADDRESSES),
00613     DEFINE_STATUSCODE(STATUS_ADDRESS_ALREADY_EXISTS),
00614     DEFINE_STATUSCODE(STATUS_ADDRESS_CLOSED),
00615     DEFINE_STATUSCODE(STATUS_CONNECTION_DISCONNECTED),
00616     DEFINE_STATUSCODE(STATUS_CONNECTION_RESET),
00617     DEFINE_STATUSCODE(STATUS_TOO_MANY_NODES),
00618     DEFINE_STATUSCODE(STATUS_TRANSACTION_ABORTED),
00619     DEFINE_STATUSCODE(STATUS_TRANSACTION_TIMED_OUT),
00620     DEFINE_STATUSCODE(STATUS_TRANSACTION_NO_RELEASE),
00621     DEFINE_STATUSCODE(STATUS_TRANSACTION_NO_MATCH),
00622     DEFINE_STATUSCODE(STATUS_TRANSACTION_RESPONDED),
00623     DEFINE_STATUSCODE(STATUS_TRANSACTION_INVALID_ID),
00624     DEFINE_STATUSCODE(STATUS_TRANSACTION_INVALID_TYPE),
00625     DEFINE_STATUSCODE(STATUS_NOT_SERVER_SESSION),
00626     DEFINE_STATUSCODE(STATUS_NOT_CLIENT_SESSION),
00627     DEFINE_STATUSCODE(STATUS_CANNOT_LOAD_REGISTRY_FILE),
00628     DEFINE_STATUSCODE(STATUS_DEBUG_ATTACH_FAILED),
00629     DEFINE_STATUSCODE(STATUS_SYSTEM_PROCESS_TERMINATED),
00630     DEFINE_STATUSCODE(STATUS_DATA_NOT_ACCEPTED),
00631     DEFINE_STATUSCODE(STATUS_NO_BROWSER_SERVERS_FOUND),
00632     DEFINE_STATUSCODE(STATUS_VDM_HARD_ERROR),
00633     DEFINE_STATUSCODE(STATUS_DRIVER_CANCEL_TIMEOUT),
00634     DEFINE_STATUSCODE(STATUS_REPLY_MESSAGE_MISMATCH),
00635     DEFINE_STATUSCODE(STATUS_MAPPED_ALIGNMENT),
00636     DEFINE_STATUSCODE(STATUS_IMAGE_CHECKSUM_MISMATCH),
00637     DEFINE_STATUSCODE(STATUS_LOST_WRITEBEHIND_DATA),
00638     DEFINE_STATUSCODE(STATUS_CLIENT_SERVER_PARAMETERS_INVALID),
00639     DEFINE_STATUSCODE(STATUS_PASSWORD_MUST_CHANGE),
00640     DEFINE_STATUSCODE(STATUS_NOT_FOUND),
00641     DEFINE_STATUSCODE(STATUS_NOT_TINY_STREAM),
00642     DEFINE_STATUSCODE(STATUS_RECOVERY_FAILURE),
00643     DEFINE_STATUSCODE(STATUS_STACK_OVERFLOW_READ),
00644     DEFINE_STATUSCODE(STATUS_FAIL_CHECK),
00645     DEFINE_STATUSCODE(STATUS_DUPLICATE_OBJECTID),
00646     DEFINE_STATUSCODE(STATUS_OBJECTID_EXISTS),
00647     DEFINE_STATUSCODE(STATUS_CONVERT_TO_LARGE),
00648     DEFINE_STATUSCODE(STATUS_RETRY),
00649     DEFINE_STATUSCODE(STATUS_FOUND_OUT_OF_SCOPE),
00650     DEFINE_STATUSCODE(STATUS_ALLOCATE_BUCKET),
00651     DEFINE_STATUSCODE(STATUS_PROPSET_NOT_FOUND),
00652     DEFINE_STATUSCODE(STATUS_MARSHALL_OVERFLOW),
00653     DEFINE_STATUSCODE(STATUS_INVALID_VARIANT),
00654     DEFINE_STATUSCODE(STATUS_DOMAIN_CONTROLLER_NOT_FOUND),
00655     DEFINE_STATUSCODE(STATUS_ACCOUNT_LOCKED_OUT),
00656     DEFINE_STATUSCODE(STATUS_HANDLE_NOT_CLOSABLE),
00657     DEFINE_STATUSCODE(STATUS_CONNECTION_REFUSED),
00658     DEFINE_STATUSCODE(STATUS_GRACEFUL_DISCONNECT),
00659     DEFINE_STATUSCODE(STATUS_ADDRESS_ALREADY_ASSOCIATED),
00660     DEFINE_STATUSCODE(STATUS_ADDRESS_NOT_ASSOCIATED),
00661     DEFINE_STATUSCODE(STATUS_CONNECTION_INVALID),
00662     DEFINE_STATUSCODE(STATUS_CONNECTION_ACTIVE),
00663     DEFINE_STATUSCODE(STATUS_NETWORK_UNREACHABLE),
00664     DEFINE_STATUSCODE(STATUS_HOST_UNREACHABLE),
00665     DEFINE_STATUSCODE(STATUS_PROTOCOL_UNREACHABLE),
00666     DEFINE_STATUSCODE(STATUS_PORT_UNREACHABLE),
00667     DEFINE_STATUSCODE(STATUS_REQUEST_ABORTED),
00668     DEFINE_STATUSCODE(STATUS_CONNECTION_ABORTED),
00669     DEFINE_STATUSCODE(STATUS_BAD_COMPRESSION_BUFFER),
00670     DEFINE_STATUSCODE(STATUS_USER_MAPPED_FILE),
00671     DEFINE_STATUSCODE(STATUS_AUDIT_FAILED),
00672     DEFINE_STATUSCODE(STATUS_TIMER_RESOLUTION_NOT_SET),
00673     DEFINE_STATUSCODE(STATUS_CONNECTION_COUNT_LIMIT),
00674     DEFINE_STATUSCODE(STATUS_LOGIN_TIME_RESTRICTION),
00675     DEFINE_STATUSCODE(STATUS_LOGIN_WKSTA_RESTRICTION),
00676     DEFINE_STATUSCODE(STATUS_IMAGE_MP_UP_MISMATCH),
00677     DEFINE_STATUSCODE(STATUS_INSUFFICIENT_LOGON_INFO),
00678     DEFINE_STATUSCODE(STATUS_BAD_DLL_ENTRYPOINT),
00679     DEFINE_STATUSCODE(STATUS_BAD_SERVICE_ENTRYPOINT),
00680     DEFINE_STATUSCODE(STATUS_LPC_REPLY_LOST),
00681     DEFINE_STATUSCODE(STATUS_IP_ADDRESS_CONFLICT1),
00682     DEFINE_STATUSCODE(STATUS_IP_ADDRESS_CONFLICT2),
00683     DEFINE_STATUSCODE(STATUS_REGISTRY_QUOTA_LIMIT),
00684     DEFINE_STATUSCODE(STATUS_PATH_NOT_COVERED),
00685     DEFINE_STATUSCODE(STATUS_NO_CALLBACK_ACTIVE),
00686     DEFINE_STATUSCODE(STATUS_LICENSE_QUOTA_EXCEEDED),
00687     DEFINE_STATUSCODE(STATUS_PWD_TOO_SHORT),
00688     DEFINE_STATUSCODE(STATUS_PWD_TOO_RECENT),
00689     DEFINE_STATUSCODE(STATUS_PWD_HISTORY_CONFLICT),
00690     DEFINE_STATUSCODE(STATUS_PLUGPLAY_NO_DEVICE),
00691     DEFINE_STATUSCODE(STATUS_UNSUPPORTED_COMPRESSION),
00692     DEFINE_STATUSCODE(STATUS_INVALID_HW_PROFILE),
00693     DEFINE_STATUSCODE(STATUS_INVALID_PLUGPLAY_DEVICE_PATH),
00694     DEFINE_STATUSCODE(STATUS_DRIVER_ORDINAL_NOT_FOUND),
00695     DEFINE_STATUSCODE(STATUS_DRIVER_ENTRYPOINT_NOT_FOUND),
00696     DEFINE_STATUSCODE(STATUS_RESOURCE_NOT_OWNED),
00697     DEFINE_STATUSCODE(STATUS_TOO_MANY_LINKS),
00698     DEFINE_STATUSCODE(STATUS_QUOTA_LIST_INCONSISTENT),
00699     DEFINE_STATUSCODE(STATUS_FILE_IS_OFFLINE),
00700     DEFINE_STATUSCODE(STATUS_EVALUATION_EXPIRATION),
00701     DEFINE_STATUSCODE(STATUS_ILLEGAL_DLL_RELOCATION),
00702     DEFINE_STATUSCODE(STATUS_LICENSE_VIOLATION),
00703     DEFINE_STATUSCODE(STATUS_DLL_INIT_FAILED_LOGOFF),
00704     DEFINE_STATUSCODE(STATUS_DRIVER_UNABLE_TO_LOAD),
00705     DEFINE_STATUSCODE(STATUS_DFS_UNAVAILABLE),
00706     DEFINE_STATUSCODE(STATUS_VOLUME_DISMOUNTED),
00707     DEFINE_STATUSCODE(STATUS_WX86_INTERNAL_ERROR),
00708     DEFINE_STATUSCODE(STATUS_WX86_FLOAT_STACK_CHECK),
00709     DEFINE_STATUSCODE(STATUS_VALIDATE_CONTINUE),
00710     DEFINE_STATUSCODE(STATUS_NO_MATCH),
00711     DEFINE_STATUSCODE(STATUS_NO_MORE_MATCHES),
00712     DEFINE_STATUSCODE(STATUS_NOT_A_REPARSE_POINT),
00713     DEFINE_STATUSCODE(STATUS_IO_REPARSE_TAG_INVALID),
00714     DEFINE_STATUSCODE(STATUS_IO_REPARSE_TAG_MISMATCH),
00715     DEFINE_STATUSCODE(STATUS_IO_REPARSE_DATA_INVALID),
00716     DEFINE_STATUSCODE(STATUS_IO_REPARSE_TAG_NOT_HANDLED),
00717     DEFINE_STATUSCODE(STATUS_REPARSE_POINT_NOT_RESOLVED),
00718     DEFINE_STATUSCODE(STATUS_DIRECTORY_IS_A_REPARSE_POINT),
00719     DEFINE_STATUSCODE(STATUS_RANGE_LIST_CONFLICT),
00720     DEFINE_STATUSCODE(STATUS_SOURCE_ELEMENT_EMPTY),
00721     DEFINE_STATUSCODE(STATUS_DESTINATION_ELEMENT_FULL),
00722     DEFINE_STATUSCODE(STATUS_ILLEGAL_ELEMENT_ADDRESS),
00723     DEFINE_STATUSCODE(STATUS_MAGAZINE_NOT_PRESENT),
00724     DEFINE_STATUSCODE(STATUS_REINITIALIZATION_NEEDED),
00725     DEFINE_STATUSCODE(STATUS_DEVICE_REQUIRES_CLEANING),
00726     DEFINE_STATUSCODE(STATUS_DEVICE_DOOR_OPEN),
00727     DEFINE_STATUSCODE(STATUS_ENCRYPTION_FAILED),
00728     DEFINE_STATUSCODE(STATUS_DECRYPTION_FAILED),
00729     DEFINE_STATUSCODE(STATUS_RANGE_NOT_FOUND),
00730     DEFINE_STATUSCODE(STATUS_NO_RECOVERY_POLICY),
00731     DEFINE_STATUSCODE(STATUS_NO_EFS),
00732     DEFINE_STATUSCODE(STATUS_WRONG_EFS),
00733     DEFINE_STATUSCODE(STATUS_NO_USER_KEYS),
00734     DEFINE_STATUSCODE(STATUS_FILE_NOT_ENCRYPTED),
00735     DEFINE_STATUSCODE(STATUS_NOT_EXPORT_FORMAT),
00736     DEFINE_STATUSCODE(STATUS_FILE_ENCRYPTED),
00737     DEFINE_STATUSCODE(STATUS_WAKE_SYSTEM),
00738     DEFINE_STATUSCODE(STATUS_WMI_GUID_NOT_FOUND),
00739     DEFINE_STATUSCODE(STATUS_WMI_INSTANCE_NOT_FOUND),
00740     DEFINE_STATUSCODE(STATUS_WMI_ITEMID_NOT_FOUND),
00741     DEFINE_STATUSCODE(STATUS_WMI_TRY_AGAIN),
00742     DEFINE_STATUSCODE(STATUS_SHARED_POLICY),
00743     DEFINE_STATUSCODE(STATUS_POLICY_OBJECT_NOT_FOUND),
00744     DEFINE_STATUSCODE(STATUS_POLICY_ONLY_IN_DS),
00745     DEFINE_STATUSCODE(STATUS_VOLUME_NOT_UPGRADED),
00746     DEFINE_STATUSCODE(STATUS_REMOTE_STORAGE_NOT_ACTIVE),
00747     DEFINE_STATUSCODE(STATUS_REMOTE_STORAGE_MEDIA_ERROR),
00748     DEFINE_STATUSCODE(STATUS_NO_TRACKING_SERVICE),
00749     DEFINE_STATUSCODE(STATUS_SERVER_SID_MISMATCH),
00750     DEFINE_STATUSCODE(STATUS_DS_NO_ATTRIBUTE_OR_VALUE),
00751     DEFINE_STATUSCODE(STATUS_DS_INVALID_ATTRIBUTE_SYNTAX),
00752     DEFINE_STATUSCODE(STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED),
00753     DEFINE_STATUSCODE(STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS),
00754     DEFINE_STATUSCODE(STATUS_DS_BUSY),
00755     DEFINE_STATUSCODE(STATUS_DS_UNAVAILABLE),
00756     DEFINE_STATUSCODE(STATUS_DS_NO_RIDS_ALLOCATED),
00757     DEFINE_STATUSCODE(STATUS_DS_NO_MORE_RIDS),
00758     DEFINE_STATUSCODE(STATUS_DS_INCORRECT_ROLE_OWNER),
00759     DEFINE_STATUSCODE(STATUS_DS_RIDMGR_INIT_ERROR),
00760     DEFINE_STATUSCODE(STATUS_DS_OBJ_CLASS_VIOLATION),
00761     DEFINE_STATUSCODE(STATUS_DS_CANT_ON_NON_LEAF),
00762     DEFINE_STATUSCODE(STATUS_DS_CANT_ON_RDN),
00763     DEFINE_STATUSCODE(STATUS_DS_CANT_MOD_OBJ_CLASS),
00764     DEFINE_STATUSCODE(STATUS_DS_CROSS_DOM_MOVE_FAILED),
00765     DEFINE_STATUSCODE(STATUS_DS_GC_NOT_AVAILABLE),
00766     DEFINE_STATUSCODE(STATUS_DIRECTORY_SERVICE_REQUIRED),
00767     DEFINE_STATUSCODE(STATUS_REPARSE_ATTRIBUTE_CONFLICT),
00768     DEFINE_STATUSCODE(STATUS_CANT_ENABLE_DENY_ONLY),
00769     DEFINE_STATUSCODE(STATUS_FLOAT_MULTIPLE_FAULTS),
00770     DEFINE_STATUSCODE(STATUS_FLOAT_MULTIPLE_TRAPS),
00771     DEFINE_STATUSCODE(STATUS_DEVICE_REMOVED),
00772     DEFINE_STATUSCODE(STATUS_JOURNAL_DELETE_IN_PROGRESS),
00773     DEFINE_STATUSCODE(STATUS_JOURNAL_NOT_ACTIVE),
00774     DEFINE_STATUSCODE(STATUS_NOINTERFACE),
00775     DEFINE_STATUSCODE(STATUS_DS_ADMIN_LIMIT_EXCEEDED),
00776     DEFINE_STATUSCODE(STATUS_DRIVER_FAILED_SLEEP),
00777     DEFINE_STATUSCODE(STATUS_MUTUAL_AUTHENTICATION_FAILED),
00778     DEFINE_STATUSCODE(STATUS_CORRUPT_SYSTEM_FILE),
00779     DEFINE_STATUSCODE(STATUS_DATATYPE_MISALIGNMENT_ERROR),
00780     DEFINE_STATUSCODE(STATUS_WMI_READ_ONLY),
00781     DEFINE_STATUSCODE(STATUS_WMI_SET_FAILURE),
00782     DEFINE_STATUSCODE(STATUS_COMMITMENT_MINIMUM),
00783     DEFINE_STATUSCODE(STATUS_REG_NAT_CONSUMPTION),
00784     DEFINE_STATUSCODE(STATUS_TRANSPORT_FULL),
00785     DEFINE_STATUSCODE(STATUS_DS_SAM_INIT_FAILURE),
00786     DEFINE_STATUSCODE(STATUS_ONLY_IF_CONNECTED),
00787     DEFINE_STATUSCODE(STATUS_DS_SENSITIVE_GROUP_VIOLATION),
00788     DEFINE_STATUSCODE(STATUS_PNP_RESTART_ENUMERATION),
00789     DEFINE_STATUSCODE(STATUS_JOURNAL_ENTRY_DELETED),
00790     DEFINE_STATUSCODE(STATUS_DS_CANT_MOD_PRIMARYGROUPID),
00791     DEFINE_STATUSCODE(STATUS_SYSTEM_IMAGE_BAD_SIGNATURE),
00792     DEFINE_STATUSCODE(STATUS_PNP_REBOOT_REQUIRED),
00793     DEFINE_STATUSCODE(STATUS_POWER_STATE_INVALID),
00794     DEFINE_STATUSCODE(STATUS_DS_INVALID_GROUP_TYPE),
00795     DEFINE_STATUSCODE(STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN),
00796     DEFINE_STATUSCODE(STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN),
00797     DEFINE_STATUSCODE(STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER),
00798     DEFINE_STATUSCODE(STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER),
00799     DEFINE_STATUSCODE(STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER),
00800     DEFINE_STATUSCODE(STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER),
00801     DEFINE_STATUSCODE(STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER),
00802     DEFINE_STATUSCODE(STATUS_DS_HAVE_PRIMARY_MEMBERS),
00803     DEFINE_STATUSCODE(STATUS_WMI_NOT_SUPPORTED),
00804     DEFINE_STATUSCODE(STATUS_INSUFFICIENT_POWER),
00805     DEFINE_STATUSCODE(STATUS_SAM_NEED_BOOTKEY_PASSWORD),
00806     DEFINE_STATUSCODE(STATUS_SAM_NEED_BOOTKEY_FLOPPY),
00807     DEFINE_STATUSCODE(STATUS_DS_CANT_START),
00808     DEFINE_STATUSCODE(STATUS_DS_INIT_FAILURE),
00809     DEFINE_STATUSCODE(STATUS_SAM_INIT_FAILURE),
00810     DEFINE_STATUSCODE(STATUS_DS_GC_REQUIRED),
00811     DEFINE_STATUSCODE(STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY),
00812     DEFINE_STATUSCODE(STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS),
00813     DEFINE_STATUSCODE(STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED),
00814     DEFINE_STATUSCODE(STATUS_MULTIPLE_FAULT_VIOLATION),
00815     DEFINE_STATUSCODE(STATUS_NOT_SUPPORTED_ON_SBS),
00816     DEFINE_STATUSCODE(STATUS_WOW_ASSERTION),
00817     DEFINE_STATUSCODE(DBG_NO_STATE_CHANGE),
00818     DEFINE_STATUSCODE(DBG_APP_NOT_IDLE),
00819     DEFINE_STATUSCODE(RPC_NT_INVALID_STRING_BINDING),
00820     DEFINE_STATUSCODE(RPC_NT_WRONG_KIND_OF_BINDING),
00821     DEFINE_STATUSCODE(RPC_NT_INVALID_BINDING),
00822     DEFINE_STATUSCODE(RPC_NT_PROTSEQ_NOT_SUPPORTED),
00823     DEFINE_STATUSCODE(RPC_NT_INVALID_RPC_PROTSEQ),
00824     DEFINE_STATUSCODE(RPC_NT_INVALID_STRING_UUID),
00825     DEFINE_STATUSCODE(RPC_NT_INVALID_ENDPOINT_FORMAT),
00826     DEFINE_STATUSCODE(RPC_NT_INVALID_NET_ADDR),
00827     DEFINE_STATUSCODE(RPC_NT_NO_ENDPOINT_FOUND),
00828     DEFINE_STATUSCODE(RPC_NT_INVALID_TIMEOUT),
00829     DEFINE_STATUSCODE(RPC_NT_OBJECT_NOT_FOUND),
00830     DEFINE_STATUSCODE(RPC_NT_ALREADY_REGISTERED),
00831     DEFINE_STATUSCODE(RPC_NT_TYPE_ALREADY_REGISTERED),
00832     DEFINE_STATUSCODE(RPC_NT_ALREADY_LISTENING),
00833     DEFINE_STATUSCODE(RPC_NT_NO_PROTSEQS_REGISTERED),
00834     DEFINE_STATUSCODE(RPC_NT_NOT_LISTENING),
00835     DEFINE_STATUSCODE(RPC_NT_UNKNOWN_MGR_TYPE),
00836     DEFINE_STATUSCODE(RPC_NT_UNKNOWN_IF),
00837     DEFINE_STATUSCODE(RPC_NT_NO_BINDINGS),
00838     DEFINE_STATUSCODE(RPC_NT_NO_PROTSEQS),
00839     DEFINE_STATUSCODE(RPC_NT_CANT_CREATE_ENDPOINT),
00840     DEFINE_STATUSCODE(RPC_NT_OUT_OF_RESOURCES),
00841     DEFINE_STATUSCODE(RPC_NT_SERVER_UNAVAILABLE),
00842     DEFINE_STATUSCODE(RPC_NT_SERVER_TOO_BUSY),
00843     DEFINE_STATUSCODE(RPC_NT_INVALID_NETWORK_OPTIONS),
00844     DEFINE_STATUSCODE(RPC_NT_NO_CALL_ACTIVE),
00845     DEFINE_STATUSCODE(RPC_NT_CALL_FAILED),
00846     DEFINE_STATUSCODE(RPC_NT_CALL_FAILED_DNE),
00847     DEFINE_STATUSCODE(RPC_NT_PROTOCOL_ERROR),
00848     DEFINE_STATUSCODE(RPC_NT_UNSUPPORTED_TRANS_SYN),
00849     DEFINE_STATUSCODE(RPC_NT_UNSUPPORTED_TYPE),
00850     DEFINE_STATUSCODE(RPC_NT_INVALID_TAG),
00851     DEFINE_STATUSCODE(RPC_NT_INVALID_BOUND),
00852     DEFINE_STATUSCODE(RPC_NT_NO_ENTRY_NAME),
00853     DEFINE_STATUSCODE(RPC_NT_INVALID_NAME_SYNTAX),
00854     DEFINE_STATUSCODE(RPC_NT_UNSUPPORTED_NAME_SYNTAX),
00855     DEFINE_STATUSCODE(RPC_NT_UUID_NO_ADDRESS),
00856     DEFINE_STATUSCODE(RPC_NT_DUPLICATE_ENDPOINT),
00857     DEFINE_STATUSCODE(RPC_NT_UNKNOWN_AUTHN_TYPE),
00858     DEFINE_STATUSCODE(RPC_NT_MAX_CALLS_TOO_SMALL),
00859     DEFINE_STATUSCODE(RPC_NT_STRING_TOO_LONG),
00860     DEFINE_STATUSCODE(RPC_NT_PROTSEQ_NOT_FOUND),
00861     DEFINE_STATUSCODE(RPC_NT_PROCNUM_OUT_OF_RANGE),
00862     DEFINE_STATUSCODE(RPC_NT_BINDING_HAS_NO_AUTH),
00863     DEFINE_STATUSCODE(RPC_NT_UNKNOWN_AUTHN_SERVICE),
00864     DEFINE_STATUSCODE(RPC_NT_UNKNOWN_AUTHN_LEVEL),
00865     DEFINE_STATUSCODE(RPC_NT_INVALID_AUTH_IDENTITY),
00866     DEFINE_STATUSCODE(RPC_NT_UNKNOWN_AUTHZ_SERVICE),
00867     DEFINE_STATUSCODE(EPT_NT_INVALID_ENTRY),
00868     DEFINE_STATUSCODE(EPT_NT_CANT_PERFORM_OP),
00869     DEFINE_STATUSCODE(EPT_NT_NOT_REGISTERED),
00870     DEFINE_STATUSCODE(RPC_NT_NOTHING_TO_EXPORT),
00871     DEFINE_STATUSCODE(RPC_NT_INCOMPLETE_NAME),
00872     DEFINE_STATUSCODE(RPC_NT_INVALID_VERS_OPTION),
00873     DEFINE_STATUSCODE(RPC_NT_NO_MORE_MEMBERS),
00874     DEFINE_STATUSCODE(RPC_NT_NOT_ALL_OBJS_UNEXPORTED),
00875     DEFINE_STATUSCODE(RPC_NT_INTERFACE_NOT_FOUND),
00876     DEFINE_STATUSCODE(RPC_NT_ENTRY_ALREADY_EXISTS),
00877     DEFINE_STATUSCODE(RPC_NT_ENTRY_NOT_FOUND),
00878     DEFINE_STATUSCODE(RPC_NT_NAME_SERVICE_UNAVAILABLE),
00879     DEFINE_STATUSCODE(RPC_NT_INVALID_NAF_ID),
00880     DEFINE_STATUSCODE(RPC_NT_CANNOT_SUPPORT),
00881     DEFINE_STATUSCODE(RPC_NT_NO_CONTEXT_AVAILABLE),
00882     DEFINE_STATUSCODE(RPC_NT_INTERNAL_ERROR),
00883     DEFINE_STATUSCODE(RPC_NT_ZERO_DIVIDE),
00884     DEFINE_STATUSCODE(RPC_NT_ADDRESS_ERROR),
00885     DEFINE_STATUSCODE(RPC_NT_FP_DIV_ZERO),
00886     DEFINE_STATUSCODE(RPC_NT_FP_UNDERFLOW),
00887     DEFINE_STATUSCODE(RPC_NT_FP_OVERFLOW),
00888     DEFINE_STATUSCODE(RPC_NT_NO_MORE_ENTRIES),
00889     DEFINE_STATUSCODE(RPC_NT_SS_CHAR_TRANS_OPEN_FAIL),
00890     DEFINE_STATUSCODE(RPC_NT_SS_CHAR_TRANS_SHORT_FILE),
00891     DEFINE_STATUSCODE(RPC_NT_SS_IN_NULL_CONTEXT),
00892     DEFINE_STATUSCODE(RPC_NT_SS_CONTEXT_MISMATCH),
00893     DEFINE_STATUSCODE(RPC_NT_SS_CONTEXT_DAMAGED),
00894     DEFINE_STATUSCODE(RPC_NT_SS_HANDLES_MISMATCH),
00895     DEFINE_STATUSCODE(RPC_NT_SS_CANNOT_GET_CALL_HANDLE),
00896     DEFINE_STATUSCODE(RPC_NT_NULL_REF_POINTER),
00897     DEFINE_STATUSCODE(RPC_NT_ENUM_VALUE_OUT_OF_RANGE),
00898     DEFINE_STATUSCODE(RPC_NT_BYTE_COUNT_TOO_SMALL),
00899     DEFINE_STATUSCODE(RPC_NT_BAD_STUB_DATA),
00900     DEFINE_STATUSCODE(RPC_NT_CALL_IN_PROGRESS),
00901     DEFINE_STATUSCODE(RPC_NT_NO_MORE_BINDINGS),
00902     DEFINE_STATUSCODE(RPC_NT_GROUP_MEMBER_NOT_FOUND),
00903     DEFINE_STATUSCODE(EPT_NT_CANT_CREATE),
00904     DEFINE_STATUSCODE(RPC_NT_INVALID_OBJECT),
00905     DEFINE_STATUSCODE(RPC_NT_NO_INTERFACES),
00906     DEFINE_STATUSCODE(RPC_NT_CALL_CANCELLED),
00907     DEFINE_STATUSCODE(RPC_NT_BINDING_INCOMPLETE),
00908     DEFINE_STATUSCODE(RPC_NT_COMM_FAILURE),
00909     DEFINE_STATUSCODE(RPC_NT_UNSUPPORTED_AUTHN_LEVEL),
00910     DEFINE_STATUSCODE(RPC_NT_NO_PRINC_NAME),
00911     DEFINE_STATUSCODE(RPC_NT_NOT_RPC_ERROR),
00912     DEFINE_STATUSCODE(RPC_NT_UUID_LOCAL_ONLY),
00913     DEFINE_STATUSCODE(RPC_NT_SEC_PKG_ERROR),
00914     DEFINE_STATUSCODE(RPC_NT_NOT_CANCELLED),
00915     DEFINE_STATUSCODE(RPC_NT_INVALID_ES_ACTION),
00916     DEFINE_STATUSCODE(RPC_NT_WRONG_ES_VERSION),
00917     DEFINE_STATUSCODE(RPC_NT_WRONG_STUB_VERSION),
00918     DEFINE_STATUSCODE(RPC_NT_INVALID_PIPE_OBJECT),
00919     DEFINE_STATUSCODE(RPC_NT_INVALID_PIPE_OPERATION),
00920     DEFINE_STATUSCODE(RPC_NT_WRONG_PIPE_VERSION),
00921     DEFINE_STATUSCODE(RPC_NT_PIPE_CLOSED),
00922     DEFINE_STATUSCODE(RPC_NT_PIPE_DISCIPLINE_ERROR),
00923     DEFINE_STATUSCODE(RPC_NT_PIPE_EMPTY),
00924     DEFINE_STATUSCODE(RPC_NT_INVALID_ASYNC_HANDLE),
00925     DEFINE_STATUSCODE(RPC_NT_INVALID_ASYNC_CALL),
00926     DEFINE_STATUSCODE(RPC_NT_SEND_INCOMPLETE),
00927     DEFINE_STATUSCODE(STATUS_ACPI_INVALID_OPCODE),
00928     DEFINE_STATUSCODE(STATUS_ACPI_STACK_OVERFLOW),
00929     DEFINE_STATUSCODE(STATUS_ACPI_ASSERT_FAILED),
00930     DEFINE_STATUSCODE(STATUS_ACPI_INVALID_INDEX),
00931     DEFINE_STATUSCODE(STATUS_ACPI_INVALID_ARGUMENT),
00932     DEFINE_STATUSCODE(STATUS_ACPI_FATAL),
00933     DEFINE_STATUSCODE(STATUS_ACPI_INVALID_SUPERNAME),
00934     DEFINE_STATUSCODE(STATUS_ACPI_INVALID_ARGTYPE),
00935     DEFINE_STATUSCODE(STATUS_ACPI_INVALID_OBJTYPE),
00936     DEFINE_STATUSCODE(STATUS_ACPI_INVALID_TARGETTYPE),
00937     DEFINE_STATUSCODE(STATUS_ACPI_INCORRECT_ARGUMENT_COUNT),
00938     DEFINE_STATUSCODE(STATUS_ACPI_ADDRESS_NOT_MAPPED),
00939     DEFINE_STATUSCODE(STATUS_ACPI_INVALID_EVENTTYPE),
00940     DEFINE_STATUSCODE(STATUS_ACPI_HANDLER_COLLISION),
00941     DEFINE_STATUSCODE(STATUS_ACPI_INVALID_DATA),
00942     DEFINE_STATUSCODE(STATUS_ACPI_INVALID_REGION),
00943     DEFINE_STATUSCODE(STATUS_ACPI_INVALID_ACCESS_SIZE),
00944     DEFINE_STATUSCODE(STATUS_ACPI_ACQUIRE_GLOBAL_LOCK),
00945     DEFINE_STATUSCODE(STATUS_ACPI_ALREADY_INITIALIZED),
00946     DEFINE_STATUSCODE(STATUS_ACPI_NOT_INITIALIZED),
00947     DEFINE_STATUSCODE(STATUS_ACPI_INVALID_MUTEX_LEVEL),
00948     DEFINE_STATUSCODE(STATUS_ACPI_MUTEX_NOT_OWNED),
00949     DEFINE_STATUSCODE(STATUS_ACPI_MUTEX_NOT_OWNER),
00950     DEFINE_STATUSCODE(STATUS_ACPI_RS_ACCESS),
00951     DEFINE_STATUSCODE(STATUS_ACPI_INVALID_TABLE),
00952     DEFINE_STATUSCODE(STATUS_ACPI_REG_HANDLER_FAILED),
00953     DEFINE_STATUSCODE(STATUS_ACPI_POWER_REQUEST_FAILED),
00954     DEFINE_STATUSCODE(STATUS_CTX_WINSTATION_NAME_INVALID),
00955     DEFINE_STATUSCODE(STATUS_CTX_INVALID_PD),
00956     DEFINE_STATUSCODE(STATUS_CTX_PD_NOT_FOUND),
00957     DEFINE_STATUSCODE(STATUS_CTX_CDM_CONNECT),
00958     DEFINE_STATUSCODE(STATUS_CTX_CDM_DISCONNECT),
00959     DEFINE_STATUSCODE(STATUS_CTX_CLOSE_PENDING),
00960     DEFINE_STATUSCODE(STATUS_CTX_NO_OUTBUF),
00961     DEFINE_STATUSCODE(STATUS_CTX_MODEM_INF_NOT_FOUND),
00962     DEFINE_STATUSCODE(STATUS_CTX_INVALID_MODEMNAME),
00963     DEFINE_STATUSCODE(STATUS_CTX_RESPONSE_ERROR),
00964     DEFINE_STATUSCODE(STATUS_CTX_MODEM_RESPONSE_TIMEOUT),
00965     DEFINE_STATUSCODE(STATUS_CTX_MODEM_RESPONSE_NO_CARRIER),
00966     DEFINE_STATUSCODE(STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE),
00967     DEFINE_STATUSCODE(STATUS_CTX_MODEM_RESPONSE_BUSY),
00968     DEFINE_STATUSCODE(STATUS_CTX_MODEM_RESPONSE_VOICE),
00969     DEFINE_STATUSCODE(STATUS_CTX_TD_ERROR),
00970     DEFINE_STATUSCODE(STATUS_CTX_LICENSE_CLIENT_INVALID),
00971     DEFINE_STATUSCODE(STATUS_CTX_LICENSE_NOT_AVAILABLE),
00972     DEFINE_STATUSCODE(STATUS_CTX_LICENSE_EXPIRED),
00973     DEFINE_STATUSCODE(STATUS_CTX_WINSTATION_NOT_FOUND),
00974     DEFINE_STATUSCODE(STATUS_CTX_WINSTATION_NAME_COLLISION),
00975     DEFINE_STATUSCODE(STATUS_CTX_WINSTATION_BUSY),
00976     DEFINE_STATUSCODE(STATUS_CTX_BAD_VIDEO_MODE),
00977     DEFINE_STATUSCODE(STATUS_CTX_GRAPHICS_INVALID),
00978     DEFINE_STATUSCODE(STATUS_CTX_NOT_CONSOLE),
00979     DEFINE_STATUSCODE(STATUS_CTX_CLIENT_QUERY_TIMEOUT),
00980     DEFINE_STATUSCODE(STATUS_CTX_CONSOLE_DISCONNECT),
00981     DEFINE_STATUSCODE(STATUS_CTX_CONSOLE_CONNECT),
00982     DEFINE_STATUSCODE(STATUS_CTX_SHADOW_DENIED),
00983     DEFINE_STATUSCODE(STATUS_CTX_WINSTATION_ACCESS_DENIED),
00984     DEFINE_STATUSCODE(STATUS_CTX_INVALID_WD),
00985     DEFINE_STATUSCODE(STATUS_CTX_WD_NOT_FOUND),
00986     DEFINE_STATUSCODE(STATUS_CTX_SHADOW_INVALID),
00987     DEFINE_STATUSCODE(STATUS_CTX_SHADOW_DISABLED),
00988     DEFINE_STATUSCODE(STATUS_RDP_PROTOCOL_ERROR),
00989     DEFINE_STATUSCODE(STATUS_CTX_CLIENT_LICENSE_NOT_SET),
00990     DEFINE_STATUSCODE(STATUS_CTX_CLIENT_LICENSE_IN_USE),
00991     DEFINE_STATUSCODE(STATUS_PNP_BAD_MPS_TABLE),
00992     DEFINE_STATUSCODE(STATUS_PNP_TRANSLATION_FAILED),
00993     DEFINE_STATUSCODE(STATUS_PNP_IRQ_TRANSLATION_FAILED),
00994 
00995     _LASTENTRY
00996 };
00997 
00998 
01011 const UCHAR *
01012 DebugNtStatus(NTSTATUS Value)
01013 {
01014     int i = 0;
01015 
01016     while (text[i].Value != _MARKLASTENTRY)
01017     {
01018         if (text[i].Value == Value)
01019         {
01020             return text[i].Name;
01021         }
01022         ++i;
01023     }
01024 
01025     return "*UNKNOWN*";
01026 }
01027 
01028 #if DBG
01029 
01030 #define USE_SPINLOCK 1
01031 
01032 // #define USE_IRQL_ELEVATION 1
01033 
01034 static volatile PCHAR DbgMemoryBuffer = NULL;
01035 static volatile ULONG DbgNextWriteMemoryBuffer = 0;
01036 
01037 #ifdef USE_SPINLOCK
01038 
01039 static KSPIN_LOCK DbgMemoryBufferSpinLock;
01040 static KIRQL DbgMemoryBufferSpinLockIrql;
01041 
01042 #else // #ifdef USE_SPINLOCK
01043 
01044 static LONG DbgMemoryBufferSpinLock = 0;
01045 static LONG DbgMemoryBufferUsageCounter = 0;
01046 
01047 #ifdef USE_IRQL_ELEVATION
01048     static KIRQL DbgMemoryBufferIrql;
01049 #endif
01050 
01051 #endif // #ifdef USE_SPINLOCK
01052 
01053 #define DBG_SIZE_MEMORY_BUFFER 0x20000u
01054 
01070 static VOID
01071 DbgBufferSynchronizeStart(VOID)
01072 {
01073     LONG tmp;
01074     KIRQL irql; // do not use Irql directly, but only indirectly,
01075                 // as suggested by Doron Holan at
01076                 // http://blogs.msdn.com/doronh/archive/2006/03/08/546934.aspx
01077 
01078 #ifdef USE_SPINLOCK
01079 
01080     KeAcquireSpinLock(&DbgMemoryBufferSpinLock, &irql);
01081     DbgMemoryBufferSpinLockIrql = irql;
01082 
01083 #else // #ifdef USE_SPINLOCK
01084 
01085     #ifdef USE_IRQL_ELEVATION
01086 
01087         if (DbgMemoryBufferIrql != PASSIVE_LEVEL)
01088         {
01089             REPORT_BUG(0x133, DbgMemoryBufferUsageCounter,
01090                 DbgMemoryBufferSpinLock, DbgMemoryBufferIrql, 0,
01091                 "Not IRQL == PASSIVE_LEVEL");
01092         }
01093 
01094         KeRaiseIrql(DISPATCH_LEVEL, &DbgMemoryBufferIrql);
01095 
01096     #endif // #ifdef USE_IRQL_ELEVATION
01097 
01098     while (InterlockedExchange(&DbgMemoryBufferSpinLock, 1) == 0)
01099         ;
01100 
01101     tmp = InterlockedIncrement(&DbgMemoryBufferUsageCounter);
01102     if (tmp != 1)
01103     {
01104         REPORT_BUG(0x130, tmp, DbgMemoryBufferSpinLock, 0, 0,
01105             "Usage counter bigger than 1 after incrementing!");
01106     }
01107 
01108 #endif // #ifdef USE_SPINLOCK
01109 }
01110 
01118 static VOID
01119 DbgBufferSynchronizeStop(VOID)
01120 {
01121     LONG tmp;
01122 
01123 #ifdef USE_SPINLOCK
01124 
01125     KeReleaseSpinLock(&DbgMemoryBufferSpinLock, DbgMemoryBufferSpinLockIrql);
01126 
01127 #else // #ifdef USE_SPINLOCK
01128 
01129     tmp = InterlockedDecrement(&DbgMemoryBufferUsageCounter);
01130     if (tmp != 0)
01131     {
01132         REPORT_BUG(0x131, tmp, DbgMemoryBufferSpinLock, 0, 0,
01133             "Usage counter not null after decrementing!");
01134     }
01135 
01136     tmp = InterlockedExchange(&DbgMemoryBufferSpinLock, 0);
01137     if (tmp != 1)
01138     {
01139         REPORT_BUG(0x132, DbgMemoryBufferUsageCounter, tmp, 0, 0,
01140             "(own) Spinlock not 1 before releasing.");
01141     }
01142 
01143     #ifdef USE_IRQL_ELEVATION
01144 
01145         KeLowerIrql(DbgMemoryBufferIrql);
01146         DbgMemoryBufferIrql = PASSIVE_LEVEL;
01147 
01148     #endif // #ifdef USE_IRQL_ELEVATION
01149 
01150 #endif // #ifdef USE_SPINLOCK
01151 }
01152 
01153 VOID
01154 DbgInit(VOID)
01155 {
01156 #ifdef USE_SPINLOCK
01157 
01158     KeInitializeSpinLock(&DbgMemoryBufferSpinLock);
01159 
01160 #endif // #ifdef USE_SPINLOCK
01161 }
01162 
01168 VOID
01169 DbgAllocateMemoryBuffer(VOID)
01170 {
01171     DbgBufferSynchronizeStart();
01172 
01173     DbgMemoryBuffer = ExAllocatePoolWithTag(NonPagedPool,
01174         DBG_SIZE_MEMORY_BUFFER + 1, MTAG_DBGBUFFER);
01175 
01176     if (DbgMemoryBuffer)
01177     {
01178         RtlZeroMemory(DbgMemoryBuffer, DBG_SIZE_MEMORY_BUFFER + 1);
01179     }
01180 
01181     DbgNextWriteMemoryBuffer = 0;
01182 
01183     DbgBufferSynchronizeStop();
01184 }
01185 
01190 VOID
01191 DbgFreeMemoryBuffer(VOID)
01192 {
01193     DbgBufferSynchronizeStart();
01194 
01195     if (DbgMemoryBuffer)
01196     {
01197         ExFreePool(DbgMemoryBuffer);
01198         DbgMemoryBuffer = NULL;
01199     }
01200 
01201     DbgBufferSynchronizeStop();
01202 }
01203 
01217 VOID
01218 DbgOutputMemoryBuffer(const char *String)
01219 {
01220     DbgBufferSynchronizeStart();
01221 
01222     if (DbgMemoryBuffer)
01223     {
01224         PCHAR localMemoryBuffer;
01225         ULONG localNextWriteMemoryBuffer;
01226         ULONG strLength;
01227 
01228         localMemoryBuffer = DbgMemoryBuffer;
01229         localNextWriteMemoryBuffer = DbgNextWriteMemoryBuffer;
01230 
01231         if (DbgNextWriteMemoryBuffer > DBG_SIZE_MEMORY_BUFFER)
01232         {
01233             REPORT_BUG(0x123, DbgNextWriteMemoryBuffer, DBG_SIZE_MEMORY_BUFFER, -1, 0,
01234                 "DbgNextWriteMemoryBuffer already out of buffer!");
01235         }
01236         
01237         strLength = strlen(String) + 1;
01238 
01239         if (strLength >= 200)
01240         {
01241             REPORT_BUG(0x123, DbgNextWriteMemoryBuffer, DBG_SIZE_MEMORY_BUFFER,
01242                 strLength, 0, "string too long");
01243         }
01244 
01245         // Sanity check
01246 
01247         if ((localMemoryBuffer != DbgMemoryBuffer) 
01248             || (localNextWriteMemoryBuffer != DbgNextWriteMemoryBuffer))
01249         {
01250             REPORT_BUG(0x140, (ULONG_PTR) localMemoryBuffer, (ULONG_PTR) DbgMemoryBuffer, 
01251                 localNextWriteMemoryBuffer, DbgNextWriteMemoryBuffer,
01252                 "local copies do not match the global ones (1)");
01253         }
01254 
01255         // Does the string fit into the buffer?
01256 
01257         if (DbgNextWriteMemoryBuffer + strLength > DBG_SIZE_MEMORY_BUFFER)
01258         {
01259             if (DBG_SIZE_MEMORY_BUFFER - DbgNextWriteMemoryBuffer >= strLength)
01260             {
01261                 REPORT_BUG(0x124, DbgNextWriteMemoryBuffer, DBG_SIZE_MEMORY_BUFFER,
01262                     strLength, 0, "");
01263             }
01264 
01265             // Sanity check
01266 
01267             if ((localMemoryBuffer != DbgMemoryBuffer) 
01268                 || (localNextWriteMemoryBuffer != DbgNextWriteMemoryBuffer))
01269             {
01270                 REPORT_BUG(0x141, (ULONG_PTR) localMemoryBuffer, (ULONG_PTR) DbgMemoryBuffer, 
01271                     localNextWriteMemoryBuffer, DbgNextWriteMemoryBuffer,
01272                     "local copies do not match the global ones (2)");
01273             }
01274 
01275             RtlZeroMemory(&DbgMemoryBuffer[DbgNextWriteMemoryBuffer],
01276                 DBG_SIZE_MEMORY_BUFFER - DbgNextWriteMemoryBuffer);
01277 
01278             // Sanity check
01279 
01280             if ((localMemoryBuffer != DbgMemoryBuffer) 
01281                 || (localNextWriteMemoryBuffer != DbgNextWriteMemoryBuffer))
01282             {
01283                 REPORT_BUG(0x142, (ULONG_PTR) localMemoryBuffer, (ULONG_PTR) DbgMemoryBuffer, 
01284                     localNextWriteMemoryBuffer, DbgNextWriteMemoryBuffer,
01285                     "local copies do not match the global ones (3)");
01286             }
01287 
01288             DbgNextWriteMemoryBuffer = 0;
01289             localNextWriteMemoryBuffer = 0;
01290         }
01291 
01292         // Sanity check
01293 
01294         if ((localMemoryBuffer != DbgMemoryBuffer) 
01295             || (localNextWriteMemoryBuffer != DbgNextWriteMemoryBuffer))
01296         {
01297             REPORT_BUG(0x143, (ULONG_PTR) localMemoryBuffer, (ULONG_PTR) DbgMemoryBuffer, 
01298                 localNextWriteMemoryBuffer, DbgNextWriteMemoryBuffer,
01299                 "local copies do not match the global ones (4)");
01300         }
01301 
01302         if (DbgNextWriteMemoryBuffer > DBG_SIZE_MEMORY_BUFFER)
01303         {
01304             REPORT_BUG(0x125, DbgNextWriteMemoryBuffer, DBG_SIZE_MEMORY_BUFFER,
01305                 strLength, 0,
01306                 "String does not fit in the buffer (but should have fitted!)");
01307         }
01308         
01309         // Sanity check
01310 
01311         if ((localMemoryBuffer != DbgMemoryBuffer) 
01312             || (localNextWriteMemoryBuffer != DbgNextWriteMemoryBuffer))
01313         {
01314             REPORT_BUG(0x144, (ULONG_PTR) localMemoryBuffer, (ULONG_PTR) DbgMemoryBuffer, 
01315                 localNextWriteMemoryBuffer, DbgNextWriteMemoryBuffer,
01316                 "local copies do not match the global ones (5)");
01317         }
01318 
01319         if (DbgNextWriteMemoryBuffer > 0)
01320         {
01321             DbgMemoryBuffer[DbgNextWriteMemoryBuffer-1] = 13;
01322         }
01323 
01324         // Sanity check
01325 
01326         if ((localMemoryBuffer != DbgMemoryBuffer) 
01327             || (localNextWriteMemoryBuffer != DbgNextWriteMemoryBuffer))
01328         {
01329             REPORT_BUG(0x145, (ULONG_PTR) localMemoryBuffer, (ULONG_PTR) DbgMemoryBuffer, 
01330                 localNextWriteMemoryBuffer, DbgNextWriteMemoryBuffer,
01331                 "local copies do not match the global ones (6)");
01332         }
01333 
01334         RtlCopyMemory(&DbgMemoryBuffer[DbgNextWriteMemoryBuffer], String, strLength);
01335         DbgNextWriteMemoryBuffer += strLength;
01336         localNextWriteMemoryBuffer += strLength;
01337 
01338         // Sanity check
01339 
01340         if ((localMemoryBuffer != DbgMemoryBuffer) 
01341             || (localNextWriteMemoryBuffer != DbgNextWriteMemoryBuffer))
01342         {
01343             REPORT_BUG(0x146, (ULONG_PTR) localMemoryBuffer, (ULONG_PTR) DbgMemoryBuffer, 
01344                 localNextWriteMemoryBuffer, DbgNextWriteMemoryBuffer,
01345                 "local copies do not match the global ones (7)");
01346         }
01347 
01348         if (DbgNextWriteMemoryBuffer > DBG_SIZE_MEMORY_BUFFER)
01349         {
01350             REPORT_BUG(0x126, DbgNextWriteMemoryBuffer, DBG_SIZE_MEMORY_BUFFER,
01351                 strLength, 0,
01352                 "DbgNextWriteMemoryBuffer out of buffer after write!");
01353         }
01354         
01355         // Sanity check
01356 
01357         if ((localMemoryBuffer != DbgMemoryBuffer) 
01358             || (localNextWriteMemoryBuffer != DbgNextWriteMemoryBuffer))
01359         {
01360             REPORT_BUG(0x147, (ULONG_PTR) localMemoryBuffer, (ULONG_PTR) DbgMemoryBuffer, 
01361                 localNextWriteMemoryBuffer, DbgNextWriteMemoryBuffer,
01362                 "local copies do not match the global ones (8)");
01363         }
01364     }
01365 
01366     DbgBufferSynchronizeStop();
01367 }
01368 
01392 NTSTATUS
01393 cbm_dbg_readbuffer(IN PDEVICE_EXTENSION Pdx, OUT PCHAR ReturnBuffer,
01394                    IN OUT PULONG ReturnLength)
01395 {
01396     FUNC_ENTER();
01397 
01398     DbgBufferSynchronizeStart();
01399 
01400     if (DbgMemoryBuffer)
01401     {
01402         PCHAR writePosition;
01403         ULONG stillToWrite;
01404         ULONG writtenBytes;
01405 
01406         writePosition = ReturnBuffer;
01407         stillToWrite = *ReturnLength;
01408         writtenBytes = 0;
01409 
01410 
01411         if (stillToWrite > DbgNextWriteMemoryBuffer)
01412         {
01413             ULONG lengthBeforeWrapAround;
01414 
01416 
01417             // First of all, find out if there are any "old" entries
01418             // from before the wrap-around
01419 
01420             lengthBeforeWrapAround = 
01421                 strlen(&DbgMemoryBuffer[DbgNextWriteMemoryBuffer+1]) + 1;
01422 
01423             if (lengthBeforeWrapAround > 1)
01424             {
01425                 ULONG lengthToCopy;
01426 
01427                 lengthToCopy = stillToWrite - DbgNextWriteMemoryBuffer + 1;
01428 
01429                 lengthToCopy = min(lengthToCopy, lengthBeforeWrapAround);
01430 
01431                 RtlCopyMemory(writePosition, 
01432                     &DbgMemoryBuffer[DbgNextWriteMemoryBuffer 
01433                                      + lengthBeforeWrapAround 
01434                                      - lengthToCopy],
01435                     lengthToCopy);
01436 
01437                 writePosition += lengthToCopy;
01438                 writtenBytes += lengthToCopy;
01439                 stillToWrite -= lengthToCopy;
01440 
01441                 if (stillToWrite > 0)
01442                 {
01443                     *writePosition++ = 13;
01444                     ++writtenBytes;
01445                     --stillToWrite;
01446                 }
01447             }
01448         }
01449 
01450         stillToWrite = min(stillToWrite, DbgNextWriteMemoryBuffer);
01451 
01452         RtlCopyMemory(writePosition,
01453             &DbgMemoryBuffer[DbgNextWriteMemoryBuffer - stillToWrite],
01454             stillToWrite);
01455 
01456         writtenBytes += stillToWrite;
01457 
01458 
01459         *ReturnLength = writtenBytes;
01460     }
01461 
01462     DbgBufferSynchronizeStop();
01463 
01464     FUNC_LEAVE_NTSTATUS_CONST(STATUS_SUCCESS);
01465 }
01466 
01467 #endif

Generated on Sun Apr 30 18:45:48 2006 for opencbm by  doxygen 1.4.2