Dynamic-Link Library – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
מ ליבא -> לייבא, ליצא -> לייצא (דרך WP:JWB)
אין תקציר עריכה
שורה 27:
 
=== קישור יזום ===
קיימות שלוש פונקציות בסיסיות ב-API של Windows, שמאפשרות לטעון ספריות DLL באופן יזום ומבוקר. למעשה, גם שתי האפשרויות הקודמות משתמשות בפונקציות אלה באופן שקוף למפתח התוכנה. הפונקציות ממוקמות בקובץ kernel32.dll, אשר נטען למרחב הזיכרון בתהליך ה[[אתחול (מחשוב)|אתחול]] של [[חלונות]] ונשאר שם עד לכיבוי המחשב או ליציאה ממערכת ההפעלה:
* הפונקציה '''LoadLibrary''' מקבלת את המיקום המוחלט, המיקום היחסי או המיקום הסתמי שם קובץ PE (ראה בסעיף [[Dynamic-Link Library#סדר טעינה|סדר טעינה]]), טוענת אותו למרחב הזיכרון ומחזירה את הכתובת אליה הוא נטען (Base Address). הפונקציה מנהלת מנגנון Reference count, שמונע טעינה כפולה של אותו קובץ, כלומר: כאשר תוכנית קוראת לפונקציה בקובץ DLL כלשהו, הפונקציה טוענת את הקובץ רק אם הוא לא נמצא כבר בזיכרון הפיזי (דינמי). הפונקציה יכולה לקבל שם קובץ בפורמט [[Unicode]].
* הפונקציה '''GetProcAddress''' מחפשת כתובות של פונקציות בקובצי DLL שנמצאים במרחב הזיכרון. הפונקציה מקבלת את כתובת הבסיס של ה-DLL ואת שמה של הפונקציה שאותה רוצים לייבא. שם הפונקציה לא יכול להיות בפורמט Unicode.