C++ CreateThread和#x27;s和CreateRemoteThread';LPS参数?
C++ CreateThread和#x27;s和CreateRemoteThread';LPS参数?,c++,winapi,C++,Winapi,CreateThread和CreateRemoteThread的lpParameter之间有什么区别?从CreateThread和CreateRemoteThread中,lpParameter是“指向要传递给线程函数的变量的指针” 对于CreateRemoteThread,lpParameter是指向一个有意义的空对象的指针。它可能是内存中某个地方的某个地址 HANDLE CreateRemoteThread( HANDLE hProcess,
CreateThread
和CreateRemoteThread
的lpParameter
之间有什么区别?从CreateThread
和CreateRemoteThread
中,lpParameter
是“指向要传递给线程函数的变量的指针”
对于CreateRemoteThread
,lpParameter
是指向一个有意义的空对象的指针。它可能是内存中某个地方的某个地址
HANDLE CreateRemoteThread(
HANDLE hProcess,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
SIZE_T dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId
);
关于CreateThread
,lpParameter
是指向“\uu drv\u aliasesMem”LPVOID对象的指针。为什么要添加“\uu drv\u aliassem”
这两个参数之间没有功能上的差异。它们只是任意的void*
指针,没有什么特别之处
\uu drv\u别名em
是一个。它通知SAL感知解析器参数引用的内存地址未泄漏:
使用指针和别名(从而避免泄漏)的函数应使用
\uu drv\u aliasesMem
进行注释。如果创建的函数将对象插入全局结构,或将其传递给执行此操作的系统函数,则应添加\uu drv\u aliasesMem
注释
SAL注释对C或C++编译器没有影响,因为它们是作为空预处理器宏实现的。
请参阅。没有任何区别
CreateThread
callCreateRemoteThread
或两者都使用相同的lpParameter调用CreateRemoteThreadEx
\uuu drv\u aliasestem并不意味着什么。文章的作者犯了一个错误,没有正确地删除SAL注释。这是一个名为的别名。新的文档在这种情况下相当草率。
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
SIZE_T dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
__drv_aliasesMem LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId
);