#define PRESENT 1 #define WRITABLE 2 #define USER 4 #define WRITETHROUGHCACHE 8 #define CACHEDISABLED 16 #define ACCESSED 32 #define DIRTY 64 #define PROCPAGESIZE 4096 #define PAGECOUNT 32 #define MAXDMABUFFERSIZE PAGECOUNT*PROCPAGESIZE #ifdef UNDER_NT #define STR_DEVICENAME TEXT("\\Device\\GLITCH") #define STR_LINKNAME TEXT("\\DosDevices\\GLITCH") #else #define STR_DEVICENAME TEXT(L"\\Device\\GLITCH") #define STR_LINKNAME TEXT(L"\\DosDevices\\GLITCH") #endif #define PACKETSIZE sizeof(ULONGLONG)+2*sizeof(ULONG) enum PacketTypes{ NODATA, MASKED, UNMASKED, GLITCHED, HELDOFF }; typedef struct { ULONG WriteLocation; ULONG ReadLocation; ULONG BufferSize; PCHAR pBuffer; } GLITCHDATA, *PGLITCHDATA; typedef struct { ULONG Channel; PKSPIN_LOCK pMasterAdapterSpinLock; ULONG CR3; PULONG PageDirectory; PULONG PageTable; PULONG pDmaBuffer; ULONG DmaBufferSize; ULONG PhysicalDmaBufferStart; PCHAR pPrintBuffer; ULONG PrintBufferSize; volatile ULONG *pPrintLoad; volatile ULONG *pPrintEmpty; BOOLEAN Read32BitPhysicalAddresses; } DMAINFO, *PDMAINFO; extern PGLITCHDATA GlitchInfo; VOID TrackGlitches ( PVOID Context, ThreadStats *Statistics ); VOID GlitchDetect ( PDMAINFO Context, ThreadStats *Statistics ); PVOID __cdecl ReservePages ( ULONG page, ULONG npages, ULONG flags ); ULONG __cdecl FreePages ( PVOID hmem, ULONG flags ); PVOID __cdecl LockPages ( ULONG page, ULONG npages, ULONG pageoffset, ULONG flags ); #ifdef UNDER_NT NTSTATUS DeviceIoCreate( IN PDEVICE_OBJECT DeviceObject, IN PIRP pIrp); NTSTATUS DeviceIoClose( IN PDEVICE_OBJECT DeviceObject, IN PIRP pIrp); NTSTATUS DeviceIoControl( IN PDEVICE_OBJECT DeviceObject, IN PIRP pIrp); #endif