What is the WinAPI?

Application Programming Interface (API)

Software တွေအချင်းချင်း data တွေ၊ command တွေ ပေးပို့တဲ့ ကြားခံ software တစ်ခုပါ လို့ပဲစပြောပရစေ။ API တစ်ခုကို commands, functions, protocols, object classes, data structures စတာတွေ နဲ့ ဖွဲ့စည်းထားပါတယ်။ API တွေကို programmer တွေ အတွက်အဓိက ထား ဖန်းတီးပေးထားတာပါ။ Programmer တွေက API ထဲမှာ ကြိုတင်ဖန်တီးပေးထားတဲ့ function တွေကိုသုံးပြီ application အချင်းချင်း data တွေ ဖလှယ်တာ၊ OS နဲ့  application အပြန်အလှန် data တွေ ဖလှယ်တာ၊ OS ကို shut down ချတာ၊ restart လုပ်တာမျိုးတွေ အထိ အမိန့်တွေ လဲ ပေးနိုင်ပါတယ်။ ကျွန်တော် API စလေ့လာခါစကတော့ WinAPI ကိုပဲ API လို့ မျက်လုံးထဲမြင်ခဲ့တာပါ။ တကယ်တော့ ကျွန်တော် မသိသေးတဲ့ တခြား API တွေကို OS တွေ device တွေ Software တွေ ပေါ်မူတည်ပြီး အများကြီးရှိတယ် ဆိုတာနောက်ပိုင်းမှာမှ သိလိုက်ရတယ်။ ASPI, Carbon, Cocoa, DirectX, Java APIs, OpenGL, OpenMP အစရှိတဲ့ ကျွန်တော် မသိသေးတဲ့ API တွေ တစ်ပုံကြီးပါ။  ဒီ့ထက်ပိုပြီသိချင်ရင်တော့ ဒီ link ကို နှိပ်ပြီးသွားကြည့်ပေတော့။

ထားပါလေ ကျွန်တော်သိထားသလောက်တော့ Windows API အကြောင်းကိုစာဖတ်သူတွေ သိရအောင် ပြောပြချင်ပါတယ်။

Microsoft OS တွေ အတွက် API တွေကို ပေါင်းပြီ Windows API (WinAPI) လို့ခေါ်တာပါ။ Microsoft က Windows တွေကို ရေးသားရာမှာ C, C++ languages တွေ အသုံးပြုရေးသားပါတယ်။ ဒီတော့ WinAPI တွေကိုလဲ C, C++ နဲ့ပဲရေးကြရပါတယ်။ မျက်လုံးထဲ မြင်အောင် အလွယ်တကူပြောရရင် API ဆိုတာ function ပါပဲ။

ကြုံတုံး function အကြောင်းလေး လျှာရှည်လိုက်ပရစေ။ function တစ်ခုအထဲမှာ line တွေအများကြီးပါတယ် အဲဒီ့ line တွေက သက်ဆိုင်ရာ လုပ်ငန်းတွေ ကိုလုပ်ပေးပါတယ်။ အဲဒီ့ လုပ်ငန်းတွေ ကို နာမည်တစ်ခုပေးလိုက်တဲ့သဘောပါပဲ။ စက်ရုပ်ရေခပ်တဲ့ ဥပမာပဲပေးရတော့မှာပဲ။ စက်ရုပ်ကို ရေးသွားခပ် လို့ ခိုင်းလိုက်တယ်ဆိုပါတော့။ စက်ရုပ်ကလမ်းလျှောက်တာ ရေအိုဖုံဖွင့်တာ ရေငှဲတာ စသည်ဖြင့် command (line) တွေကို လုပ်ဆောင်ရပါတယ်။ ဒါတွေကို ထွေထွေထူးထူး လျှာရှည်ပြီးမပြောလိုတော့ ရေသွားခပ် ဆိုတဲ့ function တစ်ခုကို ရေးပြီ လုပ်ရမဲ့ command (line) တွေကို အဲဒီ့ function ထဲထည့် ပေးလိုက်ပါတယ်။ ဒီတော့ နောက်တစ်ခါ ရေခပ်ဖို့ပြောတိုင်း ရေသွားခပ် ဆိုတဲ့ function လေး ခေါ်လိုက်ရုံပဲ။

