ki386.h
Upload User: caisha3
Upload Date: 2013-09-21
Package Size: 208739k
Code Size: 1k
Category:

Windows Develop

Development Platform:

Visual C++

  1. #define MAX_IDENTITYMAP_ALLOCATIONS 30
  2. typedef struct _IDENTITY_MAP  {
  3.     PHARDWARE_PTE   TopLevelDirectory;
  4.     ULONG           IdentityCR3;
  5.     ULONG           IdentityAddr;
  6.     ULONG           PagesAllocated;
  7.     PVOID           PageList[ MAX_IDENTITYMAP_ALLOCATIONS ];
  8. } IDENTITY_MAP, *PIDENTITY_MAP;
  9. VOID
  10. Ki386ClearIdentityMap(
  11.     PIDENTITY_MAP IdentityMap
  12.     );
  13. VOID
  14. Ki386EnableTargetLargePage(
  15.     PIDENTITY_MAP IdentityMap
  16.     );
  17. BOOLEAN
  18. Ki386CreateIdentityMap(
  19.     IN OUT PIDENTITY_MAP IdentityMap,
  20.     IN     PVOID StartVa,
  21.     IN     PVOID EndVa
  22.     );
  23. BOOLEAN
  24. Ki386EnableCurrentLargePage (
  25.     IN ULONG IdentityAddr,
  26.     IN ULONG IdentityCr3
  27.     );
  28. extern PVOID Ki386EnableCurrentLargePageEnd;
  29. #if defined(_X86PAE_)
  30. #define PPI_BITS    2
  31. #define PDI_BITS    9
  32. #define PTI_BITS    9
  33. #else
  34. #define PPI_BITS    0
  35. #define PDI_BITS    10
  36. #define PTI_BITS    10
  37. #endif
  38. #define PPI_MASK    ((1 << PPI_BITS) - 1)
  39. #define PDI_MASK    ((1 << PDI_BITS) - 1)
  40. #define PTI_MASK    ((1 << PTI_BITS) - 1)
  41. #define KiGetPpeIndex(va) ((((ULONG)(va)) >> PPI_SHIFT) & PPI_MASK)
  42. #define KiGetPdeIndex(va) ((((ULONG)(va)) >> PDI_SHIFT) & PDI_MASK)
  43. #define KiGetPteIndex(va) ((((ULONG)(va)) >> PTI_SHIFT) & PTI_MASK)