根据
的文件这些方法至少需要Windows 7或Windows Server 2008 R2。要定位此版本的Windows,必须将_WIN32_WINNT
设置为_WIN32_WINNT_WIN7
(0x0601),如Using the Windows Headers中所述。
方法在synchapi.h中定义。在我的此文件版本(SDK 8.1)中,它们受预处理程序指令#if (_WIN32_WINNT >= 0x0600)
的保护。
对我而言,这与文档相矛盾,因为0x0600指的是Windows Vista和Windows Server 2008.这是一个错误还是我错过了什么?
修改
评论中对问题的共同评估似乎是SDK中存在错误。只有在TryAcquireSRWLockShared
时才能使用_WIN32_WINNT >= 0x0601
。拨打TryAcquireSRWLockShared
的电话源自std::shared_mutex
。 How to use std::shared_mutex on Vista/Server 2008?