?? 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 + -