Сборник по задачам и примерам Assembler



         

Создание, открытие, закрытие и удаление файла



Создание, открытие, закрытие и удаление файла

Создание и открытие файла в Win32 производится одной функцией CreateFile. HANDLE CreateFi1eCLPCTSTR ipFileName, DWORD dwDesiredAccess. DWORD dwShareMode. LPSECURITY_ATTRIBUTES ipSecurityAttributes, DWORD dwCreationDistribution, DWORD dwFlagsAndAttributes. HANDLE hTemplateFile):

Параметры данной функции имеют размер двойного слова. Их назначение следующее (параметры описаны в порядке, обратном их записи в стек):

  • lpFileName — указатель на ASCIIZ-строку с именем (путем) открываемого или создаваемого файла;
  • dwDesiredAccess — тип доступа к файлу:
  • GENERICREAD = 80000000b - доступ по чтению;
  • GENERIC_WRITE = 40000000b - доступ по записи;
  • GENERIC_READ+GENERIC_WRITE = 0C0000000h - доступ по чтению-записи;
  • DwShareMode — режим разделения файлов между разными процессами, данный параметр может принимать значения:

    0 — монополизация доступа к файлу;

  • FILE_SHARE_READ = 0000000th — другие процессы могут открыть файл, но только по чтению, запись в файл монополизирована процессом, открывшим файл;

    FILESHAREWRITE = 00000002b — другие процессы могут открыть файл, но только по записи, чтение в файл монополизировано процессом, открывшим файл;

  • FILE_SHARE_READ+FILE_SHARE_WRITE = 00000003b - другие процессы могут

    открывать файл по чтению-записи;

  • IpSecurityAttributes — указатель на структуру SecurityAttributes (файл winbase.h), определяющую защиту связанного с файлом объекта ядра, при отсутствии защиты заносится NULL;

    ш dwCreationDistribution — определяет действия для случаев, когда файл существует или не существует (аналог этого параметра используется при вызове описанных выше функций MS DOS 6ch и 716ch), данный параметр может принимать значения:

  • CREATE_NEW= 1 — создать новый файл, если файл не существует; если файл существует, то функция завершается формированием ошибки;
  • CREATE_ALWAYS=2 — создать новый файл, если файл не существует; если он существует, то заместить новым;
  • 0PEN_EXISTING=3 — открыть файл, если он существует; если файл не существует, то формируется ошибка;



  • Содержание  Назад  Вперед