winAPI GetAdaptersAddresses непечатное понятное имя - PullRequest
0 голосов
/ 16 марта 2020

(https://docs.microsoft.com/en-us/windows/win32/api/iphlpapi/nf-iphlpapi-getadaptersaddresses) Почему некоторые из дружественных имен в PIP_ADAPTER_ADDRESSES непечатаемы? (а также несколько других атрибутов, таких как суффикс dns)

Под непечатными я подразумеваю содержащие непечатные символы. Например, первый символ в одном из дружественных имен, которые я тестировал, имел значение юникода fo 8207 (десятичное число)

enter image description here

Минимальный полный жизнеспособный пример

#include <winsock2.h>
#include <iphlpapi.h>
#include <vector>
#include <iostream>

int main()
{
    PIP_ADAPTER_ADDRESSES adapterAddresses;
    DWORD dwReqSize;
    DWORD retVal;
    DWORD count = 0;
    std::string tempForWstringConv;
    retVal = GetAdaptersAddresses(AF_INET, GAA_FLAG_INCLUDE_PREFIX, NULL, NULL, &dwReqSize);  // for knowing the required size

    if (retVal != ERROR_BUFFER_OVERFLOW) {
        return -1;
    }
    adapterAddresses = (PIP_ADAPTER_ADDRESSES)malloc(dwReqSize);
    retVal = GetAdaptersAddresses(AF_INET, GAA_FLAG_INCLUDE_PREFIX, NULL, adapterAddresses, &dwReqSize);  // this time actually getting the desired content
    if (retVal != ERROR_SUCCESS) {
        return -1;
    }
    for (PIP_ADAPTER_ADDRESSES adapter = adapterAddresses; adapter != NULL; adapter = adapter->Next)
    {
        //outLog.push_back(Adapter());
        printf("\tFriendly name: %ls\n", adapter->FriendlyName);
    }
    return 0;
}

1 Ответ

0 голосов
/ 16 марта 2020

Я наконец нашел решение! встретить _setmode (_fileno (stdout), _O_U16TEXT); проблема была в том, что выходной буфер не разрешал эти символы, потому что режим был неправильным. Увы, желаемый результат: enter image description here

для того, чтобы использовать это, вы ДОЛЖНЫ A: переключить все случаи cout на wcou; B: переключить все вхождения printf в wprintf. C: включите и

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...