Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загружаем dll-ку. 
V
    Опции темы
Antropoid
Дата 20.9.2006, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: нет
Всего: 16



Хочу динамически подгрузить dll-ку и вызвать из нее функцию. В документации написано, что нужная мне функция содержится в netapi32.lib, я так понимаю, что она же содержится и в netapi32.dll? но,просмотрев содержимое этой dll-ки утилитой tdump.exe, - нужной мне функции там не оказалось...в каком месте я неправильно размышляю?


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
Fin
Дата 20.9.2006, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: 1
Всего: 10



*.lib файлы это затычка для компилятора при статичной компоновке программы. Для динамического подключения ДЛЛ библиотек  эти файлы не нужны. Если нет нужной тебе функции в таблице экспорта, значит версия ДЛЛ библиотеки стара для мануала.


--------------------
Пролетал мимо.
PM MAIL   Вверх
Antropoid
Дата 21.9.2006, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: нет
Всего: 16



Брр...как это стара? В данном случае речь идет о netapi32.dll; у нее в секции exports нет ни 1-ой функции! В то же время netapi32.lib  имеет нужную мне NetWkstaGetInfo. Или я че то не то делаю?


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
Romikgy
Дата 21.9.2006, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



Цитата(Antropoid @  21.9.2006,  20:20 Найти цитируемый пост)
В данном случае речь идет о netapi32.dll; у нее в секции exports нет ни 1-ой функции! 

А у меня целая пачка импортов

Присоединённый файл ( Кол-во скачиваний: 18 )
Присоединённый файл  netapi32.PNG 62,45 Kb


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Antropoid
Дата 21.9.2006, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: нет
Всего: 16



Так их че, тоже можно вызывать?


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
Romikgy
Дата 21.9.2006, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



Цитата(Antropoid @  21.9.2006,  20:30 Найти цитируемый пост)
Так их че, тоже можно вызывать? 

А кто мешает?

Добавлено @ 21:33 
но только это от dll ки от ХР


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Antropoid
Дата 22.9.2006, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: нет
Всего: 16



Ну тогда скажи в чем моя ошибка

Код

        HMODULE hModule = LoadLibrary("Netapi32.dll");
        typedef int (*pNetWkstaGetInfo)(const LPWSTR, const DWORD,const LPBYTE*);  
             pNetWkstaGetInfo  NetWkstaGetInfo = (pNetWkstaGetInfo)GetProcAddress(hModule, "NetWkstaGetInfo");
        if(NetWkstaGetInfo != NULL)
            nStatus = NetWkstaGetInfo(pszServerName,dwLevel,(LPBYTE*)&pBuf);
        FreeLibrary(hModule);


такой код компилируется и линкуется, а вот при запуске пишет(если нажать "Отладка")
Unhendled exception at 0x00000008 in Inspection.exe: 0xC0000005:
Accedd violation reading location 0x00000008



--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
Romikgy
Дата 22.9.2006, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



Код

NET_API_STATUS NetWkstaGetInfo(

    LPTSTR servername,    
    DWORD level,    
    LPBYTE *bufptr    
   );    
 

зачем константы?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Damarus
Дата 22.9.2006, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 4
Всего: 29



Цитата(Antropoid @  22.9.2006,  18:50 Найти цитируемый пост)
Ну тогда скажи в чем моя ошибка

Код
typedef NET_API_STATUS (NET_API_FUNCTION *pNetWkstaGetInfo)(
    IN  LPWSTR   servername OPTIONAL,
    IN  DWORD   level,
    OUT LPBYTE  *bufptr
    );


Цитата(Romikgy @  22.9.2006,  23:17 Найти цитируемый пост)
LPTSTR servername,

Не LPTSTR, а LPWSTR.


Это сообщение отредактировал(а) Damarus - 22.9.2006, 22:55
PM MAIL ICQ Jabber   Вверх
Antropoid
Дата 22.9.2006, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: нет
Всего: 16



Romikgy, cпасибо конечно, но константы были не причем.
Damarus, благодарю,- все получилось.


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
Romikgy
Дата 24.9.2006, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



Цитата(Damarus @  22.9.2006,  21:42 Найти цитируемый пост)
Не LPTSTR, а LPWSTR.

Код

typedef TCHAR *LPTCH,*PTSTR,*LPTSTR,*LP,*PTCHAR;

А TCHAR уже сами делайте как должно оно работать 

PS и я привел прототип как он объявлен в мсдн


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Damarus
Дата 25.9.2006, 07:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 4
Всего: 29



Цитата(Romikgy @  24.9.2006,  17:23 Найти цитируемый пост)
А TCHAR уже сами делайте как должно оно работать

А при чём здесь TCHAR smile Функция NetWkstaGetInfo работает только с UNICODE (т.е. только с wchar_t). Она обьявлена в lmwksta.h так:
Код
NET_API_STATUS NET_API_FUNCTION
NetWkstaGetInfo (
    IN  LMSTR   servername OPTIONAL,
    IN  DWORD   level,
    OUT LPBYTE  *bufptr
    );


Добавлено @ 07:40 
Где LMSTR:
Код
//
// Only the UNICODE version of the LM APIs are available on NT.
// Non-UNICODE version on other platforms
//
#if defined( _WIN32_WINNT ) || defined( WINNT ) || defined( __midl ) \
    || defined( FORCE_UNICODE )
#define LMSTR   LPWSTR
#define LMCSTR  LPCWSTR
#else
#define LMSTR   LPSTR
#define LMCSTR  LPCSTR
#endif

PM MAIL ICQ Jabber   Вверх
Romikgy
Дата 25.9.2006, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



скрин с msdn 
user posted image
еще вопросы есть ?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Damarus
Дата 25.9.2006, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 4
Всего: 29



Цитата(Romikgy @  25.9.2006,  09:49 Найти цитируемый пост)
еще вопросы есть ?

Есть smile Оригинальный MSDN: NetWkstaGetInfo
PM MAIL ICQ Jabber   Вверх
Romikgy
Дата 25.9.2006, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



Damarus, даже если и так 
Код

NET_API_STATUS NetWkstaGetInfo(
  LPWSTR servername,
  DWORD level,
  LPBYTE* bufptr
);


никак не похоже на 
Цитата(Damarus @  25.9.2006,  06:39 Найти цитируемый пост)
NET_API_STATUS NET_API_FUNCTION
NetWkstaGetInfo (
    IN  LMSTR   servername OPTIONAL,
    IN  DWORD   level,
    OUT LPBYTE  *bufptr
    );

 smile 

PS ладно заканчиваем , вопрос решеный так что .....


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1005 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.