⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sector.h

📁 一个基于Windows系统( NT5.0
💻 H
字号:
#ifndef  __SECTORIO_H__
#define  __SECTORIO_H__

typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;

__declspec(dllimport) NTSTATUS ObReferenceObjectByName(
        PUNICODE_STRING, 
        DWORD, 
        PACCESS_STATE, 
        ACCESS_MASK,
        POBJECT_TYPE,
        KPROCESSOR_MODE,
        PVOID,
        PVOID *Object);

__declspec(dllimport) POBJECT_TYPE* IoDriverObjectType;

__declspec(dllimport)
NTSTATUS
ObQueryNameString(
        PVOID,
        POBJECT_NAME_INFORMATION,
        ULONG Length,
        PULONG ReturnLength
        );

#pragma pack (push, 1)

typedef struct _DISK_OBJ {
	LIST_ENTRY					list;
	BOOLEAN						bIsRawDiskObj;
	BOOLEAN						bGeometryFound;
	DWORD						dwDiskOrdinal;	// If bIsRawDiskObj = TRUE Disk Number is Raw Disk Number else it is Partition Number
	ULONG						ulSectorSize;	// Sector Size on disk
	PDEVICE_OBJECT				pDiskDevObj;	// Pointer to Device Object
} DISK_OBJ, * PDISK_OBJ;

typedef struct _DISK_LOCATION {
	BOOLEAN						bIsRawDiskObj;
	DWORD						dwDiskOrdinal;
	ULONGLONG					ullSectorNum;
} DISK_LOCATION, * PDISK_LOCATION;

typedef struct _DEVICE_EXTENSION {
    LIST_ENTRY                  list_head;
    KSPIN_LOCK                  list_lock;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;

#pragma pack (pop)

#define SECTOR_IO_DEVICE       0x8000

#define IOCTL_SECTOR_READ		CTL_CODE(SECTOR_IO_DEVICE, 0x800, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_SECTOR_WRITE		CTL_CODE(SECTOR_IO_DEVICE, 0x801, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_GET_SECTOR_SIZE	CTL_CODE(SECTOR_IO_DEVICE, 0x802, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)

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

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

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

NTSTATUS GetAllDiskObjects();
NTSTATUS GetGeometry(PDEVICE_OBJECT pDiskDevObj, PDISK_GEOMETRY pDiskGeo);

VOID DriverUnload(
    IN PDRIVER_OBJECT DriverObject
    );


#endif   /* ----- #ifndef __SECTORIO_H__ ----- */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -