Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

117 lines
2.5 KiB

4 years ago
  1. #ifdef IGNORE
  2. #include <string.h>
  3. #include <io.h>
  4. #include <fcntl.h>
  5. #ifndef NT_HOST
  6. #include <signal.h>
  7. #endif
  8. #endif
  9. #undef NULL
  10. #include "ntsdp.h"
  11. #define NT_SAPI
  12. void dprintf(char *fmt,...)
  13. {
  14. }
  15. void dprintAddr(NT_PADDR paddr)
  16. {
  17. }
  18. void ComputeFlatAddress (NT_PADDR paddr, PDESCRIPTOR_TABLE_ENTRY pdesc)
  19. {
  20. if (paddr->type&FLAT_COMPUTED)
  21. return;
  22. switch (paddr->type & (~INSTR_POINTER)) {
  23. case ADDR_V86:
  24. paddr->off &= 0xffff;
  25. Flat(paddr) = ((ULONG)paddr->seg << 4) + paddr->off;
  26. break;
  27. case ADDR_16:
  28. paddr->off &= 0xffff;
  29. case ADDR_1632: {
  30. DESCRIPTOR_TABLE_ENTRY desc;
  31. if (paddr->seg!=(USHORT)lastSelector) {
  32. lastSelector = paddr->seg;
  33. desc.Selector = (ULONG)paddr->seg;
  34. if (!pdesc)
  35. DbgKdLookupSelector((USHORT)0, pdesc = &desc);
  36. lastBaseOffset =
  37. ((ULONG)pdesc->Descriptor.HighWord.Bytes.BaseHi << 24) |
  38. ((ULONG)pdesc->Descriptor.HighWord.Bytes.BaseMid << 16) |
  39. (ULONG)pdesc->Descriptor.BaseLow;
  40. }
  41. Flat(paddr) = paddr->off + lastBaseOffset;
  42. }
  43. break;
  44. case ADDR_32:
  45. Flat(paddr) = paddr->off;
  46. break;
  47. default:
  48. return;
  49. }
  50. paddr->type |= FLAT_COMPUTED;
  51. }
  52. NT_PADDR AddrAdd(NT_PADDR paddr, ULONG scalar)
  53. {
  54. // ASSERT(fFlat(paddr));
  55. if (fnotFlat(paddr))
  56. ComputeFlatAddress(paddr, NULL);
  57. Flat(paddr) += scalar;
  58. paddr->off += scalar;
  59. return paddr;
  60. }
  61. NT_PADDR AddrSub(NT_PADDR paddr, ULONG scalar)
  62. {
  63. // ASSERT(fFlat(paddr));
  64. if (fnotFlat(paddr))
  65. ComputeFlatAddress(paddr, NULL);
  66. Flat(paddr) -= scalar;
  67. paddr->off -= scalar;
  68. return paddr;
  69. }
  70. PPROCESS_INFO pProcessFromIndex (UCHAR index)
  71. {
  72. PPROCESS_INFO pProcess;
  73. pProcess = pProcessHead;
  74. while (pProcess && pProcess->index != index)
  75. pProcess = pProcess->pProcessNext;
  76. return pProcess;
  77. }
  78. PTHREAD_INFO pThreadFromIndex (UCHAR index)
  79. {
  80. PTHREAD_INFO pThread;
  81. pThread = pProcessCurrent->pThreadHead;
  82. while (pThread && pThread->index != index)
  83. pThread = pThread->pThreadNext;
  84. return pThread;
  85. }
  86. PIMAGE_INFO pImageFromIndex (UCHAR index)
  87. {
  88. PIMAGE_INFO pImage;
  89. pImage = pProcessCurrent->pImageHead;
  90. while (pImage && pImage->index != index)
  91. pImage = pImage->pImageNext;
  92. return pImage;
  93. }