Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.06.24;
Скачать: [xml.tar.bz2];

Вниз

связать тип данных и указатель возвращаемый функцией   Найти похожие ветки 

 
gibz ©   (2007-01-14 23:41) [0]

код такой
type
MPR_SERVER_HANDLE=THandle;
type
MPR_SERVER_0 = record
fLanOnlyMode: BOOL;
dwUpTime: DWORD;
dwTotalPorts: DWORD;
dwPortsInUse: DWORD;
end;
function MprAdminServerConnect(lpwsServerName: PWideChar; var phMprServer: MPR_SERVER_HANDLE): DWord; stdcall; external "mprapi.dll";
function MprAdminServerGetInfo(phMprServer: MPR_SERVER_HANDLE; dwLevel: DWord; var lplpBuffer: Pointer): DWord; stdcall; external "mprapi.dll";
procedure MprAdminServerDisconnect(var phMprServer: THandle); stdcall; external "mprapi.dll";

var
MprServer: MPR_SERVER_HANDLE;
MprErrors: DWord;
lpBuffer: Pointer;
ServInfo: MPR_SERVER_0;
begin
MprErrors:=MprAdminServerConnect("hanymej",MprServer);
writeln(MprErrors);
MprErrors:=MprAdminServerGetInfo(MprServer,0,lpBuffer);
writeln(MprErrors);
// как вывести данные полученные от MprAdminServerGetInfo
MprAdminServerDisconnect(MprServer);
end.


 
tesseract ©   (2007-01-15 00:01) [1]


> MprErrors:=MprAdminServerGetInfo(MprServer,0,lpBuffer);


А память под lpBuffer кто выделять будет? Да и тип данных у тебя в коде определишь. Если это PCHAR, то и передавай PCHAR.


 
gibz ©   (2007-01-15 00:12) [2]

выделяю память new(lpBuffer);
а дальше как ?
просто не могу понять как связать lpBuffer и MPR_SERVER_0


 
Eraser ©   (2007-01-15 01:01) [3]

> [2] gibz ©   (15.01.07 00:12)

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


 
gibz ©   (2007-01-15 01:07) [4]

The MprAdminServerGetInfo function retrieves information about the specified RRAS server.

DWORD MprAdminServerGetInfo(
 MPR_SERVER_HANDLE hMprServer,
 DWORD dwLevel,
 LPBYTE* lplpBuffer
);

Parameters

hMprServer
   [in] Handle to the router to query. Obtain this handle by calling MprAdminServerConnect.
dwLevel
   [in] Specifies the level of the information requested. This parameter may be zero or one.

       Windows Server 2003 and Windows 2000 Server:  This parameter must be zero.

lplpBuffer
   [out] Pointer to a pointer variable. On successful return, this pointer variable points to a MPR_SERVER_0 or MPR_SERVER_1 structure depending on the value of dwLevel.

       Windows Server 2003 and Windows 2000 Server:  This variable points to a buffer that receives the retrieved information.

   Free the memory for this buffer using MprConfigBufferFree

Return Value

If the function succeeds, the return value is NO_ERROR.

If the function fails, the return value is one of the following error codes.


 
ors_archangel ©   (2007-01-15 01:14) [5]

Может, может, быть так:
type
MPR_SERVER_HANDLE=THandle;
type
MPR_SERVER_0 = record
fLanOnlyMode: BOOL;
dwUpTime: DWORD;
dwTotalPorts: DWORD;
dwPortsInUse: DWORD;
end;
function MprAdminServerConnect(lpwsServerName: PWideChar; var phMprServer: MPR_SERVER_HANDLE): DWord; stdcall; external "mprapi.dll";
function MprAdminServerGetInfo(phMprServer: MPR_SERVER_HANDLE; dwLevel: DWord; var lplpBuffer: MPR_SERVER_0): DWord; stdcall; external "mprapi.dll";
procedure MprAdminServerDisconnect(var phMprServer: THandle); stdcall; external "mprapi.dll";

var
MprServer: MPR_SERVER_HANDLE;
MprErrors: DWord;
ServInfo: MPR_SERVER_0;
begin
MprErrors:=MprAdminServerConnect("hanymej",MprServer);
writeln(MprErrors);
MprErrors:=MprAdminServerGetInfo(MprServer,0,ServInfo);
writeln(MprErrors);
with ServInfo do begin
 writeln("ServInfo:");
 writeln(" LanOnlyMode: ",fLanOnlyMode);
 writeln(" UpTime: ",dwUpTime);
 writeln(" TotalPorts: ",dwTotalPorts);
 writeln(" PortsInUse: ",dwPortsInUse);
end;

MprAdminServerDisconnect(MprServer);
end.


 
ors_archangel ©   (2007-01-15 01:16) [6]

А! "this pointer variable points to a MPR_SERVER_0 or MPR_SERVER_1 structure depending on the value of dwLevel", тогда в описание такое:
function MprAdminServerGetInfo(phMprServer: MPR_SERVER_HANDLE; dwLevel: DWord; var lplpBuffer): DWord; stdcall; external "mprapi.dll";
New(lpBuffer) не надо, передавай прямо ServInfo!


 
gibz ©   (2007-01-15 01:48) [7]

вообщем делаю так
type
 MPR_SERVER_HANDLE=THandle;
type
   MPR_SERVER_0 = record
   fLanOnlyMode:  BOOL;
   dwUpTime:  DWORD;
   dwTotalPorts:  DWORD;
   dwPortsInUse:  DWORD;
 end;
type
   MPR_SERVER_1 = record
   dwNumPptpPorts: DWORD;
   dwPptpPortFlags: DWORD;
   dwNumL2tpPorts: DWORD;
   dwL2tpPortFlags: DWORD;
 end;
function MprAdminServerConnect(lpwsServerName: PWideChar; var phMprServer: MPR_SERVER_HANDLE): LongInt; stdcall; external "mprapi.dll";
function MprAdminServerGetInfo(phMprServer: MPR_SERVER_HANDLE; dwLevel: DWord; var lplpBuffer): DWord; stdcall; external "mprapi.dll";
procedure MprAdminServerDisconnect(var phMprServer: THandle); stdcall; external "mprapi.dll";

var
 MprServer: MPR_SERVER_HANDLE;
 MprErrors: LongInt;
 ServInfo: MPR_SERVER_0;
 ServInfo1: MPR_SERVER_1;
begin
 MprErrors:=MprAdminServerConnect("hanymej",MprServer);
 writeln(MprErrors);
 MprErrors:=MprAdminServerGetInfo(MprServer,0,ServInfo);
 writeln(MprErrors);
 MprErrors:=MprAdminServerGetInfo(MprServer,1,ServInfo1);
 writeln(MprErrors);
 with ServInfo do begin
 writeln("ServInfo:");
 writeln(" LanOnlyMode: ",fLanOnlyMode);
 writeln(" UpTime: ",dwUpTime);
 writeln(" TotalPorts: ",dwTotalPorts);
 writeln(" PortsInUse: ",dwPortsInUse);
 end;
 with ServInfo1 do begin
 writeln("ServInfo:");
 writeln(" dwNumPptpPorts: ",dwNumPptpPorts);
 writeln(" dwPptpPortFlags: ",dwPptpPortFlags);
 writeln(" dwNumL2tpPorts: ",dwNumL2tpPorts);
 writeln(" dwL2tpPortFlags: ",dwL2tpPortFlags);
 end;
 MprAdminServerDisconnect(MprServer);
 { TODO -oUser -cConsole Main : Insert code here }
end.


выводит не верную инфу
 ServInfo:
 dwNumPptpPorts: TRUE
 UpTime: 0
 TotalPorts: 0
 PortsInUse: 0

 ServInfo:
 dwNumPptpPorts: 13631144
 dwPptpPortFlags: 0
 dwNumL2tpPorts: 0
 dwL2tpPortFlags: 0


хотя rras запущен корректно, есть подключения а dwNumPptpPorts: по идее должно возвращать 128


 
ors_archangel ©   (2007-01-15 02:51) [8]

Out!!! Тьфу ты, извини, я невнимательно посмотрел:
Добавь указательные типы:
type
 PMPR_SERVER_0 = ^MPR_SERVER_0;
 PMPR_SERVER_1 = ^MPR_SERVER_1;

Переменные - будут указатели:
var
 ServInfo0: PMPR_SERVER_0;
 ServInfo1: PMPR_SERVER_1;

Код модифицируешь для работы с указателями:

with ServInfo^ do begin
writeln("ServInfo:");
writeln(" LanOnlyMode: ",fLanOnlyMode);
writeln(" UpTime: ",dwUpTime);
writeln(" TotalPorts: ",dwTotalPorts);
writeln(" PortsInUse: ",dwPortsInUse);
end;
with ServInfo1^ do begin
writeln("ServInfo:");
writeln(" dwNumPptpPorts: ",dwNumPptpPorts);
writeln(" dwPptpPortFlags: ",dwPptpPortFlags);
writeln(" dwNumL2tpPorts: ",dwNumL2tpPorts);
writeln(" dwL2tpPortFlags: ",dwL2tpPortFlags);
end;

- вызовы MprAdminServerGetInfo не меняются


 
gibz ©   (2007-01-15 02:55) [9]

спасибо за помощь !



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2007.06.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.044 c
4-1168463934
Шоломицкий С. А.
2007-01-11 00:18
2007.06.24
Нажать кнопу в окне продолжения печати


15-1180332884
Мальчик из песочницы
2007-05-28 10:14
2007.06.24
Уго Чавес отменил вступительные экзамены в вузы


8-1160000268
Владимир
2006-10-05 02:17
2007.06.24
Слайдшоу на DVD


2-1180234804
vegarulez
2007-05-27 07:00
2007.06.24
Пинг, TIdIcmpClient, except.


15-1180080951
Василий Ж.
2007-05-25 12:15
2007.06.24
Ручная установка JVCL v2.10 или 3.31





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский