User Defines
User Defines allow you to get a better log information, showing you defined litterals instead of raw values, inside the Detailed View.

For example, for CreateFile, we have the following


   - Requirements
   - Define file content / Syntax


Requirements

Only integer defines are supported (no floats or strings support)

To be supported, you have to :
   - 1) Add information into your monitoring file, the relative path of the file containing define values. (Path is relative to the "UserDefines" directory).
          a) for a parameter use the ":Define=" parameter option
          b) for return value, use the "|ReturnDefine=" option
   - 2) put define values in the specified file using a C/C++ syntax

Examples :
user32.dll|int MessageBoxA( HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType:Define=user32.dll/MessageBox_Type.txt)
user32.dll|int MessageBoxExA( HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType:Define=user32.dll/MessageBox_Type.txt, WORD wLanguageId)
user32.dll|int MessageBoxW( HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType:Define=user32.dll/MessageBox_Type.txt)

kernel32.dll|HANDLE CreateFileW( LPCWSTR lpFileName, DWORD dwDesiredAccess:Define=kernel32.dll/CreateFile_DesiredAccess.txt, DWORD dwShareMode:Define=kernel32.dll/CreateFile_ShareMode.txt, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition:Define=kernel32.dll/CreateFile_CreationDisposition.txt, DWORD dwFlagsAndAttributes:Define=kernel32.dll/CreateFile_FlagsAndAttributes.txt, HANDLE hTemplateFile)|FailureIfRetValue=0xFFFFFFFF

For Return :
user32.dll|int MessageBoxW( HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType) |ReturnDefine=user32.dll/MessageBox_Return.txt
Mixing this option with the parameter :Define= option, we get for MessageBox :
user32.dll|int MessageBoxW( HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType:Define=user32.dll/MessageBox_Type.txt) |ReturnDefine=user32.dll/MessageBox_Return.txt


Define file content / Syntax :

For defines content, the following operations are allowed : +, -, *, /, ||, &&, !, |, &, ^, ~, <<, >> , ? :, <,>, ==, <=,>=

Example of content :
  1. #define FOO1 45
  2. #define FOO2 1024
  3. #define FOO3 32
  4. #define FOO4 (FOO1+FOO3)
  5. #define FOO5 3
  6. #define FOO6 8
  7.  
  8. #define FOO11 (FOO1 +1 -5*(FOO1-FOO2) +( (1+ FOO2/FOO1) *2))
  9. #define FOO12 (FOO1 | FOO3)
  10. #define FOO13 (~FOO3)
  11. #define FOO14 (FOO2^FOO1)
  12. #define FOO15 ((FOO2<FOO1) ? FOO3 : 7)
For the MessageBox of upper example, the content of file "UserDefines\user32.dll\MessageBox_Type.txt" is the following
  1. #define MB_OK 0x00000000L
  2. #define MB_OKCANCEL 0x00000001L
  3. #define MB_ABORTRETRYIGNORE 0x00000002L
  4. #define MB_YESNOCANCEL 0x00000003L
  5. #define MB_YESNO 0x00000004L
  6. #define MB_RETRYCANCEL 0x00000005L
  7. #define MB_CANCELTRYCONTINUE 0x00000006L
  8. #define MB_ICONHAND 0x00000010L
  9. #define MB_ICONQUESTION 0x00000020L
  10. #define MB_ICONEXCLAMATION 0x00000030L
  11. #define MB_ICONASTERISK 0x00000040L
  12. #define MB_USERICON 0x00000080L
  13. #define MB_ICONWARNING MB_ICONEXCLAMATION
  14. #define MB_ICONERROR MB_ICONHAND
  15. #define MB_ICONINFORMATION MB_ICONASTERISK
  16. #define MB_ICONSTOP MB_ICONHAND
  17. #define MB_DEFBUTTON1 0x00000000L
  18. #define MB_DEFBUTTON2 0x00000100L
  19. #define MB_DEFBUTTON3 0x00000200L
  20. #define MB_DEFBUTTON4 0x00000300L
  21. #define MB_APPLMODAL 0x00000000L
  22. #define MB_SYSTEMMODAL 0x00001000L
  23. #define MB_TASKMODAL 0x00002000L
  24. #define MB_HELP 0x00004000L
  25. #define MB_NOFOCUS 0x00008000L
  26. #define MB_SETFOREGROUND 0x00010000L
  27. #define MB_DEFAULT_DESKTOP_ONLY 0x00020000L
  28. #define MB_TOPMOST 0x00040000L
  29. #define MB_RIGHT 0x00080000L
  30. #define MB_RTLREADING 0x00100000L
  31. #define MB_SERVICE_NOTIFICATION 0x00200000L
  32. #define MB_TYPEMASK 0x0000000FL
  33. #define MB_ICONMASK 0x000000F0L
  34. #define MB_DEFMASK 0x00000F00L
  35. #define MB_MODEMASK 0x00003000L
  36. #define MB_MISCMASK 0x0000C000L
  37.