Return ပြန်တဲ့ function နဲ့ return မပြန်တဲ့ function ရယ်ဆိုပြီ function ၂ မျိုးရှိပဲပါတယ်။ function တစ်ခုကိုခေါ်လိုက်လို့ တန်ဖိုးပြန်လိုချင်ရင် အဲဒီ့ function က return ပြန် တဲ့ function ဟုတ်မဟုတ် စစ်ဖို့လိုပါတယ်။ တန်ဖိုး ပြန်မလိုချင်ဘူး လုပ်ဆောင်မှုသက်သက်ပဲဆိုရင်တော့ return ပြန်စရာမလိုဘူးပေါ့။ API function တွေ မှာလဲ ဒီလိုပါပဲ data လိုချင်လို့ ခေါ်သုံးလိုက်တဲ့ API ရှိသလို လုပ်ဆောင်မှုသက်သက်ကို ပဲ လုပ်စေချင်လို့ သုံးတဲ့ API ဆိုပြီရှိပါတယ်။ ဒီနေရာမှာ parameter ပေးတာ လက်ခံတာတွေကိုတော့ ထည့်မပြောလိုတော့ပါဘူး။

function တွေ စုထားတာကို application လို့ခေါ်ကြတာပါ။ application လို့ဆိုတာနဲ့ file ဆိုတာ ပြေးမြင်ကြမယ် လိုထင်ပါတယ်။ function တွေ အားလုံးကို စုပြီး file တစ်ခုအနေနဲ့ သိမ်းကြပါတယ်။ version အသစ်ဖြစ်တာနဲ့ file လေးလဲပေးလိုက်ရုံပဲ။ Microsoft လဲဒီလိုပါပဲ windows version တွေပြောင်းတိုင်း file တွေ လဲလဲပေးလိုက်တာပါပဲ။

16 bit windows တွေ သုံးမဲ့သူ မရှိသလောက်ဖြစ်နေတဲ့ အတွက် Win16 အကြောင်းကို ထည့်မရေးပေးတော့ပါဘူး။ 16 bit windows API နဲ့ 32 bit windows API မှာကွာခြားချက်တွေ အများကြီးရှိခဲ့ပါတယ်။ 64 bit windows အတွက် API တွေကို 32 bit windows တွေ မှာသုံးတဲ့ API တွေအတိုင်း အသုံးပြုနိုင်ပါတယ်။ Data types တွေပဲ အပြောင်းအလဲ ရှိပါတယ်။ ဒါကြောင့် စာဖတ်သူအနေနဲ့ Win32 အကြောင်းကိုပဲသိဖို့ လောလောဆယ်သိထားဖို့ လိုပါတယ်။

Windows API ကို အကြမ်းဖျင်းခွဲလျှင် ၆ မျိုးခွဲနိုင်ပြီ အသေးစိတ်ခွဲလျှင် ၈ မျိုးခွဲနိုင်ပါတယ်။

Base Services

Windows တစ်ခုရဲ့အခြေခံအကျဆုံး အပိုင်းတွေကိုလုပ်ဆောင်ပေးနိုင်တဲ့ API ပါ။ file တွေ ဆောက်တာ ဖျက်တာ၊ device တွေကိုမောင်းတာ၊ run နေတဲ့ process တွေနဲ့ thread တွေကို ထိမ်းချုပ်တာ၊ error handling စတဲ့အပိုင်းတွေကို လုပ်ဆာင်ဖို့ kernel32.dll ဆိုတဲ့ API file ကိုသုံးပါတယ်။

Advanced Services

