📄 vcd.h
字号:
#ifndef _VCD_
#define _VCD_
#ifndef __T
#ifdef _NTDDK_
#define __T(x) L ## x
#else
#define __T(x) x
#endif
#endif
#ifndef _T
#define _T(x) __T(x)
#endif
#define DEVICE_BASE_NAME _T("\\VCD")
#define DEVICE_DIR_NAME _T("\\Device") DEVICE_BASE_NAME
#define DEVICE_FULL_NAME DEVICE_DIR_NAME DEVICE_BASE_NAME
#define DEVICE_VCD 0x8000
//打开文件
#define IOCTL_VCD_OPEN_FILE CTL_CODE(DEVICE_VCD, 0x800, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
//关闭文件
#define IOCTL_VCD_CLOSE_FILE CTL_CODE(DEVICE_VCD, 0x801, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
//查询设备信息
#define IOCTL_VCD_QUERY_DEVICE CTL_CODE(DEVICE_VCD, 0x802, METHOD_BUFFERED, FILE_READ_ACCESS)
#define MAX_PATH 260
#define DWORD unsigned long
#define WORD unsigned short
#define BOOL unsigned long
#define BYTE unsigned char
/*
//虚拟光驱文件信息
typedef struct _VCD_FILE_INFORMATION {
LARGE_INTEGER FileSize; //文件大小
UCHAR FileName[MAX_PATH]; //文件名
} VCD_FILE_INFORMATION, *PVCD_FILE_INFORMATION;
*/
//设备的信息
typedef struct _VCD_DEVICE_INFORMATION {
ULONG Magic; //标示,符和这个标示就认为是VCD设备
ULONG Version; //版本
ULONG Index; //设备序号
BOOL MediaIn; //设备中是否有媒体
UCHAR FileName[MAX_PATH]; //文件名
UCHAR Descaption[MAX_PATH]; //设备描述
}VCD_DEVICE_INFORMATION, *PVCD_DEVICE_INFORMATION;
#define DEVICE_MAGIC 0xAAFFFFAA
#define DEVICE_VERSION 0x00000001
//创建多少个CDROM设备,我定为4个.
#define DEVICE_COUNT 0x4
//驱动对象扩展信息
typedef struct _DEVICE_EXTENSION {
ULONG index; //设备的ID
BOOLEAN media_in_device; //设备里是否有媒体
HANDLE file_handle; //文件句柄
UCHAR oldfile_name[MAX_PATH]; //传进来的原始文件名
ANSI_STRING file_name; //文件名
LARGE_INTEGER file_size; //文件大小
PSECURITY_CLIENT_CONTEXT security_client_context; //客户端安全上下文
LIST_ENTRY list_head; //线程List
KSPIN_LOCK list_lock; //线程锁
KEVENT k_event; //事件句柄
PVOID thread_pointer; //线程对象指针
BOOLEAN terminate_thread; //线程是否已经终止
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
//目录设备 "\\Device" 的句柄
extern HANDLE device_root_handle;
#define SECTOR_SIZE 512
#define TOC_DATA_TRACK 0x04
//入口
NTSTATUS
DriverEntry(IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath );
//
//创建CDROM设备
NTSTATUS
IoCreateCDROMDevice(
IN PDRIVER_OBJECT DriverObject,
IN ULONG Number
);
NTSTATUS
IrpCreateClose (
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
VOID
IrpUnload (
IN PDRIVER_OBJECT DriverObject
);
NTSTATUS
IrpReadWrite(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
NTSTATUS
IrpDeviceControl(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -