亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 驅(qū)動(dòng)程序的安裝.txt

?? 驅(qū)動(dòng)開發(fā)過程中要注意的一些要點(diǎn)以及一些基本資料
?? TXT
字號(hào):
加載一個(gè)驅(qū)動(dòng)程序,主要就是,在
SYSTEMCurrentControlSetServices 建一個(gè)鍵。
如:
SYSTEMCurrentControlSetServicesTwdm1
Type(1)
ErrorControl(0)
Start(3)

多數(shù)驅(qū)動(dòng)程序都是通過設(shè)置 Start 的值為 0, 1, 2 。
在系統(tǒng)啟動(dòng)的過程中加載驅(qū)動(dòng)程序。

在 win2k 下驅(qū)動(dòng)程序的加載處理上述方式外,
還可以在應(yīng)用程序里用 Service Api 實(shí)現(xiàn),驅(qū)動(dòng)程序的動(dòng)態(tài)加載。
這時(shí)候的 Start 為 3 。

所用到的 Api 為:
OpenSCManager, CreateService, OpenService, StartService
ControlService, DeleteService, CloseServiceHandle

其中需要說明的是:
CreateService :他通過參數(shù)在注冊(cè)表里自動(dòng)創(chuàng)建驅(qū)動(dòng)程序需要的鍵值。
DeleteService :他自動(dòng)刪除驅(qū)動(dòng)程序在注冊(cè)表里創(chuàng)的鍵值。

下面是一個(gè),簡(jiǎn)單的例子:

應(yīng)用程序:

#include "stdafx.h"
#include <windows.h>
#include <winsvc.h>
#include <conio.h>

void DelSvr( char * szSvrName ); //自動(dòng)卸載驅(qū)動(dòng)程序。

int main(int argc, char* argv[])//argc是由命令行傳入的參數(shù),至少大于1,argv[]存放				//程序名之類的
{
HANDLE hWdm;
printf("Hello World!n");

SC_HANDLE hServiceMgr, hServiceTwdm;
BOOL bRtn;
DWORD dwRtn, dwSize = 256;
char szDir[256];

if( argc > 1 ) //加任一個(gè)參數(shù)表示卸載驅(qū)動(dòng)程序。
{
DelSvr( "Twdm1" );
return 0;
}

GetCurrentDirectory( dwSize, szDir );//取當(dāng)前目錄,
strcat( szDir, "\Twdm.sys" ); //取驅(qū)動(dòng)程序的全路徑,

LPCTSTR lpszBinaryPathName = TEXT(szDir);//不管szDir是UNICODE還是ANSI都轉(zhuǎn)換成ANSI
hServiceMgr = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS ); //打開服務(wù)控制管理器

if( hServiceMgr == NULL )
{
printf( "OpenSCManager() Faild %d ! n", GetLastError() );
return 0;
}
else
{
printf( "OpenSCManager() ok ! n" );
}
//以下生成驅(qū)動(dòng)程序的服務(wù)并添加到控制面板數(shù)據(jù)庫(kù)
hServiceTwdm = CreateService( hServiceMgr, //控制面板的服務(wù)句柄
TEXT("Twdm1"), //SYSTEMCurrentControlSetServices 驅(qū)動(dòng)程序的在注冊(cè)表中的名字
TEXT("Twdm1"), // 注冊(cè)表驅(qū)動(dòng)程序的 DisplayName 值
SERVICE_ALL_ACCESS, // 加載驅(qū)動(dòng)程序的訪問權(quán)限
SERVICE_KERNEL_DRIVER,// 表示加載的服務(wù)是驅(qū)動(dòng)程序
SERVICE_DEMAND_START, // 注冊(cè)表驅(qū)動(dòng)程序的 Start 值
SERVICE_ERROR_IGNORE, // 注冊(cè)表驅(qū)動(dòng)程序的 ErrorControl 值
lpszBinaryPathName, // 注冊(cè)表驅(qū)動(dòng)程序的 ImagePath 值
NULL, 
NULL, 
NULL, 
NULL, 
NULL);

