青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

沒畫完的畫

喂馬 劈柴 BBQ~
posts - 37, comments - 55, trackbacks - 0, articles - 0
  C++博客 ::  :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

關于 TrueCrypt 續(xù)集

Posted on 2008-09-04 17:04 沒畫完的畫 閱讀(1217) 評論(0)  編輯 收藏 引用 所屬分類: Windows Driver

2008.09.04

此篇是(關于 TrueCrypt)的續(xù)集, 在看此篇前先看上篇,不然會很危險

從 DriverEntry 看起

NTSTATUS
DriverEntry (
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
{
// 讀取注冊時使用的變量
UNICODE_STRING parameter_path;
RTL_QUERY_REGISTRY_TABLE query_table[2];
ULONG n_devices;

NTSTATUS status;
UNICODE_STRING device_dir_name;
OBJECT_ATTRIBUTES object_attributes;
ULONG n;
USHORT n_created_devices;
// #define PARAMETER_KEY L"\\Parameters"
parameter_path.Length = 0;
parameter_path.MaximumLength = RegistryPath->Length + sizeof(PARAMETER_KEY);
parameter_path.Buffer = (PWSTR) ExAllocatePool(PagedPool, parameter_path.MaximumLength);
if (parameter_path.Buffer == NULL)
return STATUS_INSUFFICIENT_RESOURCES;
RtlCopyUnicodeString(&parameter_path, RegistryPath);
RtlAppendUnicodeToString(&parameter_path, PARAMETER_KEY);
RtlZeroMemory(&query_table[0], sizeof(query_table));
query_table[0].Flags = RTL_QUERY_REGISTRY_DIRECT | RTL_QUERY_REGISTRY_REQUIRED;
query_table[0].Name = NUMBEROFDEVICES_VALUE; // #define NUMBEROFDEVICES_VALUE L"NumberOfDevices"
query_table[0].EntryContext = &n_devices;
status = RtlQueryRegistryValues(
RTL_REGISTRY_ABSOLUTE,
parameter_path.Buffer,
&query_table[0],
NULL,
NULL
);
ExFreePool(parameter_path.Buffer);
if (!NT_SUCCESS(status))
{
// 如果讀取注冊表失敗, 則默認為 4個
// #define DEFAULT_NUMBEROFDEVICES 4
KdPrint(("FileDisk: Query registry failed, using default values.\n"));
n_devices = DEFAULT_NUMBEROFDEVICES;
}
// 下面的代碼完成在設備目錄中創(chuàng)建對應的目錄
/*
* #define DEVICE_BASE_NAME _T("\\FileDisk")
* #define DEVICE_DIR_NAME _T("\\Device") DEVICE_BASE_NAME
* #define DEVICE_NAME_PREFIX DEVICE_DIR_NAME DEVICE_BASE_NAME
*/
RtlInitUnicodeString(&device_dir_name, DEVICE_DIR_NAME);
InitializeObjectAttributes(
&object_attributes,
&device_dir_name,
OBJ_PERMANENT,
NULL,
NULL
);
status = ZwCreateDirectoryObject(
&dir_handle,
DIRECTORY_ALL_ACCESS,
&object_attributes
);
if (!NT_SUCCESS(status))
{
return status;
}
// 將上面創(chuàng)建的設備目錄屬性設置為 臨時
ZwMakeTemporaryObject(dir_handle);
for (n = 0, n_created_devices = 0; n < n_devices; n++)
{
status = FileDiskCreateDevice(DriverObject, n, FILE_DEVICE_DISK);
if (NT_SUCCESS(status))
{
n_created_devices++;
}
}
for (n = 0; n < n_devices; n++)
{
status = FileDiskCreateDevice(DriverObject, n, FILE_DEVICE_CD_ROM);
if (NT_SUCCESS(status))
{
n_created_devices++;
}
}
if (n_created_devices == 0)
{
ZwClose(dir_handle);
return status;
}
DriverObject->MajorFunction[IRP_MJ_CREATE] = FileDiskCreateClose;
DriverObject->MajorFunction[IRP_MJ_CLOSE] = FileDiskCreateClose;
DriverObject->MajorFunction[IRP_MJ_READ] = FileDiskReadWrite;
DriverObject->MajorFunction[IRP_MJ_WRITE] = FileDiskReadWrite;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = FileDiskDeviceControl;
DriverObject->DriverUnload = FileDiskUnload;
return STATUS_SUCCESS;
}


DriverEntry() 做的大概東西就是:
1、讀取注冊表的
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\FileDisk\Parameters\
下面的 NumberOfDevices 這個值
2、如果指定的設備目錄(\\FileDisk\\Device)不存在, 創(chuàng)建對應的設備目錄
3、然后調(diào)用 IoCreateDevice() 在創(chuàng)建的設備目錄下創(chuàng)建設備
4、每創(chuàng)建一個設備都同時創(chuàng)建一個線程,具體用來做什么,正在摸索中.........

問題1: RTL_QUERY_REGISTRY_TABLE query_table[2]; // 這里為何要定義為 2?
-- 未解決,先看下在應用層讀取注冊表是如何做的先!

問題2: 將上面創(chuàng)建的設備目錄屬性設置為 臨時 ZwMakeTemporaryObject(dir_handle);
-- 未解決,設置屬性為臨時的作用是? 重啟系統(tǒng)時這個設備目錄會不存在? 如果不設置這個屬性,重啟系統(tǒng)后還存在?

問題3: 為何在 DriverEntry() 里就用 IoCreateDevice() 創(chuàng)建設備?不是等應用層運行用 mount 后才創(chuàng)建設備的嗎?
-- 未解決,先郁悶一下!!!!

問題4: 關于[設備目錄]的疑問,[設備目錄]是個什么東東?……
-- 未解決,在N久前,好像看過這樣一篇文章,講的是 Windows 下面所有內(nèi)核對象都是采用對象管理 之類的
有空再找下這方面的詳細資料!!! 再郁悶一下!!!

問題5、FileDiskCreateDevice() 函數(shù)中在調(diào)用了 IoCreateDevice() 創(chuàng)建設備后
設置了 device_object 的屬性, 這些語句的作用是什么?
device_object->Flags |= DO_DIRECT_IO;

device_extension = (PDEVICE_EXTENSION) device_object->DeviceExtension;

device_extension->media_in_device = FALSE;

if (DeviceType == FILE_DEVICE_CD_ROM)
{
device_object->Characteristics |= FILE_READ_ONLY_DEVICE;
device_extension->read_only = TRUE;
}


另外奇怪的是, 為何設置 device_object 的屬性后,不需要調(diào) update() 之類的函數(shù),
重新設置的屬性在設置完后就生效????

問題6、FileDisk.sys 在 DriverEntry() 就創(chuàng)建了四個設備,四條內(nèi)核線程,導致 mount 最多就 4 個設備,
為何不做成可以動態(tài)加載N個設備?(因為我見過其它類似于 TrueCrypt 的工具,是可以動態(tài)Mount N個分區(qū)的)

接下來,應該先了解下 驅(qū)動與應用層的通信方式是怎樣的先!Google 一下

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区二区三区777| 国语自产精品视频在线看一大j8 | 欧美高清在线视频| 久久在精品线影院精品国产| 久久久青草青青国产亚洲免观| 欧美在线播放| 亚洲成人在线网| 亚洲精品日日夜夜| 亚洲综合成人婷婷小说| 欧美有码视频| 欧美日韩精品伦理作品在线免费观看| 欧美日韩国产综合新一区| 国产精品国产自产拍高清av| 国语自产偷拍精品视频偷| 日韩亚洲精品视频| 久久亚洲风情| 国产精品99久久久久久人| 久久看片网站| 国产欧美 在线欧美| 一本一本久久a久久精品综合妖精| 亚洲欧美综合一区| 日韩天堂在线观看| 美女国产一区| 狠狠色丁香婷综合久久| 亚洲欧美综合国产精品一区| 亚洲高清自拍| 免费国产一区二区| 影音先锋日韩资源| 欧美在线高清视频| 一本一本久久| 亚洲高清不卡一区| 久久这里只有| 在线看片欧美| 久久久综合网站| 久久精品一区二区三区不卡| 欧美亚州一区二区三区 | 久久久www免费人成黑人精品| 国产精品热久久久久夜色精品三区| 亚洲精品久久久一区二区三区| 欧美成人国产va精品日本一级| 久久久久久久久久久成人| 亚洲第一网站免费视频| 亚洲激情电影在线| 国产精品老牛| 欧美激情偷拍| 国产精品一级二级三级| 六月婷婷一区| 国产精品成人免费精品自在线观看 | 亚洲小说区图片区| 午夜精品视频在线| 亚洲欧洲一区二区在线播放| 亚洲已满18点击进入久久| 激情一区二区| 亚洲一区二区在线免费观看视频| 国产在线不卡精品| 日韩亚洲视频| 亚洲欧洲另类| 久久久综合视频| 欧美一级夜夜爽| 欧美日韩成人| 亚洲激情一区| 亚洲二区在线| 国产精品高清一区二区三区| 亚洲午夜精品一区二区三区他趣| 99re6这里只有精品| 夜夜爽www精品| 狠狠色狠色综合曰曰| 一区二区免费在线视频| 亚洲国产99| 久久久91精品国产一区二区三区| 亚洲国产老妈| 久久人人九九| 农夫在线精品视频免费观看| 国产一区二区三区四区hd| 亚洲尤物视频在线| 午夜精品999| 国产视频在线一区二区| 欧美中文字幕不卡| 猛男gaygay欧美视频| 亚洲国产欧美日韩| 欧美国产欧美亚洲国产日韩mv天天看完整 | 麻豆9191精品国产| 欧美91视频| 一本色道久久综合亚洲91| 欧美日韩国产限制| 亚洲高清在线观看一区| 欧美激情第二页| 亚洲精品资源美女情侣酒店| 国产精品av一区二区| 久久久久女教师免费一区| 亚洲欧洲综合| 久久久久青草大香线综合精品| 亚洲经典一区| 国产综合自拍| 国产精品视区| 欧美大片专区| 久久久伊人欧美| 亚洲一区999| 一区二区三区日韩精品| 一区二区成人精品| 久久精品夜色噜噜亚洲a∨| 欧美日韩一区二区三区在线观看免| 久久中文字幕一区| 国产在线拍揄自揄视频不卡99| 老鸭窝91久久精品色噜噜导演| 亚洲欧美不卡| 欧美日韩亚洲综合一区| 欧美激情视频给我| 亚洲精品精选| 国产精品成人播放| 亚洲综合精品| 羞羞色国产精品| 欧美天天影院| 99日韩精品| 日韩视频亚洲视频| 国产一区日韩二区欧美三区| 一区二区三区四区五区在线| 亚洲国产精品成人综合| 欧美日韩不卡在线| 亚洲精品在线观看免费| 亚洲综合激情| 一区二区在线观看视频| 久久午夜羞羞影院免费观看| 亚洲国产精品99久久久久久久久| 久久国产精品一区二区三区四区| 亚洲免费播放| 久久精品视频在线免费观看| 亚洲国产婷婷香蕉久久久久久99 | 久久久久久久久久久一区| 久久精品国产视频| 免费看的黄色欧美网站| 国产精品99一区| 1204国产成人精品视频| 99视频有精品| 蜜桃久久av一区| 午夜精品久久久| 欧美日韩国产亚洲一区 | 亚洲欧美日韩一区二区在线| 亚洲一区二区伦理| 欧美国产先锋| 午夜欧美电影在线观看| 欧美成人精品不卡视频在线观看 | 国产精品a久久久久久| 黄色在线一区| 欧美伊人精品成人久久综合97 | 1000精品久久久久久久久| 亚洲欧美日韩精品久久久| 亚洲茄子视频| 欧美美女喷水视频| 亚洲高清不卡在线观看| 久久国产成人| 欧美黑人在线观看| 亚洲伊人网站| 国产欧美一区二区精品仙草咪| 日韩小视频在线观看| 亚洲国产一区二区三区青草影视| 久久久999精品视频| 国产综合色精品一区二区三区| 欧美亚洲一级| 欧美在线亚洲一区| 在线播放一区| 亚洲高清在线观看| 欧美激情一区在线观看| 在线视频亚洲| 亚洲欧美日韩一区在线| 国产农村妇女精品| 麻豆国产精品777777在线| 欧美二区不卡| 久久精品亚洲一区二区| 久久九九国产精品| 亚洲破处大片| 亚洲夜间福利| 亚洲狼人精品一区二区三区| 在线综合欧美| 亚洲精品一区二区三区av| 一本高清dvd不卡在线观看| 国产欧美一区二区三区久久人妖| 欧美高清视频一区二区| 国产精品午夜在线观看| 亚洲破处大片| 亚洲国产精品成人综合| 性久久久久久久| 午夜视频在线观看一区二区| 欧美国产成人在线| 快射av在线播放一区| 国产精品午夜视频| 亚洲小视频在线| 亚洲图片欧美午夜| 欧美日韩国产色综合一二三四| 麻豆精品在线观看| 伊人春色精品| 狂野欧美激情性xxxx欧美| 美女啪啪无遮挡免费久久网站| 国产伦精品一区二区三区在线观看| 日韩一级大片在线| 亚洲欧美久久| 国产在线视频欧美一区二区三区| 欧美影片第一页| 欧美视频一区二区| 亚洲久久一区二区|