Этап1: создание или открытие объекта ядра "файл"
Для этого Вы должны применять только функцию CreateFile
HANDLE CreateFile( PCSTR pszFileName, DWORD dwDesiredAccess, DWORD dwShareMode, PSECURITY_AIIRIBUTES psa, DWORD dwCreationDisposition, DWORD dwFlagsAndAttribules, HANDLE hTemplateFile);
Как видите, у функции CrealeFile довольно много параметров. Здесь я сосредото чусь только на первых трех: pszFileName, dwDesiredAccess и dwSbareMode.
Как Вы, наверное, догадались, первый параметр, pszFileName, идентифицирует имя создаваемого или открываемого файла (при необходимости вместе с путем). Второй параметр, dwDesiredAccess, указывает способ доступа к содержимому файла. Здесь за дастся одно из четырех значений, показанных в таблице ниже.
Значение |
Описание | ||
0 |
Содержимое файла нельзя считывать или записывать, указывайте это значение, если Вы хотите всею лишь получить афибуты файла | ||
GENERIC _READ |
Чтение файла разрешено | ||
GENERIC_WRITE |
Запись в файл разрешена | ||
GENERIC_READ | ENERIC_WRITE |
Разрешено и то и другое |
Создавая или открывая файл данных с намерением использовать его в качестве проецируемого в память, можно установить либо флаг GENERIC_READ (только для чтения), либо комбинированный флаг GENERIC_READ | GENУRIC_WRITE (чтение/ча пись)
Третий параметр, dwShareMode, указывает тип совместного доступа к данному файлу(см следующуютаблицу)
Значение |
Описание | ||
0 |
Другие попытки открыть файл закончатся неудачно | ||
FILE_SHARE_REAU |
Попытка постороннего процесса открыть файл с флагом GENERIC_WRITE не удается | ||
FILb_SHARF_WRlTE |
Попьлка постороннего процесса открыть файл с флагом GENERIC_READ не удается | ||
FILE SHARE RFAD | FILE_SHARE_WRTTE |
Посторонний процесс может открывать файл без ограничений |
Создав или открыв указанный файл, CreateFile возвращает его описатель, в ином случае — идентификатор INVALID_HANDLE_VALUE
NOTE:
Большинство функций Windows, возвращающих те или иные описатели, при неудачном вызове дает NULL Ho CreateFile — исключение и в таких случаях возвращает идентификатор INVALID_HANDIF_VALUE, определенный как ((HANDLE) -1)