我想开发一个基于Filedisk-17 opensource项目的encryption虚拟磁盘 。
这是我的解决scheme:
在IPR_MJ_READ ,当ZwReadFile返回时,我使用函数DecryptData来解密ZwReadFile读取的数据。
在IPR_MJ_WRITE ,在调用ZwWriteFile之前,我使用函数“ EncryptData ”来encryption将要写入磁盘的数据。
为Windows开发自定义打印机驱动程序
Creative Ziio和android开发,adb
自动化Win32驱动程序testing
Wcsstr不区分大小写
如何写一个简单的USB驱动程序?
我把EncryptData & DecryptData函数放在一个C源文件中。
问题是; 当我加载我的驱动程序时,我得到每次ERROR_PROC_NOT_FOUND(127)错误代码,即使EncryptData或DecryptData函数中只有一行。
谁能告诉我是什么原因造成的以及如何解决?
filedisk.c
switch (io_stack->MajorFunction) { case IRP_MJ_READ: system_buffer = (PUCHAR) MmGetSystemAddressForMdlSafe(irp->MdlAddress,normalPagePriority); if (system_buffer == NULL) { irp->IoStatus.Status = STATUS_INSUFFICIENT_RESOURCES; irp->IoStatus.@R_365_4045@ion = 0; break; } buffer = (PUCHAR) ExAllocatePool(PagedPool,io_stack->Parameters.Read.Length); if (buffer == NULL) { irp->IoStatus.Status = STATUS_INSUFFICIENT_RESOURCES; irp->IoStatus.@R_365_4045@ion = 0; break; } ZwReadFile( device_extension->file_handle,NULL,&irp->IoStatus,buffer,io_stack->Parameters.Read.Length,&io_stack->Parameters.Read.ByteOffset,NULL ); *if(bEncrypt) { cipher = (PUCHAR)ExAllocatePoolWithTag(NonPagedPool,irp->IoStatus.@R_365_4045@ion,'TAG'); if(cipher) { **DecryptData**(buffer,cipher,irp->IoStatus.@R_365_4045@ion); RtlcopyMemory(system_buffer,irp->IoStatus.@R_365_4045@ion); ExFreePool(cipher); } else { irp->IoStatus.Status = STATUS_INSUFFICIENT_RESOURCES; irp->IoStatus.@R_365_4045@ion = 0; break; } }* else { RtlcopyMemory(system_buffer,io_stack->Parameters.Read.Length); ExFreePool(buffer); }
crypto.c
VOID EncryptData(PUCHAR src,PUCHAR dst,ULONG length) { BF_LONG data[2]; BF_KEY key; BF_set_key(&key,pCrypto@R_365_4045@ion->CryptoKey,sizeof(pCrypto@R_365_4045@ion->CryptoKey)); } VOID DecryptData(PUCHAR src,sizeof(pCrypto@R_365_4045@ion->CryptoKey)); }
为什么没有Linux的DirectX API?
控制audio/videostream媒体服务器的stream
Ndis 5/6中级filter驱动程序
Windows驱动可以用Python编写吗?
你能推荐一个适合新手的有趣的驱动程序吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。