5/8:
+ NtWaitForMultipleObjects( 1, &cancel_handle, FALSE, TRUE, NULL ); + NtClose( cancel_handle );
You can probably make this handle automatically close itself when satisfied, like async handles.
I've got something like this, not sure it's an improvement: [cancelio-wait-autoclose-handle.txt](/uploads/430042376bc45cc47c128b481024cdcf/cancelio-wait-autoclose-handle.txt)
Just as a sidenote. I'm still to write those ntoskrnl tests for the interesting questions you brought up.