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

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

?? filedisk.c

?? 網絡上流傳的filedisk源碼+加密代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*
    This is a virtual disk driver for Windows NT/2000/XP that uses
    one or more files to emulate physical disks, release 7.
    Copyright (C) 1999, 2000, 2001, 2002 Bo Brant閚.
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

    The GNU General Public License is also available from:
    http://www.gnu.org/copyleft/gpl.html

    Please send comments, corrections and contributions to bosse@acc.umu.se

    The most recent version of this program is available from:
    http://www.acc.umu.se/~bosse/

    Revision history:

    7. 2002-02-28
       Added support for CD-images.

    6. 2002-01-21
       Added support for impersonation so that FileDisk images can be stored
       on network drives.

    5. 2002-01-18
       Updated for Windows XP by Robert A. Rose.

    4. 2001-07-08
       Formating to FAT on Windows 2000 now works.

    3. 2001-05-14
       Corrected the error messages from the usermode control application.

    2. 2000-03-15
       Added handling of IOCTL_DISK_CHECK_VERIFY to make the driver work on
       Windows 2000 (tested on beta 3, build 2031). Formating to FAT still
       doesn't work but formating to NTFS does.

    1. 1999-06-09
       Initial release.
*/

#include <ntddk.h>
#include <ntdddisk.h>
#include <ntddcdrm.h>
#include <ntverp.h>

//
// We include some stuff from newer DDK:s here so that one
// version of the driver for all versions of Windows can
// be compiled with the Windows NT 4.0 DDK.
//
#if (VER_PRODUCTBUILD < 2195)

#define FILE_DEVICE_MASS_STORAGE            0x0000002d
#define IOCTL_STORAGE_CHECK_VERIFY2         CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_ANY_ACCESS)

#endif

#if (VER_PRODUCTBUILD < 2600)

#define IOCTL_DISK_GET_PARTITION_INFO_EX    CTL_CODE(IOCTL_DISK_BASE, 0x0012, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DISK_GET_LENGTH_INFO          CTL_CODE(IOCTL_DISK_BASE, 0x0017, METHOD_BUFFERED, FILE_READ_ACCESS)

typedef enum _PARTITION_STYLE {
    PARTITION_STYLE_MBR,
    PARTITION_STYLE_GPT
} PARTITION_STYLE;

typedef unsigned __int64 ULONG64, *PULONG64;

typedef struct _PARTITION_INFORMATION_MBR {
    UCHAR   PartitionType;
    BOOLEAN BootIndicator;
    BOOLEAN RecognizedPartition;
    ULONG   HiddenSectors;
} PARTITION_INFORMATION_MBR, *PPARTITION_INFORMATION_MBR;

typedef struct _PARTITION_INFORMATION_GPT {
    GUID    PartitionType;
    GUID    PartitionId;
    ULONG64 Attributes;
    WCHAR   Name[36];
} PARTITION_INFORMATION_GPT, *PPARTITION_INFORMATION_GPT;

typedef struct _PARTITION_INFORMATION_EX {
    PARTITION_STYLE PartitionStyle;
    LARGE_INTEGER   StartingOffset;
    LARGE_INTEGER   PartitionLength;
    ULONG           PartitionNumber;
    BOOLEAN         RewritePartition;
    union {
        PARTITION_INFORMATION_MBR Mbr;
        PARTITION_INFORMATION_GPT Gpt;
    };
} PARTITION_INFORMATION_EX, *PPARTITION_INFORMATION_EX;

typedef struct _GET_LENGTH_INFORMATION {
    LARGE_INTEGER Length;
} GET_LENGTH_INFORMATION, *PGET_LENGTH_INFORMATION;

#endif // (VER_PRODUCTBUILD < 2600)

//
// We include some stuff from ntifs.h here so that
// the driver can be compiled with only the DDK.
//

#define TOKEN_SOURCE_LENGTH 8

typedef enum _TOKEN_TYPE {
    TokenPrimary = 1,
    TokenImpersonation
} TOKEN_TYPE;

typedef struct _TOKEN_SOURCE {
    CCHAR   SourceName[TOKEN_SOURCE_LENGTH];
    LUID    SourceIdentifier;
} TOKEN_SOURCE, *PTOKEN_SOURCE;

typedef struct _TOKEN_CONTROL {
    LUID            TokenId;
    LUID            AuthenticationId;
    LUID            ModifiedId;
    TOKEN_SOURCE    TokenSource;
} TOKEN_CONTROL, *PTOKEN_CONTROL;

