Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |  |  |  |  |  |  |  |  |  |  |  |  |
не совсем так 31.05.01 23:39 Число просмотров: 1564
Автор: kabanchik Статус: Незарегистрированный пользователь
|
не совсем так. 0-ring driver - это для 98, так же как и VxD. для 2000 - это VDD. означает то же самое, в этом я согласен, но для отличия VxD обозначают исключительно для 98, точнее не для NT базированных ОС.
для некоторой совместительности и портирования, естественно только на уровне исходных кодов, создали WDM - Windows Driver Model
думаю тебе это известно, но может кому еще интерестно, вот о работе драйвера в 98. причем заметь IRP для 98 как бы иммитируется, он создается драйвером драйвером NTKERN.VXD, что не делается в 2000, кернел сам их посылает. ну а о безопасности вообще молчу, с эти я с тобой полностью согласен, в 98 она очень и очень слабая.
надеюсь с английским в поряке:
Windows 98 Overview:
The operating system kernel is called the Virtual Machine Manager (VMM) because its main job is to create one or more "virtual" machines that share the hardware of a single physical machine. The original purpose of a virtual device driver (VxD) in Microsoft Windows 3.0 was to virtualize a specific device to help the VMM create the fiction that each virtual machine had a full complement of hardware. The same VMM architecture introduced with Windows 3.0 is in Windows 98 today but with a bunch of accretions to handle new hardware and 32-bit applications.
Windows 98 doesn't handle I/O operations in quite as orderly a way as Windows 2000. There are major differences in how Windows 98 handles operations directed to disks, to communication ports, to keyboards, and so on. Windows 98 also services 32-bit and 16-bit applications in fundamentally different ways.
Whereas all kernel-mode I/O operations in Windows 2000 use a common data structure (the IRP), no such uniformity exists in Windows 98 even once an application's request reaches kernel mode. Drivers of serial ports conform to a port driver function-calling paradigm orchestrated by VCOMM.VXD. Disk drivers, on the other hand, participate in a packet-driven layered architecture implemented by IOS.VXD. Other device classes use still other means.
When it comes to WDM drivers, however, the interior architecture of Windows 98 is necessarily very similar to that of Windows 2000. A system module (NTKERN.VXD) contains Windows-specific implementations of a great many Microsoft Windows NT kernel support functions. NTKERN.VXD creates IRPs and sends them to WDM drivers in just about the same way as Windows 2000. WDM drivers almost cannot tell the difference between the two environments, in fact.
вот еще некоторая разница в 98
Unimplemented Device Types
Original Windows 98 doesn't support creating device objects for mass storage devices. These are devices with types FILE_DEVICE_DISK, FILE_DEVICE_TAPE, FILE_DEVICE_CD_ROM, and FILE_DEVICE_VIRTUAL_DISK. You can call IoCreateDevice, and it will even return with a status code of STATUS_SUCCESS, but it won't have actually created a device object or modified the PDEVICE_OBJECT variable whose address you gave as the last argument.
The reason this functionality isn't available is that Windows 98 disk drivers must use the I/O Supervisor architecture invented for Windows 95. Why IoCreateDevice fails so silently is a bit of a puzzle, though.
короче, все это не столь важно. важно то что каждому по душе какая нить ОС. он на нем и работает. мне нравится НТ, вот и я если че сделаю, то сначала для НТ, а потом думаю (или не думаю) как енто все перенести на 98 :-))))))
|
|
<programming>
|
[Win32] RegisterHotKey 28.05.01 10:55
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
|
Что-то у меня не получилось с ней ...
Вобщем я хочу добиться чтобы программа реагировала на комбинацию клавиш (всплывала) даже если главное окно скрыто (SW_HIDE)
Я так понимаю, эта функция так сработает ? При нажатии комб. кл. прилетит сообщение WM_HOTKEY. Так ? А ко мне ничего не прилетает...
Или с ее помощью так не выйдет и только клавиатуру хучить ?
Не, я все-таки думаю, что я где-то не так сделал.
У кого фесть пример использование этой штуковины ?
|
 |
