Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.191.189.120] |
|
Сообщ.
#1
,
|
|
|
Люди добрые
надо послать в DLL-ку указатель на переменную сложность в том, что указатель нужно послать в составе структуры, т.е. надо сделать: A.pointer = указатель на переменную B можно-ли так сделать в VisualBasic Спасибо |
Сообщ.
#2
,
|
|
|
Вообще, интересно... а можно узнать, что за функция и с чем её едят?
|
Сообщ.
#3
,
|
|
|
Функция простая
а с чем ее едят сам понять не могу Предположим мне надо считать сектор с гибкого диска нашел пример на С++ (MFC) - но на этом языке писать не умею. Только читать и то со словарем Попробовал перевести на VB, но появилась проблема: насколько я понял сначала получаем хендл соответствующего драйвера HANDLE hVxD=CreateFile("\\\\.\\vwin32",0,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL); потом передаем его ф-ии DeviceIoControl, которая заставляет его считать необходимые данные в буфер, также передаваемый функции по ссылке fResult = DeviceIoControl(hDev, VWIN32_DIOC_DOS_DRIVEINFO, ®, sizeof(reg), ®, sizeof(reg), &cb, 0); буфер reg это структура: typedef struct _DIOC_REGISTERS {DWORD reg_EBX; DWORD reg_EDX; DWORD reg_ECX; DWORD reg_EAX; DWORD reg_EDI; DWORD reg_ESI; DWORD reg_Flags; } DIOC_REGISTERS, *PDIOC_REGISTERS; которая предварительно заполняется: reg.reg_EAX = 0x7305; reg.reg_EBX = (DWORD)&dio; reg.reg_ECX = -1; reg.reg_EDX = bDrive; reg.reg_ESI = 0x6001; ******************************************************** * * * наиболее интересен здесь второй параметр: * * reg.reg_EBX = (DWORD)&dio; * * параметр "reg.reg_EBX" хранит адрес структуры "dio" * * * ******************************************************** dio это тоже структура: typedef struct _DISKIO { DWORD dwStartSector; // starting logical sector number WORD wSectors; // number of sectors DWORD dwBuffer; // address of read/write buffer } DISKIO, * PDISKIO; в целом пример исходника со всеми проверками и декларациями есть на форуме по С++ здесь же. В общем когда я попытался перевести на VB уперся в строчку reg.reg_EBX = (DWORD)&dio; выдал ошибку и встал, точнее лег - спать. Не исключено, что если эту проблему побороть появятся новые... Я ведь не супер программист - так для себя... я вроде это посылал а оно куда-то делось :о |
Сообщ.
#4
,
|
|
|
нашел!!!!!
как говорил Архимед я ее случайно на форум по С++ отправил ну и чайник..... З.Ы. форум автоматически заменяет (амперсанд)reg на символ ® |
Сообщ.
#5
,
|
|
|
ЛЮДИ!
Скажите пожалуйста, если это невозможно в принципе. |
Сообщ.
#6
,
|
|
|
Ну почему, адрес получить можно, но стоит ли использовать косвенный вызов в VB? Это достаточно ненадёжно!
|
Сообщ.
#7
,
|
|
|
я с удовольствием не пользовался бы этим,
но вызов функции требует Есть исходник на VC++ однако хотелось перевести на родной ВАСИК |
Сообщ.
#8
,
|
|
|
Я бы написал маленюкую ActiveX DLL на C++, которая вызывает ту хитрую функцию с передачей адреса.
|