In that case neither windows or wine blocks.
So that means MFCancelWorkItem() doesn't wait for work items to finish then. And WaitForThreadpoolWaitCallbacks() waits for work items to finish. So there is a difference. And please add these tests as well. Also, you said wine doesn't block, is that TRUE after your MR?