if( hServiceTwdm == NULL )
{
dwRtn = GetLastError();
if( dwRtn != ERROR_IO_PENDING && dwRtn != ERROR_SERVICE_EXISTS )
{
CloseServiceHandle( hServiceMgr );
printf( "CrateService() Faild %d ! n", dwRtn );
return 0;
}
else
{
printf( "CrateService() Faild Service is ERROR_IO_PENDING or ERROR_SERVICE_EXISTS! n" );
}
//已經(jīng)生成了驅(qū)動(dòng)程序的服務(wù)作為打開驅(qū)動(dòng)服務(wù)的句柄
// 驅(qū)動(dòng)程序已經(jīng)加載,只需要打開
hServiceTwdm = OpenService( hServiceMgr, TEXT("Twdm1"), SERVICE_ALL_ACCESS );
if( hServiceTwdm == NULL )
{
dwRtn = GetLastError();
CloseServiceHandle( hServiceMgr );
printf( "OpenService() Faild %d ! n", dwRtn );
return 0;
}
else
{
printf( "OpenService() ok ! n" );
}
}
else
{
printf( "CrateService() ok ! n" );
}

// 啟動(dòng)驅(qū)動(dòng)程序,調(diào)用驅(qū)動(dòng)程序的 DriverEntry 函數(shù) 
bRtn = StartService( hServiceTwdm, NULL, NULL );
if( !bRtn )
{
dwRtn = GetLastError();
if( dwRtn != ERROR_IO_PENDING && dwRtn != ERROR_SERVICE_ALREADY_RUNNING )
{
printf( "StartService() Faild %d ! n", dwRtn );
CloseServiceHandle( hServiceTwdm );
CloseServiceHandle( hServiceMgr );
return 0;
}
else
{
if( dwRtn != ERROR_IO_PENDING )
{
printf( "StartService() Faild ERROR_IO_PENDING ! n");
}
else
{
printf( "StartService() Faild ERROR_SERVICE_ALREADY_RUNNING ! n");
}
}
} 

//測(cè)試驅(qū)動(dòng)程序
hWdm = CreateFile("\\.\Twdm1",
GENERIC_WRITE | GENERIC_READ,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
if( hWdm != INVALID_HANDLE_VALUE )
{
printf( "Open Driver Twdm ok ! n" );
}
else
{
printf( "Open Driver Twdm faild %d ! n", GetLastError() );
}
CloseHandle( hWdm );
CloseServiceHandle( hServiceTwdm );
CloseServiceHandle( hServiceMgr );

//這時(shí)候你可以通過注冊(cè)表,或其他查看符號(hào)連接的軟件驗(yàn)證。
printf( "按任意鍵 卸載驅(qū)動(dòng)程序 !n" );
getch();
//卸載驅(qū)動(dòng)程序。
DelSvr( "Twdm1" );
return 0;
}

//卸載驅(qū)動(dòng)程序。
void DelSvr( char * szSvrName )
{
SC_HANDLE hServiceMgr, hServiceTwdm;
SERVICE_STATUS SvrSta;
hServiceMgr = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS );
if( hServiceMgr == NULL )
{
printf( "DelSvr::OpenSCManager() Faild %d ! n", GetLastError() );
return;
}
else
{
printf( "DelSvr::OpenSCManager() ok ! n" );
}
hServiceTwdm = OpenService( hServiceMgr, TEXT(szSvrName), SERVICE_ALL_ACCESS );

