I did this because I needed evidence to support my claim that Corsair drivers are causing my computer to crash.
Enabling driver verifier on my PC allows me to test your driver for compatibility with Windows. As per my attached dump file, the driver is failing with bugcheck code 0xC4 and the following parameters (decoded using this webpage):
Parameter 1: 0x2000 - The Storport miniport driver passed a bad argument (a NULL pointer) to the StorPortInitialize routine.
Parameter 2: 0xfffff801e7121c5d - The first argument passed to the StorPortInitialize routine. This parameter is a pointer to the driver object that the operating system passed to the miniport driver in the first argument of the miniport driver's DriverEntry routine.
Parameter
Parameter 3: 0x0 (NULL) - The second argument passed to the StorPortInitialize routine. This parameter is a pointer to context information that the operating system passed to the miniport driver in the second argument of the miniport driver's DriverEntry routine.
This is odd because this driver is not a Storport miniport driver... and when I load the dump file in WinDbg, it indicates the following decode for C4:
DRIVER_VERIFIER_DETECTED_VIOLATION (c4)
A device driver attempting to corrupt the system has been caught. This is
because the driver was specified in the registry as being suspect (by the
administrator) and the kernel has enabled substantial checking of this driver.
If the driver attempts to corrupt the system, bugchecks 0xC4, 0xC1 and 0xA will
be among the most commonly seen crashes.
Arguments:
Arg1: 0000000000002000, Code Integrity Issue: The caller specified an executable pool type. (Expected: NonPagedPoolNx)
Arg2: fffff801e7121c5d, The address in the driver's code where the error was detected.
Arg3: 0000000000000000, Pool Type.
Arg4: 000000004d4d4c43, Pool Tag (if provided).
This code integrity issue matches this web page description: https://docs.microsoft.com/en-us/windows-hardware/drivers/devtest/code-integrity-checking
Okay so I'm pretty sure this is actually a Code Integrity bugcheck fail (and a Microsoft documentation issue). It appears the driver is allocating a page with the executable bit set and it should not be doing that. Is that crash worthy? Deserving of a revision to the driver? I'll leave that to Corsair's discretion.
I'll try continuing to run Verifier on with Code Integrity disabled.
My initial comment:
is incorrect. I was looking at the wrong bug check code (0x00020002 , the entry below the incorrect StorportInitialize() bugcheck). I'll edit the comment to reflect that.
I appreciate the developers taking a look. I'm at my wit's end trying to justify not throwing my brand new PC in the trash. I'll post back after I've ran verifier with CI disabled. Thanks again.