Как в Delphi вызвать Device Management Functions?
От: Firstborn Латвия  
Дата: 21.11.03 14:38
Оценка:
Имеются так называемые Device Management Functions, описаные в MSDN тут. Всё, что для них необходимо содержится в хедере setupapi.h и библиотеке setupapi.lib. Внимание, вопрос — а как какую-нибудь из этих функций вызвать из Delphi? Что для этого необходимо?

Зараннее спасибо за разъяснения!
Re: Как в Delphi вызвать Device Management Functions?
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 21.11.03 15:38
Оценка:
Надо переводить прототипы функций с C на Delphi.

Многое (если не все нужное тебе) есть уже в готовом виде на SourceForge. Перевод setupapi.h, например, — здесь.
Поиск рулит, опять же. Набираешь в Гугле setupapi.pas и на первой же страничке находишь приведенную мной ссылку.

Может, что-нибудь найдешь здесь, нажми на "see solution", мне неохота было регистриться.

У некоторых из функций содержащая их dll указана не в Requirements, a в другом месте, например (InstallNewDevice):

Remarks
This function has no associated import library. You must use the LoadLibrary and GetProcAddress functions to dynamically link to Newdev.dll.


Вся эта дребедень про отсутствие import library нас, дельфистов, трогает очень мало. Опять переводим прототип, только уже придется самим стараться, готового перевода, думаю, нет, т.к. нет C-ного хедер-файла
BOOL InstallNewDevice(
  HWND hwndParent,
  LPGUID ClassGuid,
  PDWORD pReboot
);

преобразуется в
function InstallNewDevice( hwndParent: HWDN; ClassGuid: PGUID; pReboot: PDWORD): longbool; stdcall;
//или лучше "var pReboot:DWORD", более по-человечески выглядит
  extrernal 'Newdev.dll'; //здесь - имя файла библиотеки; для большинства функций имя будет совпадать с
                          //именем import library из Requirements, а расширение, конечно, dll


Будешь переводить вручную — не забывай выравнивание в структурах, в SDK обычно выравнивания членов структур нет, так что такие структуры надо объявлять как packed record.

Ну, за остальным читай синтаксис C.

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.