About debug register(0x1E: KMODE_EXCEPTION_NOT_HANDLED)

Hi:
I meet a problem when I use debug register to set a I/O breakpoint in
win2k.
After I used the following code to set a breakpoint in win2k,the system
crashed.And the BSOD code is 0x1E: KMODE_EXCEPTION_NOT_HANDLED.
But when I used the following code in win9x,nothing happened.
Please help me ,thanks.

/*
Use debug register to set a I/O breakpoint at port 0x1F3
*/
DWORD l_DR0,l_DR7;
DWORD l_CR4;
_asm
{
_emit 0x0F // mov eax,cr4
_emit 0x20
_emit 0xE0
mov l_CR4,eax

mov eax,DR7
mov l_DR7,eax
}

l_DR0=0x1F3;
l_DR7=l_DR7|0x20703;
l_CR4=l_CR4|0x08; //Set the DE(Debug Extension) flag

_asm
{
mov eax,l_DR0
mov DR0,eax

mov eax,l_DR7
mov DR7,eax

mov eax,l_CR4
_emit 0x0F //mov cr4,eax
_emit 0x22
_emit 0xE0

}

Best Regards!