Si usted no puede permitirse BoundsChecker o similares ...
Un truco que he utilizado es reemplazar CreateFile
etc. con mis propios envoltorios. Además de devolver el valor del identificador, hacen un registro de __FILE__ y __LINE__ para ir con cada identificador. También deberá ajustar CloseHandle
para asegurarse de que los controladores correctamente cerrados no generen falsos positivos.
Es tan simple como:
// StdAfx.h
#include <windows.h>
#undef CreateFile
#if defined(UNICODE)
#define CreateFile DbgCreateFileW
#else
#define CreateFile DbgCreateFileA
#endif
// etc.
A continuación se define DbgCreateFileW
y DbgCreateFileA
en algún lugar de su código.
Esto supone que tienes control sobre las piezas de código relevantes. Si no, puede hacer algo similar usando (por ejemplo) Microsoft Detours (necesitará una licencia para incluirlo en un producto lanzado, pero creo que es gratis para usar para depurar/probar/etc.)
A largo plazo, sin embargo, debería considerar convertir su código para usar un tipo de manejador "inteligente" que llame automáticamente al CloseHandle
cuando se sale del alcance.
¿dará esto la pila de llamadas de identificadores asignados entre las instantáneas? – paulm