void initializeSegments(void)
{
    driver = (WCHAR *)malloc(128);
    ctow(driver,sysname);
    bool ret = InitializeWinIo();
    printf("InitializeWinIo returned %d\n", ret);
    fflush(stdout);
    ret = InstallWinIoDriver(driver, false);
    printf("InstallWinIoDriver returned %d\n", ret);
    fflush(stdout);
}
Beispiel #2
0
void* lptopen(unsigned long port) {
	char drv[] = "WinIo.sys";
	if (InstallWinIoDriver(drv)) {
		if (InitializeWinIo()) {
			LPT* pLpt = &lpt;
			pLpt->data = port;
			pLpt->stat = port + 1;
			pLpt->ctrl = port + 2;
			return pLpt;
		}
	}
	return 0;
}
Beispiel #3
0
bool _stdcall InitializeWinIo()
{
  bool bResult;
  DWORD dwBytesReturned;

  IsNT = IsWinNT();

  if (IsNT)
  {
    hDriver = CreateFile("\\\\.\\WINIO",
                         GENERIC_READ | GENERIC_WRITE,
                         0,
                         NULL,
                         OPEN_EXISTING,
                         FILE_ATTRIBUTE_NORMAL,
                         NULL);

    // If the driver is not running, install it

    if (hDriver == INVALID_HANDLE_VALUE)
    {
      GetDriverPath();

      bResult = InstallWinIoDriver(szWinIoDriverPath, true);

      if (!bResult)
        return false;

      bResult = StartWinIoDriver();

      if (!bResult)
        return false;

      hDriver = CreateFile("\\\\.\\WINIO",
                           GENERIC_READ | GENERIC_WRITE,
                           0,
                           NULL,
                           OPEN_EXISTING,
                           FILE_ATTRIBUTE_NORMAL,
                           NULL);

      if (hDriver == INVALID_HANDLE_VALUE)
        return false;
    }

    // Enable I/O port access for this process

    if (!DeviceIoControl(hDriver, IOCTL_WINIO_ENABLEDIRECTIO, NULL,
                         0, NULL, 0, &dwBytesReturned, NULL))
      return false;

  }
  else
  {
    VxDCall = (DWORD (WINAPI *)(DWORD,DWORD,DWORD))GetK32ProcAddress(1);

    hDriver = CreateFile("\\\\.\\WINIO.VXD", 0, 0, 0, CREATE_NEW, FILE_FLAG_DELETE_ON_CLOSE, 0);

    if (hDriver == INVALID_HANDLE_VALUE)
      return false;
  }

  IsWinIoInitialized = true;

  return true;
}