Source file: /~heha/hs/gerald.zip/GIVEIO.C

// 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_GiveIO,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;
}
Detected encoding: ANSI (CP1252)4
Wrong umlauts? - Assume file is ANSI (CP1252) encoded