lucasg / Dependencies

A rewrite of the old legacy software "depends.exe" in C# for Windows devs to troubleshoot dll load dependencies issues.
MIT License
8.47k stars 697 forks source link

Some questions about GUI #234

Open KillerJmc opened 1 year ago

KillerJmc commented 1 year ago

image

  1. What does the arrow mean here? What is the relationship between the dll on the right of the arrow and the dll on the left?
  2. What is the relationship between those dlls in the rectangular box and the previous dll (api-ms-win-crt-runtime-11-1-0.dll)?
adang1345 commented 1 year ago
  1. The arrow pertains to a Windows API set. The file encryptor.exe has a dependency on api-ms-win-crt-runtime-l1-1-0.dll. However, this file does not actually exist. When the Windows loader notices that a DLL name starts with api-, it figures out which DLL to actually load. In this case, that is ucrtbase.dll. You can learn more about API sets here: https://learn.microsoft.com/en-us/windows/win32/apiindex/windows-apisets.

  2. The DLLs in the rectangular box are dependencies of ucrtbase.dll.

KillerJmc commented 1 year ago

You can learn more about API sets here: https://learn.microsoft.com/en-us/windows/win32/apiindex/windows-apisets.

@adang1345 After I read this article, I had a problem: While Windows loading a dll whose name starts with api-, what does it means? Are there some header files inside the dll which correspond with the real implementation dll or this dll is just a symbol that indicates which module should be loaded from the real implementation dll?