// C Declaration:
// C Declaration:
typedef struct _IP_ADAPTER_INFO {
struct _IP_ADAPTER_INFO* Next;
DWORD ComboIndex;
char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
UINT AddressLength;
BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
DWORD Index;
UINT Type;
UINT DhcpEnabled;
PIP_ADDR_STRING CurrentIpAddress;
IP_ADDR_STRING IpAddressList;
IP_ADDR_STRING GatewayList;
IP_ADDR_STRING DhcpServer;
BOOL HaveWins;
IP_ADDR_STRING PrimaryWinsServer;
IP_ADDR_STRING SecondaryWinsServer;
time_t LeaseObtained;
time_t LeaseExpires;
} IP_ADAPTER_INFO;
// Layout:
+-----+------------------+---------------------+
| 0 | IP_ADAPTER_INFO* | Next |
| 4 | DWORD | ComboIndex |
| 8 | char[260] | AdapterName |
| 268 | char[132] | Description |
| 400 | UINT | AddressLength |
| 404 | BYTE[8] | Address |
| 412 | DWORD | Index |
| 416 | UINT | Type |
| 420 | UINT | DhcpEnabled |
| 424 | IP_ADDR_STRING* | CurrentIpAddress |
| 428 | IP_ADDR_STRING | IpAddressList |
. +----------------+-----------------+-----------+
. | 428 + 0 = 428 | IP_ADDR_STRING* | Next |
. | 428 + 4 = 432 | char[16] | IpAddress |
. | 428 + 20 = 448 | char[16] | IpMask |
. | 428 + 36 = 464 | DWORD | Context |
. +----------------+-----------------+-----------+
| 468 | IP_ADDR_STRING | GatewayList |
. +----------------+-----------------+-----------+
. | 468 + 0 = 468 | IP_ADDR_STRING* | Next |
. | 468 + 4 = 472 | char[16] | IpAddress |
. | 468 + 20 = 488 | char[16] | IpMask |
. | 468 + 36 = 504 | DWORD | Context |
. +----------------+-----------------+-----------+
| 508 | IP_ADDR_STRING | DhcpServer |
. +----------------+-----------------+-----------+
. | 508 + 0 = 508 | IP_ADDR_STRING* | Next |
. | 508 + 4 = 512 | char[16] | IpAddress |
. | 508 + 20 = 528 | char[16] | IpMask |
. | 508 + 36 = 544 | DWORD | Context |
. +----------------+-----------------+-----------+
| 548 | BOOL | HaveWins |
| 552 | IP_ADDR_STRING | PrimaryWinsServer |
. +----------------+-----------------+-----------+
. | 552 + 0 = 552 | IP_ADDR_STRING* | Next |
. | 552 + 4 = 556 | char[16] | IpAddress |
. | 552 + 20 = 576 | char[16] | IpMask |
. | 552 + 36 = 588 | DWORD | Context |
. +----------------+-----------------+-----------+
| 592 | IP_ADDR_STRING | SecondaryWinsServer |
. +----------------+-----------------+-----------+
. | 592 + 0 = 592 | IP_ADDR_STRING* | Next |
. | 592 + 4 = 596 | char[16] | IpAddress |
. | 592 + 20 = 616 | char[16] | IpMask |
. | 592 + 36 = 628 | DWORD | Context |
. +----------------+-----------------+-----------+
| 632 | _time_t | LeaseObtained |
| 640 | _time_t | LeaseExpires |
+-----+------------------+---------------------+