Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
☆ Форумчанин(FSC)☆
 Аватар для 2ima
911 / 292 / 27
Регистрация: 28.04.2013
Сообщений: 2,466
Записей в блоге: 10

Как считать мигание индикатора логического жесткого диска?

21.08.2013, 18:27. Показов 2604. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как считать мигание индикатора логического жесткого диска?
смотрел на http://msdn.microsoft.com/ ничего не нашел:sctatch:
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.08.2013, 18:27
Ответы с готовыми решениями:

Как сделать, что бы при загрузке с внешнего жесткого диска можно было грузиться с логического раздела ?
У меня есть внешний жесткий диск, в нем есть активный раздел и несколько логических. Как сделать, что бы при загрузке компа с HDD, я мог...

Считать картинку с жесткого диска в массив byte[]
Здравствуйте! Помогите поместить картинку с жесткого диска в массив типа byte. Просто не представляю как это сделать.

Acer X223HQ -цикичиское мигание индикатора
При включении компьютера наблюдаю следующую картину:желтый индикатор загорелся на экране логотип Acer,затем синий индикатор,потух.И...

19
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
21.08.2013, 21:00
...вот это читать нужно http://msdn.microsoft.com/en-u... s.85).aspx

По сути всего лишь так периодически:
Code
1
DeviceIoControl(хэндл физического диска, IOCTL_DISK_PERFORMANCE, 0, 0, @dp, SizeOf(DISK_PERFORMANCE), lBytesReturned, 0);
из dp структуры нужен ReadTime, который запоминаем и сравниваем с новым.

p.s.: "логического..." - все таки физического.
2
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
21.08.2013, 21:39
А мигание диода по дискам вообще что отображает? Если наличие самого процесса записи/считывания, то мигалка эта неадекватна как минимум. Так себе подозреваю, что мигает она на пиках активности шины передачи данных... как в этом ключе использовать поле ReadTime?
1
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
21.08.2013, 22:10
...по времени, по времени. А вообще описание структуры DISK_PERFORMANCE по ссылке выше имеется, почитайте подробности, не игнорируйте http://msdn.microsoft.com/en-u... s.85).aspx
1
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
21.08.2013, 22:23
Прошу понять правильно.
Собственно, я в обязательном порядке почитал описания на мелкософтовком сайте, потому и спросил. "The time it takes to complete a read." - это расплывчатое описание.
1
☆ Форумчанин(FSC)☆
 Аватар для 2ima
911 / 292 / 27
Регистрация: 28.04.2013
Сообщений: 2,466
Записей в блоге: 10
22.08.2013, 11:54  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
The time it takes to complete a read.
Да, как это понимать?
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
22.08.2013, 12:20
...представим, что при обращении к винчестеру читается блок информации, есть скорость, есть ее объем, вам выдается время до завершения ее чтения. Берем это время, запоминаем, читаем еще раз, если изменилось - делаем вывод об обращении к винчестеру по операции чтения. Аналогично по записи. Все это утрированно и упрощенно.
2
☆ Форумчанин(FSC)☆
 Аватар для 2ima
911 / 292 / 27
Регистрация: 28.04.2013
Сообщений: 2,466
Записей в блоге: 10
22.08.2013, 12:23  [ТС]
Цитата Сообщение от raxp Посмотреть сообщение
Берем это время, запоминаем
А вот c этого места можно поподробнее, как перевести LARGE_INTEGER в float?
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
22.08.2013, 14:04
...с этого места прошу не читать между строк, не тип данных - "время" (оно же datetime, оно же double, оно же float), а оставшееся время до окночания операции.
1
☆ Форумчанин(FSC)☆
 Аватар для 2ima
