windows.txt

// 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        |
+-----+------------------+---------------------+