Windows registry မှာ key တွေ ဆောက်တာ ဖျက်တာ ပြင်တာ တွေအပြင် OS ကို shutdown တို့ restart တို့လုပ်တာတွေ၊ Windows service တွေကို မောင်းတာ ရပ်တာ ဖန်းတီးတာွ၊ User Account တွေကို Manage လုပ်တာတွေကို လုပ်ဆောင်ဖို့ advapi32.dll ဆိုတဲ့ API file ကို သုံးပါတယ်။

Graphics Device Interface (GDI)

Monitors, Printers နဲ့ အခြား output device တွေကို graphical content တွေ output လုပ်တဲ့ လုပ်ဆောင်မှုတွေမှာသုံးဖို့ gdi32.dll နဲ့ graphics driver တွေနဲ့ တိုက်ရိုက်ချိတ်ဆက်လုပ်ဆောင်နိုင်ဖို့ win32k.sys ဆိုတဲ့ API file တွေကိုသုံးပါတယ်။

User Interface

Windows ရဲ့ screen မှာ buttons တွေ scrollbar တွေ အစရှိတဲ့ အဓိကကျတဲ့ controls တွေကို ဖန်တီးဖို့၊ mouse, keyboard တွေကို input လုပ်ဆောင်ဖို့ စတဲ့ Windows ရဲ့ GUI လုပ်ငန်းတွေအတွက် user32.dll API file ကိုသုံးပါတယ်။ Windows XP Version ကစပြီ အခြေခံကျတဲ့ controls တွေကို comctl32.dll ထဲမှာ ထည့်ပြီးသုံးပါတယ်။

Common Dialog Box Library

Standard Dialog box တွေ ဖြစ်တဲ့ Open Dialog, Save Dialog, Font Dialog နဲ့ Color Dialog box တွေကို အသုံးပြုနိုင်ဖို့ comdlg32.dll ဆိုတဲ့ API file ကိုသုံးပါတယ်။

Common Control Library

Advance controls တွေဖြစ်တဲ့ status bar, progress bar, toolbars နဲ့ tabs အစရှိတဲ့ controls တွေကိုသုံးဖို့ comctl32.dll ဆိုတဲ့ API file ကိုသုံးပါတယ်။

Windows Shell

Windows ပေါ်မှာတင်ထားတဲ့ Application တွေကို access လုပ်နိုင်ဖို့ shell32.dll ဆိုတဲ့ API ကိုသုံးပါတယ်။ (ဥပမာ word, excel, calculator စတာတွေကို ဖွင့်တာ ပိတ်တာ အစရှိသည်တို့ကိုလုပ်ဆောင်ရန်)

Network Services

Networking အပိုင်မှာသုံးဖို့ NetBIOS, Winsock, NetDDE, PRC နဲ့ များပြားလှတော့ sub-components တွေကိုအသုံးပြုနို်င်ပါတယ်။ (ကျွန်တော်ကတော့ Winsock တစ်ခုပဲသုံးဖူးတယ်)

မိမိရေးလိုသည် application ပေါ်မူတည်ပြီ သင်တော်ရာ API ကိုသုံးဆွဲနိုင်ပါတယ်။ WinAPI အတွက် လေ့လာနိုင်ဖို့ထုတ်ထားတဲ့ စာအုပ်တွေ တပုံတပင်ကြီးရှိပါတယ်။ တကယ်တော့ API ဟာ Higher Level Programming ပါ။ Third-Party software တော်တော်များများက API ကို မသုံးမနေသုံးကြရပါတယ်။ Higher Level Programming ဆိုပြီ မလွယ်ဘူးလို့မထင်လိုက်ပါနဲ့။ စလေ့လာကြည့်ပါ အဲဒီလောက် မခက်ဘူးဆိုတာ သိလာပါလိမ့်မယ်။ ရှိသမျှ WinAPI အားလုံးကိုသိဖို့ မလွယ်သလို သိစရာလဲ မလိုပါဘူး။

ဒီနေရာမှာ Windows API ကို Web API တွေနဲ့ အတွေးမရောစေချင်ပါဘူး။ မိမိ မှာ web site တစ်ခုရှိတယ် မိမိ web server ထဲက data တွေကို တခြားသူ ယူသုံးဖို့ (ဖော်ပြနိုင်ဖို့) ဒီ code (JSON, XML, IFrame) လေးကို page ရဲ့ ဘယ်နားမှာ copy ကူးထည့်လိုက်ပါ ဒီလိုပေးလိုက်ရုံနဲ့ Web API ရေးနိုင်သူဖြစ်သွား နိုင်ပါတယ်။ တဖက်က ပြန်ကြည့်ပြန်တော့လဲ Web API သုံးနေသူအဖြစ်သုံးရောက်သွားပါတယ်။ ဒီလောက်များပြားတဲ့ web site တွေအတွက် Web API တွေကိုလေ့လာရဦးမည်ဆိုတဲ့ စိတ်တွေ မသိရကောင်းမလားဆိုတဲ့ စိတ်တွေ ဖြစ်စရာမလိုဘူးလို့ ထင်ပါတယ်။ အပေါ်မှာလဲ ကျွန်တော်ပြောပြခဲ့ပါတယ် API အများကြီးရှိပါတယ်။ WinAPI, WebAPI, Google API စသည်ဖြင့် ခွဲခြားမြင်တက်ဖို့နဲ့ ခေါ်ဝေါ်သုံးနှုံးဖို့ လိုမယ်လို့ထင်ပါတယ်။

Microsoft ကို အသစ်အသစ်တွေ ထုတ်ထုတ်နိုင် လွန်တယ်လို့ပြောကြပါတယ်။ User requirement တွေကြောင့် software တွေ အသစ်ဖြစ်ကြရသလို။ software requirement တွေကြောင့် hardware တွေ အသစ်ပေါ်လာရတာပါ။ ဒီရေစီးကြောင်းက လူသားတွေ ရှိသ၍ စီးမြဲစီးနေမှဖြစ်ပါတယ်။ အသစ်တွေကြီးပဲ ခဏခဏပေါ်နေတာပဲလို့ စိတ်ဘဝင်မကျဖြစ်နေချင်ဟာ ပင်ပန်းစရာတစ်ခုဖြစ်ပါတယ်။ တချို့ ကလဲ IT ဆိုတာ လေ့လာလို့မကုန်နိုင်ဘူး။ ရပ်နေလို့မဖြစ်ဘူး စသည်ဖြစ်ပြောကြပါတယ်။ လေ့လာပြီ အသုံးမဝင်လို့ အသုံးမချခဲ့ရ သူတွေ တပုံကြီးပါ။ ဘယ်မချိန်က စလေ့လာ လေ့လာ နောက်ကျတယ်မရှိတာ IT ပါပဲ လို့ တနည်းအားဖြစ်ပြောရင် မှန်ပါတယ်။ ဒါကြောင့်လဲ new generation တွေအတွက် ကျွန်တော် စာရေးနေရခြင်းဖြစ်ပါတယ်။

WinAPI ကိုသုံးပြီ program တစ်ခုလောက် ရေးပြီ နောက် post တစ်ခုမှာ ရေးသားသွားမယ်လို့ ဂတိပြုလျှက်….

Facebook comments:

3 Responses

  1. Thiha says:

    WinAPI ကို သုံးနေခဲ့တာ ကြာပြီဗျ ခုမှပဲ သေသေချာချာ သိတော့တယ်၊ WinAPI ကိုသုံးပြီး Program တစ်ခု ရေးမယ်ဆိုတော့ စောင့်နေမယ်ဗျို့ …

    • zms says:

      ဟုတ်ကဲ့ level အားလုံးအတွက် အဆင်ပြေအောင် ကြိုးစားပြီးရေးနေပါမယ်

  2. sithu says:

    Web API အကြောင်းလဲ အဆင်ပြေရင်ရှင်းပြပေးစေချင်ပါတယ်…..

Leave a comment


*