Is user32.dll de “WinApi” msdn waar het over gaat?

In de volgende code,

using System.Runtime.InteropServices;
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);

Ik heb de functie “mouse_event” van user32.dll gegoogled en kreeg dit.
Is het importeren van user32.dll het equivalent van het verwijzen naar de Win32 API, waardoor genoemde documentatie een geldige bron voor informatie over andere functies en hun parameters? En hoe komt het dat een “user32.dll” in “c#” de functienamen zou hebben van wat elders consequent wordt aangeduid als “WINAPI” of “WIN32”?


Antwoord 1, autoriteit 100%

Wat Microsoft de “Win32 API” noemt, is de interface naar het Windows-besturingssysteem. Elke interactie met het besturingssysteem (vensters maken, bestanden openen, toegang krijgen tot het netwerk enz.) moet via een van deze goed gedocumenteerde functieaanroepen verlopen. Veel C#-functies zijn eigenlijk wrapper-implementaties achter de schermen voor deze besturingssysteemfuncties. Sommige van de meer specifieke methoden hebben echter geen C#-equivalenten en u kunt de code gebruiken zoals u die heeft gepresenteerd (met behulp van het [DllImport]-kenmerk) om ze toch te openen.

De Win32 API bestaat om legacy-redenen voornamelijk uit drie bestanden: kernel32.dll (bestand io/synchronisaties) gdi32.dll (gebruikersinterface) en user32.dll (meer gebruikersinterface). Deze drie bibliotheken bevatten bijna alle functies waaruit die API bestaat. Andere bibliotheken zijn in de loop van de tijd toegevoegd en worden voor specifieke doeleinden gebruikt.

(Opmerking: de dll’s zelf doen niet veel meer. In de huidige implementaties zijn ze gewoon wrappers rond andere bibliotheken, maar vanuit het oogpunt van de toepassing maakt dat niet uit)

Other episodes