Windows API database / map

Shachar Shemesh wine-devel at sun.consumer.org.il
Tue Feb 4 01:02:17 CST 2003


Dimitrie O. Paun wrote:

>  4. Remove the columns from the matrix that have no X's.
>
No X's mean noone is linking to it, and it links to noone. I would like 
to know of its existance, even if it is unlinked. Let's also not forget 
that some modules (lpk.dll, for example) are only linked to dynamically 
(due to circular dependancy from GDI32).

>  5. Order columns by order of importance. That is, the ones with
>     more X's come first.
>
No, order them by order of dependancy. I.e. - I want to know that if a 
DLL links to a DLL that is below it in the list, it is a circular 
dependancy. There is a standard matrix view that looks something like this:

ntdll advapi32 user32 kernel32 msvcrt
advapi32





user32





kernel32
X
X
X


msvcrt
X


X


Ordering should be done by the following criteria:

   1. If A depends on B, but B does not depend on A, A must appear
      higher than B.
   2. If rule 1 did not resolve relative order, and A has more modules
      dependant on it than B, A must appear higher.
   3. If neither rules resolved the order, make it arbitrary.

These two criteria make sure that the matrix is triangle shaped unless 
there's a circular dependancy. Also, these rules make sure that modules 
that depend on other modules and are heavily linked to, such as 
kernel32, are higher up than modules that depend on no other modules and 
are not linked to, such as actxprxy.

If you want, I can write some perl to create such a table from the 
available information.

                Shachar





More information about the wine-devel mailing list