Что является эквивалентом isWindowsServer API для компилятора VS 2008 - PullRequest
0 голосов
/ 07 января 2019

В нашем продукте, скомпилированном с помощью компилятора VS 2017, мы используем API-интерфейс IsWindowsServer, чтобы проверить, выполняется ли код в ОС серверной версии, а затем предпринять некоторые действия. По какой-то причине мне нужно импортировать эту логику в более старую версию нашего продукта, которая работает на компиляторе VS 2008. API-интерфейс IsWindowsServer не может использоваться здесь и выдает ошибку C3861: 'strtof': идентификатор не найден. Так какой же эквивалентный API я могу использовать здесь?

1 Ответ

0 голосов
/ 07 января 2019

IsWindowsServer сам по себе не является API. Это действительно макрос, определенный в <versionhelpers.h>, который охватывает VerifyVersionInfo . Это реализация:

#include <windows.h>

bool IsWindowsServer()
{
    OSVERSIONINFOEXW osvi = { sizeof(osvi), 0, 0, 0, 0, {0}, 0, 0, 0, VER_NT_WORKSTATION };
    DWORDLONG        const dwlConditionMask = VerSetConditionMask( 0, VER_PRODUCT_TYPE, VER_EQUAL );

    return !VerifyVersionInfoW(&osvi, VER_PRODUCT_TYPE, dwlConditionMask);
}

Два зависимых API VerSetConditionMask и VerifyVersionInfo должны быть доступны в SDK, который входит в комплект VS2008.

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