[Win32] RegisterHotKey 28.05.01 17:29
Автор: Vital Статус: Незарегистрированный пользователь
|
BEGIN_MESSAGE_MAP(CKBGProgDlg, CDialog)
//{{AFX_MSG_MAP(CKBGProgDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(WM_HOTKEY, HideIn) // сообщение WM_HOTKEY
END_MESSAGE_MAP()
BOOL CKBGProgDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
//Регистрация клавиши
RegisterHotKey(this->m_hWnd, 1, MOD_SHIFT,VK_F11);
return TRUE; // return TRUE unless you set the focus to a control
}
//фу-я горячей клавиши
void CKBGProgDlg::HideIn()
{
ShowWindow(SW_SHOW);
}
в заголовочном файле диалога:
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CKBGProgDlg)
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void HideIn(); // фу-я HideIn();
afx_msg void OnDestroy();
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
Удачи Vital.
|
 |  |
Эх.. Я ведь так и делал.. Странно. Че у меня не пашет. Кстати, у тебя в коде кое-чего не 28.05.01 17:48
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
|
Кое-чего не так. Хотя на это можно и не обращать внимания. То меня че-то подбило сказать. :-) Все равно хуже не будет.
(если это твоя прога)
У тебя в обработчике WM_HOTKEY не проверяется ID клавиши.
Вдруг потом добавишь еще одну ХОТ, придется переделывать. Лучше изначально делать дефайны и предусматривать все.. Это есть хороший стиль.
Но это я так, к слову. :-)
Слушай, скажи, я так понял что ты на MFC проги клепаешь. Вот интересно (для статистики), MFC ускоряет для тебя написание кода ?
|
 |  |  |
[C++] Эх.. Я ведь так и делал.. Странно. Че у меня не пашет. Кстати, у тебя в коде кое-чего не 29.05.01 03:36
Автор: Vital Статус: Незарегистрированный пользователь
|
> Кое-чего не так. Хотя на это можно и не обращать внимания. > То меня че-то подбило сказать. :-) Все равно хуже не будет. > (если это твоя прога) > У тебя в обработчике WM_HOTKEY не проверяется ID клавиши. > Вдруг потом добавишь еще одну ХОТ, придется переделывать. > Лучше изначально делать дефайны и предусматривать все.. Это > есть хороший стиль. > Но это я так, к слову. :-) > Слушай, скажи, я так понял что ты на MFC проги клепаешь. > Вот интересно (для статистики), MFC ускоряет для тебя > написание кода ?
Что касается прог, то я сейчас их не особо клепаю.
Пока изучаю систему. А Visual C++ и MFC в частности,
начал изучать и использовать не так давно, так что для
статистики сказать ничего не могу.
А вообще меня больше привлекает программирование
больше приближенное к системному.
А ты как пишешь?
Vital.
|
 |  |  |  |
to Vital : 29.05.01 12:13
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
|
> Что касается прог, то я сейчас их не особо клепаю. > Пока изучаю систему. А Visual C++ и MFC в частности, А я сейчас решил MFC заняться пока.
> А вообще меня больше привлекает программирование > больше приближенное к системному. Ага. :-) Самое оно. И меня так же. Можешь глянуть последний продукт - www.nmap.ru, раздел tools. TCP_LOGGER - размер файла - ~ 13 Kb. Чистое API. Исходники прилагаются. MVC 5.0.
|
 |  |  |  |  |
Net programming 29.05.01 22:56
Автор: Vital Статус: Незарегистрированный пользователь
|
> > Что касается прог, то я сейчас их не особо клепаю. > > Пока изучаю систему. А Visual C++ и MFC в > частности, > А я сейчас решил MFC заняться пока. > > > А вообще меня больше привлекает программирование > > больше приближенное к системному. > Ага. :-) Самое оно. И меня так же. Можешь глянуть последний > продукт - www.nmap.ru, раздел tools. TCP_LOGGER - размер > файла - ~ 13 Kb. Чистое API. Исходники прилагаются. MVC > 5.0.
Привет.
Я вижу ты занимаешься сетевым программированием.
Это круто. Не мог бы ты подсказать источники и(или) лит-ру
по этой теме. Что-нибудь такое "глубокое" типа "Windows" Д.Рихтера.
Спасибо. Vital.
|
 |  |  |  |  |  |
Тогда лучше бы мыло оставил 30.05.01 11:57
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
|
> Я вижу ты занимаешься сетевым программированием. > Это круто. Не мог бы ты подсказать источники и(или) лит-ру
Неа. Ничего такого я не припоминаю.
Я как-то так с этим всем разобрался... Хотя www.sources.ru тоже мне помог. Так переведенные RFC по протоколам некоторым лежат.
А вообще, разбирался я при помощи своей же проги (см. выше).
Так что, бери у меня вчерашнюю версию и вперед! :-) Она полностью протоколирует весь обмен сообщениями клиента с сервером.
|
 |  |  |  |  |  |  |
Тогда лучше бы мыло оставил 30.05.01 12:09
Автор: Vital Статус: Незарегистрированный пользователь
|
> > Я вижу ты занимаешься сетевым программированием. > > Это круто. Не мог бы ты подсказать источники и(или) > лит-ру > > Неа. Ничего такого я не припоминаю. > Я как-то так с этим всем разобрался... Хотя www.sources.ru > тоже мне помог. Так переведенные RFC по протоколам > некоторым лежат. > А вообще, разбирался я при помощи своей же проги (см. > выше). > Так что, бери у меня вчерашнюю версию и вперед! :-) Она > полностью протоколирует весь обмен сообщениями клиента с > сервером.
Да мне бы разобраться с сокетами, функциями для них и портами
сначала.
E-mail: VitalH@yandex.ru
Vital.
|
 |  |  |
А может RegisterHotKey не пашет если окно является диалоговым ? 28.05.01 18:27
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
|
|
|
 |  |  |  |
А может RegisterHotKey не пашет если окно является диалоговым ? 28.05.01 20:19
Автор: kabanchik Статус: Незарегистрированный пользователь
|
KMiNT,
Vital прав
не поленился проверил, все работает. и диалог тут не причем (именно на диалоге и проверил)
Hot Key регистрируется, и месаг ловится без проблем.
наверняка что то у тебя не так.
Возможно твой Key конфликтует с кем то.
Проверь еще раз, пропиши че нить не ординарное и попробуй отловить.
|
 |  |  |  |  |
Всем Great сенкс! Глюк найнден. Правда я не понял его смысл.. :-)) (++) 29.05.01 12:10
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
|
Да, все пашет. Как тоьлко виртуал кей VK_F11 попробывал поставить вместо своей 't'.
Кстати, код возврата естественно был нормальный. Если бы конфликтовала, я бы видел. :-) А так просто не было мессаг WM_HOTKEY и все...
Не пойму, почему 't' нельзя написать ? Вроде тип данных DWORD нужно подствлять....
Ладно моя прога теперь выглядит так (и работает) :
......
#define Show_HotKey 1
...........
RegisterHotKey(hwndMain,Show_HotKey,MOD_ALT,VK_F12);
...........
//обработчик...
....
case WM_HOTKEY:
// а дальше уже проверки остальные.....
P.S. А если "RegisterHotKey(hwndMain,Show_HotKey,MOD_ALT,'t');" , или др. символ, нифига не приходят мессаги WM_HOTKEY... Хотя функ-я возвращает OK.
|
 |  |  |  |  |  |
[C++] Cмысл 29.05.01 18:55
Автор: Vital Статус: Незарегистрированный пользователь
|
> Да, все пашет. Как тоьлко виртуал кей VK_F11 попробывал > поставить вместо своей 't'. > Кстати, код возврата естественно был нормальный. Если бы > конфликтовала, я бы видел. :-) А так просто не было мессаг > WM_HOTKEY и все... > > Не пойму, почему 't' нельзя написать ? Вроде тип данных > DWORD нужно подствлять.... > > Ладно моя прога теперь выглядит так (и работает) : > > ...... > #define Show_HotKey 1 > ........... > RegisterHotKey(hwndMain,Show_HotKey,MOD_ALT,VK_F12); > ........... > > //обработчик... > .... > case WM_HOTKEY: > // а дальше уже проверки остальные..... > > > > P.S. А если > "RegisterHotKey(hwndMain,Show_HotKey,MOD_ALT,'t');" , или > др. символ, нифига не приходят мессаги WM_HOTKEY... Хотя > функ-я возвращает OK.
Пиши так:
RegisterHotKey(hwndMain,Show_HotKey,MOD_ALT,'T');
в этой ф-и надо использовать символы верхнего регистра,
т.к. сравнение идет именно по ним.
Vital.
|
 |  |  |  |  |  |  |
Тю ты твою ... Ясно. А в доках что-то я не заметил об этом упоминания. 30.05.01 10:35
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
|
|
|
 |  |  |  |  |
