📄 clock.cpp
字号:
// CLOCK.cpp - main module for VxD CLOCK
#define DEVICE_MAIN
#include "clock.h"
Declare_Virtual_Device(CLOCK)
#undef DEVICE_MAIN
#include "apcx.h"
#include <vsd.h>
MyHwInt* pMyIRQ;
PVOID CallBackApc = 0;
THREADHANDLE TheThread = 0;
int x=0,y=0;
unsigned char b;
VOID MyHwInt::OnHardwareInt(VMHANDLE hVM)
{
_outp(0x70,0xc);
_inp(0x71);
x++;
if (x>=1024) {
x=0;
y++;
VWIN32_QueueUserApc(CallBackApc, (DWORD)&y, TheThread);
VSD_Bell();
}
sendPhysicalEOI();
}
BOOL ClockDevice::OnSysDynamicDeviceInit()
{
pMyIRQ = new MyHwInt();
if (!pMyIRQ || !pMyIRQ->hook()) return FALSE;
_outp(0x70,0xb);
b=_inp(0x71);
_outp(0x70,0xb);
_outp(0x71,0x40 | b);
pMyIRQ->physicalUnmask();
return TRUE;
}
BOOL ClockDevice::OnSysDynamicDeviceExit()
{
_outp(0x70,0xb);
_outp(0x71,b);
if (pMyIRQ) delete pMyIRQ;
return TRUE;
}
DWORD ClockDevice::OnW32DeviceIoControl(PIOCTLPARAMS pDIOCParams)
{
switch (pDIOCParams->dioc_IOCtlCode)
{
case DIOC_OPEN:
return 0;
case DIOC_CLOSEHANDLE:
return 0;
case ADDRESSPASS:
CallBackApc = pDIOCParams->dioc_InBuf;
TheThread = Get_Cur_Thread_Handle();
return 0;
default:
return -1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -