Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > WinAPI
Перезагрузить страницу Как записать строку в сектор?
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
tumanovalex tumanovalex вне форума
Member
 
Сообщений: 304
Сказал(а) спасибо: 12
Поблагодарили 1 раз в 1 сообщении
Регистрация: 26.03.2004
Адрес: Москва
Question Как записать строку в сектор? - 14.11.2011, 10:54

Пытаюсь записать строку в сектор отформатированной флэшки:
Цитата:
void writeSector(char *sDisk) {
DWORD nByteRead = 0, nSectorPerCluster = 0, nBytesPerSector = 0, nFreeClusters = 0, nClustersForUser = 0, nFreeClustersForUser = 0;
HANDLE pdev;
if(GetDiskFreeSpace((LPCTSTR)sDisk, &nSectorPerCluster, &nBytesPerSector, &nFreeClustersForUser, &nClustersForUser)==0)
{
printf("Не удалось получить параметры диска %s c помощью функции GetDiskFreeSpace, ошибка %i\n", sDisk, GetLastError());
printf("\nДиск %s не обнаружен!\n", sDisk);
_getch();
exit(1);
}
printf("\n--- Определение параметров диска с помощью GetDiskFreeSpace ---\n");
printf("%12Li\t\tSectorPerCluster\n%12Li\t\tBytesP erSector\n%12Li\t\tFreeClustersForUser\n%12Li\t\tC lustersForUser\n",
nSectorPerCluster, nBytesPerSector, nFreeClustersForUser, nClustersForUser);
printf("%12Li\t\tFreeSectorForUser\n", nFreeClustersForUser*nSectorPerCluster);
printf("%12I64i\t\tSectorForUser (ULONGLONG)\n", (ULONGLONG)nClustersForUser * (ULONGLONG)nSectorPerCluster);
printf("%12I64i\t\tBytesForUser (ULONGLONG)\n",
(ULONGLONG)nClustersForUser * (ULONGLONG)nSectorPerCluster * (ULONGLONG)nBytesPerSector);

char *dev = (char*)malloc(16*sizeof(char));
dev[0] = '\0';
strcat(dev, "\\\\.\\");
strcat(dev, sDisk); //SetErrorMode(SEM_FAILCRITICALERRORS);
pdev = CreateFile((LPCTSTR)dev, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_NO_BUFFERING, NULL);
if(pdev == INVALID_HANDLE_VALUE) {
printf("\n--- Устройство %s недоступно - ошибка %i ---\n", dev, GetLastError());
_getch();
exit(1);
}
LONG nSectorForWork = 1000;
LONG nBytesToMove = nSectorForWork * (LONG) nBytesPerSector;
SetFilePointer(pdev, nBytesToMove, NULL, FILE_BEGIN);
printf("\nЗапись информации - сектор %Li диска %s\n", nSectorForWork, sDisk);
char str[] = "Test disk";
if(WriteFile(pdev, str, strlen(str), &nByteRead, NULL)==0) {
printf("\n--- Ошибка %i при записи данных ---\n", GetLastError());
_getch();
exit(1);
} //if write
printf("\n--- Строка успешно записана ---\n");
_getch();
free(dev);
CloseHandle(pdev);
}
получаю ошибку 87. Подскажите, пожалуйста, как правильно записать строку в сектор.
Ответить с цитированием
  (#2 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,275
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
По умолчанию 16.11.2011, 06:03

Цитата:
Сообщение от tumanovalex Посмотреть сообщение
получаю ошибку 87.
С выключенной буферизацией обмен возможен только целыми секторами.

Цитата:
Сообщение от tumanovalex Посмотреть сообщение
Подскажите, пожалуйста, как правильно записать строку в сектор.
Прочитать сектор в свой буфер, записать строку, записать буфер обратно.
Либо, если Вам не важно содержимое сектора после строки, расширить область записи на целый сектор, например, добить нулями.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
случайно затер нулевой сектор на жестком диске MetR Накопители 3 08.12.2011 01:19
как нарисовать сектор круга cdvd Prolog 6 29.11.2011 13:52
загрузочный сектор Varvert Windows 7 17 29.07.2011 05:34
Как извлечь IP-адрес и записать его в строку ipresult RZ3RM Java 4 03.04.2010 19:01
как защитить загрузочный сектор диска Tenass БИОС 5 24.03.2010 01:07
Выбрать все числа из текста и записать их в новую строку Banny Lisp 4 08.01.2009 01:16
Менеджер по продажам проектов на банковский сектор Sweeta Работа 2 12.11.2008 14:40
Как можно восстановить нулевой сектор на жестком диске? artemiy Техническая поддержка 1 05.08.2008 09:46
Скрытый сектор для переустановки windows для acer 2482WXMi antiglaz Ноутбуки 1 15.03.2008 21:54
Как разбить строку на слова strtokом и записать эти слова в массив Svo Вопросы начинающих программистов 1 17.12.2007 01:45
Как в С++ записать строку next_parent Гоблин C++ Builder 4 01.05.2007 22:51
Как записать freeSpase в строку GetDiskFreeSpaceEx Alecks Visual C++ 5 29.07.2003 10:50



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов