#include #ifdef VER_PRODUCTBUILD #define rmm VER_PRODUCTBUILD #endif #define DIGI_PHYSICAL_ADDRESS_CONST(_Low, _High) \ { (ULONG)(_Low), (LONG)(_High) } #define DIGI_STATUS_FILE_NOT_FOUND ((NTSTATUS)0xC001001BL) #define DIGI_STATUS_ERROR_READING_FILE ((NTSTATUS)0xC001001CL) #define DIGI_STATUS_ALREADY_MAPPED ((NTSTATUS)0xC001001DL) VOID DigiOpenFile( OUT PNTSTATUS Status, OUT PHANDLE FileHandle, OUT PULONG FileLength, IN PUNICODE_STRING FileName, IN PHYSICAL_ADDRESS HighestAcceptableAddress ); VOID DigiCloseFile( IN HANDLE FileHandle ); VOID DigiMapFile( OUT PNTSTATUS Status, OUT PVOID * MappedBuffer, IN HANDLE FileHandle ); VOID DigiUnmapFile( IN HANDLE FileHandle ); #ifndef POOL_TAGGING #define ExAllocatePoolWithTag(a,b,c) ExAllocatePool(a,b) #endif //POOL_TAGGING PVOID DigiInitMem( IN ULONG PoolTag ); extern ULONG DefaultPoolTag; #if DBG || DIGICHECKMEM PVOID DigiAllocMem( IN POOL_TYPE PoolType, IN ULONG Length ); VOID DigiFreeMem( IN PVOID Buf ); #else #define DigiAllocMem( PoolType, Length ) ExAllocatePoolWithTag( PoolType, \ Length, \ DefaultPoolTag ) #define DigiFreeMem( Buffer ) ExFreePool( Buffer ) #endif // // The following are prototypes for functions found in dgatlas.c // NTSTATUS DigiRegisterAtlasName( IN PUNICODE_STRING DeviceName, IN PUNICODE_STRING ValueName, IN PUNICODE_STRING ValueEntry ); #if rmm <= 807 #define MmLockPagableCodeSection( a ) MmLockPagableImageSection( a ) #endif #if rmm <= 528 NTSTATUS NTAPI ZwCreateFile( OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PLARGE_INTEGER AllocationSize OPTIONAL, IN ULONG FileAttributes, IN ULONG ShareAccess, IN ULONG CreateDisposition, IN ULONG CreateOptions, IN PVOID EaBuffer OPTIONAL, IN ULONG EaLength ); NTSTATUS NTAPI ZwQueryInformationFile( IN HANDLE FileHandle, OUT PIO_STATUS_BLOCK IoStatusBlock, OUT PVOID FileInformation, IN ULONG Length, IN FILE_INFORMATION_CLASS FileInformationClass ); NTSTATUS NTAPI ZwReadFile( IN HANDLE FileHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, OUT PVOID Buffer, IN ULONG Length, IN PLARGE_INTEGER ByteOffset OPTIONAL, IN PULONG Key OPTIONAL ); #endif