add init one.
remove volatile from pointer. as this will cause build error.
I test, add volatile for val is OK.
add changes from wdk.
work for win7 x86 checked/free build !!