Obtaining the Buffer Size (Windows Embedded CE 6.0)

1/6/2010

Many of the IP Helper functions work similarly. To retrieve the table of data which you are requesting, you need to know how large a buffer to pass. So the function is first called with a null buffer and a pointer to a location for the required buffer size. The function is then called with the appropriate buffer size. This is shown in the code snippet below.

// Get the Network Parameters
//Note that this code snippet can also be used 
//for other 'get' functions, such as GetTcpStatistics, 
//GetIpAddrTable, and so on.
PFIXED_INFO pNetworkParams = NULL;
ULONG uSizeNetworkParams = 0;
DWORD status;

// Find out how large the buffer needs to be to hold the data
status = GetNetworkParams(pNetworkParams, &uSizeNetworkParams);
if (status == ERROR_BUFFER_OVERFLOW) {
   // Allocate a buffer of the appropriate size
   if (!(pNetworkParams = (PFIXED_INFO) malloc(uSizeNetworkParams))) {
      return(1);
   }
   // Obtain Adapter Info
   status = GetNetworkParams(pNetworkParams, &uSizeNetworkParams);
}

Community Additions

ADD
Show: