помогите с функцией
Нашел в справке функцию StrToBcd. Подскажите какую библиотеку в билдере надо подключить, чтобы ею пользоваться, и где(откуда) библиотеку можно закачать, для работы в C++ Builder 6.
А я не нашел... А что она делает?
Господа помогите пожалуйста, может у кого есть готовый пример использования функции NetStatisticsGet. У меня при реализации кода постоянно выскакивает ошибка 50. Используемая ОС Windows XP SP2 язык програмирования C++ Builder 6.
Для того чтобы тебе кто либо что либо смог помочь - как минимум желательно привести тот фрагмент кода, который по твоему ИМХО выдает ошибку. Здесь не дают готовых решений. Здесь тебе могут помочь разобраться в том что у тебя не получается. Готовые решения тебе прийдется писать самому.
AzraeL
Это очень редкая библиотека. Если ты захочешь - я тебе кину линк на нее. Если вдруг будет ругаться антивирь - не переживай, это так надо :).
Но для начала ты все же прочти внимательно то описание в справке. Если не поможет - тогда пиши в ПМ.
#pragma hdrstop
#include <windows.h>
#include <lmcons.h>
#include <lmserver.h>
#include <lmshare.h>
#include <lmerr.h>
#include <lmremutl.h>
#include <lmapibuf.h>
#include <lmmsg.h>
#include <lmrepl.h>
#include <lmat.h>
#include <lmstats.h>
#include <rassapi.h>
#include <iostream.h>
//-----------------------------------------------
const char *StrError(DWORD err)
{
static char retbuff[1024];
if (err == 0)
strcpy(retbuff, "\n");
else
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, 0, retbuff, 1024, NULL);
if (strlen(retbuff) == 0)
strcpy(retbuff, "\n");
return retbuff;
}
DWORD DoNetStatisticsGet(LPWSTR RemoteName, LPWSTR ServiceName, DWORD Level )
{
NET_API_STATUS netapistatus;
LPBYTE ptb;
printf("NetStatisticsGet(%S) Level %u:\n", ServiceName, Level);
netapistatus = NetStatisticsGet(0, (wchar_t *)ServiceName, Level, 0, &ptb);
if (netapistatus != NERR_Success || ptb == NULL)
{
printf("Error %d getting statistics: %s", netapistatus, "" );
MessageBoxA(0, StrError(netapistatus), "Bad!!!", MB_OK);
} else {
if (wcscmp(ServiceName, L"SERVER") == 0)
{
STAT_SERVER_0 *pstatserver0 = (STAT_SERVER_0 *)ptb;
} else if (wcscmp(ServiceName, L"WORKSTATION") == 0) {
STAT_WORKSTATION_0 *pstatworkstation0 = (STAT_WORKSTATION_0 *)ptb;
}
puts("Not yet implemented");
NetApiBufferFree(ptb);
}
return netapistatus;
}
#pragma argsused
int main(int argc, char* argv[])
{
DoNetStatisticsGet(L"192.168.0.77", L"WORKSTATION", 0);
return 0;
}
Вот и выскакивает ошибка с кодом 50. Перепробовал всё. Как то она должна работать.
У меня ЛВС компьютер в домене, права Админа.
Вы просили дать кусок кода, вот пожалуйста
DWORD DoNetStatisticsGet(LPWSTR RemoteName, LPWSTR ServiceName, DWORD Level )
{
NET_API_STATUS netapistatus;
>>LPBYTE ptb;
>>NetApiBufferFree(ptb);
}
Вечером гляну подробней но с первого взгляда - буфер ты объявляешь, память освобождаешь - а где выделение памяти?
Где вызов - res = NetApiBufferAllocate(sizeof(STAT_WORKSTATION_0), (LPVOID *) &ptb); - например?
а объем байт оптравленных полученных. Если NetEnumRes.. делает подобное то закидывай