911 / 292 / 27
Регистрация: 28.04.2013
Сообщений: 2,466
Записей в блоге: 10
22.08.2013, 14:07  [ТС]
А как это можно оформить?
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
22.08.2013, 14:12
...оки, повторюсь: получаете доступ к диску через createfile, передаете хэндл в deviceiocontrol, читаете в потоке или таймере периодически структуру DISK_PERFORMANCE, берете из структуры параметр чтения, запоминаете, читаете снова, сравниваете, если отличается - выдаете сигнал о чтении. Как выдавать, уже вам решать, светодиодом на клавиатуре моргайте.
0
☆ Форумчанин(FSC)☆
 Аватар для 2ima
911 / 292 / 27
Регистрация: 28.04.2013
Сообщений: 2,466
Записей в блоге: 10
22.08.2013, 19:53  [ТС]
Блин, а семпла нет?
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
22.08.2013, 20:07
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// HDD-SCROLL
// Индикатор активности винчестера (на WinAPI) - помигиваем SCROLL на клавиатуре
// Разработчик: Бадло Сергей Григорьевич
// H-page: [url]http://raxp.radioliga.com[/url]
// Зависимости: Win32 (проверена работоспособность на IDE/SATA в x86/x64)
 
 
program hdd_scroll;
 
uses Messages,Classes, Windows;
 
 
type
 TF = class
 protected
  FWnd: HWnd;
  constructor Create;
  destructor Destroy;
 
  procedure WndProcc(var Msg:TMessage); message WM_DeviceChange;
end;
 
 
type DISK_PERFORMANCE = record
 BytesRead,
 BytesWritten,
 ReadTime,
 WriteTime  : longint;
 ReadCount,
 WriteCount,
 QueueDepth : dword;
End;
 
 
  TFNTimeCallBack = procedure(uTimerID, uMessage: UINT;
    dwUser, dw1, dw2: DWORD) stdcall;
    
const IOCTL_DISK_PERFORMANCE = $70020;
var
  FWnd: HWnd;
  t: tf;
  Msg: tmsg;
 
  hdn: hwnd;
  OldReadTime, OldWriteTime: longint;
  dp: DISK_PERFORMANCE;
  lBytesReturned: cardinal;
 
  //таймер-
  tmr2:integer;
  function timeSetEvent(uDelay, uResolution: UINT;lpFunction: TFNTimeCallBack; dwUser: DWORD; uFlags: UINT): UINT;stdcall; external 'winmm.dll' name 'timeSetEvent';
  function timeKillEvent(uTimerID: UINT): UINT; stdcall; external 'winmm.dll' name 'timeKillEvent';
 
 
 
 
// кликнуть SCROLL
procedure scroll(p: boolean);
begin
 if ((GetKeyState(145) = 1)and(not p))or // включен и погасить
    ((GetKeyState(145) <> 1)and(p))      // выключен и зажечь
  then begin
  keybd_event(145, MapVirtualKey(145, 0) , 0, 0);
  keybd_event(145, MapVirtualKey(145, 0), 38, 0)
 end
end;
 
procedure Ontmr2(uTimerID, uMessage: uint;dwUser, dw1, dw2: dword) stdcall;
begin
 DeviceIoControl(hdn, IOCTL_DISK_PERFORMANCE, 0, 0, @dp, SizeOf(DISK_PERFORMANCE), lBytesReturned, 0);
 
 if dp.ReadTime <> OldReadTime then begin
  OldReadTime:= dp.ReadTime;
  scroll(true)
 end else scroll(false);
 
 if dp.WriteTime <> OldWriteTime then begin
  OldWriteTime:= dp.WriteTime;
  scroll(true)
 end else scroll(false);
end;
 
procedure timer_create;
begin
 tmr2:= timesetevent(10, 0, @Ontmr2, 0, 1)
end;
 
procedure timer_destroy;
begin
 timeKillEvent(tmr2)
end;
 
 
 
// СКЕЛЕТ ===============================
constructor TF.Create;
begin
 inherited Create;
 FWnd:= AllocateHWnd(WndProcc);
 timer_create
end;
 
destructor TF.Destroy;
begin
 inherited Create;
 timer_destroy;
 deAllocateHWnd(fWnd)