if( hServiceTwdm == NULL )
{
CloseServiceHandle( hServiceMgr );
printf( "DelSvr::OpenService() Faild %d ! n", GetLastError() );
return;
}
else
{
printf( "DelSvr::OpenService() ok ! n" );
}
//停止驅(qū)動(dòng)程序,如果停止失敗,只有重新啟動(dòng)才能,再動(dòng)態(tài)加載。
if( !ControlService( hServiceTwdm, SERVICE_CONTROL_STOP , &SvrSta ) )
{
printf( "DelSvr::ControlService() Faild %d !n", GetLastError() );
}
else
{
printf( "DelSvr::ControlService() ok !n" );
}
//動(dòng)態(tài)卸載驅(qū)動(dòng)程序。
if( !DeleteService( hServiceTwdm ) )
{
printf( "DelSvr:eleteSrevice() Faild %d !n", GetLastError() );
}
else
{
printf( "DelSvr:eleteSrevice() ok !n" );
}
CloseServiceHandle( hServiceTwdm );
CloseServiceHandle( hServiceMgr );
return;
}

驅(qū)動(dòng)程序:驅(qū)動(dòng)程序很簡(jiǎn)單,
只有一個(gè)文件,實(shí)現(xiàn)了DriverEntry,DispatchCreate,DispatchClose,GpdUnload 四個(gè)函數(shù)。

#include <ntddk.h>

#define NT_DEVICE_NAME L"\Device\Twdm1"
#define DOS_DEVICE_NAME L"\DosDevices\Twdm1"

NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath );
NTSTATUS DispatchCreate(PDEVICE_OBJECT fdo, PIRP Irp);
NTSTATUS DispatchClose(PDEVICE_OBJECT fdo, PIRP Irp);
VOID GpdUnload(PDRIVER_OBJECT DriverObject);

//////////////////////
PDEVICE_OBJECT fdo;
BOOLEAN fSymbolicLink;


NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath )
{

//UNREFERENCED_PARAMETER (RegistryPath);
NTSTATUS status;
UNICODE_STRING ntDeviceName;
UNICODE_STRING win32DeviceName;

DbgPrint( "TWDM: DriverEntry for Twdm.sys ...... n" );
fSymbolicLink = FALSE;

//
// Create dispatch points for the IRPs.
//

DriverObject->MajorFunction[IRP_MJ_CREATE] = DispatchCreate;
DriverObject->MajorFunction[IRP_MJ_CLOSE] = DispatchClose;
//DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = GpdDispatch;
DriverObject->DriverUnload = GpdUnload;
//DriverObject->MajorFunction[IRP_MJ_PNP] = GpdDispatchPnp;
//DriverObject->MajorFunction[IRP_MJ_POWER] = GpdDispatchPower;
//DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = GpdDispatchSystemControl;
//DriverObject->DriverExtension->AddDevice = GpdAddDevice;

RtlInitUnicodeString(&ntDeviceName, NT_DEVICE_NAME);

//創(chuàng)建設(shè)備
status = IoCreateDevice(DriverObject,
0,
&ntDeviceName,
FILE_DEVICE_UNKNOWN,
FILE_DEVICE_SECURE_OPEN,
FALSE,
&fdo);

if (!NT_SUCCESS (status)) 
{
DbgPrint( "TWDM: IoCreateDevice() faild ! n" );
}
else
{
DbgPrint( "TWDM: IoCreateDevice() ok ! n" );
RtlInitUnicodeString(&win32DeviceName, DOS_DEVICE_NAME);

//創(chuàng)建符號(hào)連接
status = IoCreateSymbolicLink( &win32DeviceName, &ntDeviceName );
if (!NT_SUCCESS(status)) 
{
DbgPrint( "TWDM: IoCreateSymbolicLink() faild ! n" );
}
else
{
DbgPrint( "TWDM: IoCreateSymbolicLink() ok ! n" );
fSymbolicLink = TRUE; 
}
fdo->Flags &= ~DO_DEVICE_INITIALIZING;
}

if (!NT_SUCCESS(status)) 
{
if(fdo)
{
IoDeleteDevice(fdo);
}
if(fSymbolicLink)
{
IoDeleteSymbolicLink(&win32DeviceName);
}
}
return status;
}

