Помогите перевести на делфи
От: joiner  
Дата: 03.03.11 15:31
Оценка:
При написании текущего проекта понадобилось работать со структурой _MIB_IF_ROW2.
Помощи прошу потому что никак не могу описать ее на Delphi

typedef struct _MIB_IF_ROW2 {
NET_LUID InterfaceLuid;
NET_IFINDEX InterfaceIndex;
GUID InterfaceGuid;
WCHAR Alias[IF_MAX_STRING_SIZE + 1];
WCHAR Description[IF_MAX_STRING_SIZE + 1];
ULONG PhysicalAddressLength;
UCHAR PhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH];
UCHAR PermanentPhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH];
ULONG Mtu;
IFTYPE Type;
TUNNEL_TYPE TunnelType;
NDIS_MEDIUM MediaType;
NDIS_PHYSICAL_MEDIUM PhysicalMediumType;
NET_IF_ACCESS_TYPE AccessType;
NET_IF_DIRECTION_TYPE DirectionType;
struct {
BOOLEAN HardwareInterface :1;
BOOLEAN FilterInterface :1;
BOOLEAN ConnectorPresent :1;
BOOLEAN NotAuthenticated :1;
BOOLEAN NotMediaConnected :1;
BOOLEAN Paused :1;
BOOLEAN LowPower :1;
BOOLEAN EndPointInterface :1;
} InterfaceAndOperStatusFlags;
IF_OPER_STATUS OperStatus;
NET_IF_ADMIN_STATUS AdminStatus;
NET_IF_MEDIA_CONNECT_STATE MediaConnectState;
NET_IF_NETWORK_GUID NetworkGuid;
NET_IF_CONNECTION_TYPE ConnectionType;
ULONG64 TransmitLinkSpeed;
ULONG64 ReceiveLinkSpeed;
ULONG64 InOctets;
ULONG64 InUcastPkts;
ULONG64 InNUcastPkts;
ULONG64 InDiscards;
ULONG64 InErrors;
ULONG64 InUnknownProtos;
ULONG64 InUcastOctets;
ULONG64 InMulticastOctets;
ULONG64 InBroadcastOctets;
ULONG64 OutOctets;
ULONG64 OutUcastPkts;
ULONG64 OutNUcastPkts;
ULONG64 OutDiscards;
ULONG64 OutErrors;
ULONG64 OutUcastOctets;
ULONG64 OutMulticastOctets;
ULONG64 OutBroadcastOctets;
ULONG64 OutQLen;
}MIB_IF_ROW2, *PMIB_IF_ROW2;

вот ссылка на оригинал http://msdn.microsoft.com/en-us/library/aa814491(v=VS.85).aspx

а вот что сам осилил, то что не знаю как отметил // ????????????
type
PMIB_IF_ROW2 = ^TMIB_IF_ROW2;
TMIB_IF_ROW2 = packed record
InterfaceLuid : NET_LUID; // ????????????
InterfaceIndex : NET_IFINDEX; //??????????????
InterfaceGuid : TGUID;
Alias[IF_MAX_STRING_SIZE + 1] : WideChar; //????????????????
Description[IF_MAX_STRING_SIZE + 1] : WideChar; //????????????????
PhysicalAddressLength : Cardinal;
PhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH] : Byte; //????????????????
PermanentPhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH] : Byte; //????????????????
Mtu : Cardinal;
Type : IFTYPE;
TunnelType : TUNNEL_TYPE;
MediaType : NDIS_MEDIUM;
PhysicalMediumType : NDIS_PHYSICAL_MEDIUM;
AccessType : NET_IF_ACCESS_TYPE;
DirectionType : NET_IF_DIRECTION_TYPE;
struct { //????????????????
BOOLEAN HardwareInterface :1;
BOOLEAN FilterInterface :1;
BOOLEAN ConnectorPresent :1;
BOOLEAN NotAuthenticated :1;
BOOLEAN NotMediaConnected :1;
BOOLEAN Paused :1;
BOOLEAN LowPower :1;
BOOLEAN EndPointInterface :1;
} InterfaceAndOperStatusFlags;
OperStatus : IF_OPER_STATUS;
AdminStatus : NET_IF_ADMIN_STATUS;
MediaConnectState : NET_IF_MEDIA_CONNECT_STATE;
NetworkGuid : NET_IF_NETWORK_GUID;
ConnectionType : NET_IF_CONNECTION_TYPE;
TransmitLinkSpeed : Int64;
ReceiveLinkSpeed : Int64;
InOctets : Int64;
InUcastPkts : Int64;
InNUcastPkts : Int64;
InDiscards : Int64;
InErrors : Int64;
InUnknownProtos : Int64;
InUcastOctets : Int64;
InMulticastOctets : Int64;
InBroadcastOctets : Int64;
OutOctets : Int64;
OutUcastPkts : Int64;
OutNUcastPkts : Int64;
OutDiscards : Int64;
OutErrors : Int64;
OutUcastOctets : Int64;
OutMulticastOctets : Int64;
OutBroadcastOctets : Int64;
OutQLen : Int64;
end;

Заранее благодарен за любую помощь.
Re: Помогите перевести на делфи
От: Aniskin  
Дата: 03.03.11 17:10
Оценка: 3 (1) +1
Здравствуйте, joiner, Вы писали:

J>Заранее благодарен за любую помощь.


http://www.delphimaster.ru/cgi-bin/forum.pl?id=1265188292&n=4
Re[2]: Помогите перевести на делфи
От: joiner  
Дата: 03.03.11 22:17
Оценка:
Подскажите еще пожалуйста как получить данные из

InterfaceAndOperStatusFlags: Cardinal;// 8 значений, поразрядное ИЛИ TInterfaceAndOperStatusFlags;
Re[3]: Помогите перевести на делфи
От: Aniskin  
Дата: 04.03.11 07:14
Оценка: 3 (1) +1
Здравствуйте, joiner, Вы писали:

J>Подскажите еще пожалуйста как получить данные из

J>InterfaceAndOperStatusFlags: Cardinal;// 8 значений, поразрядное ИЛИ TInterfaceAndOperStatusFlags;


function GetFlagState(AFlags: Cardinal; AFlagIndex: Integer): Boolean;
begin
  Result := AFlags and (1 shl AFlagIndex) <> 0;
end;
Re[4]: Помогите перевести на делфи
От: joiner  
Дата: 04.03.11 13:12
Оценка:
спасибо все работает
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.