¿Cómo identificar cuántos niveles de CoInitialize se han llamado?

Estoy haciendo un poco de depuración en un proyecto desordenado que detecté donde el desarrollador anterior no sabía lo que estaban haciendo, y el problema principal son los intentos fallidos de multiproceso de la aplicación. Ahora estoy limpiando el desorden y tratando de averiguar dónde van las cosas mal. Uno de los problemas son las llamadas inconsistentes aCoInitialize con el fin de utilizar componentes de ADO.

Continuado desde miPregunta anterior, ¿cómo puedo identificar cuántos niveles deCoInitialize se han llamado?

Por ejemplo, tome este código en consideración:

CoInitialize(nil);
try
  CoInitialize(nil);
  try
    //2 levels have been called, how to programatically check this?
  finally
    CoUninitialize;
  end;
finally
  CoUninitialize;
end;

Respuestas a la pregunta(4)

Su respuesta a la pregunta