It's not duplicated value, it's used to mark the current ClickLock state, maybe ClickLockTime can be removed.
It already stored in gspv.dwUserPrefMask, so it's redundant. And why could ClickLockTime be removed?
You need 2 variables, one for the ClickLock feature in general (stored in gspv) and one fur the current ClickLock state of primary button. This one is the second one. ClickLockTime isn't needed if you check the time on BUTTONUP.
And in case of SPI_SETMOUSECLICKLOCK pvParam is not a pointer to a BOOL, it is the BOOL value itself.
No, it' isn't, we are both wrong pvParam is NULL and the value is stored in uiParam: http://msdn.microsoft.com/en-us/library/ms724947%28VS.85%29.aspx
Did you recently check the page you are referring to? Hint: look at the bottom of the page. Don't trust in MSDN without checking.
Okay, i will revert this, but MS violates almost all rules of good and safe programming doing it that way...