windows核心程式設計之程序 3

2021-08-07 18:22:26 字數 2827 閱讀 1424

獲取系統版本的函式:

getversion返回乙個dword型別的值,高子返回ms-dos版本號,低字返回windows版本號

本來按照邏輯來說應該是低字的高位元組返回windows的主版本號,低位元組返回此版本號,但是編寫該**程式設計師犯了乙個小錯誤,主版本號和次版本號的位置弄反了,高位元組返回次版本號,低位元組返回主版本號

由於getversion的混亂,microsoft推出了getversionex

getversionex(posversioninfo pversioninformation);

typedef struct _osversioninfo osversioninfo;

使用的時候要將結構的dwosversioninfosize的大小設為sizeof(osversioninfo),其餘設為0

現在貼上我的**

還有乙個verifyversioninfo函式,但是在我的xp vc6.0平台上始終不好使,在win7 vs2013平台上好使,我也不清楚其原因,暫且不做講解,等以後知道了原因再做講解

#include "stdafx.h"

#include

#include

#include

#include

#include

#pragma comment(lib,"psapi.lib")

using

namespace

std;

int _tmain(int argc, _tchar* argv)

; stp.cb = sizeof(startupinfo);

createprocess(text("c:\\program files (x86)\\baofeng\\stormplayer\\stormplayer.exe"), text("stormplayer f:\\名偵探柯南全集\\名偵探柯南(121-160)\\名偵探柯南 132→→魔術愛好者殺人事件(事件編).flv"), null, null, false, 0, null, null, &stp, &pi);

system("pause");

return

0;}

dwcreationflags:

debug_process:父程序想要除錯任何子程序或者子程序生成的任何程序,當子程序或者子子程序發生事件時,將會通知父程序(除錯程式)

debug_only_this_process:除錯程式只告訴緊靠父程序的子程序中發生的任何特定事件

create_suspend:建立即把程序掛起

detached_process:阻止子程序對父程序控制台視窗的訪問(一般不設定這個標誌,子程序預設訪問父程序的控制台視窗)

create_new_console:為子程序建立乙個新的控制台視窗,我們發現這個標誌的作用和上個標誌有點相似,所以,這兩個不能一起用

create_no_window:不要為子程序建立任何控制台視窗

create_new_process_group:假設有很多控制台視窗,按下crtl+c或者ctrl+break,會通知所有的控制台視窗終止程序的執行,當建立程序的時候,如果設定本標誌,就會把程序放入新的組,向這個組中的某個程序傳遞ctrl+c或者ctrl+break的時候,只會使這個組的所有程序終止執行

create_default_error_mode:子程序使用預設的錯誤模式,不繼承父程序的錯誤模式

還可設定優先順序,不過系統建立程序時會設定預設優先順序,大多數情況下不需要設定,系統自動調配的一般就夠用了

lpenvironment:環境變數的指標,不過這個一般不設定,繼承父程序的就好

lpcurrentdirectory:指向當前目錄的指標,這個一般也用不著設定,繼承父程序的就好

列出這麼多一般用不著,使用時,設定第乙個成員屬性為該結構的大小,其餘設為0就ok

lpprocessinformation

typedef struct _process_information process_information;

使用時把結構的所有成員全部設為0即可

另外程序id是獨一無二的,程序id和執行緒id也絕不可能相同,但是當乙個程序或執行緒物件被釋放時,他的id可能會被分配給其他的程序,另外id絕不可能為0

由於id的可重用性,你用id定位到的程序可能已經跟原來的程序不是同乙個程序,所以,與程序通訊最好使用視窗控制代碼或者核心物件等比較靠譜的方法

windows核心程式設計之程序 1

我對程序的理解,由於程序是不活潑的,活潑的是程序裡面的執行緒。所以,程序相當於乙個容器,只有裡面有東西 執行緒 該容器才有存在的必要,如果裡面的東西用光了 執行緒全部終止執行 瓶子就被 程序的位址空間就被系統 或重新分配給新的程序 多工搶占式作業系統 每個程序都有執行緒,每個執行緒都有自己的cpu暫...

windows核心程式設計之核心物件

由於不是計算機科班出身,一直對於程序和執行緒沒有深入的了解,現開始看windows核心程式設計,將具體內容整理一下,以加深印象。1 核心物件,即作業系統維護的乙個資料結構,內部維護該物件的各種資料資訊,常見的核心物件有 用於建立程序的程序核心物件,用於建立執行緒的執行緒核心物件,建立檔案的檔案核心物...

windows核心程式設計 程序

程序定義成乙個正在執行的程式的例項,包含兩個部分 1 乙個核心物件,作業系統用它來管理程序。核心物件也是系統儲存程序統計資訊的地方。2 乙個位址空間,其中包含所有可執行 exe檔案 或dll模組的 和資料。此外,還包括動態記憶體分配,比如執行緒堆疊和堆的分配。windows支援兩種型別的應用程式 g...