// Testprogramm für DirectNT.sys
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <winioctl.h>
#include <stdio.h>
#include <stdlib.h>
#include "directnt.h"
#include <stdarg.h>
#include <string.h>
const char *DirectNTDrvName = "\\\\.\\Dev_DirectNT";
HANDLE Drv;
static void error(char *fmt, ...)
{
va_list argptr;
va_start(argptr, fmt);
vprintf(fmt, argptr);
exit(1);
} /* error() */
BOOL DrvExec(HANDLE Drv,ULONG OpCode,ULONG Param1,ULONG Param2,ULONG Param3, void *Result,ULONG ResultSize)
{
TDirectNTInfo I = {OpCode,Param1,Param2,Param3};
ULONG ResultLen;
if (DeviceIoControl(Drv,(DWORD)IOCTL_DIRECTNT_CONTROL,&I,sizeof(I),Result,ResultSize,&ResultLen,NULL))
return TRUE;
printf("Fehler von DirectNT.sys, Code = %d\n",GetLastError());
return FALSE;
}
// #pragma argsused bei BC++
int __cdecl main(int argc,char *argv[])
{
ULONG pstart, pend;
ULONG value;
Drv = CreateFile(DirectNTDrvName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL);
if (Drv == INVALID_HANDLE_VALUE)
error ("Fehler: DirectNT.sys kann nicht geöffnet werden!\n");
if (argc != 3)
error ("I/O-Adresse von .. bis in Hex eingeben\n");
if (1 != sscanf(argv[1], "%x", &pstart))
error ("von-Adresse keine Hex-Zahl!\n");
if (1 != sscanf(argv[2], "%x", &pend))
error("bis-Adresse keine Hex-Zahl!\n");
if (!DrvExec(Drv,OP_LockIO,pstart,pend,0, &value, sizeof (value)))
error ("Fehler beim Setzen aufgetreten!\n");
if (!CloseHandle(Drv))
printf("Fehler: DirectNT.sys kann nicht geschlossen werden!\n");
return 0;
}
Vorgefundene Kodierung: UTF-8 | 0
|