TerminateProcess et deadlocks

Est-il réel que la fonction TerminateProcess dans Windows puisse se bloquer parce que les threads à l’intérieur du processus étaient bloqués?

Exemple: le processus A s’exécute sous le contrôle du processus B, à présent le processus A entre dans une impasse et le processus B le détecte et décide de «supprimer» le processus A à l’aide de TerminateProcess.

Serait-il réussi à tuer le processus bloqué A?

Oui, tous les objects du kernel détenus par le processus seront publiés, y compris les verrous.

Le principal problème de TerminateProcess est que le processus n’a aucun mot à dire: s’il conserve un état global (fichiers, mémoire partagée, etc.), vous n’avez aucune garantie que ces éléments sont dans un état cohérent après la fin du processus.

Oui. Tant que vous disposez des permissions adéquates, TerminateProcess tuera l’autre processus, quel que soit son degré de blocage.

TerminateProcess va tuer chaque thread (comme si TerminateThread avait été utilisé sur chaque thread du processus).

Mais cela ne supprimera pas les threads bloqués dans le kernel (par exemple en raison d’un bogue du pilote de périphérique)