Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22

Как обращаться к функциям библиотек ядра?

10.11.2024, 08:57. Показов 2535. Ответов 44
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот тут:
https://learn.microsoft.com/en... ds/portmon
описание работы программы-сниффера для контроля работы последовательных и параллельных портов. На современных машинах уже хлопотно запускать. Ставить шароварные программы, конечно, имеет смысл. Только потом их надо сносить и устанавливать заново. Хлопотно. Уже давно хочется написать что-то такое под себя.
А для этого надо каким-то образом иметь в пользовательской программе, что-то типа драйвера портов.
Ума не приложу, как это сделать.
Есть рекомендации?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.11.2024, 08:57
Ответы с готовыми решениями:

Как обращаться к пользовательским функциям?
Здраствуйте уважаемые форумчане. Решил все таки занятся программированием с использованием фреймворка JQuery И хотелось бы узнать, как...

Как правильно обращаться к функциям
Всем Привет! Решил заняться с++, но попал в ступор. вообще я занимаюсь программированием на AS2(flash), язык по синтаксису схож с...

Как в решении из двух проектов из второго проекта обращаться к функциям из первого проекта?
Собственно данная задача возникает, когда в Blank Solution добавляем проект модульных тестов к первому проекту Empty C++. К примеру первый...

44
sleep
 Аватар для I can
4924 / 4573 / 840
Регистрация: 13.04.2015
Сообщений: 9,721
10.11.2024, 12:54
Цитата Сообщение от Argus19 Посмотреть сообщение
Есть рекомендации?
Завязывай с Барсиком.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
10.11.2024, 14:03
Цитата Сообщение от I can Посмотреть сообщение
Завязывай с Барсиком.
The trick убедительно показал, что в умелых руках VB всемогущ!
2
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
10.11.2024, 15:27  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
убедительно показал, что в умелых руках VB всемогущ!
Это бесспорно.
Я слегка декомпилировал Portmon. Программа написана на С++. Я знаю С++ на начальном уровне, поэтому, многое понять вряд ли смогу. Тем более, что декомпилировалось не всё. Попробую установить VS и посмотрю, как она примет такой текст.
Вызвать ZwCreateFile можно из юзер моды, а вот IoAttachDeviceByPointer можно вызвать только из кернель моды, в чём и загвоздка.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
10.11.2024, 16:30
Portmon вроде использует драйвер-фильтр. Из вб заюзать такой драйвер не проблема. Написать же свой драйвер на vb6 можно только для 32 битных систем. Для 64 битных систем написать можно на TwinBasic.
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
10.11.2024, 16:42  [ТС]
The trick, вот это и интересно.
"Некрософт" пишет:"IoAttachDeviceByPointer устаревшая функция.
Вместо неё используйте: IoAttachDeviceToDeviceStack", что означает, что используемая функция IoAttachDeviceByPointer на данный момент мешает запуску программы. Возникает сообщение об ошибке №2 (отсутствие файла).
Программу можно запустить в режиме совместимости с Win7. Потому, и появилось желание копнуть в этом направлении.
Цитата Сообщение от The trick Посмотреть сообщение
Portmon вроде использует драйвер-фильтр. Из вб заюзать такой драйвер не проблема.
Что посоветуете почитать про это?
0
Эксперт по электронике
6552 / 3180 / 334
Регистрация: 28.10.2011
Сообщений: 12,450
Записей в блоге: 7
10.11.2024, 21:16
Цитата Сообщение от The trick Посмотреть сообщение
Для 64 битных систем написать можно на TwinBasic.
Он нативно поддерживает или как VB?

Цитата Сообщение от Argus19 Посмотреть сообщение
Что посоветуете почитать про это?
На wasm было много статей про разработку дров.
Поищите и может что-то найдете http://web.archive.org/web/201... =apihook_3

Смотрите статьи из раздела "Драйверы режима ядра" http://web.archive.org/web/201... 1#series_9
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
11.11.2024, 00:12
Цитата Сообщение от locm Посмотреть сообщение
Он нативно поддерживает
Нативно вроде, там вроде вообще ограничений нет никаких если сравнивать с дровами на VB6.

Добавлено через 1 минуту
Цитата Сообщение от Argus19 Посмотреть сообщение
Что посоветуете почитать про это?
Да я не знаю, если бы мне нужно было я бы вначале погуглил про этот драйвер (если он конечно используется), если бы ничего не нашел то просто бы реверсом бы глянул что там, т.к. думаю там вообще все тривиально.
0
Эксперт по электронике
6552 / 3180 / 334
Регистрация: 28.10.2011
Сообщений: 12,450
Записей в блоге: 7
11.11.2024, 01:04
Цитата Сообщение от The trick Посмотреть сообщение
Нативно вроде
То есть рантайм TB не завязан на WinAPI и может использовать API ядра?
Ведь элементарные выделение/освобождение памяти в ядре выполняется совсем другими функциями (не WinAPI из юзермода) и есть разделение на подкачиваемую и не покачиваемую память.
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
11.11.2024, 15:09  [ТС]
Что-то у меня не поучается получить список портов из ключа реестра HKEY_LOCAL_MACHINE\Hardware\DeviceMap\Se rialComm:
Visual Basic
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
Option Explicit
 
Private Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
 
Private Const HKEY_CURRENT_USER = &H80000001
Private Const ERROR_NO_MORE_ITEMS = 259&
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const MAX_PATH = 260
 