NTSTATUS DispatchCreate(PDEVICE_OBJECT fdo, PIRP Irp)
{
NTSTATUS status;
DbgPrint( "TWDM: IRP_MJ_CREATE for Twdm.sys ...... n" );
status = STATUS_SUCCESS;
return status;
} // DispatchCreate

NTSTATUS DispatchClose(PDEVICE_OBJECT fdo, PIRP Irp)
{ // DispatchClose
NTSTATUS status;
DbgPrint( "TWDM: IRP_MJ_CLOSE for Twdm.sys ...... n" );
status = STATUS_SUCCESS;
return status;
} // DispatchClose

VOID GpdUnload(PDRIVER_OBJECT DriverObject)
{
UNICODE_STRING win32DeviceName;

DbgPrint( "TWDM: GpdUnload() for Twdm.sys ...... n" );

RtlInitUnicodeString(&win32DeviceName, DOS_DEVICE_NAME);
if(fdo)
{
IoDeleteDevice(fdo);
}
if(fSymbolicLink)
{
IoDeleteSymbolicLink(&win32DeviceName);
}
}



?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
婷婷成人综合网| 久久99精品久久久久| 日韩精品在线一区| jlzzjlzz欧美大全| 全部av―极品视觉盛宴亚洲| 国产精品护士白丝一区av| 91精品国产91久久久久久最新毛片| k8久久久一区二区三区| 久草中文综合在线| 亚洲图片欧美色图| 中文字幕免费不卡| 欧美精品在欧美一区二区少妇| 国产ts人妖一区二区| 亚洲成国产人片在线观看| 久久久久久**毛片大全| 欧美日韩国产在线播放网站| 国产成人精品亚洲日本在线桃色| 亚洲高清一区二区三区| 国产精品久久久久久久久免费丝袜 | 成人黄页在线观看| 日日噜噜夜夜狠狠视频欧美人| 国产精品素人一区二区| 欧美日韩国产bt| 91视频观看免费| 国产麻豆欧美日韩一区| 日韩国产欧美视频| 亚洲四区在线观看| 久久嫩草精品久久久精品| 欧美高清精品3d| 色婷婷综合久久久| 国产精品亚洲人在线观看| 日本中文字幕一区二区视频| 一区二区三区欧美亚洲| 国产精品蜜臀在线观看| 精品卡一卡二卡三卡四在线| 欧美午夜精品一区二区蜜桃| 91在线一区二区三区| 成熟亚洲日本毛茸茸凸凹| 美女视频一区在线观看| 性久久久久久久久久久久| 亚洲三级理论片| 国产精品久久久久久久久免费桃花| 亚洲精品在线观| 精品免费视频.| 欧美精品日韩一区| 欧美日韩国产小视频在线观看| 91在线你懂得| 成人福利视频在线| 成人免费视频视频| 成人一区二区三区在线观看| 国产福利一区在线| 国产风韵犹存在线视精品| 韩国v欧美v亚洲v日本v| 国产在线精品视频| 国产酒店精品激情| 国产成人在线视频网址| 久久99精品国产麻豆不卡| 久久爱www久久做| 久久成人av少妇免费| 久久99精品久久久| 国产美女在线观看一区| 激情都市一区二区| 国产精品一区二区免费不卡| 国产福利精品导航| 97se亚洲国产综合自在线| 91视视频在线观看入口直接观看www | 国产视频一区二区三区在线观看| 久久只精品国产| 久久久99精品久久| 国产精品国产三级国产有无不卡 | 欧美一区三区二区| 日韩午夜av电影| www激情久久| 国产精品福利一区二区三区| 亚洲免费伊人电影| 日韩和欧美一区二区三区| 老色鬼精品视频在线观看播放| 精彩视频一区二区三区| 国产91丝袜在线播放九色| www.日本不卡| 欧洲人成人精品| 精品久久久久久久人人人人传媒 | 91国在线观看| 欧美精品久久一区| 国产亚洲精品7777| 一区二区三区av电影| 久久疯狂做爰流白浆xx| 国产成人在线免费| 色婷婷av一区二区三区之一色屋| 欧美美女直播网站| 2014亚洲片线观看视频免费| 国产精品麻豆网站| 亚洲福利视频一区| 国产高清亚洲一区| 欧美三级视频在线观看| xfplay精品久久| 亚洲视频精选在线| 美女久久久精品| 91小视频在线免费看| 日韩一二三区不卡| 一区在线观看视频| 久久精品理论片| 色就色 综合激情| 久久久午夜电影| 亚洲不卡av一区二区三区| 狠狠色丁香久久婷婷综合_中 | 欧美一区二区三区日韩视频| 国产午夜精品一区二区| 视频一区欧美日韩| 不卡影院免费观看| 精品日韩一区二区| 亚洲午夜一区二区| 懂色av噜噜一区二区三区av| 制服丝袜中文字幕亚洲| 136国产福利精品导航| 韩国一区二区三区| 91久久免费观看| 精品久久人人做人人爰| 婷婷开心激情综合| www.性欧美| 久久精品视频在线看| 日本系列欧美系列| 在线视频欧美精品| 一区免费观看视频| 国产一区二区在线影院| 欧美日韩电影在线| 一区二区三区在线观看动漫 | 日韩欧美视频一区| 在线中文字幕一区二区| 久久综合九色综合欧美98 | 性做久久久久久免费观看| 国产黑丝在线一区二区三区| 88在线观看91蜜桃国自产| 亚洲男帅同性gay1069| 国产成人精品午夜视频免费| 日韩一级完整毛片| 视频一区二区欧美| 色婷婷精品大在线视频| 国产精品进线69影院| 成人av第一页| 日本一区二区免费在线观看视频| 久久国产精品99久久久久久老狼| 日韩欧美国产成人一区二区| 午夜精品成人在线| 欧美日韩中文字幕一区| 一区二区三区欧美| 色一情一乱一乱一91av| 国产精品久久一卡二卡| jlzzjlzz亚洲女人18| 国产色一区二区| 成人一区二区三区视频| 国产精品久久久久久久久免费相片| 国产91在线观看丝袜| 国产精品视频一区二区三区不卡| 国产福利视频一区二区三区| 久久久久久久久久久黄色| 国产一区视频网站| 日本一区二区三区电影| 成人国产在线观看| 自拍偷自拍亚洲精品播放| 日本韩国欧美在线| 亚洲国产欧美在线人成| 91无套直看片红桃| 中文字幕一区二区三区在线播放| 99精品欧美一区二区三区小说| 亚洲视频一二三| 欧美综合亚洲图片综合区| 婷婷六月综合网| 日韩免费福利电影在线观看| 国产伦精一区二区三区| 日本一区二区不卡视频| 成人涩涩免费视频| 亚洲在线一区二区三区| 欧美一级欧美一级在线播放| 久久99精品国产.久久久久| 中文欧美字幕免费| 91久久精品国产91性色tv| 午夜精品福利一区二区三区av | 国产日韩欧美a| 99在线精品视频| 亚洲国产一区二区a毛片| 日韩免费高清电影| 97精品电影院| 亚洲国产日韩a在线播放性色| 3d成人h动漫网站入口| 国产a视频精品免费观看| 亚洲欧美日韩久久精品| 欧美一三区三区四区免费在线看| 青青草97国产精品免费观看无弹窗版| 亚洲精品一区二区三区影院| 91在线免费播放| 久久电影国产免费久久电影| 亚洲欧洲日产国码二区| 欧美一区二区私人影院日本| 风流少妇一区二区| 亚洲国产cao| 亚洲美女免费视频| 精品国产乱码久久久久久免费| 91亚洲精品久久久蜜桃| 精品亚洲国产成人av制服丝袜 |