首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CreateThread和CreateRemoteThread的lpParameter有什么区别?

CreateThread和CreateRemoteThread的lpParameter有什么区别?
EN

Stack Overflow用户
提问于 2020-04-24 09:37:20
回答 1查看 506关注 0票数 0

CreateThreadCreateRemoteThreadlpParameter有什么区别?从CreateThread 文档CreateRemoteThread 文档来看,lpParameter是“要传递给线程函数的变量的指针”。

对于CreateRemoteThreadlpParameter是指向空对象的指针,这是有意义的。可能是记忆中某个地方的某个地址。

代码语言:javascript
复制
HANDLE CreateRemoteThread(
      HANDLE                 hProcess,
      LPSECURITY_ATTRIBUTES  lpThreadAttributes,
      SIZE_T                 dwStackSize,
      LPTHREAD_START_ROUTINE lpStartAddress,
      LPVOID                 lpParameter,
      DWORD                  dwCreationFlags,
      LPDWORD                lpThreadId
 );

对于CreateThreadlpParameter是指向"__drv_aliasesMem“LPVOID对象的指针。为什么添加"__drv_aliasesMem"?

代码语言:javascript
复制
HANDLE CreateThread(
      LPSECURITY_ATTRIBUTES   lpThreadAttributes,
      SIZE_T                  dwStackSize,
      LPTHREAD_START_ROUTINE  lpStartAddress,
      __drv_aliasesMem LPVOID lpParameter,
      DWORD                   dwCreationFlags,
      LPDWORD                 lpThreadId
);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-24 16:56:54

这两个参数之间没有功能上的差别。它们只是任意的void*指针,没有什么特别之处。

__drv_aliasesMemSAL注解。它通知感知SAL的解析器,该参数引用的内存地址没有泄漏:

https://learn.microsoft.com/en-us/cpp/code-quality/c28197?view=vs-2019

使用指针并将其化名(从而避免泄漏)的函数应该使用__drv_aliasesMem进行注释。如果您创建一个函数将一个对象插入到全局结构中,或者将其传递给这样做的系统函数,那么您应该添加__drv_aliasesMem注释。

SAL注释不影响C或C++编译器,因为它们是作为空的预处理器宏实现的。

使用SAL注释减少C/C++代码缺陷

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61405344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档