k32exp.h
上传用户:ason123
上传日期:2010-03-31
资源大小:177k
文件大小:5k
源码类别:

并口编程

开发平台:

C++ Builder

  1. /* 
  2. K32EXP.H -- Get32ProcAddress
  3. Win32 code to import by ordinal from KERNEL32.DLL in Windows 95
  4. Andrew Schulman
  5. Senior editor, O'Reilly & Associates (Sebastopol CA)
  6. andrew@ora.com
  7. August 1995
  8. See K32EXP.C for more information
  9. */
  10. // KERNEL32.1 through KERNEL32.9 are all VxDCall
  11. #define VXDCALL_ORD                 1
  12. // found these by examining RUNDLL32.EXE
  13. #define LOADLIBRARY16_ORD           35
  14. #define FREELIBRARY16_ORD           36
  15. #define GETPROCADDRESS16_ORD        37
  16. // found these by examining WOW32.DLL
  17. // actually, these are documented: see GENTHUNK.TXT ("Windows NT
  18. // Generic Thunk Overview") and WOWNT32.H in Microsoft's Win32 SDK
  19. #define WOWCallback16_ORD           54                      
  20. #define WOWCallback16Ex_ORD         55                      
  21. #define WOWGetVDMPointer_ORD        56                      
  22. #define WOWHandle32_ORD             57                      
  23. #define WOWHandle16_ORD             58                      
  24. #define WOWGlobalAlloc16_ORD        59                      
  25. #define WOWGlobalLock16_ORD         60                      
  26. #define WOWGlobalUnlock16_ORD       61                      
  27. #define WOWGlobalFree16_ORD         62                      
  28. #define WOWGlobalAllocLock16_ORD    63                      
  29. #define WOWGlobalUnlockFree16_ORD   64                      
  30. #define WOWGlobalLockSize16_ORD     65                      
  31. #define WOWYield16_ORD              66                      
  32. #define WOWDirectedYield16_ORD      67                      
  33. #define WOWGetVDMPointerFix_ORD     68                      
  34. #define WOWGetVDMPointerUnfix_ORD   69                      
  35. #define WOW32_1_ORD                 70
  36. // found these by examining NTDLL.DLL (Win95)
  37. #define RtlLargeIntegerAdd_ORD              72 
  38. #define RtlEnlargedIntegerMultiply_ORD      73 
  39. #define RtlEnlargedUnsignedMultiply_ORD     74 
  40. #define RtlEnlargedUnsignedDivide_ORD       75 
  41. #define RtlExtendedLargeIntegerDivide_ORD   76 
  42. #define RtlExtendedMagicDivide_ORD          77 
  43. #define RtlExtendedIntegerMultiply_ORD      78 
  44. #define RtlLargeIntegerShiftLeft_ORD        79 
  45. #define RtlLargeIntegerShiftRight_ORD       80 
  46. #define RtlLargeIntegerArithmeticShift_ORD  81 
  47. #define RtlLargeIntegerNegate_ORD           82 
  48. #define RtlLargeIntegerSubtract_ORD         83 
  49. #define RtlConvertLongToLargeInteger_ORD    84 
  50. #define RtlConvertUlongToLargeInteger_ORD   85 
  51. #define GETPWIN16LOCK_ORD           93
  52. #define ENTERSYSLEVEL_ORD           97
  53. #define LEAVESYSLEVEL_ORD           98
  54. DWORD WINAPI GetK32ProcAddress(int ord);
  55. // VxDCall is probably the most important undocumented Win32 API
  56. DWORD (WINAPI *VxDCall)(DWORD srvc, DWORD eax, DWORD ecx);
  57. // Walking VxD chain shows that these are the VxDs that provide
  58. // Win32 services
  59. #define VMM_ID          0x0001             // 41 services
  60. #define REBOOT_ID       0x0009             // 2
  61. #define VNETBIOS_ID     0x0014             // 2
  62. #define VWIN32_ID       0x002A             // 79
  63. #define VCOMM_ID        0x002B             // 27
  64. #define VCOND_ID        0x0038             // 53 -- Virtual CON (Console)
  65. // found these by examining ADVAPI32.DLL and REGSERV.EXE
  66. // REGSERV.EXE calls these directly for remote registry services
  67. #define RegOpenKeyEx_CALL                   0x10011
  68. #define RegCreatKeyA_CALL                   0x10012
  69. #define RegCloseKey_CALL                    0x10013
  70. #define RegDeleteKey_CALL                   0x10014
  71. #define RegSetValueA_CALL                   0x10015
  72. #define RegDeleteValueA_CALL                0x10016
  73. #define RegQueryValueA_CALL                 0x10017
  74. #define RegEnumKeyA_CALL                    0x10018
  75. #define RegQueryValueEx_CALL                0x1001A
  76. #define RegSetValueExA_CALL                 0x1001B
  77. #define RegFlushKey_CALL                    0x1001C
  78. #define RegLoadKeyA_CALL                    0x10021
  79. #define RegUnloadKeyA_CALL                  0x10022
  80. #define RegSaveKeyA_CALL                    0x10023
  81. #define RegRemapPreDefKey_CALL              0x10024
  82. #define RegQueryMultipleValuesA_CALL        0x10026
  83. #define RegReplaceKeyA_CALL                 0x10027
  84. // two important VWIN32 services
  85. #define VWIN32_INT21_CALL       0x2A0010
  86. #define VWIN32_INT31_CALL       0x2A0029
  87. #define DosCall(eax, ecx)       VxDCall(VWIN32_INT21_CALL, (eax), (ecx))
  88. #define DPMICall(eax, ecx)      VxDCall(VWIN32_INT31_CALL, (eax), (ecx))
  89. // other undocumented interfaces
  90. HINSTANCE (WINAPI *LoadLibrary16)(LPCSTR lpLibFileName);
  91. int (WINAPI *FreeLibrary16)(HINSTANCE hModule);
  92. FARPROC (WINAPI *GetProcAddress16)(HINSTANCE hModule, LPCSTR lpProcName);
  93. void (WINAPI *GetpWin16Lock)(DWORD *pWin16Lock);
  94. // int (WINAPI *_ConfirmWin16Lock)(void);  // returns current lock count
  95. void (WINAPI *_EnterSysLevel)(DWORD lock);
  96. void (WINAPI *_LeaveSysLevel)(DWORD lock);