Вверх ↑
Этот топик читают: Гость
Ответов: 1061
Рейтинг: 22
#196: 2013-08-20 22:11:17 ЛС | профиль | цитата
Если что-то блокирует ветку HKEY_PERFORMANCE_DATA, то как его разблокировать?
карма: 0

0
Ответов: 1061
Рейтинг: 22
#197: 2013-10-07 16:52:31 ЛС | профиль | цитата
Кто сталкивался с созданием драйверов? Нужна небольшая консультация!)
карма: 0

0
Ответов: 1061
Рейтинг: 22
#198: 2013-10-09 00:06:02 ЛС | профиль | цитата
Galkov, где ты, ты точно имел дело с драйверами!)
------------ Дoбавленo в 00.06:
Здесь краткая инструкция по созданию и обращению к драйверу через программу, но на C, как из delphi обратиться к драйверу? Через библиотеку kernel32.dll?
карма: 0

0
Разработчик
Ответов: 25640
Рейтинг: 2085
#199: 2013-10-09 00:38:43 ЛС | профиль | цитата
RinniX писал(а):
как из delphi обратиться к драйверу?

Через API драйвера. У драйвера может быть API, если предполагается интерфейсный обмен. В приведенном драйвере используется стандартный системный вызов -- DeviceIoControl из библиотеки kernel32.dll. Но драйвер может иметь и собственный API
карма: 19

1
Голосовали:RinniX
Ответов: 1061
Рейтинг: 22
#200: 2013-10-09 09:00:59 ЛС | профиль | цитата
nesco писал(а):
Но драйвер может иметь и собственный API

Да? Это для меня новость! ) Спасибо, почитаю!

int TestSmth(void)//0x800 + 101
{
int test = 0;
DWORD ReturetLength = 0;

DeviceIoControl(hDevice, IOCTL_TEST_SMTH, NULL, 0,
&test, 4, &ReturetLength, NULL);

printf("TestSmth= %in",test);
return test;
}
printf печатает ответ драйвера из переменной test, а в случае с API это будет возможно?
------------ Дoбавленo в 08.52:
nesco, точно у драйвера есть API? Ты не путаешь с Linux драйверами? Что-то не могу такого найти, можешь ссылку кинуть?
------------ Дoбавленo в 09.00:
nesco писал(а):
драйвер может иметь и собственный API

[url=http://ru.wikipedia.org/wiki/%D0%94%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80 писал(а):
ru.wikipedia.org[/url]]Управление вводом-выводом (англ. IO Control, IOCTL). Зачастую драйвер поддерживает интерфейс ввода-вывода, специфичный для данного устройства. С помощью этого интерфейса программа может послать специальную команду, которую поддерживает данное устройство. Например, для SCSI-устройств можно послать команду GET_INQUIRY, чтобы получить описание устройства. В Win32-системах управление осуществляется через API-функцию DeviceIoControl(). В UNIX-подобных — ioctl().

Все-таки DeviceIoControl() !)
карма: 0

0
файлы: 1code_31968.txt [251B] [154]
Разработчик
Ответов: 25640
Рейтинг: 2085
#201: 2013-10-09 09:36:01 ЛС | профиль | цитата
RinniX писал(а):
Все-таки DeviceIoControl()

Ну, это API низкого уровня. На базе него делается API более высокого уровня с более конкретными задачами
карма: 19

0
Ответов: 1061
Рейтинг: 22
#202: 2016-10-16 16:31:23 ЛС | профиль | цитата
Код