typedef struct _SECURITY_CLIENT_CONTEXT {
    SECURITY_QUALITY_OF_SERVICE SecurityQos;
    PACCESS_TOKEN               ClientToken;
    BOOLEAN                     DirectlyAccessClientToken;
    BOOLEAN                     DirectAccessEffectiveOnly;
    BOOLEAN                     ServerIsRemote;
    TOKEN_CONTROL               ClientTokenControl;
} SECURITY_CLIENT_CONTEXT, *PSECURITY_CLIENT_CONTEXT;

#define PsDereferenceImpersonationToken(T)  \
            {if (ARGUMENT_PRESENT(T)) {     \
                (ObDereferenceObject((T))); \
            } else {                        \
                ;                           \
            }                               \
}

#define PsDereferencePrimaryToken(T) (ObDereferenceObject((T)))

NTKERNELAPI
VOID
PsRevertToSelf (
    VOID
);

NTKERNELAPI
NTSTATUS
SeCreateClientSecurity (
    IN PETHREAD                     Thread,
    IN PSECURITY_QUALITY_OF_SERVICE QualityOfService,
    IN BOOLEAN                      RemoteClient,
    OUT PSECURITY_CLIENT_CONTEXT    ClientContext
);

#define SeDeleteClientSecurity(C)  {                                           \
            if (SeTokenType((C)->ClientToken) == TokenPrimary) {               \
                PsDereferencePrimaryToken( (C)->ClientToken );                 \
            } else {                                                           \
                PsDereferenceImpersonationToken( (C)->ClientToken );           \
            }                                                                  \
}

NTKERNELAPI
VOID
SeImpersonateClient (
    IN PSECURITY_CLIENT_CONTEXT ClientContext,
    IN PETHREAD                 ServerThread OPTIONAL
);

NTKERNELAPI
TOKEN_TYPE
SeTokenType (
    IN PACCESS_TOKEN Token
);

//
// For backward compatibility with Windows NT 4.0 by Bruce Engle.
//
#ifndef MmGetSystemAddressForMdlSafe
#define MmGetSystemAddressForMdlSafe(MDL, PRIORITY) MmGetSystemAddressForMdlPrettySafe(MDL)

PVOID
MmGetSystemAddressForMdlPrettySafe (
    PMDL Mdl
    )
{
    CSHORT  MdlMappingCanFail;
    PVOID   MappedSystemVa;

    MdlMappingCanFail = Mdl->MdlFlags & MDL_MAPPING_CAN_FAIL;

    Mdl->MdlFlags |= MDL_MAPPING_CAN_FAIL;

    MappedSystemVa = MmGetSystemAddressForMdl(Mdl);

    if (MdlMappingCanFail == 0)
    {
        Mdl->MdlFlags &= ~MDL_MAPPING_CAN_FAIL;
    }

    return MappedSystemVa;
}
#endif

#include "filedisk.h"

#define PARAMETER_KEY           L"\\Parameters"

#define NUMBEROFDEVICES_VALUE   L"NumberOfDevices"

#define DEFAULT_NUMBEROFDEVICES 4

#define SECTOR_SIZE             512

#define TOC_DATA_TRACK          0x04

HANDLE dir_handle;

typedef struct _DEVICE_EXTENSION {
    BOOLEAN                     media_in_device;
    HANDLE                      file_handle;
    FILE_STANDARD_INFORMATION   file_information;
    BOOLEAN                     read_only;
    PSECURITY_CLIENT_CONTEXT    security_client_context;
    LIST_ENTRY                  list_head;
    KSPIN_LOCK                  list_lock;
    KEVENT                      request_event;
    PVOID                       thread_pointer;
    BOOLEAN                     terminate_thread;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;

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

NTSTATUS
FileDiskCreateDevice (
    IN PDRIVER_OBJECT   DriverObject,
    IN ULONG            Number
);

VOID
FileDiskUnload (
    IN PDRIVER_OBJECT   DriverObject
);

PDEVICE_OBJECT
FileDiskDeleteDevice (
    IN PDEVICE_OBJECT   DeviceObject
);

NTSTATUS
FileDiskCreateClose (
    IN PDEVICE_OBJECT   DeviceObject,
    IN PIRP             Irp
);

NTSTATUS
FileDiskReadWrite (
    IN PDEVICE_OBJECT   DeviceObject,
    IN PIRP             Irp
);

NTSTATUS
FileDiskDeviceControl (
    IN PDEVICE_OBJECT   DeviceObject,
    IN PIRP             Irp
);

VOID
FileDiskThread (
    IN PVOID            Context
);

NTSTATUS
FileDiskOpenFile (
    IN PDEVICE_OBJECT   DeviceObject,
    IN PIRP             Irp
);

NTSTATUS
FileDiskCloseFile (
    IN PDEVICE_OBJECT   DeviceObject,
    IN PIRP             Irp
);

int swprintf(wchar_t *, const wchar_t *, ...);

#pragma code_seg("INIT")

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;

    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;
    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))
    {
        KdPrint(("FileDisk: Query registry failed, using default values.\n"));
        n_devices = DEFAULT_NUMBEROFDEVICES;
    }

    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;
    }

    ZwMakeTemporaryObject(dir_handle);

    for (n = 0, n_created_devices = 0; n < n_devices; n++)
    {
        status = FileDiskCreateDevice(DriverObject, n);

        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;
}

