【问题标题】:Using VC intrinsic in kernel space在内核空间中使用 VC 内在函数
【发布时间】:2011-05-11 15:51:08
【问题描述】:

我的问题是如何在内核空间中使用内在函数(在 Windows 上),当头文件包含在 SDK 中(从 VC 10 安装)并且我用来编译驱动程序的 WDK 不知道这个文件。当我#include <intrin.h> 一切正常,但是当我开始编译时,我得到了

错误 C1083:无法打开包含文件:'intrin.h':没有这样的文件或目录

我尝试将相应的文件复制到 WDK 目录,但没有成功。我知道我可以开始编写内联汇编,但老实说,我想避免这样做,因为有内在支持,我只是不知道如何访问它。

【问题讨论】:

  • 您要访问哪个内在函数?内在函数与其说是头文件提供的东西,不如说是一种编译器特性。在 DDK 包含的#pragma intrinsic 中查找,您会看到环境支持的那些...

标签: windows visual-c++ kernel device-driver wdk


【解决方案1】:

WDK 目录中缺少一些较新的标头。只需复制声明即可。

例如(因为 WDK 中缺少):

#include <emmintrin.h>

extern "C" {
extern __m128i _mm_abs_epi16 (__m128i a);
extern __m128i _mm_shuffle_epi8 (__m128i a, __m128i b);
extern __m128i _mm_blendv_epi8 (__m128i v1, __m128i v2, __m128i mask);
extern __m128i _mm_alignr_epi8 (__m128i a, __m128i b, int n);
};

【讨论】:

  • 感谢您的回复,但是当我复制相应的文件时,我开始收到此错误:c:\winddk\7600.16385.1\inc\crt\immintrin.h(282): error C2719: 'm2 ': 带有 __declspec(align('32')) 的形参不会对齐
  • 不能直接复制文件,因为依赖不匹配。你必须提取你真正需要的东西并将它们添加到你自己的标题中。
猜你喜欢
  • 1970-01-01
  • 2017-01-10
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 2015-06-12
相关资源
最近更新 更多