Page 56 - 4989
P. 56

засоби міжпотокової взаємодії), user.dll (робота з вікнами), gdi.dll
            (робота з графікою) та деяких інших.
                  Для використання в програмі функцій з системних бібліотек
            слід підключити заголовочний файл Windows.h:


                  #include <Windows.h>

                  Системні  бібліотеки  використовують  спеціально  визначені
            типи  даних,  яким  відповідають  деякі  типи  мови  С  (більшість
            системних  бібліотек  написано  мовою  С).  Наприклад,  тип

            DWORD відповідає типу int у мовах С та С++. Також визначено
            багато  типів  структур,  з  якими  оперують  окремі  функції.  При
            роботі  з  функціями  Windows  АРІ  бажано  завжди  застосовувати

            відповідні типи Windows.
                  Більшість  системних  ресурсів  представляються  об’єктами
            режиму ядра, які недоступні для прямого використання в режимі

            користувача.  Натомість  функції  Windows  API  дозволяють
            отримати  дескриптори  ресурсів  –  унікальні  в  межах  одного
            процесу  ідентифікатори,  які  слід  використовувати  у  всіх
            функціях,  які  оперують  з  цими  ресурсами.  Дескриптори

            найчастіше  мають  тип  HANDLE,  однак  для  деяких  ресурсів
            визначено власні типи дескрипторів (напр. для ключів реєстру).
            Якщо  деяка  функція  повертає  дескриптор  ресурсу,  слід

            обов’язково  перевірити  після  виклику,  чи  не  дорівнює  він
            значенню INVALID_HANDLE_VALUE, оскільки ресурс з різних
            причин  може  бути  недоступним.  Після  завершення  роботи  з
            ресурсом  слід  звільнити  його,  викликавши  спеціальну  функцію

            (для дескрипторів типу HANDLE це функція CloseHandle).
                  Ряд  функцій  Windows  API  повертають  код  помилки,  який
            слід  завжди  перевіряти.  Якщо  функція  завершилась  успішно,

            вона  поверне  код  ERROR_SUCCESS.  У  випадку  невдачі
            повертається  код  помилки.  Для  функцій,  які  повертають  не  код
            помилки  (а,  наприклад,  дескриптор  або  кількість  оброблених

            байт), можна визначити код помилки функцією GetLastError:
                  DWORD dw = GetLastError();
                  По  коду  помилки  можна  отримати  текст  повідомлення  про
            помилку,  скориставшись  функцією  FormatMessage.  Приклад

            функції,  яка  виконує  вивід  повідомлення  для  деякого  коду


                                                           56
   51   52   53   54   55   56   57   58   59   60   61