Add(MainForm,3219771,119,350)
{
link(onCreate,4319796:doLoad,[])
}
Add(Edit,12492273,189,245)
{
Left=115
Top=105
Width=255
Text="123"
}
Add(Edit,15289107,189,189)
{
Left=115
Top=70
Width=255
Text=""
}
Add(Edit,16452272,189,140)
{
Left=115
Top=10
Width=255
Name="Salt"
Text=""
}
Add(Random,13390857,287,385)
{
Quality=1
Point(Max)
Point(doRandomWithoutRepeats)
Point(doMax)
link(onRandom,3200402:doRead,[(326,391)(326,454)(179,454)(179,496)])
link(Max,3478177:Result,[(293,369)(272,369)(272,460)(209,460)])
}
Add(CharArray,4319796,189,364)
{
Point(Count)
link(onLoad,3478177:doOperation,[(228,370)(228,405)(186,405)(186,419)])
link(String,12610442:Value,[])
}
Add(Math,3478177,203,413)
{
OpType=1
ResultType=0
link(onResult,13390857:doMax,[])
link(Op1,4319796:Count,[])
}
Add(Random,8575954,329,196)
{
Min=1
Max=1
Quality=1
Point(Min)
Point(Max)
Point(doRandomWithoutRepeats)
Point(doMin)
Point(doMax)
link(onRandom,1034797:doEvent1,[])
}
Add(Button,11963644,238,196)
{
Left=10
Top=10
Caption="bt"
link(onClick,8575954:doRandom,[])
}
Add(Edit,6922961,322,140)
{
Left=135
Top=35
Name="min"
Text="1"
DataType=2
ReadOnly=0
}
Add(Edit,16662544,455,140)
{
Left=290
Top=35
Name="max"
Text="1"
DataType=2
ReadOnly=0
}
Add(Label,14352829,322,98)
{
Left=105
Top=35
Width=23
Height=17
Caption="min:"
Alignment=2
}
Add(Label,12588745,455,98)
{
Left=255
Top=35
Width=26
Height=17
Caption="max:"
Alignment=2
}
Add(UpDown,10720482,245,140)
{
Left=185
Top=35
Min=1
Position=1
link(onPosition,262746:doEvent1,[])
}
Add(UpDown,15144092,378,140)
{
Left=340
Top=35
Max=20
Min=1
Position=1
link(onPosition,7505712:doEvent1,[])
}
Add(Hub,262746,287,140)
{
link(onEvent1,6922961:doText,[])
link(onEvent2,8575954:doMin,[(312,153)(312,230)])
}
Add(Hub,7505712,420,140)
{
link(onEvent1,16662544:doText,[])
link(onEvent2,8575954:doMax,[(445,153)(445,188)(319,188)(319,237)])
}
Add(ArrayRW,3200402,189,490)
{
link(onRead,13478646:doNext,[])
link(Array,4319796:Array,[])
link(Index,13390857:Random,[(202,467)(293,467)])
}
Add(Memory,12610442,189,308)
{
Default=String(adfg)
}
Add(For,15025523,406,196)
{
Start=1
link(onEvent,13390857:doRandom,[(445,202)(445,307)(277,307)(277,391)])
link(onStop,13478646:doReset,[(452,209)(452,538)(235,538)(235,503)])
link(End,8575954:Random,[(419,180)(391,180)(391,250)(335,250)])
}
Add(Hub,1034797,371,196)
{
link(onEvent1,15025523:doFor,[])
link(onEvent2,15289107:doText,[(396,209)(396,244)(172,244)(172,195)])
}
Add(CounterEx,13478646,245,490)
{
Point(doReset)
link(onNext,12492273:doText,[(284,496)(284,482)(172,482)(172,251)])
}
Почему ArrayRW не успевает за циклом?

--- Добавлено в 2016-10-16 17:17:12

Всё, понял, мой косяк, почему-то я думал что поставил -1 при подсчёте количества элементов массива

Редактировалось 2 раз(а), последний 2016-10-16 17:18:54
карма: 0

0
Ответов: 1061
Рейтинг: 22
#203: 2017-11-08 20:34:25 ЛС | профиль | цитата
Давно-же не было меня тут ) Не подскажете как в пакете CNET рисовать (элементы Graphics)?

--- Добавлено в 2017-11-08 21:26:50

Что я делаю не так?

Add(Button,1577230,231,343)
{
Left=30
Top=15
Point(onClick)
link(onClick,7020031:doDrawLine,[])
}
Add(Graphics,5948713,294,245)
{
Name="Graph"
Control="PicBox"
}
Add(DrawImage,917690,294,189)
{
Graphics="Graph"
}
Add(PictureBox,16329661,294,119)
{
Left=220
Top=165
Width=120
Height=135
Name="PicBox"
}
Add(DrawLine,7020031,294,343)
{
Graphics="Graph"
Pen="Pen"
X1="10"
Y1="10"
X2="20"
Y2="30"
link(Graphics,5948713:Graphics,[])
link(Pen,339708:Pen,[])
}
Add(Pen,339708,301,294)
{
Name="Pen"
CompoundArray=[]
DashPattern=[]
}

Редактировалось 1 раз(а), последний 2017-11-08 21:26:50
карма: 0

0
Главный модератор
Ответов: 2928
Рейтинг: 385
#204: 2017-11-09 05:01:10 ЛС | профиль | цитата
Отличный пример рисовки \elements\CNET\Example\graphics\LineDrawer.sha.
Для рисования на форме правильнее использовать Graphics, создаваемый событием onPaint:
Add(EntryPoint,2953706,21,105)
{
Left=20
Top=105
Point(onPaint)
link(onPaint,9:doGetMethod,[])
}
Add(Graphics,4,182,119)
{
Name="Graph"
}
Add(DrawLine,7,182,217)
{
Graphics=Graph
Pen=Pen
X1="10"
Y1="10"
X2="20"
Y2="30"
link(Graphics,4:Graphics,[])
link(Pen,8:Pen,[])
}
Add(Pen,8,189,168)
{
Name="Pen"
Brush=br
}
Add(PaintEventArgs,9,84,119)
{
link(onGraphics,10:doEvent1,[])
}
Add(Hub,10,140,119)
{
link(onEvent1,4:doGraphics,[])
link(onEvent2,7:doDrawLine,[(168,132)(168,223)])
}
Add(SolidBrush,11,238,168)
{
Name="br"
Color=255
}
Если Вы хотите рисовать на других объектах, то Graphics надо создавать с их помощью:
Add(EntryPoint,2953706,21,105)
{
Left=20
Top=105
}
Add(Button,3,161,336)
{
Left=30
Top=15
Point(onClick)
link(onClick,7:doDrawLine,[])
}
Add(Graphics,4,224,238)
{
Name="Graph"
Control=PicBox
Constructor=1
}
Add(PictureBox,6,224,175)
{
Left=34
Top=57
Width=147
Height=146
Name="PicBox"
BorderStyle=2
}
Add(DrawLine,7,224,336)
{
Graphics=Graph
Pen=Pen
X1="10"
Y1="10"
X2="20"
Y2="30"
link(Graphics,4:Graphics,[])
link(Pen,8:Pen,[])
}
Add(Pen,8,231,287)
{
Name="Pen"
}
Только в этом случае надо понимать, что нарисованное при перерисовке формы не сохранится. Надо каждый раз его восстанавливать и это опять нас возвращает к первой схеме этого поста.

Редактировалось 2 раз(а), последний 2017-11-09 05:02:51
карма: 7
Дорогу осилит идущий. HiAsm.NET is based on HiAsm 5
0
Ответов: 1061
Рейтинг: 22
#205: 2017-11-09 10:50:50 ЛС | профиль | цитата
Nic, спасибо большое ) я совсем забыл про папочку с примерами D
карма: 0

0
Ответов: 1061
Рейтинг: 22
#206: 2017-11-16 19:00:38 ЛС | профиль | цитата
Замечательный пример по скроллингу формы в NET )
Add(EntryPoint,2953706,259,105)
{
Point(doText)
}
Add(VScrollBar,328470,238,35)
{
Left=255
Top=90
Dock=4
Point(onValueChanged)
Point(Value)
link(onValueChanged,1481350:doWork2,[(277,41)(277,83)])
}
Add(HScrollBar,8713750,189,35)
{
Left=110
Top=245
Dock=2
Point(onValueChanged)
Point(Value)
link(onValueChanged,1481350:doWork1,[(228,41)])
}
Add(FormatStr,2577326,196,105)
{
Mask="H={0}, V={1}"
link(onResult,2953706:doText,[])
link(Str1,8713750:Value,[])
link(Str2,328470:Value,[(209,93)(251,93)])
}
Add(HubEx,1481350,224,77)
{
Angle=2
link(onEvent,2577326:doString,[(184,83)(184,111)])
}

А можно рабочий пример посмотреть? Как решить такое:

Add(EntryPoint,2953706,84,168)
{
Width=355
Height=266
}
Add(VScrollBar,7897071,273,161)
{
Left=250
Top=45
LargeChange=198
Maximum=1000
SmallChange=100
Value=20
}
Add(Button,11235422,168,119)
{
Left=115
Top=60
Point(onClick)
}
Add(Button,10534347,168,259)
{
Left=105
Top=330
Point(onClick)
}
Add(Button,7035203,168,385)
{
Left=110
Top=500
Point(onClick)
}

Редактировалось 1 раз(а), последний 2017-11-16 19:02:56
карма: 0

0
Главный модератор
Ответов: 2928
Рейтинг: 385
#207: 2017-11-17 11:18:46 ЛС | профиль | цитата

Add(EntryPoint,11464380,112,119)
{
Width=355
Height=266
AutoScroll=0
}
Add(Button,11235422,196,70)
{
Left=115
Top=60
Point(onClick)
}
Add(Button,10534347,196,210)
{
Left=105
Top=330
Point(onClick)
}
Add(Button,7035203,196,336)
{
Left=110
Top=500
Point(onClick)
}
карма: 7
Дорогу осилит идущий. HiAsm.NET is based on HiAsm 5
0
Ответов: 1061
Рейтинг: 22
#208: 2017-11-17 17:15:24 ЛС | профиль | цитата
Nic, ахах... понятно) Спасибо.
карма: 0

0
Ответов: 1061
Рейтинг: 22
#209: 2017-11-18 22:05:42 ЛС | профиль | цитата
Нашел несоответствие с описанием в компоненте ArrayEnum (пакет Win). Описание точки: Index - Содержит индекс текущего элемента массива после вызова события onItem. Но точка хранит не индекс а количество элементов как Count. Это фишка такая?
Add(Memo,3117709,266,112)
{
Left=90
Top=20
Width=155
Height=175
}
Add(ArrayEnum,8564433,280,196)
{
link(onEndEnum,15459653:doText,[(319,209)(319,237)(277,237)(277,300)])
link(Array,3117709:Array,[])
}
Add(Button,6151401,196,112)
{
Left=20
Top=15
Caption="+"
Data=String(123)
link(onClick,3117709:doAdd,[])
}
Add(Button,13956919,196,196)
{
Left=20
Top=70
link(onClick,8564433:doEnum,[])
}
Add(Label,15459653,287,294)
{
Left=25
Top=120
link(Text,8564433:Index,[])
}
Также он хранит в себе и нулевой элемент, я не понимаю как он работает.

--- Добавлено в 2017-11-18 22:31:08

У меня моск не переваривает такое

Add(Memo,3117709,287,119)
{
Left=90
Top=20
Width=65
Height=175
}
Add(ArrayEnum,8564433,301,203)
{
link(onItem,7160917:doAdd,[])
link(onEndEnum,626551:doText,[(340,216)(340,251)(298,251)(298,307)])
link(Array,3117709:Array,[])
}
Add(Button,6151401,217,119)
{
Left=20
Top=15
Caption="+"
Data=String(123)
link(onClick,3117709:doAdd,[])
}
Add(Button,13956919,210,203)
{
Left=20
Top=70
link(onClick,4139911:doEvent1,[(249,209)(249,202)])
}
Add(Memo,7160917,371,203)
{
Left=175
Top=20
Height=180
link(Str,9155306:Var3,[(377,194)(356,194)(356,271)])
}
Add(Hub,4139911,266,196)
{
link(onEvent1,7160917:doClear,[(361,202)(361,216)])
link(onEvent2,8564433:doEnum,[])
}
Add(Label,626551,308,301)
{
Left=20
Top=130
link(Text,9155306:Var2,[])
}
Add(GetDataEx,9155306,308,266)
{
link(Data,8564433:Index,[])
}


Редактировалось 2 раз(а), последний 2017-11-18 22:31:08
карма: 0

0
Ответов: 8551
Рейтинг: 790
#210: 2017-11-18 22:57:58 ЛС | профиль | цитата
1.
RinniX писал(а):
Index - Содержит индекс текущего элемента массива после вызова события onItem
так он и содержит этот индекс, а по окончании перебора следующий по порядку, а так как такого уже нет, он и остаётся на нижней тачке не очищенным за ненадобностью
2. См. пункт 1
карма: 18

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)