Metropoli BBS
VIEWER: pokeproc.c MODE: TEXT (ASCII)
/*
 *  From inpection of the TSS we know that NT's default IOPM offset is
 * 0x20AD.  From an inspection of a dump of a process structure, we
 * can find the bytes 'AD 20' at offset 0x30.  This is where NT stores
 * the IOPM offset for each process, so that I/O access can be granted
 * on a process-by-process basis.  This portion of the process
 * structure is not documented in the DDK.
 *
 *  This kernel mode driver fragment illustrates the brute force
 * method of poking the IOPM base into the process structure.
 */
void GiveIO()
{
	char *CurProc;

	CurProc = IoGetCurrentProcess();
	*((USHORT *)(CurProc + 0x30)) = 0x88;
}

[ RETURN TO DIRECTORY ]