当我加载我的filedisk驱动程序,我得到了ERROR_PROC_NOT_FOUND(127)错误代码

我想开发一个基于FileDisk-17 opensource项目的encryption虚拟磁盘

这是我的解决scheme:

IPR_MJ_READ ,当ZwReadFile返回时,我使用函数DecryptData来解密ZwReadFile读取的数据。

IPR_MJ_WRITE ,在调用ZwWriteFile之前,我使用函数“ EncryptData ”来encryption将要写入磁盘的数据。

我把EncryptDataDecryptData函数放在一个C源文件中。

问题是; 当我加载我的驱动程序时,我得到每次ERROR_PROC_NOT_FOUND(127)错误代码,即使EncryptDataDecryptData函数中只有一行。

谁能告诉我是什么原因造成的以及如何解决?

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.Information = 0; break; } buffer = (PUCHAR) ExAllocatePool(PagedPool, io_stack->Parameters.Read.Length); if (buffer == NULL) { irp->IoStatus.Status = STATUS_INSUFFICIENT_RESOURCES; irp->IoStatus.Information = 0; break; } ZwReadFile( device_extension->file_handle, NULL, NULL, NULL, &irp->IoStatus, buffer, io_stack->Parameters.Read.Length, &io_stack->Parameters.Read.ByteOffset, NULL ); *if(bEncrypt) { cipher = (PUCHAR)ExAllocatePoolWithTag(NonPagedPool, irp->IoStatus.Information, 'TAG'); if(cipher) { **DecryptData**(buffer, cipher, irp->IoStatus.Information); RtlCopyMemory(system_buffer, cipher, irp->IoStatus.Information); ExFreePool(cipher); } else { irp->IoStatus.Status = STATUS_INSUFFICIENT_RESOURCES; irp->IoStatus.Information = 0; break; } }* else { RtlCopyMemory(system_buffer, 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, pCryptoInformation->CryptoKey, sizeof(pCryptoInformation->CryptoKey)); } VOID DecryptData(PUCHAR src, PUCHAR dst, ULONG length) { BF_LONG data[2]; BF_KEY key; BF_set_key(&key, pCryptoInformation->CryptoKey, sizeof(pCryptoInformation->CryptoKey)); }