核心物件共享

2021-06-27 05:02:59 字數 2270 閱讀 3113

1、通過「控制代碼繼承」實現核心物件的共享

父程序**:

#include "stdafx.h"

#include #define max_buffer_size 2048

int main(int argc,char * argv)

lpfilebuffer = heapalloc(getprocessheap(), // 堆控制代碼

0, // 堆分配控制標誌

max_buffer_size); // 分配的位元組數

while(1)

if(dwbytesinfile > max_buffer_size)else

} printf("parent process id:%d\n",getcurrentprocessid());

printf("[parent]the value of the handle is %u\n",hfile);

printf("[parent]the index of the handle in table is:%u\n",((dword)hfile/4));

printf("[parent]the content of the robots.txt:\n%s\n\n\n",lpfilebuffer);

//最好將要傳遞給子程序引數命令列的值存放在快取中

lpstr lpcommandline; //定義乙個字串指標以存放核心物件控制代碼

lpcommandline = (lpstr)heapalloc(getprocessheap(),0,256); //為字串指標分配記憶體

zeromemory(lpcommandline, 256);

ltoa((dword)hfile,lpcommandline,10); //將handle控制代碼轉換為字串型別儲存

// 定義建立程序時,要用到的兩個物件

startupinfo si;

process_information pi;

zeromemory(&si,sizeof(si));

si.cb = sizeof(si);

zeromemory(&pi,sizeof(pi));

bool bret = createprocess("..\\debug\\childprocess.exe", // 新程序要執行的可執行檔名稱

lpcommandline, // 要傳遞給新程序的命令列字串

null, // 程序的安全屬性

null, // 執行緒的安全屬性

true, // 是否可以被繼承

0, // 建立標誌

null, // 新程序要使用的環境字串

null, // 子程序的當前目錄

&si,

&pi);

if (!bret)

printf("child process created successed.\n\n\n");

closehandle(hfile);

waitforsingleobject(pi.hprocess,infinite);

closehandle(pi.hprocess);

closehandle(pi.hthread);

system("pause");

return 0;

}

子程序**:

#include #include using std::cout;

using std::endl;

#define max_buffer_size 1024

int main(int argc,char * argv)

printf("child process id:%d\n",getcurrentprocessid());

printf("[child]the value of the handle is %u\n",(dword)hchildfile);

printf("[child]the index of the handle in table is:%u\n",((dword)hchildfile/4));

printf("[child]the content of the robots.txt:\n%s\n\n\n",lpfilebuffer);

closehandle(hchildfile);

return 0;

}

多程序共享核心物件

首先,核心物件是什麼?引用 windows核心程式設計 原文 每個核心物件都只是乙個記憶體塊,它由作業系統核心 ring0 分配,並只能由作業系統核心訪問。核心物件存在於程序虛擬位址空間的高位址 32位 0x80000000 0xffffffff 它由三個部分組成 物件頭 object header...

核心物件 2 之跨越邊界程序共享核心物件

在兩個程序之間共享核心物件的方法有很多 1.通過物件控制代碼的繼承性共享核心物件,但是這兩個程序之間必須要存在父子關係 步驟是 建立乙個核心物件,將該核心物件的安全屬性的binherithandle屬性置為true,再用createprocess建立乙個程序,將引數中的binherithandles...

白話windows核心物件共享之複製物件控制代碼

引子 話說老王的果園大豐收,老王心花怒放,帶著全家去美國阿拉斯加度假。阿拉斯加有很多東西琳琅滿目,都是中國沒有的,老王及家人都過了一把購物癮。但是有一次卻遇到了比較尷尬的事。怎麼回事呢?原來老王第一次出國,在買地攤上的東西時討價還價100元,但是給人家的卻是100元人民幣,人家自然不幹撒,你100元...