Hello, everyone. I'm new to developing device driver, but I got into trouble shortly after I started.
I'm making Intel High Definition Audio Controller driver, and I checked in the specification
that the access on the memory mapped register would be necessary.
I found their addresses using devmgmt.msc and RW - Read & Write Utility,
they're started at 0xF7FF8000.
When I wrote DriverEntry, I directly accessed that base address(e.g. (unsigned char*)0xf7ff8000)
and used index and offset to access specific register, but when I started driver, BSOD occured
at the point I read a value from one of them register(It was CorbSize register on offset 0x4e)
BSOD stop code was 0x00000050, "PAGE_FAULT_IN_NONPAGED_AREA".
kd showed me that f7ff8000 is freed(or corrupted) pool and
there's Bad allocation size @f7ff8000, too large
Are those error codes mean that address 0xF7FF8000 is unavailable data space?
But I checked the contents on 0xF7FF8000 using RW - Read & Write Utility,
and there were constantly changing values on that space,
even though db 0xf7ff8000 command on kd
show me only ??-filled memory space... I really wonder what the problem is,
and what the right way to access their memory mapped registers is.
Sorry for my bad english skill