С ручками - как с ними работать? - PullRequest
3 голосов
/ 22 июля 2010

У меня в документации есть плагин для Dreamweaver, который я делаю, который говорит следующее:

void ** connectionData

• Аргумент connectionData является обрабатывать данные, которые агент хочет Dreamweaver перейти к нему, когда вызов других функций API.

У меня нет другой информации, кроме этой, из руководства в отношении данных подключения. Думая буквально, я подумал, что дескриптор ссылается на универсальный дескриптор, однако я не могу найти документацию по работе с универсальными дескрипторами относительно C.

HANDLE h = connectionData;

Компилируется в моем коде. Как именно я могу получить «секреты» внутри этой структуры данных / кто-то может объяснить, как работают универсальные дескрипторы для C?

Ответы [ 3 ]

4 голосов
/ 22 июля 2010

Ну, обычно вы не должны получать секреты ручек; они обычно являются просто указателем на некоторую внутреннюю структуру внутри используемой вами библиотеки lib / API, и только библиотека знает, как ее использовать.

Нет никаких общих правил или чего-то еще об дескрипторах, вам придется использовать их, как указано в документации вашей библиотеки.

2 голосов
/ 22 июля 2010

То, как это определено, connectionData - это указатель на указатель на что-то. Не зная, что назначено для connectionData, вы не можете знать больше ничего. Причина, по которой ваше другое утверждение сработало, заключается в том, что HANDLE - это, вероятно, макрос, который расширяется до void *

Чтобы узнать «Секреты», вам необходимо выяснить, на какую структуру (это предположение - на самом деле это может быть любой тип данных), на которую указывает connectionData, затем посмотреть на определение этой структуры. Я не знаю, насколько вы знакомы с программированием в целом, но отладчик позволяет вам легко просматривать поля структуры, пока он находится на паузе в точке останова.

Однако, как уже говорили другие люди, вы, вероятно, не хотите портить внутренности того, на что это указывает, и использовать только вызовы API.

0 голосов
/ 22 июля 2010

Разработчики C используют тип данных «дескриптор», когда они специально хотят скрыть внутренние данные и не дать пользователям API возиться с реализацией.Дескриптор иногда является просто указателем, но также может быть указателем во внутренней справочной таблице.

В общем случае следует использовать только предоставленные функции API с дескриптором и изучить правильный способ получения дескриптора,понять его жизненный цикл и как правильно избавиться от него, когда вы закончите.

...