end;
 
procedure tf.WndProcc(var Msg:TMessage);
begin
 {if Msg.wparam = DBT_DEVICEARRIVAL then 
  if PDevBroadcastHdr(Msg.lParam)^.dbcd_devicetype = DBT_DevTyp_Volume then
   messagebox(fwnd,pchar(GetDrive(PDevBroadcastVolume(Msg. lParam))),'',0)}
end;
 
 
 
 
begin
 hdn:= CreateFile('\\.\PhysicalDrive0',0,0,0,OPEN_EXISTING, 0, 0);
 if hdn=0 then exit;
 
 t:= tf.Create;
 try while GetMessage(Msg, 0, 0, 0) do begin
  TranslateMessage(Msg);
  DispatchMessage(Msg)
 end finally t.destroy end
// END СКЕЛЕТ =======================
 
end.
2
☆ Форумчанин(FSC)☆
 Аватар для 2ima
911 / 292 / 27
Регистрация: 28.04.2013
Сообщений: 2,466
Записей в блоге: 10
23.08.2013, 11:36  [ТС]
Осталось выучить Delphi
0
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
23.08.2013, 11:47
Цитата Сообщение от FSC Посмотреть сообщение
Осталось выучить Delphi
Да вы присмотритесь, те же функции все тоже самое, что и в C++ только синтаксис другой.
uses это include
Вместо . используйте ->
Begin это {
End это }
Верхнюю часть документа представляйте как Unit.h-тут описан класс, а нижнюю Unit.cpp-тут описаны процедуры(функции).
1
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
23.08.2013, 12:33
Осталось выучить Delphi
WinAPI и в Африке WinAPI. Вы разве не заметили, что постоянно я вас отсылал к MSDN?
1
☆ Форумчанин(FSC)☆
 Аватар для 2ima
911 / 292 / 27
Регистрация: 28.04.2013
Сообщений: 2,466
Записей в блоге: 10
23.08.2013, 12:37  [ТС]
Цитата Сообщение от raxp Посмотреть сообщение
Вы разве не заметили, что постоянно я вас отсылал к MSDN?
Заметил, спасибо всем буду разбиратся!

Добавлено через 32 секунды
Цитата Сообщение от raxp Посмотреть сообщение
Вы разве не заметили, что постоянно я вас отсылал к MSDN?
Заметил, спасибо всем буду разбиратся!
0
23.08.2013, 20:42

Не по теме:

Цитата Сообщение от raxp Посмотреть сообщение
WinAPI и в Африке WinAPI.
:DНеправда, в Африке WinAPI будет как-то так: RuiTKKV, Ruite toegepas koderende koppelvlak van...

0
23.08.2013, 22:03

Не по теме:

Wat kan ek sê :)

0
23.08.2013, 23:08

Не по теме:

Jy kan lag. dit is nuttig :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.08.2013, 23:08
Помогаю со студенческими работами здесь

Как увеличить объем логического диска?
Я ставил ubuntu 13.04 на логический диск, который выделил специально. На жестком диске есть еще два логических диска, на одном из которых...

Как установить Windows XP с логического диска?
Как поставить windows xp с логического диска? Такая ситуация... Не работает CD Rom.. Диск разбит на две части С и D. Задача...

Можно ли как-нибудь узнать объем логического диска?
Не подскажите как можно 'достать' объем логического диска. В Directory и DirectoryInfo нет подходящих св-тв, как ещё можно попробовать?

Как поставить новую ОС или убрать Windows XP с логического диска с загрузчиком ?
Имею жесткий диск разделенный на три логических. На каждом установлена ОС - XP ,7 и 8.1. Исторически первой была установлена XP Затем на...

Как предотвратить смерть жесткого диска?
Мой ноутбук ASUS K56CM (K56CM-XX055D) за последний месяц стал всё чаще странно выключаться, но я это списывал на то, что у меня провод...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru