Zhujnt
驱动牛犊
驱动牛犊
  • 注册日期2004-02-16
  • 最后登录2004-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1557回复:3

*为什么会崩*

楼主#
更多 发布于:2004-04-01 17:49
FileDisk 中的 VirtualdiskOpenFile(* * *)


NTSTATUS ntStatus;
ANSI_STRING aFilePath;
UNICODE_STRING uFilePath;
PFILE_INFORMATION pFileInfo;
OBJECT_ATTRIBUTES Obj_attribute;
PIO_STACK_LOCATION pIrpStack;
IO_STATUS_BLOCK IoStatus;


pIrpStack = IoGetCurrentIrpStackLocation(pIrp);

pFileInfo = (PFILE_INFORMATION)pIrp->AssociatedIrp.SystemBuffer;

//First ANSI_STRING
aFilePath.Length = pFileInfo->PathLength;
aFilePath.MaximumLength = pFileInfo->PathLength;
aFilePath.Buffer = pFileInfo->PathName;

DbgPrint("the filepathbuffer is %s\n", aFilePath.Buffer);

//Change it into UNICODE_STRING
ntStatus = RtlAnsiStringToUnicodeString(
&uFilePath,
&aFilePath,
FALSE
);

if( !NT_SUCCESS(ntStatus) )
{
DbgPrint("fail to convert the ansi to unicode !\n");

pIrp->IoStatus.Status = ntStatus;
pIrp->IoStatus.Information = 0;
return ntStatus;
}

DbgPrint("the file path is %S, %u, %u \n", uFilePath.Buffer, uFilePath.Length, uFilePath.MaximumLength);

InitializeObjectAttributes(
&Obj_attribute,
&uFilePath,
OBJ_CASE_INSENSITIVE,
NULL,
NULL
);


ntStatus = ZwCreateFile(
&pDeviceExt->hFile,
GENERIC_READ | GENERIC_WRITE,
&Obj_attribute,
&IoStatus,
NULL,
FILE_ATTRIBUTE_NORMAL,
0,
FILE_OPEN,
        FILE_NON_DIRECTORY_FILE |
FILE_RANDOM_ACCESS |
FILE_NO_INTERMEDIATE_BUFFERING |
FILE_SYNCHRONOUS_IO_NONALERT,
NULL,
0
);

RtlFreeUnicodeString(&uFilePath);

if( !NT_SUCCESS(ntStatus) )
{
DbgPrint("Fail to open file !\n");
return ntStatus;
}


//To get the size of the FileVirtualdisk
ntStatus = ZwQueryInformationFile(
pDeviceExt->hFile,
&IoStatus,
&pDeviceExt->sFile,
sizeof(FILE_STANDARD_INFORMATION),
FileStandardInformation
);


if( !NT_SUCCESS(ntStatus) )
{
DbgPrint("Fail to get the filesize\n");
ZwClose(pDeviceExt->hFile);
return ntStatus;
}

DbgPrint("get the filesize is %u.\n",pDeviceExt->sFile.EndOfFile.QuadPart);

pDeviceExt->MediaInDevice = TRUE;

pIrp->IoStatus.Status = STATUS_SUCCESS;
    pIrp->IoStatus.Information = 0;

return ntStatus;
*学*
qwdrv
驱动大牛
驱动大牛
  • 注册日期2004-03-19
  • 最后登录2005-12-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-01 20:55
是不是重入了
Zhujnt
驱动牛犊
驱动牛犊
  • 注册日期2004-02-16
  • 最后登录2004-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-02 08:14
当然没了
*学*
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地板#
发布于:2004-04-02 09:05
你在哪个地方崩溃的???
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
游客

返回顶部