2010-09-28 38 views
5

De MSDN:LoadLibrary Referencia Contando

El sistema mantiene un recuento de referencia por proceso en todos los módulos cargados. Llamar a LoadLibrary incrementa el recuento de referencia.

¿Dónde se almacena ese recuento de referencias?

Respuesta

6

El cargador de Windows real se encuentra en la función LdrLoadDll de NTDLL.dll. Esta función no está documentada y su funcionalidad interna está sujeta a cambios en versiones futuras de Windows; solo aquellos con acceso al código fuente de Windows podrían afirmar con certeza lo que ocurre detrás de las escenas.

Sin embargo, la fuente wine está disponible, y usted puede ver where it increments the reference count; se almacena en el miembro LoadCount de la estructura de montón LDR_MODULE. Dado que esto no parece ser una estructura interna del vino, es probable que esta estructura se base en las estructuras de ventanas reales, con ingeniería inversa, y por lo tanto, las ventanas probablemente la almacenen de la misma manera. Sin embargo, dado que esto no está documentado, está sujeto a cambios en cualquier versión futura de Windows, o incluso con parches de Windows menores.

+0

Perfecto, exactamente lo que estaba buscando. ¡Gracias! – mrduclaw

0

Esto es sólo una suposición, pero es probable que sea una variable global dentro de kernel32.dll (esa es la DLL que impone a LoadLibrary).