Форматирование Bluetooth-спецификаций c Winsock об ошибках - PullRequest
0 голосов
/ 08 января 2020

Я не Windows разработчик, но время от времени поддерживаю некоторый Python код, который использует Bluetooth на Windows. У нас есть функция для отображения сообщения об ошибке пользователю:

static void Err_SetFromWSALastError(PyObject *exc)
{
    LPVOID lpMsgBuf;
    FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL, WSAGetLastError(), 0, (LPTSTR) &lpMsgBuf, 0, NULL );
    PyErr_SetString( exc, lpMsgBuf );
    LocalFree(lpMsgBuf);
}

Если стек Bluetooth возвращает ошибку, подобную этой, задокументировано здесь :

WSAESHUTDOWN (10058): Канал L2CAP, отключенный удаленным узлом.

Эта функция разрешает сообщение об ошибке в более общую c ошибку сокета, задокументированную здесь :

WSAESHUTDOWN (10058): Запрос на отправку или получение данных был отклонен, поскольку сокет уже был отключен в этом направлении при предыдущем вызове завершения работы.

Сообщение об ошибке Bluetooth-speci c является намного более полезным. Есть ли функция API, которая будет его возвращать, или мне нужно будет создать собственную таблицу поиска сообщений об ошибках?

...