[C++] А может RegisterHotKey не пашет если окно является диалоговым ? 29.05.01 03:34
Автор: Vital Статус: Незарегистрированный пользователь
|
> KMiNT, > > Vital прав > > не поленился проверил, все работает. и диалог тут не причем > (именно на диалоге и проверил) > Hot Key регистрируется, и месаг ловится без проблем. > наверняка что то у тебя не так. > Возможно твой Key конфликтует с кем то. > Проверь еще раз, пропиши че нить не ординарное и попробуй > отловить.
На самом деле код, который я привел для горячей клавиши
у меня работает немного странно, а именно: при
нажатии горячей клавиши больше трех раз моя программа вызывает
ошибку в MFC42.DLL и аварийно завершается.
Я еще этой проблемой особо не занимался, и может эта моя ошибка,
а может нет?
Vital.
|
 |  |  |  |  |  |
[C++] А может RegisterHotKey не пашет если окно является диалоговым ? 29.05.01 19:31
Автор: kabanchik Статус: Незарегистрированный пользователь
|
Все так.
У меня он не летает ...стоит Win 2K
|
 |  |  |  |  |  |  |
[C++] Ты считаешь это глюк моей системы или MFC42.DLL или Visual C++? 29.05.01 22:59
Автор: Vital Статус: Незарегистрированный пользователь
|
|
|
 |  |  |  |  |  |  |  |
[C++] Ты считаешь это глюк моей системы или MFC42.DLL или Visual C++? 30.05.01 01:46
Автор: kabanchik Статус: Незарегистрированный пользователь
|
да тут х поймешь сразу.
вообще я сторонник обновления того, что имеешь
поэтому, если у тебя WIndows NT, то скачай новый Service Pack. У тебя какая система? наверняка Windows 95/98, для них по моему патчи есть.
и еще в обязательном порядке Visual Studio Srvice Pack 6
не знаю у кого как, но я разничу чувствовал. совсем недавно один и тотже проект у меня компилился по разному, точнее компилился и линковался, но в одном случае он тут же вылетал, а в другом работал как надо - как вариант с RegisterHotKey. написал прогу, поставил компилиться на WinMe, он летал. сперва подумал разные системы и искал разницу в ф-иях, потом скачали новый СП и все решилось.
Вообще всем советую кто прочтет это сообщение - люди, поставьте новый VSSP, хотя он по размерам большой - около 133 Mb.
и еще, я смотрел твои мессаги - если хочешь занятся системным программированием и сетями под винд., в смесле широких возможностей, поставь Windows 2000. пусть это не звучит как наставление, просто добрый совет, потому что возможностей больше чем даже у NT. Хотя на Win 9X можешь написать VxD, что на System Based on NT Technoligy не сделаешь.
|
 |  |  |  |  |  |  |  |  |
2Vital - Тогда для начала сделай все четко, потом глянь (я про "ошибки" писал выше - мож в этом все дело) 30.05.01 18:50
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
|
> WinMe, он летал. сперва подумал разные системы и искал > разницу в ф-иях, потом скачали новый СП и все решилось. Да, прикол. :-)
> возможностей больше чем даже у NT. Хотя на Win 9X можешь > написать VxD, что на System Based on NT Technoligy не > сделаешь.
???
Не понял. Почему ??
|
 |  |  |  |  |  |  |  |  |  |
ответ 30.05.01 19:19
Автор: kabanchik Статус: Незарегистрированный пользователь
|
> > WinMe, он летал. сперва подумал разные системы и искал > > разницу в ф-иях, потом скачали новый СП и все > решилось. > Да, прикол. :-) > > > возможностей больше чем даже у NT. Хотя на Win 9X > можешь > > написать VxD, что на System Based on NT Technoligy не > > сделаешь. > > ??? > Не понял. Почему ??
потому что Virtual Driver - базируется на 9х. NT и 9x - это все таки разные технологии. у Virtual Driver есть принципиальные отличия, которые не пройдут под NT.
|
 |  |  |  |  |  |  |  |  |  |  |
VxD - virtual device driver например - VKD - Virt.Keyboard Dr., VDD - Virt. Display. (это к слову :)) Пишутся и для НТ, и для Win9x. 31.05.01 13:09
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
|
> > > написать VxD, что на System Based on NT > Technoligy не > > > сделаешь. > > > > ??? > > Не понял. Почему ?? > > потому что Virtual Driver - базируется на 9х. NT и 9x - это > все таки разные технологии. у Virtual Driver есть > принципиальные отличия, которые не пройдут под NT.
?? Я не понял. Ты хочешь сказать что VxD под НТ не пишутся ??? :))
Чего-то я тебя понять никак не могу.
|
|
|