windows getprocessheap linux,Win API:之GetCurrentThread、GetCurrentThreadId、GetCurrentProcess、GetCurre...

#include 

#include 

#include 

#include 

#include 

#define BUF_SIZE

typedef struct MyData {

int nVal1;

int nVal2;

} MYDATA, *PMYDATA;

using namespace std;

DWORD WINAPI MyThread( LPVOID lpParam );

int main(void)

{

HANDLE hProcess = NULL;

DWORD dwProcessId = ;

HANDLE hThread = NULL;

DWORD dwThreadId = ;

PMYDATA pData;

hProcess = GetCurrentProcess(); //进程伪句柄

cout <

DuplicateHandle(GetCurrentProcess(),

GetCurrentProcess(),

GetCurrentProcess(),

&hProcess,

,

FALSE,

DUPLICATE_SAME_ACCESS

);

cout <

dwProcessId = GetCurrentProcessId();

cout <

// Allocate memory for thread data.

pData = (PMYDATA) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(MYDATA));

if( pData == NULL )

{

ExitProcess();

}

// Generate unique data for each thread.

pData->nVal1 = ;

pData->nVal2 = ;

// Create Thread

hThread = CreateThread( NULL,               // default security attributes

,                  // use default stack size

MyThread,           // thread function

pData,              // argument to thread function

,                  // use default creation flags

&dwThreadId);       // returns the thread identifier

cin.get();

return ;

}

DWORD WINAPI MyThread( LPVOID lpParam )

{

HANDLE hThread = NULL;

DWORD dwThreadId = ;

hThread = GetCurrentThread();   //线程伪句柄

cout <

DuplicateHandle(GetCurrentProcess(),

GetCurrentThread(),

GetCurrentProcess(),

&hThread,

,

FALSE,

DUPLICATE_SAME_ACCESS

);

cout <

dwThreadId = GetCurrentThreadId();

cout <

HANDLE hStdout;

PMYDATA pData;

TCHAR msgBuf[BUF_SIZE] = {};

size_t cchStringSize;

DWORD dwChars;

hStdout = GetStdHandle(STD_OUTPUT_HANDLE);

if( hStdout == INVALID_HANDLE_VALUE )

return ;

// Cast the parameter to the correct data type.

pData = (PMYDATA)lpParam;

// Print the parameter values using thread-safe functions.

StringCchPrintf(msgBuf,

BUF_SIZE,

TEXT("Parameters = %d, %d\n"),

pData->nVal1,

pData->nVal2);

StringCchLength(msgBuf, BUF_SIZE, &cchStringSize);

WriteConsole(hStdout, msgBuf, cchStringSize, &dwChars, NULL);

return ;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值