⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 winio.c

📁 同其他人传的winio不一样,这个包里面有 winio的源代码,方便您直接修改使用到自己的程序上.
💻 C
字号:
// ---------------------------------------------------- //
//                      WinIo v2.0                      //
//  Direct Hardware Access Under Windows 9x/NT/2000/XP  //
//           Copyright 1998-2002 Yariv Kaplan           //
//               http://www.internals.com               //
// ---------------------------------------------------- //

#define DEVICE_MAIN

#include "winio_9x.h"

#undef DEVICE_MAIN

#include "winio.h"

Declare_Virtual_Device(WINIO)

DefineControlHandler(SYS_DYNAMIC_DEVICE_INIT, OnSysDynamicDeviceInit);
DefineControlHandler(SYS_DYNAMIC_DEVICE_EXIT, OnSysDynamicDeviceExit);
DefineControlHandler(W32_DEVICEIOCONTROL, OnW32DeviceIoControl);

BOOL ControlDispatcher(DWORD dwControlMessage, DWORD EBX, DWORD EDX, DWORD ESI, DWORD EDI, DWORD ECX)
{
  START_CONTROL_DISPATCH

  ON_SYS_DYNAMIC_DEVICE_INIT(OnSysDynamicDeviceInit);
  ON_SYS_DYNAMIC_DEVICE_EXIT(OnSysDynamicDeviceExit);
  ON_W32_DEVICEIOCONTROL(OnW32DeviceIoControl);

  END_CONTROL_DISPATCH

  return TRUE;
}


BOOL OnSysDynamicDeviceInit()
{
  return TRUE;
}


BOOL OnSysDynamicDeviceExit()
{
  return TRUE;
}


DWORD OnW32DeviceIoControl(PIOCTLPARAMS p)
{
  struct tagPort32Struct *pPort32Struct;
  unsigned int *pdwPortVal;

  switch (p->dioc_IOCtlCode)
  {
    case DIOC_OPEN:
    case DIOC_CLOSEHANDLE:
    break;

    case WINIO_WRITEPORT:
      
      pPort32Struct = p->dioc_InBuf;

      switch (pPort32Struct->bSize)
      {
        case 1:
          _outp(pPort32Struct->wPortAddr, pPort32Struct->dwPortVal);
        break;

        case 2:
          _outpw(pPort32Struct->wPortAddr, pPort32Struct->dwPortVal);
        break;

        case 4:
          _outpd(pPort32Struct->wPortAddr, pPort32Struct->dwPortVal);
        break;
      }
      
    break;

    case WINIO_READPORT:

      pPort32Struct = p->dioc_InBuf;
      pdwPortVal = p->dioc_OutBuf;

      switch (pPort32Struct->bSize)
      {
        case 1:
          *pdwPortVal = _inp(pPort32Struct->wPortAddr);
        break;

        case 2:
          *pdwPortVal = _inpw(pPort32Struct->wPortAddr);
        break;

        case 4:
          *pdwPortVal = _inpd(pPort32Struct->wPortAddr);
        break;
      }

    break;
  }

  return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -