![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
помогите перевести на делфи [D7, WinXP]
slim © (2005-01-24 13:05:00)к примеру это:
typedef enum eDeCoderSettings
{
SET_BRIGHTNESS = 0,
SET_CONTRAST,
SET_SATURATION,
SET_HUE,
SET_SOURCE_IN,
SET_OVERSAMPLING,
SET_SOURCE_OUT,
SET_SYSTEM_IN,
SET_SYSTEM_OUT
};
или это:
#define IOCTL_GETMAPMEMORY CTL_CODE(FILE_DEVICE_UNKNOWN, 0xA00, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_GETMAPREGS CTL_CODE(FILE_DEVICE_UNKNOWN, 0xA01, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SET_NOTIFICATION_EVENT CTL_CODE(FILE_DEVICE_UNKNOWN, 0xA02, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_READSTATUSREG CTL_CODE(FILE_DEVICE_UNKNOWN, 0xA03, METHOD_BUFFERED, FILE_ANY_ACCESS)
или это:
typedef struct
{
ULONG PhysAddr;
PVOID m_KernelAddress;
PVOID m_UserAddress;
} MEMORY_ADDRESS;
пожалуйста горю.
slim (2005-01-24 17:01:00) [1]вот теперь всё понял :)
спасибо до встречи!
Ega23 (2005-01-24 16:59:00) [2]PVOID - pointer
ULONG - integer
USHORT - smallint
slim (2005-01-24 16:41:00) [3]вот по поводу ctl_code объяснил
но вернусь к началу:
исть такая ерунда в оригенальном коде
typedef struct
{
ULONG PhysAddr;
m_Step:USHORT;
PVOID m_UserAddress;
} MEMORY_ADDRESS;
чем можно зпменить последние 2 типа в делфи чтоб длл поняла?
Ega23 (2005-01-24 16:24:00) [4]ну наверное есть вариант оставить длл в первозданном виде а юзать её из делфи?
собственно, лично я так и делаю. Но для этого тебе совершенно не нужно знать, что такое макрос CTL_CODE.
Хотя, если есть большое желание разобраться...
В двух словах: dll взаимодействует с драйвером посредством команды
DeviceIoControl. Грубо говоря, драйверу пересылается указатель на входной буффер данных, на выходной буффер и код. Драйвер анализирует этот код и, соответственно, выполняет какое-то действие. Один из параметров данной функции и есть твой CTL_CODE
slim (2005-01-24 16:04:00) [5]ну наверное есть вариант оставить длл в первозданном виде а юзать её из делфи?
в любом случае спасибо
Ega23 (2005-01-24 15:47:00) [6]Ну, что касается сроков - ты гораздо больше времени убьёшь, пытаясь эту dll на delphi корректно перевести.
Единственное, что могу посоветовать - качай DDK с www.microsoft.com, устанавливай, ковыряйся в примерах и хелпе. Плюс MSDN. Я почти всё оттуда брал.
slim (2005-01-24 15:41:00) [7]согласен паралельно этим и занимаюсь но сроки....
времени ваобщё нет практически.
подобное делал но там проще было com библиотека
и нормальное sdk
Ega23 (2005-01-24 15:37:00) [8]ну не умею я в vc++
Я тебе честно скажу: проще в с++ разобраться, чем этот код в Делфи пытаться перевести. Теоретически это сделать можно. практически - просто бессмысленно, т.к. для адекватного перевода тебе так или иначе потребуются знания С++.
Кстати, хороший повод разобраться с другим языком.
slim (2005-01-24 15:32:00) [9]вот ссылка:
stream-labs.com/dowmload/sl_alpha_sdk_031104.zip
ну не умею я в vc++
библеотека есть в sdk мне проще на данный момент с длл-кой разобраться чем почти с нуль в vс++ к примеру что означает
тип Pvoid ?
ну чайник я чистолюбивый но как обычно одного чистолюбия не хватает тут знания нужны вот и обратился к мастерам за знанием и опытом.
Ega23 (2005-01-24 15:23:00) [10]2 slim © (24.01.05 15:14) [12]
Ну а Делфи-то нафига? Чем vc не устраивает?
Я, к примеру, когда драйвер писал, действовал по следующей схеме
UserApplication -> DriverAPI.dll -> Driver
UserApplication действительно на Делфи писал, это гораздо удобнее. Всё остальное - с и с++
slim (2005-01-24 15:14:00) [11]код из sdk
к титровалке(Alpha plus)
хочу повторить чтоб понять хоть не много как эта железяка работает если хочеш сейчас ссылку кину сам посмотриш
Mutniy (2005-01-24 15:10:00) [12]Понятно ну а тогда зачем тобе нужон Сишный код переводить ?
slim (2005-01-24 14:47:00) [13]dll уже на vс++ есть я пытаюсь сней на делфе работать
Ega23 (2005-01-24 14:45:00) [14]2 Mutniy (24.01.05 14:40) [8]
Да он, по ходу, dll и делает. API для драйвера. Только вот непонятно, нафига он это на delphi делает...
Mutniy (2005-01-24 14:40:00) [15]значит получается и CTL_CODE в свою очередь является макросом ?
если так то хмм. даже не знаю ему проще тогды обертку сделать ввиде dll аль я не прав ?
Ega23 (2005-01-24 14:32:00) [16]2 Mutniy (24.01.05 14:28) [6]
а CTL_CODE в принципе даже может быть и функцией :)
Driver writers can use the system-supplied macro CTL_CODE to set up new I/O control codes. To define an I/O control code, follow these guidelines for using CTL_CODE:
.....
Mutniy (2005-01-24 14:28:00) [17]дальше код покажи потомучто
#define IOCTL_GETMAPMEMORY CTL_CODE(FILE_DEVICE_UNKNOWN, 0xA00, METHOD_BUFFERED, FILE_ANY_ACCESS)
компилятор вместо
IOCTL_GETMAPMEMORY
вставит
CTL_CODE(FILE_DEVICE_UNKNOWN, 0xA00, METHOD_BUFFERED, FILE_ANY_ACCESS)
а CTL_CODE в принципе даже может быть и функцией :)
Ega23 (2005-01-24 14:26:00) [18]2 slim © (24.01.05 13:05)
Driver API на Delphi???
Ну-ну...
Smithson (2005-01-24 14:25:00) [19][2] сделай сам по аналогии с [1]
а pvoid это pointer
slim (2005-01-24 14:23:00) [20]и это:
pvoid