NTSTATUS
FileDiskCreateDevice (
    IN PDRIVER_OBJECT   DriverObject,
    IN ULONG            Number
    )
{
    WCHAR               device_name_buffer[MAXIMUM_FILENAME_LENGTH];
    UNICODE_STRING      device_name;
    NTSTATUS            status;
    PDEVICE_OBJECT      device_object;
    PDEVICE_EXTENSION   device_extension;
    HANDLE              thread_handle;

    ASSERT(DriverObject != NULL);

    swprintf(
        device_name_buffer,
        DEVICE_NAME_PREFIX L"%u",
        Number
        );

    RtlInitUnicodeString(&device_name, device_name_buffer);

    status = IoCreateDevice(
        DriverObject,
        sizeof(DEVICE_EXTENSION),
        &device_name,
        FILE_DEVICE_DISK,
        0,
        FALSE,
        &device_object
        );

    if (!NT_SUCCESS(status))
    {
        return status;
    }

    device_object->Flags |= DO_DIRECT_IO;

    device_extension = (PDEVICE_EXTENSION) device_object->DeviceExtension;

    device_extension->media_in_device = FALSE;

    InitializeListHead(&device_extension->list_head);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精久久久久久久久久久| 欧美性猛交xxxx乱大交退制版| 欧美日韩一区二区电影| 亚洲第一搞黄网站| 欧美精品日日鲁夜夜添| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩女优视频免费观看| 九九热在线视频观看这里只有精品| 日韩欧美国产电影| 国产成人av资源| 亚洲三级在线播放| 欧美精品 国产精品| 精品一二三四在线| 26uuu色噜噜精品一区二区| 欧美久久久影院| 国产午夜精品久久久久久免费视| 国产精品久久久久四虎| 日韩电影在线免费| 国产精品系列在线播放| 99国产精品久久久久久久久久久| 欧美做爰猛烈大尺度电影无法无天| 欧美在线视频你懂得| 欧美本精品男人aⅴ天堂| 国产视频911| 亚洲小说春色综合另类电影| 久久精品国产澳门| 国产黄色精品网站| 久久天天做天天爱综合色| 综合亚洲深深色噜噜狠狠网站| 丝袜美腿亚洲色图| www国产成人免费观看视频 深夜成人网 | 欧美亚洲国产bt| 99久久免费精品高清特色大片| 日韩国产精品久久久| 成人动漫视频在线| 国产精品理伦片| 日韩精品一区二区三区在线观看| 欧美日韩1234| 亚洲黄色小视频| 精品国产一区二区在线观看| 99亚偷拍自图区亚洲| 捆绑调教一区二区三区| 亚洲人成小说网站色在线 | 91视频www| 国产一区二区在线免费观看| 一区二区在线观看视频在线观看| 久久男人中文字幕资源站| 色爱区综合激月婷婷| 国产精品一区二区在线播放| 日韩影院免费视频| 亚洲精品国产一区二区精华液| 91精品免费在线| 婷婷国产v国产偷v亚洲高清| 欧美日韩亚洲丝袜制服| 青青草91视频| 中文字幕在线观看一区二区| 国产一区二区三区美女| 久久综合九色综合97婷婷| 国产成人亚洲精品青草天美| 国产人伦精品一区二区| aaa欧美日韩| 午夜精品久久久| 精品乱码亚洲一区二区不卡| 国产精品一区二区免费不卡 | 制服丝袜激情欧洲亚洲| 亚洲aaa精品| 国产精品九色蝌蚪自拍| 亚洲va天堂va国产va久| 亚洲欧洲日韩在线| 自拍偷拍亚洲激情| 亚洲免费观看高清完整版在线观看| 91视频精品在这里| 一区二区国产视频| 欧美日本一区二区三区| 国产在线精品一区二区不卡了| 国产欧美一区二区在线| 欧美色大人视频| 粉嫩欧美一区二区三区高清影视| 日韩不卡一区二区三区| 国产三级一区二区三区| 亚洲日本一区二区三区| 狠狠狠色丁香婷婷综合激情 | 欧美色视频在线观看| 一本色道久久综合亚洲aⅴ蜜桃 | 欧美国产一区视频在线观看| 欧美性淫爽ww久久久久无| 国产精品一二三四| 成人免费黄色大片| 久久久久久久久久看片| 亚洲国产成人porn| 亚洲最新在线观看| 亚洲成人免费电影| 热久久国产精品| 韩国精品主播一区二区在线观看| 国产一区二区精品在线观看| 国产伦精品一区二区三区视频青涩 | 亚洲午夜久久久久久久久电影网| 亚洲一区二区av电影| 日韩成人精品在线| 国产麻豆91精品| 91色.com| 欧美一区二区三区电影| 日韩女优av电影| 中文字幕不卡的av| 一区二区在线观看免费 | 日本欧美一区二区在线观看| 日韩av不卡一区二区| 国产在线观看一区二区| 成人高清在线视频| 欧美影视一区二区三区| 日韩**一区毛片| 成人动漫一区二区在线| 久久97超碰国产精品超碰| 丁香激情综合国产| 欧美日韩电影在线播放| 成人晚上爱看视频| 99久久久久免费精品国产| 色88888久久久久久影院按摩 | 一本高清dvd不卡在线观看| 一本色道亚洲精品aⅴ| 欧美一区二区日韩一区二区| 精品国内片67194| 日本一区二区三区dvd视频在线| 亚洲日本乱码在线观看| 一本在线高清不卡dvd| 老汉av免费一区二区三区| 美女网站在线免费欧美精品| 亚洲成在线观看| 国产高清一区日本| 91精品国产综合久久精品麻豆| 国产日韩欧美a| 五月婷婷久久丁香| 97精品久久久午夜一区二区三区 | 欧美少妇一区二区| 国产香蕉久久精品综合网| 午夜视频在线观看一区二区三区| 粉嫩13p一区二区三区| 欧美一二三在线| 性做久久久久久免费观看| 成人毛片老司机大片| 日韩欧美一区在线| 亚洲3atv精品一区二区三区| 白白色 亚洲乱淫| 久久精品在这里| 麻豆国产欧美日韩综合精品二区| 色婷婷av一区二区三区软件| 国产亚洲成aⅴ人片在线观看| 蜜桃视频在线观看一区二区| 欧美午夜宅男影院| 亚洲视频资源在线| 成人午夜在线免费| 久久久久久久久久久黄色| 日本 国产 欧美色综合| 精品视频一区三区九区| 亚洲欧美另类久久久精品| 成人avav在线| 国产精品嫩草影院com| 国产一区三区三区| 欧美精品一区二区三区蜜臀 | 韩日精品视频一区| 日韩精品一区二区三区在线观看| 天天影视色香欲综合网老头| 欧美色电影在线| 亚洲国产精品一区二区www| 日本黄色一区二区| 一区二区三区四区蜜桃| 在线免费观看一区| 亚洲福利电影网| 欧美日韩国产小视频| 亚洲成国产人片在线观看| 欧美日韩激情一区二区三区| 亚洲成av人片一区二区梦乃| 欧美日韩在线精品一区二区三区激情| 亚洲激情校园春色| 在线免费不卡视频| 91精品福利视频| 毛片不卡一区二区| 亚洲欧美日韩国产另类专区| bt欧美亚洲午夜电影天堂| 亚洲v中文字幕| 久久久久久久久岛国免费| 欧美日韩一区中文字幕| 国产精品一区一区| 美国毛片一区二区| 亚洲va韩国va欧美va| 亚洲综合视频网| 欧美一级国产精品| 亚洲欧美电影一区二区| 欧美成人vps| 国产成人精品影院| 国产精品不卡视频| 欧美性生交片4| 美脚の诱脚舐め脚责91| 欧美大黄免费观看| 大胆欧美人体老妇| 午夜精品视频在线观看| 亚洲精品在线一区二区| av一区二区不卡| 日韩 欧美一区二区三区| 国产三级精品三级在线专区|