Click here to Skip to main content
15,885,914 members
Articles / Programming Languages / C

Interrupt Hooking and retrieving device information on Windows NT/2000/XP

Rate me:
Please Sign up or sign in to vote.
4.84/5 (37 votes)
30 Jul 2003GPL33 min read 317K   6.2K   94  
This article shows you how to hook interrupts, and how to get device resource information from the registry
/*
InterruptHook
Copyright (C) 2003  Alexander M.

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/

#include <ntddk.h>
#include "handler.h"
#include "hook.h"
#include "debug.h"

INT_VECTOR_HANDLER( 0x00 )
INT_VECTOR_HANDLER( 0x01 )
INT_VECTOR_HANDLER( 0x02 )
INT_VECTOR_HANDLER( 0x03 )
INT_VECTOR_HANDLER( 0x04 )
INT_VECTOR_HANDLER( 0x05 )
INT_VECTOR_HANDLER( 0x06 )
INT_VECTOR_HANDLER( 0x07 )
INT_VECTOR_HANDLER( 0x08 )
INT_VECTOR_HANDLER( 0x09 )
INT_VECTOR_HANDLER( 0x0a )
INT_VECTOR_HANDLER( 0x0b )
INT_VECTOR_HANDLER( 0x0c )
INT_VECTOR_HANDLER( 0x0d )
INT_VECTOR_HANDLER( 0x0e )
INT_VECTOR_HANDLER( 0x0f )
INT_VECTOR_HANDLER( 0x10 )
INT_VECTOR_HANDLER( 0x11 )
INT_VECTOR_HANDLER( 0x12 )
INT_VECTOR_HANDLER( 0x13 )
INT_VECTOR_HANDLER( 0x14 )
INT_VECTOR_HANDLER( 0x15 )
INT_VECTOR_HANDLER( 0x16 )
INT_VECTOR_HANDLER( 0x17 )
INT_VECTOR_HANDLER( 0x18 )
INT_VECTOR_HANDLER( 0x19 )
INT_VECTOR_HANDLER( 0x1a )
INT_VECTOR_HANDLER( 0x1b )
INT_VECTOR_HANDLER( 0x1c )
INT_VECTOR_HANDLER( 0x1d )
INT_VECTOR_HANDLER( 0x1e )
INT_VECTOR_HANDLER( 0x1f )
INT_VECTOR_HANDLER( 0x20 )
INT_VECTOR_HANDLER( 0x21 )
INT_VECTOR_HANDLER( 0x22 )
INT_VECTOR_HANDLER( 0x23 )
INT_VECTOR_HANDLER( 0x24 )
INT_VECTOR_HANDLER( 0x25 )
INT_VECTOR_HANDLER( 0x26 )
INT_VECTOR_HANDLER( 0x27 )
INT_VECTOR_HANDLER( 0x28 )
INT_VECTOR_HANDLER( 0x29 )
INT_VECTOR_HANDLER( 0x2a )
INT_VECTOR_HANDLER( 0x2b )
INT_VECTOR_HANDLER( 0x2c )
INT_VECTOR_HANDLER( 0x2d )
INT_VECTOR_HANDLER( 0x2e )
INT_VECTOR_HANDLER( 0x2f )
INT_VECTOR_HANDLER( 0x30 )
INT_VECTOR_HANDLER( 0x31 )
INT_VECTOR_HANDLER( 0x32 )
INT_VECTOR_HANDLER( 0x33 )
INT_VECTOR_HANDLER( 0x34 )
INT_VECTOR_HANDLER( 0x35 )
INT_VECTOR_HANDLER( 0x36 )
INT_VECTOR_HANDLER( 0x37 )
INT_VECTOR_HANDLER( 0x38 )
INT_VECTOR_HANDLER( 0x39 )
INT_VECTOR_HANDLER( 0x3a )
INT_VECTOR_HANDLER( 0x3b )
INT_VECTOR_HANDLER( 0x3c )
INT_VECTOR_HANDLER( 0x3d )
INT_VECTOR_HANDLER( 0x3e )
INT_VECTOR_HANDLER( 0x3f )
INT_VECTOR_HANDLER( 0x40 )
INT_VECTOR_HANDLER( 0x41 )
INT_VECTOR_HANDLER( 0x42 )
INT_VECTOR_HANDLER( 0x43 )
INT_VECTOR_HANDLER( 0x44 )
INT_VECTOR_HANDLER( 0x45 )
INT_VECTOR_HANDLER( 0x46 )
INT_VECTOR_HANDLER( 0x47 )
INT_VECTOR_HANDLER( 0x48 )
INT_VECTOR_HANDLER( 0x49 )
INT_VECTOR_HANDLER( 0x4a )
INT_VECTOR_HANDLER( 0x4b )
INT_VECTOR_HANDLER( 0x4c )
INT_VECTOR_HANDLER( 0x4d )
INT_VECTOR_HANDLER( 0x4e )
INT_VECTOR_HANDLER( 0x4f )
INT_VECTOR_HANDLER( 0x50 )
INT_VECTOR_HANDLER( 0x51 )
INT_VECTOR_HANDLER( 0x52 )
INT_VECTOR_HANDLER( 0x53 )
INT_VECTOR_HANDLER( 0x54 )
INT_VECTOR_HANDLER( 0x55 )
INT_VECTOR_HANDLER( 0x56 )
INT_VECTOR_HANDLER( 0x57 )
INT_VECTOR_HANDLER( 0x58 )
INT_VECTOR_HANDLER( 0x59 )
INT_VECTOR_HANDLER( 0x5a )
INT_VECTOR_HANDLER( 0x5b )
INT_VECTOR_HANDLER( 0x5c )
INT_VECTOR_HANDLER( 0x5d )
INT_VECTOR_HANDLER( 0x5e )
INT_VECTOR_HANDLER( 0x5f )
INT_VECTOR_HANDLER( 0x60 )
INT_VECTOR_HANDLER( 0x61 )
INT_VECTOR_HANDLER( 0x62 )
INT_VECTOR_HANDLER( 0x63 )
INT_VECTOR_HANDLER( 0x64 )
INT_VECTOR_HANDLER( 0x65 )
INT_VECTOR_HANDLER( 0x66 )
INT_VECTOR_HANDLER( 0x67 )
INT_VECTOR_HANDLER( 0x68 )
INT_VECTOR_HANDLER( 0x69 )
INT_VECTOR_HANDLER( 0x6a )
INT_VECTOR_HANDLER( 0x6b )
INT_VECTOR_HANDLER( 0x6c )
INT_VECTOR_HANDLER( 0x6d )
INT_VECTOR_HANDLER( 0x6e )
INT_VECTOR_HANDLER( 0x6f )
INT_VECTOR_HANDLER( 0x70 )
INT_VECTOR_HANDLER( 0x71 )
INT_VECTOR_HANDLER( 0x72 )
INT_VECTOR_HANDLER( 0x73 )
INT_VECTOR_HANDLER( 0x74 )
INT_VECTOR_HANDLER( 0x75 )
INT_VECTOR_HANDLER( 0x76 )
INT_VECTOR_HANDLER( 0x77 )
INT_VECTOR_HANDLER( 0x78 )
INT_VECTOR_HANDLER( 0x79 )
INT_VECTOR_HANDLER( 0x7a )
INT_VECTOR_HANDLER( 0x7b )
INT_VECTOR_HANDLER( 0x7c )
INT_VECTOR_HANDLER( 0x7d )
INT_VECTOR_HANDLER( 0x7e )
INT_VECTOR_HANDLER( 0x7f )
INT_VECTOR_HANDLER( 0x80 )
INT_VECTOR_HANDLER( 0x81 )
INT_VECTOR_HANDLER( 0x82 )
INT_VECTOR_HANDLER( 0x83 )
INT_VECTOR_HANDLER( 0x84 )
INT_VECTOR_HANDLER( 0x85 )
INT_VECTOR_HANDLER( 0x86 )
INT_VECTOR_HANDLER( 0x87 )
INT_VECTOR_HANDLER( 0x88 )
INT_VECTOR_HANDLER( 0x89 )
INT_VECTOR_HANDLER( 0x8a )
INT_VECTOR_HANDLER( 0x8b )
INT_VECTOR_HANDLER( 0x8c )
INT_VECTOR_HANDLER( 0x8d )
INT_VECTOR_HANDLER( 0x8e )
INT_VECTOR_HANDLER( 0x8f )
INT_VECTOR_HANDLER( 0x90 )
INT_VECTOR_HANDLER( 0x91 )
INT_VECTOR_HANDLER( 0x92 )
INT_VECTOR_HANDLER( 0x93 )
INT_VECTOR_HANDLER( 0x94 )
INT_VECTOR_HANDLER( 0x95 )
INT_VECTOR_HANDLER( 0x96 )
INT_VECTOR_HANDLER( 0x97 )
INT_VECTOR_HANDLER( 0x98 )
INT_VECTOR_HANDLER( 0x99 )
INT_VECTOR_HANDLER( 0x9a )
INT_VECTOR_HANDLER( 0x9b )
INT_VECTOR_HANDLER( 0x9c )
INT_VECTOR_HANDLER( 0x9d )
INT_VECTOR_HANDLER( 0x9e )
INT_VECTOR_HANDLER( 0x9f )
INT_VECTOR_HANDLER( 0xa0 )
INT_VECTOR_HANDLER( 0xa1 )
INT_VECTOR_HANDLER( 0xa2 )
INT_VECTOR_HANDLER( 0xa3 )
INT_VECTOR_HANDLER( 0xa4 )
INT_VECTOR_HANDLER( 0xa5 )
INT_VECTOR_HANDLER( 0xa6 )
INT_VECTOR_HANDLER( 0xa7 )
INT_VECTOR_HANDLER( 0xa8 )
INT_VECTOR_HANDLER( 0xa9 )
INT_VECTOR_HANDLER( 0xaa )
INT_VECTOR_HANDLER( 0xab )
INT_VECTOR_HANDLER( 0xac )
INT_VECTOR_HANDLER( 0xad )
INT_VECTOR_HANDLER( 0xae )
INT_VECTOR_HANDLER( 0xaf )
INT_VECTOR_HANDLER( 0xb0 )
INT_VECTOR_HANDLER( 0xb1 )
INT_VECTOR_HANDLER( 0xb2 )
INT_VECTOR_HANDLER( 0xb3 )
INT_VECTOR_HANDLER( 0xb4 )
INT_VECTOR_HANDLER( 0xb5 )
INT_VECTOR_HANDLER( 0xb6 )
INT_VECTOR_HANDLER( 0xb7 )
INT_VECTOR_HANDLER( 0xb8 )
INT_VECTOR_HANDLER( 0xb9 )
INT_VECTOR_HANDLER( 0xba )
INT_VECTOR_HANDLER( 0xbb )
INT_VECTOR_HANDLER( 0xbc )
INT_VECTOR_HANDLER( 0xbd )
INT_VECTOR_HANDLER( 0xbe )
INT_VECTOR_HANDLER( 0xbf )
INT_VECTOR_HANDLER( 0xc0 )
INT_VECTOR_HANDLER( 0xc1 )
INT_VECTOR_HANDLER( 0xc2 )
INT_VECTOR_HANDLER( 0xc3 )
INT_VECTOR_HANDLER( 0xc4 )
INT_VECTOR_HANDLER( 0xc5 )
INT_VECTOR_HANDLER( 0xc6 )
INT_VECTOR_HANDLER( 0xc7 )
INT_VECTOR_HANDLER( 0xc8 )
INT_VECTOR_HANDLER( 0xc9 )
INT_VECTOR_HANDLER( 0xca )
INT_VECTOR_HANDLER( 0xcb )
INT_VECTOR_HANDLER( 0xcc )
INT_VECTOR_HANDLER( 0xcd )
INT_VECTOR_HANDLER( 0xce )
INT_VECTOR_HANDLER( 0xcf )
INT_VECTOR_HANDLER( 0xd0 )
INT_VECTOR_HANDLER( 0xd1 )
INT_VECTOR_HANDLER( 0xd2 )
INT_VECTOR_HANDLER( 0xd3 )
INT_VECTOR_HANDLER( 0xd4 )
INT_VECTOR_HANDLER( 0xd5 )
INT_VECTOR_HANDLER( 0xd6 )
INT_VECTOR_HANDLER( 0xd7 )
INT_VECTOR_HANDLER( 0xd8 )
INT_VECTOR_HANDLER( 0xd9 )
INT_VECTOR_HANDLER( 0xda )
INT_VECTOR_HANDLER( 0xdb )
INT_VECTOR_HANDLER( 0xdc )
INT_VECTOR_HANDLER( 0xdd )
INT_VECTOR_HANDLER( 0xde )
INT_VECTOR_HANDLER( 0xdf )
INT_VECTOR_HANDLER( 0xe0 )
INT_VECTOR_HANDLER( 0xe1 )
INT_VECTOR_HANDLER( 0xe2 )
INT_VECTOR_HANDLER( 0xe3 )
INT_VECTOR_HANDLER( 0xe4 )
INT_VECTOR_HANDLER( 0xe5 )
INT_VECTOR_HANDLER( 0xe6 )
INT_VECTOR_HANDLER( 0xe7 )
INT_VECTOR_HANDLER( 0xe8 )
INT_VECTOR_HANDLER( 0xe9 )
INT_VECTOR_HANDLER( 0xea )
INT_VECTOR_HANDLER( 0xeb )
INT_VECTOR_HANDLER( 0xec )
INT_VECTOR_HANDLER( 0xed )
INT_VECTOR_HANDLER( 0xee )
INT_VECTOR_HANDLER( 0xef )
INT_VECTOR_HANDLER( 0xf0 )
INT_VECTOR_HANDLER( 0xf1 )
INT_VECTOR_HANDLER( 0xf2 )
INT_VECTOR_HANDLER( 0xf3 )
INT_VECTOR_HANDLER( 0xf4 )
INT_VECTOR_HANDLER( 0xf5 )
INT_VECTOR_HANDLER( 0xf6 )
INT_VECTOR_HANDLER( 0xf7 )
INT_VECTOR_HANDLER( 0xf8 )
INT_VECTOR_HANDLER( 0xf9 )
INT_VECTOR_HANDLER( 0xfa )
INT_VECTOR_HANDLER( 0xfb )
INT_VECTOR_HANDLER( 0xfc )
INT_VECTOR_HANDLER( 0xfd )
INT_VECTOR_HANDLER( 0xfe )
INT_VECTOR_HANDLER( 0xff )

INT_VECTOR	OriginalHandlers[256] = { 0, 0, 0, 0, 0 };
PVOID		InternalHandlers[256] = 
{
	INT_VECTOR_HANDLER_OFFSET( 0x00 ),
	INT_VECTOR_HANDLER_OFFSET( 0x01 ),
	INT_VECTOR_HANDLER_OFFSET( 0x02 ),
	INT_VECTOR_HANDLER_OFFSET( 0x03 ),
	INT_VECTOR_HANDLER_OFFSET( 0x04 ),
	INT_VECTOR_HANDLER_OFFSET( 0x05 ),
	INT_VECTOR_HANDLER_OFFSET( 0x06 ),
	INT_VECTOR_HANDLER_OFFSET( 0x07 ),
	INT_VECTOR_HANDLER_OFFSET( 0x08 ),
	INT_VECTOR_HANDLER_OFFSET( 0x09 ),
	INT_VECTOR_HANDLER_OFFSET( 0x0a ),
	INT_VECTOR_HANDLER_OFFSET( 0x0b ),
	INT_VECTOR_HANDLER_OFFSET( 0x0c ),
	INT_VECTOR_HANDLER_OFFSET( 0x0d ),
	INT_VECTOR_HANDLER_OFFSET( 0x0e ),
	INT_VECTOR_HANDLER_OFFSET( 0x0f ),
	INT_VECTOR_HANDLER_OFFSET( 0x10 ),
	INT_VECTOR_HANDLER_OFFSET( 0x11 ),
	INT_VECTOR_HANDLER_OFFSET( 0x12 ),
	INT_VECTOR_HANDLER_OFFSET( 0x13 ),
	INT_VECTOR_HANDLER_OFFSET( 0x14 ),
	INT_VECTOR_HANDLER_OFFSET( 0x15 ),
	INT_VECTOR_HANDLER_OFFSET( 0x16 ),
	INT_VECTOR_HANDLER_OFFSET( 0x17 ),
	INT_VECTOR_HANDLER_OFFSET( 0x18 ),
	INT_VECTOR_HANDLER_OFFSET( 0x19 ),
	INT_VECTOR_HANDLER_OFFSET( 0x1a ),
	INT_VECTOR_HANDLER_OFFSET( 0x1b ),
	INT_VECTOR_HANDLER_OFFSET( 0x1c ),
	INT_VECTOR_HANDLER_OFFSET( 0x1d ),
	INT_VECTOR_HANDLER_OFFSET( 0x1e ),
	INT_VECTOR_HANDLER_OFFSET( 0x1f ),
	INT_VECTOR_HANDLER_OFFSET( 0x20 ),
	INT_VECTOR_HANDLER_OFFSET( 0x21 ),
	INT_VECTOR_HANDLER_OFFSET( 0x22 ),
	INT_VECTOR_HANDLER_OFFSET( 0x23 ),
	INT_VECTOR_HANDLER_OFFSET( 0x24 ),
	INT_VECTOR_HANDLER_OFFSET( 0x25 ),
	INT_VECTOR_HANDLER_OFFSET( 0x26 ),
	INT_VECTOR_HANDLER_OFFSET( 0x27 ),
	INT_VECTOR_HANDLER_OFFSET( 0x28 ),
	INT_VECTOR_HANDLER_OFFSET( 0x29 ),
	INT_VECTOR_HANDLER_OFFSET( 0x2a ),
	INT_VECTOR_HANDLER_OFFSET( 0x2b ),
	INT_VECTOR_HANDLER_OFFSET( 0x2c ),
	INT_VECTOR_HANDLER_OFFSET( 0x2d ),
	INT_VECTOR_HANDLER_OFFSET( 0x2e ),
	INT_VECTOR_HANDLER_OFFSET( 0x2f ),
	INT_VECTOR_HANDLER_OFFSET( 0x30 ),
	INT_VECTOR_HANDLER_OFFSET( 0x31 ),
	INT_VECTOR_HANDLER_OFFSET( 0x32 ),
	INT_VECTOR_HANDLER_OFFSET( 0x33 ),
	INT_VECTOR_HANDLER_OFFSET( 0x34 ),
	INT_VECTOR_HANDLER_OFFSET( 0x35 ),
	INT_VECTOR_HANDLER_OFFSET( 0x36 ),
	INT_VECTOR_HANDLER_OFFSET( 0x37 ),
	INT_VECTOR_HANDLER_OFFSET( 0x38 ),
	INT_VECTOR_HANDLER_OFFSET( 0x39 ),
	INT_VECTOR_HANDLER_OFFSET( 0x3a ),
	INT_VECTOR_HANDLER_OFFSET( 0x3b ),
	INT_VECTOR_HANDLER_OFFSET( 0x3c ),
	INT_VECTOR_HANDLER_OFFSET( 0x3d ),
	INT_VECTOR_HANDLER_OFFSET( 0x3e ),
	INT_VECTOR_HANDLER_OFFSET( 0x3f ),
	INT_VECTOR_HANDLER_OFFSET( 0x40 ),
	INT_VECTOR_HANDLER_OFFSET( 0x41 ),
	INT_VECTOR_HANDLER_OFFSET( 0x42 ),
	INT_VECTOR_HANDLER_OFFSET( 0x43 ),
	INT_VECTOR_HANDLER_OFFSET( 0x44 ),
	INT_VECTOR_HANDLER_OFFSET( 0x45 ),
	INT_VECTOR_HANDLER_OFFSET( 0x46 ),
	INT_VECTOR_HANDLER_OFFSET( 0x47 ),
	INT_VECTOR_HANDLER_OFFSET( 0x48 ),
	INT_VECTOR_HANDLER_OFFSET( 0x49 ),
	INT_VECTOR_HANDLER_OFFSET( 0x4a ),
	INT_VECTOR_HANDLER_OFFSET( 0x4b ),
	INT_VECTOR_HANDLER_OFFSET( 0x4c ),
	INT_VECTOR_HANDLER_OFFSET( 0x4d ),
	INT_VECTOR_HANDLER_OFFSET( 0x4e ),
	INT_VECTOR_HANDLER_OFFSET( 0x4f ),
	INT_VECTOR_HANDLER_OFFSET( 0x50 ),
	INT_VECTOR_HANDLER_OFFSET( 0x51 ),
	INT_VECTOR_HANDLER_OFFSET( 0x52 ),
	INT_VECTOR_HANDLER_OFFSET( 0x53 ),
	INT_VECTOR_HANDLER_OFFSET( 0x54 ),
	INT_VECTOR_HANDLER_OFFSET( 0x55 ),
	INT_VECTOR_HANDLER_OFFSET( 0x56 ),
	INT_VECTOR_HANDLER_OFFSET( 0x57 ),
	INT_VECTOR_HANDLER_OFFSET( 0x58 ),
	INT_VECTOR_HANDLER_OFFSET( 0x59 ),
	INT_VECTOR_HANDLER_OFFSET( 0x5a ),
	INT_VECTOR_HANDLER_OFFSET( 0x5b ),
	INT_VECTOR_HANDLER_OFFSET( 0x5c ),
	INT_VECTOR_HANDLER_OFFSET( 0x5d ),
	INT_VECTOR_HANDLER_OFFSET( 0x5e ),
	INT_VECTOR_HANDLER_OFFSET( 0x5f ),
	INT_VECTOR_HANDLER_OFFSET( 0x60 ),
	INT_VECTOR_HANDLER_OFFSET( 0x61 ),
	INT_VECTOR_HANDLER_OFFSET( 0x62 ),
	INT_VECTOR_HANDLER_OFFSET( 0x63 ),
	INT_VECTOR_HANDLER_OFFSET( 0x64 ),
	INT_VECTOR_HANDLER_OFFSET( 0x65 ),
	INT_VECTOR_HANDLER_OFFSET( 0x66 ),
	INT_VECTOR_HANDLER_OFFSET( 0x67 ),
	INT_VECTOR_HANDLER_OFFSET( 0x68 ),
	INT_VECTOR_HANDLER_OFFSET( 0x69 ),
	INT_VECTOR_HANDLER_OFFSET( 0x6a ),
	INT_VECTOR_HANDLER_OFFSET( 0x6b ),
	INT_VECTOR_HANDLER_OFFSET( 0x6c ),
	INT_VECTOR_HANDLER_OFFSET( 0x6d ),
	INT_VECTOR_HANDLER_OFFSET( 0x6e ),
	INT_VECTOR_HANDLER_OFFSET( 0x6f ),
	INT_VECTOR_HANDLER_OFFSET( 0x70 ),
	INT_VECTOR_HANDLER_OFFSET( 0x71 ),
	INT_VECTOR_HANDLER_OFFSET( 0x72 ),
	INT_VECTOR_HANDLER_OFFSET( 0x73 ),
	INT_VECTOR_HANDLER_OFFSET( 0x74 ),
	INT_VECTOR_HANDLER_OFFSET( 0x75 ),
	INT_VECTOR_HANDLER_OFFSET( 0x76 ),
	INT_VECTOR_HANDLER_OFFSET( 0x77 ),
	INT_VECTOR_HANDLER_OFFSET( 0x78 ),
	INT_VECTOR_HANDLER_OFFSET( 0x79 ),
	INT_VECTOR_HANDLER_OFFSET( 0x7a ),
	INT_VECTOR_HANDLER_OFFSET( 0x7b ),
	INT_VECTOR_HANDLER_OFFSET( 0x7c ),
	INT_VECTOR_HANDLER_OFFSET( 0x7d ),
	INT_VECTOR_HANDLER_OFFSET( 0x7e ),
	INT_VECTOR_HANDLER_OFFSET( 0x7f ),
	INT_VECTOR_HANDLER_OFFSET( 0x80 ),
	INT_VECTOR_HANDLER_OFFSET( 0x81 ),
	INT_VECTOR_HANDLER_OFFSET( 0x82 ),
	INT_VECTOR_HANDLER_OFFSET( 0x83 ),
	INT_VECTOR_HANDLER_OFFSET( 0x84 ),
	INT_VECTOR_HANDLER_OFFSET( 0x85 ),
	INT_VECTOR_HANDLER_OFFSET( 0x86 ),
	INT_VECTOR_HANDLER_OFFSET( 0x87 ),
	INT_VECTOR_HANDLER_OFFSET( 0x88 ),
	INT_VECTOR_HANDLER_OFFSET( 0x89 ),
	INT_VECTOR_HANDLER_OFFSET( 0x8a ),
	INT_VECTOR_HANDLER_OFFSET( 0x8b ),
	INT_VECTOR_HANDLER_OFFSET( 0x8c ),
	INT_VECTOR_HANDLER_OFFSET( 0x8d ),
	INT_VECTOR_HANDLER_OFFSET( 0x8e ),
	INT_VECTOR_HANDLER_OFFSET( 0x8f ),
	INT_VECTOR_HANDLER_OFFSET( 0x90 ),
	INT_VECTOR_HANDLER_OFFSET( 0x91 ),
	INT_VECTOR_HANDLER_OFFSET( 0x92 ),
	INT_VECTOR_HANDLER_OFFSET( 0x93 ),
	INT_VECTOR_HANDLER_OFFSET( 0x94 ),
	INT_VECTOR_HANDLER_OFFSET( 0x95 ),
	INT_VECTOR_HANDLER_OFFSET( 0x96 ),
	INT_VECTOR_HANDLER_OFFSET( 0x97 ),
	INT_VECTOR_HANDLER_OFFSET( 0x98 ),
	INT_VECTOR_HANDLER_OFFSET( 0x99 ),
	INT_VECTOR_HANDLER_OFFSET( 0x9a ),
	INT_VECTOR_HANDLER_OFFSET( 0x9b ),
	INT_VECTOR_HANDLER_OFFSET( 0x9c ),
	INT_VECTOR_HANDLER_OFFSET( 0x9d ),
	INT_VECTOR_HANDLER_OFFSET( 0x9e ),
	INT_VECTOR_HANDLER_OFFSET( 0x9f ),
	INT_VECTOR_HANDLER_OFFSET( 0xa0 ),
	INT_VECTOR_HANDLER_OFFSET( 0xa1 ),
	INT_VECTOR_HANDLER_OFFSET( 0xa2 ),
	INT_VECTOR_HANDLER_OFFSET( 0xa3 ),
	INT_VECTOR_HANDLER_OFFSET( 0xa4 ),
	INT_VECTOR_HANDLER_OFFSET( 0xa5 ),
	INT_VECTOR_HANDLER_OFFSET( 0xa6 ),
	INT_VECTOR_HANDLER_OFFSET( 0xa7 ),
	INT_VECTOR_HANDLER_OFFSET( 0xa8 ),
	INT_VECTOR_HANDLER_OFFSET( 0xa9 ),
	INT_VECTOR_HANDLER_OFFSET( 0xaa ),
	INT_VECTOR_HANDLER_OFFSET( 0xab ),
	INT_VECTOR_HANDLER_OFFSET( 0xac ),
	INT_VECTOR_HANDLER_OFFSET( 0xad ),
	INT_VECTOR_HANDLER_OFFSET( 0xae ),
	INT_VECTOR_HANDLER_OFFSET( 0xaf ),
	INT_VECTOR_HANDLER_OFFSET( 0xb0 ),
	INT_VECTOR_HANDLER_OFFSET( 0xb1 ),
	INT_VECTOR_HANDLER_OFFSET( 0xb2 ),
	INT_VECTOR_HANDLER_OFFSET( 0xb3 ),
	INT_VECTOR_HANDLER_OFFSET( 0xb4 ),
	INT_VECTOR_HANDLER_OFFSET( 0xb5 ),
	INT_VECTOR_HANDLER_OFFSET( 0xb6 ),
	INT_VECTOR_HANDLER_OFFSET( 0xb7 ),
	INT_VECTOR_HANDLER_OFFSET( 0xb8 ),
	INT_VECTOR_HANDLER_OFFSET( 0xb9 ),
	INT_VECTOR_HANDLER_OFFSET( 0xba ),
	INT_VECTOR_HANDLER_OFFSET( 0xbb ),
	INT_VECTOR_HANDLER_OFFSET( 0xbc ),
	INT_VECTOR_HANDLER_OFFSET( 0xbd ),
	INT_VECTOR_HANDLER_OFFSET( 0xbe ),
	INT_VECTOR_HANDLER_OFFSET( 0xbf ),
	INT_VECTOR_HANDLER_OFFSET( 0xc0 ),
	INT_VECTOR_HANDLER_OFFSET( 0xc1 ),
	INT_VECTOR_HANDLER_OFFSET( 0xc2 ),
	INT_VECTOR_HANDLER_OFFSET( 0xc3 ),
	INT_VECTOR_HANDLER_OFFSET( 0xc4 ),
	INT_VECTOR_HANDLER_OFFSET( 0xc5 ),
	INT_VECTOR_HANDLER_OFFSET( 0xc6 ),
	INT_VECTOR_HANDLER_OFFSET( 0xc7 ),
	INT_VECTOR_HANDLER_OFFSET( 0xc8 ),
	INT_VECTOR_HANDLER_OFFSET( 0xc9 ),
	INT_VECTOR_HANDLER_OFFSET( 0xca ),
	INT_VECTOR_HANDLER_OFFSET( 0xcb ),
	INT_VECTOR_HANDLER_OFFSET( 0xcc ),
	INT_VECTOR_HANDLER_OFFSET( 0xcd ),
	INT_VECTOR_HANDLER_OFFSET( 0xce ),
	INT_VECTOR_HANDLER_OFFSET( 0xcf ),
	INT_VECTOR_HANDLER_OFFSET( 0xd0 ),
	INT_VECTOR_HANDLER_OFFSET( 0xd1 ),
	INT_VECTOR_HANDLER_OFFSET( 0xd2 ),
	INT_VECTOR_HANDLER_OFFSET( 0xd3 ),
	INT_VECTOR_HANDLER_OFFSET( 0xd4 ),
	INT_VECTOR_HANDLER_OFFSET( 0xd5 ),
	INT_VECTOR_HANDLER_OFFSET( 0xd6 ),
	INT_VECTOR_HANDLER_OFFSET( 0xd7 ),
	INT_VECTOR_HANDLER_OFFSET( 0xd8 ),
	INT_VECTOR_HANDLER_OFFSET( 0xd9 ),
	INT_VECTOR_HANDLER_OFFSET( 0xda ),
	INT_VECTOR_HANDLER_OFFSET( 0xdb ),
	INT_VECTOR_HANDLER_OFFSET( 0xdc ),
	INT_VECTOR_HANDLER_OFFSET( 0xdd ),
	INT_VECTOR_HANDLER_OFFSET( 0xde ),
	INT_VECTOR_HANDLER_OFFSET( 0xdf ),
	INT_VECTOR_HANDLER_OFFSET( 0xe0 ),
	INT_VECTOR_HANDLER_OFFSET( 0xe1 ),
	INT_VECTOR_HANDLER_OFFSET( 0xe2 ),
	INT_VECTOR_HANDLER_OFFSET( 0xe3 ),
	INT_VECTOR_HANDLER_OFFSET( 0xe4 ),
	INT_VECTOR_HANDLER_OFFSET( 0xe5 ),
	INT_VECTOR_HANDLER_OFFSET( 0xe6 ),
	INT_VECTOR_HANDLER_OFFSET( 0xe7 ),
	INT_VECTOR_HANDLER_OFFSET( 0xe8 ),
	INT_VECTOR_HANDLER_OFFSET( 0xe9 ),
	INT_VECTOR_HANDLER_OFFSET( 0xea ),
	INT_VECTOR_HANDLER_OFFSET( 0xeb ),
	INT_VECTOR_HANDLER_OFFSET( 0xec ),
	INT_VECTOR_HANDLER_OFFSET( 0xed ),
	INT_VECTOR_HANDLER_OFFSET( 0xee ),
	INT_VECTOR_HANDLER_OFFSET( 0xef ),
	INT_VECTOR_HANDLER_OFFSET( 0xf0 ),
	INT_VECTOR_HANDLER_OFFSET( 0xf1 ),
	INT_VECTOR_HANDLER_OFFSET( 0xf2 ),
	INT_VECTOR_HANDLER_OFFSET( 0xf3 ),
	INT_VECTOR_HANDLER_OFFSET( 0xf4 ),
	INT_VECTOR_HANDLER_OFFSET( 0xf5 ),
	INT_VECTOR_HANDLER_OFFSET( 0xf6 ),
	INT_VECTOR_HANDLER_OFFSET( 0xf7 ),
	INT_VECTOR_HANDLER_OFFSET( 0xf8 ),
	INT_VECTOR_HANDLER_OFFSET( 0xf9 ),
	INT_VECTOR_HANDLER_OFFSET( 0xfa ),
	INT_VECTOR_HANDLER_OFFSET( 0xfb ),
	INT_VECTOR_HANDLER_OFFSET( 0xfc ),
	INT_VECTOR_HANDLER_OFFSET( 0xfd ),
	INT_VECTOR_HANDLER_OFFSET( 0xfe ),
	INT_VECTOR_HANDLER_OFFSET( 0xff )
};
PVOID	ExternalHandlers[256];
__int64	InterruptCounts[256] = { 0 };

VOID __stdcall
GeneralHandler( 
		IN	ULONG		iInt )
{
	InterruptCounts[iInt]++;
	/* ... */
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The GNU General Public License (GPLv3)


Written By
Germany Germany
I'm a lazy coder who started coding at the age of 8 and I live in (c)old Germany Frown | :(
I'm a university student at LMU munich (http://www.lmu.de/).
Course of studies: computer science of course Wink | ;)

I'm also very interested in system programming, assembler and SIMD... but they are not listed as interests choices here Frown | :(

Comments and Discussions