Private Sub Form_Load()
'https://www.cyberforum.ru/visual-basic/thread1095080.html#post5774529
    Dim hKey As Long, i As Long, q As Long, buf As String
    
    If RegOpenKey(HKEY_LOCAL_MACHINE, "Hardware\DeviceMap\", hKey) Then Exit Sub
    
    buf = Space(MAX_PATH + 1)
    
    Do Until RegEnumKey(hKey, i, buf, MAX_PATH + 1)
        q = InStr(1, buf, vbNullChar)
        If q Then
            Debug.Print Left(buf, q)
        End If
        i = i + 1
        DoEvents
    Loop
    
    RegCloseKey hKey
'  Exit Sub
'https://www.cyberforum.ru/vbscript-wsh/thread1811016.html#post9566517
Dim WshShell
Dim sReg As String
Set WshShell = CreateObject("WScript.Shell")
sReg = WshShell.RegRead("HKEY_LOCAL_MACHINE\Hardware\DeviceMap\")
MsgBox sReg
End Sub
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
11.11.2024, 15:43
Argus19, ваш код работает, кроме этого "sReg = WshShell.RegRead("HKEY_LOCAL_MACHINE\Har dware\DeviceMap")"
а так через API список я получаю и выводит
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
11.11.2024, 15:51  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
а так через API список я получаю и выводит
Получаете имена СОМ-портов?
У меня ничего.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
11.11.2024, 16:05
Цитата Сообщение от Argus19 Посмотреть сообщение
Debug.Print
Оно же выводит у вас в Debug.Print. Там всё нормально, всё работает.
Миниатюры
Как обращаться к функциям библиотек ядра?  
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
11.11.2024, 16:12  [ТС]
Это выводит.
Если добавить в строку вызова:
\SERIALCOMM,
то вывода не будет. И я не понимаю, как получить имена ком-портов.
В редакторе реестра у нужного мне порта странное название:
Миниатюры
Как обращаться к функциям библиотек ядра?  
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
11.11.2024, 16:18
Цитата Сообщение от Argus19 Посмотреть сообщение
Если добавить в строку вызова:
\SERIALCOMM,
то вывода не будет
Конечно не будет это же конечная папка в иерархии. Там уже надо другим кодом список параметров и их значения выводить.
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
11.11.2024, 16:19  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
Там уже надо другим кодом список параметров и их значения выводить.
Вот его и надо.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
11.11.2024, 16:20
Argus19, возьми уже хотябы мой модуль для работы с реестром тогда что ли: Готовые решения и полезные коды на Visual Basic 6.0
хотя он не самый лучший, но список параметров и их значения можно получить на изи.
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
12.11.2024, 12:27  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
мой модуль для работы с реестром
Не разобрался.
Взял класс от Dragokas, вставил строку в код:
Visual Basic
1
2
3
4
    ' Перечисление имен параметров указанного раздела + их значения
    For Each Key In Split(Reg.GetEnumValues(0, "HKEY_LOCAL_MACHINE\Hardware\DeviceMap\SerialComm"), "|")
        Debug.Print CStr(Key); " = "; Reg.GetRegData(0, "HKEY_CURRENT_USER\Environment", CStr(Key))
    Next
Получил вот такой результат:
\Device\Serial0 =
\Device\USBSER000 =
Попробовал вставить в вызов функции NtCreateFile. Не помогло. Никак не пойму, как правильно подставить имя порта.

Добавлено через 1 час 21 минуту
Как я не пытаюсь написать имя порта, функция NtCreateFile возвращает код:
C000000D
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
12.11.2024, 12:33
Цитата Сообщение от Argus19 Посмотреть сообщение
Не разобрался.
А что там разбираться? Модуль легче чем класс, объявлять его не надо как класс заранее. Просто пишешь имя функции сразу и всё а дальше параметры функции и всё.

При чём тут NtCreateFile вообще.
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
12.11.2024, 15:29  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
При чём тут NtCreateFile вообще.
Чтобы отправить ей правильное имя ком-порта, а, чтобы его определить, надо спрашивать реестр:
HKEY_LOCAL_MACHINE\Hardware\DeviceMap\Se rialComm
Только и всего.
Вот, например, китайский коллега использует эту функцию, чтобы попиликать на динамике системника:
https://www.vbforums.com/showt... ontrolFile)
От этого примера я и пытаюсь оттолкнуться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.11.2024, 15:29
Помогаю со студенческими работами здесь

Установить права, чтобы можно было обращаться только к функциям
Здравствуйте, помогите пожалуйста, есть БД в Microsoft SQL Server, и есть приложение в Delphi 7. Как настроить БД, так чтобы из приложения...

Задачи по функциям. Объясните задачу по функциям)
Вводится последовательность из N целых чисел. Для каждого числа последовательности вывести новое число, которое получится после записи цифр...

нетбук с каким процом лучше n550(2 ядра )или C-50(2 ядра )?
всем привет решил в следюющем году сдать егэ по инфе => надо готовится и учить програмирование а без практики одной теории мало по этому...

Помогайте выбрать: видюха 640М и проц i7 2.4Гц (4 ядра) или 750M и i7 2Гц (2 ядра) ?
Приветствую. Вот занес уже руку в кошелек для покупки ноута Acer ASPIRE V5-572G но тот засомневался в сторону V3-571G. Оба с ips...

Что выбрать: Intel 2 ядра или AMD 4 ядра?
Нужен дельный совет от гуру! Могу взять АМД проц 4 ядра, либо интеловский 2 ядерный, цена примерно та же. Боюсь, что с интеловским...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru