📄 hinterrupt.cpp
字号:
// interrupt.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <devioctl.h>
#include "..\\..\\include\\rtmdll.h"
#pragma bss_seg( "RTMBSS" )
int k_stack;
int k_stack1;
#pragma bss_seg()
HANDLE hRTMDLL;
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
hRTMDLL = hModule;
return TRUE;
}
#pragma data_seg("RTMDATA")
DWORD _isr = 0;
int initLpt =0;
unsigned short dbit = 1;
#pragma data_seg()
#pragma check_stack(off)
#pragma code_seg("RTMCODE")
void newintr(void *)
{
// generate exception
// char *p = NULL;
// *p =1;
_isr++;
}
#pragma code_seg()
#pragma check_stack(on)
int th_end = 1;
HANDLE pi1;
HANDLE pi2;
extern "C" int WINAPI RTXEntry(int tmresol)
{
RTMCONNINTERRUPT cinter;
int error = 0;
if(RtmInit(hRTMDLL,KERNEL_MODE) == FALSE) return 0;
cinter.BusNumber = 0;
cinter.nVector =1;
cinter.itype = Isa;
cinter.lpParameter = NULL;
cinter.newintr = newintr;
pi1 = RtmHookInterrupt (hRTMDLL ,&cinter);
error = _isr;
error = _isr;
error = _isr;
RtmUnhookInterrupt (hRTMDLL ,pi1);
return RtmClose(hRTMDLL);
}
#pragma check_stack(on)
#pragma code_seg()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -