![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Характеристики сетевых адаптеров через WinPCap [D5, WinXP]
SVD © (2008-06-25 10:51:00)Добрый день
Определил через WinPCap количество и имена сетевых адаптеров. Теперь пытаюсь определить их характеристики с помощью PacketGetNetInfoEx:
var
pr:boolean;
s:string;
i,n:integer;
NPFIFAddr:PNPFIFAddr;
begin
for i:=0 to AdapterCnt-1 do
begin
s:=AdapterNames[i];
pr:=PacketGetNetInfoEx(pchar(s),NPFIFAddr,@n);
if pr then showmessage(inttostr(n));
end;
end;
PacketGetAdapterNames дает наличие в системе 2 адаптеров. Вызов PacketGetNetInfoEx для каждого адаптера отдельно (с указанием его имени в вызове функции) дает для первого адаптера n=0, для второго - n=1. При выполнении приведенного кода для обоих адаптеров возвращается 0, а в NPFIFAddr ничего не заполняется. При выполнении цикла в обратном порядке (for i:=AdapterCnt-1 downto 0 do) все работает. Вопрос: почему не работает прямой порядок? Неужто если натывкаемся на адаптер, у которого возвращается 0, то для всех остальных тоже будет 0? Что-то не верится...
Rouse_ (2008-06-27 11:44:00) [1]Согласен... приписку в скобках не прочитал :)
> Size of the array (in npf_if_addr).
han_malign (2008-06-27 11:32:00) [2]
> Rouse_ ©
> n:= Length(NPFIFAddr) * SizeOf(TNPFIFAddr);
- там исходники есть, при просмотре которых видно, что sizeof - это глюк матрицы... На реальном опыте это подтверждается...
Rouse_ (2008-06-25 18:03:00) [3]
n:= Length(NPFIFAddr) * SizeOf(TNPFIFAddr);
han_malign (2008-06-25 12:34:00) [4]
var
pr:boolean;
s:string;
i,n:integer;
NPFIFAddr: array[0..17]of TNPFIFAddr;
begin
for i:=0 to AdapterCnt-1 do begin
s:=AdapterNames[i];
n:= Length(NPFIFAddr);
pr:=PacketGetNetInfoEx(pchar(s), @NPFIFAddr[0],@n);
if pr then showmessage(inttostr(n));
end;
end;
http://www.reactos.org/generated/doxygen/d1/db9/group__packet32.html#ga27