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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? devctl.c

?? FSD file system driver
?? C
字號:
/* 
 * FFS File System Driver for Windows
 *
 * devctl.c
 *
 * 2004.5.6 ~
 *
 * Lee Jae-Hong, http://www.pyrasis.com
 *
 * See License.txt
 *
 */

#include "ntifs.h"
#include "ffsdrv.h"

/* Globals */

extern PFFS_GLOBAL FFSGlobal;


/* Definitions */

NTSTATUS
FFSDeviceControlCompletion(
	IN PDEVICE_OBJECT   DeviceObject,
	IN PIRP             Irp,
	IN PVOID            Context);


#ifdef ALLOC_PRAGMA
//#pragma alloc_text(PAGE, FFSDeviceControlCompletion)
#pragma alloc_text(PAGE, FFSDeviceControl)
#pragma alloc_text(PAGE, FFSDeviceControlNormal)
#if FFS_UNLOAD
#pragma alloc_text(PAGE, FFSPrepareToUnload)
#endif
#endif


NTSTATUS
FFSDeviceControlCompletion(
	IN PDEVICE_OBJECT   DeviceObject,
	IN PIRP             Irp,
	IN PVOID            Context)
{
	if (Irp->PendingReturned)
	{
		IoMarkIrpPending(Irp);
	}

	return STATUS_SUCCESS;
}


NTSTATUS
FFSDeviceControlNormal(
	IN PFFS_IRP_CONTEXT IrpContext)
{
	PDEVICE_OBJECT  DeviceObject;
	BOOLEAN         CompleteRequest = TRUE;
	NTSTATUS        Status = STATUS_UNSUCCESSFUL;

	PFFS_VCB        Vcb;

	PIRP            Irp;
	PIO_STACK_LOCATION IrpSp;
	PIO_STACK_LOCATION NextIrpSp;

	PDEVICE_OBJECT  TargetDeviceObject;

	__try
	{
		ASSERT(IrpContext != NULL);

		ASSERT((IrpContext->Identifier.Type == FFSICX) &&
				(IrpContext->Identifier.Size == sizeof(FFS_IRP_CONTEXT)));

		CompleteRequest = TRUE;

		DeviceObject = IrpContext->DeviceObject;

		if (DeviceObject == FFSGlobal->DeviceObject)
		{
			Status = STATUS_INVALID_DEVICE_REQUEST;

			__leave;
		}

		Irp = IrpContext->Irp;
		IrpSp = IoGetCurrentIrpStackLocation(Irp);

		Vcb = (PFFS_VCB)IrpSp->FileObject->FsContext;

		if (!((Vcb) && (Vcb->Identifier.Type == FFSVCB) &&
					(Vcb->Identifier.Size == sizeof(FFS_VCB))
		    )
		  )
		{
			Status = STATUS_INVALID_PARAMETER;
			__leave;
		}

		TargetDeviceObject = Vcb->TargetDeviceObject;

		//
		// Pass on the IOCTL to the driver below
		//

		CompleteRequest = FALSE;

		NextIrpSp = IoGetNextIrpStackLocation(Irp);
		*NextIrpSp = *IrpSp;

		IoSetCompletionRoutine(
				Irp,
				FFSDeviceControlCompletion,
				NULL,
				FALSE,
				TRUE,
				TRUE);

		Status = IoCallDriver(TargetDeviceObject, Irp);
	}

	__finally
	{
		if (!IrpContext->ExceptionInProgress)
		{
			if (IrpContext)
			{
				if (!CompleteRequest)
				{
					IrpContext->Irp = NULL;
				}

				FFSCompleteIrpContext(IrpContext, Status);
			}
		}
	}

	return Status;
}


#if FFS_UNLOAD

NTSTATUS
FFSPrepareToUnload(
	IN PFFS_IRP_CONTEXT IrpContext)
{
	PDEVICE_OBJECT  DeviceObject;
	NTSTATUS        Status = STATUS_UNSUCCESSFUL;
	BOOLEAN         GlobalDataResourceAcquired = FALSE;

	__try
	{
		ASSERT(IrpContext != NULL);

		ASSERT((IrpContext->Identifier.Type == FFSICX) &&
				(IrpContext->Identifier.Size == sizeof(FFS_IRP_CONTEXT)));

		DeviceObject = IrpContext->DeviceObject;

		if (DeviceObject != FFSGlobal->DeviceObject)
		{
			Status = STATUS_INVALID_DEVICE_REQUEST;
			__leave;
		}

		ExAcquireResourceExclusiveLite(
				&FFSGlobal->Resource,
				TRUE);

		GlobalDataResourceAcquired = TRUE;

		if (FlagOn(FFSGlobal->Flags, FFS_UNLOAD_PENDING))
		{
			FFSPrint((DBG_ERROR, "FFSPrepareUnload:  Already ready to unload.\n"));

			Status = STATUS_ACCESS_DENIED;

			__leave;
		}

		{
			PFFS_VCB                Vcb;
			PLIST_ENTRY             ListEntry;

			ListEntry = FFSGlobal->VcbList.Flink;

			while (ListEntry != &(FFSGlobal->VcbList))
			{
				Vcb = CONTAINING_RECORD(ListEntry, FFS_VCB, Next);
				ListEntry = ListEntry->Flink;

				if (Vcb && (!Vcb->ReferenceCount) &&
						IsFlagOn(Vcb->Flags, VCB_DISMOUNT_PENDING))
				{
					FFSRemoveVcb(Vcb);
					FFSClearVpbFlag(Vcb->Vpb, VPB_MOUNTED);

					FFSFreeVcb(Vcb);
				}
			}
		}

		if (!IsListEmpty(&(FFSGlobal->VcbList)))
		{

			FFSPrint((DBG_ERROR, "FFSPrepareUnload:  Mounted volumes exists.\n"));

			Status = STATUS_ACCESS_DENIED;

			__leave;
		}

		IoUnregisterFileSystem(FFSGlobal->DeviceObject);

		FFSGlobal->DriverObject->DriverUnload = DriverUnload;

		SetFlag(FFSGlobal->Flags ,FFS_UNLOAD_PENDING);

		FFSPrint((DBG_INFO, "FFSPrepareToUnload: Driver is ready to unload.\n"));

		Status = STATUS_SUCCESS;
	}
	__finally
	{
		if (GlobalDataResourceAcquired)
		{
			ExReleaseResourceForThreadLite(
					&FFSGlobal->Resource,
					ExGetCurrentResourceThread());
		}

		if (!IrpContext->ExceptionInProgress)
		{
			FFSCompleteIrpContext(IrpContext, Status);
		}
	}

	return Status;
}

#endif


NTSTATUS
FFSDeviceControl(
	IN PFFS_IRP_CONTEXT IrpContext)
{
	PIRP                Irp;
	PIO_STACK_LOCATION  IoStackLocation;
	ULONG               IoControlCode;
	NTSTATUS            Status;

	ASSERT(IrpContext);

	ASSERT((IrpContext->Identifier.Type == FFSICX) &&
			(IrpContext->Identifier.Size == sizeof(FFS_IRP_CONTEXT)));

	Irp = IrpContext->Irp;

	IoStackLocation = IoGetCurrentIrpStackLocation(Irp);

	IoControlCode =
		IoStackLocation->Parameters.DeviceIoControl.IoControlCode;

	switch (IoControlCode)
	{
#if FFS_UNLOAD
		case IOCTL_PREPARE_TO_UNLOAD:
			Status = FFSPrepareToUnload(IrpContext);
			break;
#endif

		case IOCTL_SELECT_BSD_PARTITION:
			Status = FFSSelectBSDPartition(IrpContext);
			break;

		default:
			Status = FFSDeviceControlNormal(IrpContext);
	}

	return Status;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜久久久久久久久久久| 久久国内精品自在自线400部| 日韩一区精品视频| 成av人片一区二区| 精品免费日韩av| 亚洲一区二区视频在线| 成人精品鲁一区一区二区| 欧美成人女星排名| 亚洲成国产人片在线观看| 成人黄色777网| 国产三级精品三级| 久久国产精品区| 欧美久久一区二区| 一区二区理论电影在线观看| 暴力调教一区二区三区| 久久久久久久电影| 国产一区二区在线看| 欧美日韩国产高清一区二区| 亚洲一区二区在线免费观看视频| 91尤物视频在线观看| 欧美国产亚洲另类动漫| 国产激情一区二区三区桃花岛亚洲| 日韩欧美高清在线| 精品一区二区日韩| 欧美一级日韩一级| 日本不卡中文字幕| 欧美一级高清片在线观看| 日本欧美在线看| 欧美xxxxxxxx| 国产一区二区三区四区五区入口| 欧美成人vr18sexvr| 另类调教123区| 久久精品视频一区二区| 国产精品99久久久久久久女警| 国产三级精品三级在线专区| 懂色av中文一区二区三区| 国产精品三级视频| 92国产精品观看| 亚洲午夜在线观看视频在线| 6080日韩午夜伦伦午夜伦| 日本vs亚洲vs韩国一区三区二区 | 久久久久久久电影| 高清beeg欧美| 国产精品国模大尺度视频| av电影天堂一区二区在线观看| 18成人在线观看| 欧美丝袜自拍制服另类| 天天色天天操综合| 久久久久久久久久久久久久久99 | 欧美日韩视频在线第一区| 亚洲成av人片在线观看| 91精品欧美福利在线观看| 国产一区二区三区高清播放| 欧美国产精品中文字幕| 91高清视频在线| 久久精品国产一区二区三 | 国产精品成人免费在线| 在线观看成人免费视频| 美日韩一区二区| 国产天堂亚洲国产碰碰| 欧洲生活片亚洲生活在线观看| 热久久久久久久| 国产精品国产三级国产普通话99 | 精品一区二区av| 自拍偷拍欧美精品| 日韩欧美黄色影院| 成人av集中营| 免费美女久久99| 亚洲免费av观看| 久久久影院官网| 欧美日韩国产片| 成人激情动漫在线观看| 奇米色777欧美一区二区| 中文字幕视频一区二区三区久| 正在播放一区二区| 91原创在线视频| 国产成人自拍高清视频在线免费播放| 亚洲一级二级三级在线免费观看| 欧美精品一区二区在线观看| 欧美日韩中文字幕精品| 国产+成+人+亚洲欧洲自线| 石原莉奈在线亚洲三区| 亚洲女厕所小便bbb| 欧美激情一区二区在线| 日韩欧美中文字幕精品| 欧美性生活大片视频| 波多野结衣在线aⅴ中文字幕不卡| 日本不卡一区二区三区高清视频| 亚洲精品国久久99热| 亚洲欧洲日产国码二区| www欧美成人18+| 欧美一区二区三区思思人| 欧美自拍偷拍一区| 色婷婷综合激情| 成人午夜av电影| 国产成人综合视频| 国产精品一二三区| 国产一区视频在线看| 极品销魂美女一区二区三区| 三级久久三级久久久| 亚洲成在人线免费| 亚洲国产另类av| 亚洲国产精品嫩草影院| 洋洋成人永久网站入口| 亚洲欧美日韩久久| 亚洲免费观看高清完整| 亚洲欧美色一区| 日韩伦理av电影| 国产精品福利一区二区三区| 国产午夜精品在线观看| 精品播放一区二区| 久久久一区二区三区| 欧美激情一区二区三区全黄| 国产欧美日本一区视频| 国产精品激情偷乱一区二区∴| 国产精品免费观看视频| 综合激情成人伊人| 一级做a爱片久久| 亚洲一区视频在线观看视频| 午夜精品成人在线| 麻豆精品视频在线观看免费| 国产一区二区在线视频| 成人小视频免费观看| 91麻豆成人久久精品二区三区| 91久久国产最好的精华液| 欧美亚洲国产一区二区三区va| 欧美三电影在线| 日韩一区和二区| 久久久三级国产网站| 中文字幕二三区不卡| 亚洲美女免费在线| 亚洲第四色夜色| 久久不见久久见免费视频1| 国产成人免费在线| 在线亚洲一区观看| 日韩欧美国产系列| 国产欧美一区二区三区鸳鸯浴| 亚洲色图视频免费播放| 亚洲高清视频在线| 国产精品亚洲视频| 日本丶国产丶欧美色综合| 欧美一级生活片| 国产精品乱人伦| 日韩高清在线电影| 国产69精品一区二区亚洲孕妇| 一本一道久久a久久精品综合蜜臀| 欧美精品在线观看播放| 国产日韩欧美一区二区三区乱码| 亚洲欧美日韩国产手机在线 | 91香蕉视频mp4| 777久久久精品| 日本一区二区动态图| 亚洲电影你懂得| 国产宾馆实践打屁股91| 欧洲精品视频在线观看| 精品国产91久久久久久久妲己| **性色生活片久久毛片| 久久99在线观看| 91精彩视频在线观看| 日韩精品一区二区三区四区视频| 亚洲婷婷综合色高清在线| 日本不卡123| 91成人免费电影| 欧美—级在线免费片| 日本在线不卡视频| 色噜噜狠狠色综合中国| 欧美精品一区二区三区蜜桃| 亚洲成a人片在线不卡一二三区| 国产99久久久久久免费看农村| 欧美精品久久99久久在免费线 | 奇米精品一区二区三区在线观看 | www.欧美色图| 久久夜色精品国产欧美乱极品| 亚洲国产日韩一区二区| 9i在线看片成人免费| 国产亚洲一二三区| 精品写真视频在线观看| 在线不卡一区二区| 一区二区三区精品在线| 99久久精品国产一区| 国产亚洲欧美色| 六月婷婷色综合| 日韩一级免费一区| 石原莉奈在线亚洲三区| 欧美精品在线观看播放| 亚洲成av人片在线观看| 欧美人伦禁忌dvd放荡欲情| 亚洲蜜桃精久久久久久久| 91丨porny丨最新| 亚洲欧洲精品天堂一级| 99久久综合国产精品| 国产精品女主播在线观看| 大桥未久av一区二区三区中文| 国产亚洲人成网站| 国产·精品毛片| 日韩伦理av电影| 欧美色成人综合| 蜜桃一区二区三区在线观看| 欧美岛国在线观看| 国产69精品久久99不卡|