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

       

Программа RECACC


Программа RECACC (листинг 23) предназначена для работы вместе с программой PHYSLOCK. Она запрашивает с консоли путь к файлу, а также смещение области памяти, в которую затем будет записана небольшая текстовая строка. Если эта область окажется заблокированной, программа завершается сообщением об ошибке.

// =================================================== // Листинг 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); }



Содержание раздела