On Fri, 2021-03-12 at 16:00 +0800, Yeshun Ye wrote:
+static void test_GetAdaptersInfo_AdapterName(void)
Please add these tests to testGetAdaptersInfo().
+{
- DWORD apiReturn;
- ULONG size = 0;
- ULONG family = AF_UNSPEC;
- ULONG flags = GAA_FLAG_INCLUDE_PREFIX;
family and flags never change so you don't need these variables.
- apiReturn = GetAdaptersInfo(NULL, NULL);
- if (apiReturn == ERROR_NOT_SUPPORTED) {
- skip("GetAdaptersInfo is not supported\n");
- return;
- }
- apiReturn = GetAdaptersAddresses(0, 0, NULL, NULL, NULL);
- if (apiReturn == ERROR_NOT_SUPPORTED) {
- skip("GetAdaptersInfo is not supported\n");
- return;
- }
- apiReturn = GetAdaptersAddresses(family, flags, 0, 0, &size);
- ok(apiReturn == ERROR_NO_DATA || apiReturn == ERROR_BUFFER_OVERFLOW,
- "GetAdaptersAddresses returned %d, expected ERROR_NO_DATA or ERROR_BUFFER_OVERFLOW\n",
- apiReturn);
- if (apiReturn == ERROR_NO_DATA)
- ; /* no adapter's, that's okay */
- else if (apiReturn == ERROR_BUFFER_OVERFLOW)
- {
- PIP_ADAPTER_ADDRESSES pAdapterAddress;
- PIP_ADAPTER_ADDRESSES pCurrentAddress;
- pAdapterAddress = HeapAlloc(GetProcessHeap(), 0, size);
- apiReturn = GetAdaptersAddresses(family, flags, 0, pAdapterAddress, &size);
- ok(apiReturn == NO_ERROR,
"GetAdaptersAddresses(family, flags, 0, pAdapterAddress, &size) returned %d, expected NO_ERROR\n",
apiReturn);
- pCurrentAddress = pAdapterAddress;
- while (pCurrentAddress)
- {
if (pCurrentAddress->IfType == IF_TYPE_ETHERNET_CSMACD &&
((pCurrentAddress->Flags & IP_ADAPTER_IPV4_ENABLED) || (pCurrentAddress->Flags & IP_ADAPTER_IPV6_ENABLED)))
This might be too strict. In practice these interfaces will have a valid IP address and mask but I expect this to depend on configuration.
Note that you don't actually need this to show that your fix for GetAdaptersInfo() is correct.