У меня есть приложение C# для таргетинга на Windows-10 Desktop & Мобильные платформы. Мое приложение вызывает компонент Windows Runtime, написанный на C++ с привязками C++/cx.
Мой C++ код использует Thread Local Storage API как TlsAlloc, TlsGetValue, TlsSetValue и TlsFree. Когда я запускаю тесты на сертификацию приложений для Windows (тесты WACK), он жалуется на недоступность этих api в приложении для магазина. UWP Windows-10: Как использовать Thread Local Storage api's в приложениях для хранения
◦API TlsAlloc in kernel32.dll is not supported for this application type. sample.dll calls this API.
◦API TlsFree in kernel32.dll is not supported for this application type. sample.dll calls this API.
◦API TlsGetValue in kernel32.dll is not supported for this application type. sample.dll calls this API.
◦API TlsSetValue in kernel32.dll is not supported for this application type. sample.dll calls this API.
Я не мог видеть альтернативы для этих API-интерфейсов для Windows, 10 магазин приложения. Это MSDN page говорит только об этой доступности api на Windows Phone 8. Я не смог найти какую-либо конкретную информацию об этих API-интерфейсах для для Windows-10
Я компиляция моего родного C LIBS ++ с использованием -DWINAPI_FAMILY = WINAPI_FAMILY_APP флаг
Любые предложения будут высоко оценены
обязательно держать Вак обновляется, это изменилось с каждым SDK. Если вам нужен чистый отчет, тогда [используйте FlsAlloc вместо этого] (http://stackoverflow.com/a/27979758/17034), как это делает UCRT. –
Привет @HansPassant, Спасибо за ответ. Когда вы предлагаете использовать FlsAlloc, это означает, что в моем коде мне нужно изменить все вызовы на TlsAlloc в FlsAlloc или есть макрос, который может сделать этот трюк для меня. На странице [MSDN] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms686801 (v = vs.85) .aspx) говорится, что «** Когда приложение Windows Phone Store вызывает это функция заменяется встроенным вызовом FlsAlloc ** ". Происходит ли эта замена с Windows-10? или это ограничивается только WinPhone-8? –
SDK v10 позволяет использовать TlsAlloc() любым приложением UWP. Именно поэтому вам необходимо убедиться, что у вас есть обновленный WACK. –