Yes, it's really an invalid param:
as you called "Mouse.SetDataFormat(c_dfDIMouse);" you should later use "DIMOUSESTATE" and not "DIMOUSESTATE2".

For second version of mouse state struct you should initialize with c_dfDIMouse2.