Локальные сети персональных компьютеров. Работа с сервером Novell NetWare


Листинг 23



Листинг 23

Проверка возможности получения // доступа к физическим записям файла // Файл recacc\recacc.cpp // // (C) A. Frolov, 1993 // =================================================== #include <stdlib.h> #include <stdio.h> #include <string.h> #include <conio.h> #include <fcntl.h> #include <io.h> #include <dos.h> #include <sys\stat.h> #include <share.h> #define BYTE unsigned char #define WORD unsigned int extern "C" int LogPhysicalRecord(int, long, long, BYTE, WORD); extern "C" int LockPhysicalRecordSet(BYTE, WORD); extern "C" void ReleasePhysicalRecordSet(void); extern "C" void ClearPhysicalRecordSet(void); void main(void) { char FilePath[255]; int FileHandle; char Buff[80]; long RecordStartOffset; char msg[] = "PATCH!!!"; int ccode; unsigned count; printf("\n*RECACC* (C) Frolov A., 1993\n"); // Вводим имя файла и открываем его на запись и чтение printf("\nВведите путь к файлу:"); gets(FilePath); strupr(FilePath); if ((FileHandle = open(FilePath, O_RDWR | O_BINARY | O_DENYNONE, SH_DENYNONE)) == -1) { printf("Не могу открыть файл\n"); } // Задаем смещение в файле, начиная с которого // в файл будет записана строка "PATCH!!!" printf("\nВведите смещение начала записи:"); gets(Buff); RecordStartOffset = atol(Buff); // Позиционируем на начало записи lseek(FileHandle, RecordStartOffset, 0); // Делаем попытку изменить содержимое записи ccode = _dos_write(FileHandle, msg, strlen(msg), &count); if(!ccode) printf("Запись обновлена\n"); else printf("Ошибка при обновлении " "записи в файле: %02.2X\n", ccode); // Закрываем файл close(FileHandle); }







Начало  Назад  Вперед