Page 60 - 4989
P. 60

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

            GetFileAttributes, наприклад:
                   DWORD dw = GetFileAttributes(fileName);
                   if (dw | FILE_ATTRIBUTE_DIRECTORY)
                   {
                          // ...
                   }
                  Крім  того,  якщо  шукається  довільний  файл  (маска  «*»),

            результати  пошуку  будуть  включати  поточний  каталог  («.»)  та
            батьківський каталог («..»).
                  Функція  GetFileInformationByHandle  заповнює  струкутру
            типу  BY_HANDLE_FILE_INFORMATION,  у  якій  поля  часу

            створення,  модифікації  та  останнього  доступу  до  файла  мають
            тип FILETIME – 64-бітне ціле число, що дорівнює кількості 100-
            наносекундних  інтервалів,  що  пройшли  від  1  січня  1601  року.

            Щоб отримати рік, місяць, день і т.д., слід перетворити цей час до
            формату  системного  часу  (структура  SYSTEMTIME)  функцією
            FileTimeToSystemTime.

                  Функції  CreateFile,  ReadFile,  WriteFile  використовуються
            також для роботи із пристроями. При цьому в якості імені файла
            слід вказати ім’я пристрою. Наприклад, консоль представлена в

            ОС Windows пристроями CONIN$ - пристрій вводу (клавіатура)
            та  CONOUT$  -  пристрій  виводу  (вікно  консолі).  Для  вводу-
            виводу даних у консолі є спеціальні функції Windows API, однак
            можна  оперувати  з  ними  і  за  допомогою  функцій  CreateFile,

            ReadFile, WriteFile. Наприклад, наступний код виводить рядок у
            консоль:

            HANDLE hCon = CreateFile(L"CONOUT$", GENERIC_WRITE,

                   0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
            if (hCon != INVALID_HANDLE_VALUE)
            {
                   char buf[] = "Hello world!"; DWORD written;
                   WriteFile(hCon, buf, strlen(buf), &written, NULL);
            }



                                                           60
   55   56   57   58   59   60   61   62   63   64   65