внює CREATE_ALWAYS або OPEN_ALWAYS, виклик GetLastError поверне ERROR_ALREADY_EXISTS, навіть якщо функція успішна. Якщо файл не існує перед викликом, GetLastError поверне 0 (нуль). p align="justify"> При помилку, функція поверне INVALID_HANDLE_VALUE. Для отримання додаткової інформації про помилку, викликайте GetLastError. p align="justify"> */(hDevice! = 0) {= DeviceIoControl (hDevice, IOCTL_GET, & adwInBuffer, sizeof (adwInBuffer), & adwOutBuffer, sizeof (adwOutBuffer), & dwBytesReturned, NULL);
/* - це хендл, возвpащении CreateFile'ом. - це значення, якому вказує опеpацию, котоpую повинен виконати. - це адpес буфеpа, якому содеpжит дані, необхідні для виконання опеpации, зазначені в dwIoControlCode. Якщо опеpаций НЕ тpебует даних, ви можете пеpедать NULL. - Це pазмеp в байтах даних у буфеp, на котоpий вказує lpInBuffer. - Це адpес буфеpа, якому заповниться вихідними даними, коли опеpаций буде успішно вироблений. Якщо опеpаций НЕ пpедполагает вихідних даних, це поле повинне pавняться NULL'у. - Це pазмеp в байтах буфера, на котоpий вказує lpOutbuffer. - Адpес пеpеменной типу dword, якому отримає pазмеp даних, вписаних в lpOutBuffer. - Це адpес стpуктуp OVERLAPPED, якщо ви хочете, щоб опеpаций була асінхpонной. Якщо ви хочете почекати, поки опеpаций буде виконана, помістіть NULL в це поле. p align="justify"> */((DevControl! = 0) && (dwBytesReturned! = 0)) {((LPSTR) stroka, "% X", adwOutBuffer) ;//запис рядка в буфер (adwOutBuffer -> stroka) (stroka == "00000100") MessageBox (NULL, "Found 1.44 Mb", "Yermakov FDD scaner", MB_OK); MessageBox (NULL, "Not found", " Yermakov FDD scaner ", MB_OK);
} else MessageBox (NULL, "Can't send control code", NULL, MB_OK); (hDevice);
} else MessageBox (NULL, "Dev is not present", NULL, MB_ICONSTOP); 0;
}
драйвер ядро ​​комп'ютерний програма
2.3 Крок 3
ВаріантЗаданіе7Вивесті номер одного з розділів жорсткого диска (IOCTL_DISK_GET_PARTITION_INFO_EX)
Лістинг курсовая.cpp
# include
# include
# include GetPartitionNumber (PARTITION_INFORMATION_EX * pex)
{hDevice;// дескриптор перевіряється устройстваbResult;// прапорець результату
DWORD junk; = CreateFile (TEXT (" . c:"),// ​​що відкривається устройство_READ | GENERIC_WRITE,// ​​доступ до пристрою
FILE_SHARE_READ | FILE_SHARE_WRITE,// ​​режим спільного використання,// ​​атрибути безпеки по умолчанію_EXISTING,// ​​розташування
,// ​​атрибути файлу);// не копіювати атрибути файлу
if (hDevice == INVALID_HANDLE_VALUE) {//неможливо відкрити пристрій ("CreateFile () fa...