阅读:1013回复:3
我写的禁止A盘的代码,不成功.大家帮我看看
// LockA.c
// 03-21-2005 <Jason Zhang> // Copyright ゥ 2005 <SCT SH> #define _LOCKA_SYS_ #include <ddk\\ntddk.h> #include \"LockA.h\" #define NAME L\"\\Device\\Floppy0\" // ============================================================ // GLOBAL DATA // =========================================================== PDRIVER_DISPATCH g_p_real_dispatch_device_control = NULL; PDRIVER_OBJECT g_p_target_driver_object = NULL; // ================================================================= // DISCARDABLE FUNCTIONS // ================================================================= NTSTATUS DriverEntry (PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pusRegistryPath); NTSTATUS MyControl (PDEVICE_OBJECT Device_Object,PIRP irp); // ----------------------------------------------------------------- #ifdef ALLOC_PRAGMA #pragma alloc_text (INIT, DriverEntry) #endif //================================================================== //MyControl //================================================================== NTSTATUS MyControl(PDEVICE_OBJECT Device_Object,PIRP irp) { irp->IoStatus.Status = STATUS_ACCESS_DENIED; irp->IoStatus.Information = 0; IoCompleteRequest(irp, IO_NO_INCREMENT); return STATUS_ACCESS_DENIED; } //------------------------------------------------------------------ void DriverUnload (PDRIVER_OBJECT pDriverObject) { return; } // ================================================================= // DRIVER INITIALIZATION // ================================================================= // --------------------------------------------------------- NTSTATUS DriverEntry (PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pusRegistryPath) { PDRIVER_DISPATCH *ppdd; UNICODE_STRING target_device_name; PDEVICE_OBJECT target_device_object; PFILE_OBJECT target_file_object; NTSTATUS status; RtlInitUnicodeString(&target_device_name, NAME); status = IoGetDeviceObjectPointer( &target_device_name, 0, &target_file_object, &target_device_object ); if (!NT_SUCCESS(status)) { KdPrint((\"IoGetDeviceObjectPointer return %Xn\", status)); return status; } g_p_target_driver_object = target_device_object->DriverObject; if (!g_p_target_driver_object) { KdPrint((\"target_device_object->DriverObject == NULLn\")); return STATUS_UNSUCCESSFUL; } g_p_real_dispatch_device_control = g_p_target_driver_object->MajorFunction[IRP_MJ_DEVICE_CONTROL]; ppdd = g_p_target_driver_object->MajorFunction; ppdd [IRP_MJ_CREATE ] =MyControl; ppdd [IRP_MJ_READ ] =MyControl; ppdd [IRP_MJ_DEVICE_CONTROL ] =MyControl; ppdd [IRP_MJ_INTERNAL_DEVICE_CONTROL ] =MyControl; ppdd [IRP_MJ_PNP ] =MyControl; pDriverObject->DriverUnload = DriverUnload; // } return ns; } // ================================================================= // END OF PROGRAM // ================================================================= 首先大家觉得我的思路对吗?就是通过FLOPPY0来取得指针. 我在DRIVERMONITOR里面加载,运行就显示ERROR(161),UNEXPECTED ERROR OCCURRD [编辑 - 3/21/05 by zhjie374] |
|
最新喜欢:![]() |
沙发#
发布于:2005-03-22 10:18
各位说说话呀,期待中.....
|
|
板凳#
发布于:2005-03-22 14:30
各位说说话呀,期待中..... #define NAME L\"\\Device\\Floppy0\" ? |
|
|
地板#
发布于:2005-03-22 15:40
#define NAME L\"\\\\Device\\\\Floppy0\"
|
|