Also WRT p. 2., routing completion APC case also through completion callback is there because it is not possible to queue NtDeviceIoControlFile() with completion APC when there is completion port, so doing it that way would require different nsi device files opened with and without BindIoCompletionCallback().