Я не думаю, что с вашей программой что-то не так или что-то, что вы можете изменить, чтобы это не зависало.Что-то не так на уровне ОС с этой системой.
Эта функция NdrClientCall2 является частью механизма представления данных сети удаленного вызова процедур, который используется для выполнения вызовов RPC и DCOM.
NtConnectPort - это функция для подключения объекта порта (это фундаментальный объект ядра, например, мьютекс или дескриптор файла).Порты используются окнами на самом низком уровне для LPC.
Вызов NtConnectPort будет блокироваться до тех пор, пока сервер с именем NtCompleteConnectPort (время ожидания вызовов для вызовов NtConnectPort отсутствует).
Так что ваша проблемаявляется то, что winspool.drv пытается установить соединение LPC с другим процессом на той же машине (я думаю, что это будет spoolsv.exe, служба диспетчера очереди печати, но это невозможно определить из предоставленной информации), и этот другой процесс создал порт(NtCreatePort), но либо не вызвал NtListenPort, либо, когда возвращается NtListenPort, не вызывает NtAcceptConnectPort и NtCompleteConnectPort для него.Это предотвращает каждый возврат вызова NtConnectPort в вашем процессе.
Таким образом, настоящая проблема находится за пределами вашего процесса, в любом процессе, к которому принадлежит другая сторона порта.