Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.56
SRom
0 / 0 / 0
Регистрация: 28.09.2009
Сообщений: 14
#1

Как форматнуть диск ? - C++

29.09.2009, 11:39. Просмотров 1102. Ответов 9
Метки нет (Все метки)

Подскажите если можете, как можно отформатировать диск из программы С++, но не через команду format, а через функции Windows API.
Заранее благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2009, 11:39     Как форматнуть диск ?
Посмотрите здесь:

Жесткий диск C++
C++ Возможно ли восстановить диск?
Как узнать работает ли сечас диск(HDD)? C++
C++ Как программно авторизовать DVD-видео диск
Как расшарить диск(папку) и получить имя компа на котором выполняется приложение? C++
Проверить существует ли диск C++
Нужен диск, что шел с книгой "Ф. Глассборо, Р. Аллен. Как научиться программировать на языке C++" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Stesh_ka
0 / 0 / 0
Регистрация: 20.07.2009
Сообщений: 53
07.11.2009, 20:28     Как форматнуть диск ? #2
А ты собираешься форматировать диск из windows?!?!?!?!?!??
Stesh_ka
0 / 0 / 0
Регистрация: 20.07.2009
Сообщений: 53
07.11.2009, 20:31     Как форматнуть диск ? #3
Извини, совсем соображаловка отказывает, я поняла, что ты имеешь ввиду. К сожалению не знаю.
Ghost
Сообщений: n/a
07.11.2009, 21:38     Как форматнуть диск ? #4
Еще 1 вирусописатель вылез на свет божий. отстреливать их пора. вопрос задать нормально не может - а лезет в системные функции.

лови. Это для флопика.

[code]
/*
FILE NAME: RandomFloppyAccess.cpp

DESCRIPTION: This file contains the implementation of class RandomFloppyAccess

COPYRIGHT: (C) Copyright Elan, Ltd. 1999

AUTHORS: Alexey Levit, Denis Zaliznyak

*/

#include 'stdafx.h'
#include 'afxtempl.h'

#include 'RandomFloppyAccess.h'

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

using namespace floppy;

bool operator < (const Sector& s1, const Sector& s2) inline
{
return ( (s1.sec + s1.track*CRandomFloppyAccess::track_size + s1.head*CRandomFloppyAccess::track_count) < (s2.sec + s2.track*CRandomFloppyAccess::track_size + s2.head*CRandomFloppyAccess::track_count));
}

bool operator == (const Sector& s1, const Sector& s2) inline
{
return ((s1.track==s2.track)&&(s1.head==s2.head)&&(s1.sec==s2.sec)&&(s1.size==s2.size));
}

CRandomFloppyAccess::CRandomFloppyAccess(int Drive) throw(BadDriveException, InvalidHandleException)
{
if( (Drive!=0) && (Drive!=1) )
{
throw BadDriveException();
}

m_Drive = Drive;

hDevice = CreateFile('\\.\vwin32',
GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
(LPSECURITY_ATTRIBUTES) NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, (HANDLE) NULL);

if(INVALID_HANDLE_VALUE==hDevice)
{
throw InvalidHandleException();
}
}

CRandomFloppyAccess::~CRandomFloppyAccess()
{
CloseHandle(hDevice);
}

bool CRandomFloppyAccess::ReadSector(vector<unsigned char>* pBuffer, int Sector, int Head, int Cylinder)
throw(BadSectorException, BadHeadException, BadCylinderException)
{
if( (Sector<1) || (Sector>sector_count) )
{
throw BadSectorException();
}

if( (Head<0) || (Head>head_count) )
{
throw BadHeadException();
}

if( (Cylinder<0)||(Cylinder> (track_count-1)) )
{
throw BadCylinderException();
}

unsigned char buffer[buf_size];

DWORD cb;

reg.reg_EAX = 0x0201; // AL - ўшёыю ёхъЄюЁют (01), AH - ЇєэъЎш* (02 - ўЄхэшх)

reg.reg_EBX = reinterpret_cast<unsigned long>(buffer); // EBX - рфЁхё сєЇхЁр

Head = Head<<8;

reg.reg_EDX = Head|m_Drive; // DH - уюыютър, DL - фшёъ ()

// юсэєы*хь ЎшышэфЁ, ъЁюьх фтєї ёЄрЁ°шї ЁрчЁ*фют
int cil = Cylinder;
cil = cil&0x00000300;
// ёфтшурхь тяЁртю эр 2 ЁрчЁ*фр
cil = cil>>2;

reg.reg_ECX = 0; // ╤═ - эюьхЁ ЎшышэфЁр, CL - эюьхЁ ёхъЄюЁр
reg.reg_ECX = reg.reg_ECX | cil;

// юсэєы*хь ёЄрЁ°шх 2 ЁрчЁ*фр
cil = Cylinder;
cil = cil&0x000000FF;
// ёфтшурхь тыхтю эр тюёхь№ ЁрчЁ*фют
cil = cil<<8;

reg.reg_ECX = reg.reg_ECX | cil;
reg.reg_ECX = reg.reg_ECX | Sector;

int count = 0;

do
{
if(!DeviceIoControl(hDevice, VWIN32_DIOC_DOS_INT13, &reg, sizeof(reg), &reg, sizeof(reg), &cb, 0))
{
return false;
}

reg.reg_EAX = reg.reg_EAX&0x0000FF00;
count++;

}while (reg.reg_EAX && (count < 3) );

if (count>=3)
{
return false;
}
else
{
pBuffer->assign(buffer, &buffer[buf_size]);
return true;
}
}

bool CRandomFloppyAccess::WriteSector(const vector<unsigned char>& Buffer, int Sector, int Head, int Cylinder)
throw(BadSizeExceptio
Ghost
Сообщений: n/a
07.11.2009, 21:39     Как форматнуть диск ? #5
Нормальных комментариев не дам - каков вопрос - таков и ответ.
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
07.11.2009, 23:13     Как форматнуть диск ? #6


Ой спасибо, ну повеселил!!!!
izya
0 / 0 / 0
Регистрация: 26.08.2009
Сообщений: 12
15.11.2009, 17:02     Как форматнуть диск ? #7
а как на флопике сделать свою фс и в загрузочный сектор положить нужный мне файл??7
Ghost
Сообщений: n/a
15.11.2009, 17:22     Как форматнуть диск ? #8
см предыдущий ответ
maXmo
Сообщений: n/a
17.11.2009, 00:15     Как форматнуть диск ? #9
так это только для win9x. А остальное?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2009, 11:27     Как форматнуть диск ?
Еще ссылки по теме:

C++ Программа дописывающая файл на диск
Нужно добавить проект на гугл-диск, как сделать так, чтобы запускалась сразу консоль, одним файлом? C++
Определить самый дорогой диск (структуры) C++
Хватит ли денег на диск? C++
C++ запись на диск

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ghost
Сообщений: n/a
17.11.2009, 11:27     Как форматнуть диск ? #10
Не пробовал нигде )))
Был вопрос ВООБЩЕ, был дан ответ )))
Yandex
Объявления
17.11.2009, 11:27     Как форматнуть диск ?
Ответ Создать тему
Опции темы

Текущее время: 09:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru