'HookedDeviceControl':未声明的标识符

问题描述

我在编译此代码时收到“HookedDeviceControl”:未声明的标识符错误。 (InterlockedExchange((PLONG)&pDrv_tcpip->MajorFunction[IRP_MJ_DEVICE_CONTROL],(LONG)HookedDeviceControl);) “HookedDeviceControl”函数需要有具体代码吗?我需要任何特定的库或导入吗?我不完全确定为什么它在有 HookedDeviceControl 函数时说它身份不明

#include <wdm.h>

VOID Unload_Driver() {
    DbgPrint("Driver Successfully Unloaded");
}

NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath) // this is main
{
    UNREFERENCED_PARAMETER(RegistryPath);
    UNREFERENCED_PARAMETER(DriverObject);
    //HookedMjCreate();
    DriverObject->DriverUnload = Unload_Driver;
}

PFILE_OBJECT pFile_tcp;
PDEVICE_OBJECT pDev_tcp;
PDRIVER_OBJECT pDrv_tcpip;
typedef NTSTATUS(*OLDIRPMJDEVICECONTROL)(IN PDEVICE_OBJECT,IN PIRP);
OLDIRPMJDEVICECONTROL OldIrpMjDeviceControl;

NTSTATUS InstallTCPDriverHook(IN ACCESS_MASK DesiredAccess)
{
    NTSTATUS ntStatus;
    UNICODE_STRING deviceTCPUnicodeString;
    WCHAR deviceTCPNameBuffer[] = L"\\Device\\Tcp";
    pFile_tcp = NULL;
    pDev_tcp = NULL;
    ntStatus = IoGetDeviceObjectPointer(L"\\Device\\Tcp",FILE_READ_DATA,&pFile_tcp,&pDev_tcp);
    RtlInitUnicodeString(&deviceTCPUnicodeString,deviceTCPNameBuffer);
    ntStatus = IoGetDeviceObjectPointer(&deviceTCPUnicodeString,&pDev_tcp);
    if (!NT_SUCCESS(ntStatus))
        return ntStatus;
    pDrv_tcpip = pDev_tcp->DriverObject;
    OldIrpMjDeviceControl = pDrv_tcpip->
        MajorFunction[IRP_MJ_DEVICE_CONTROL];
    if (OldIrpMjDeviceControl)
        InterlockedExchange((PLONG)&pDrv_tcpip->MajorFunction[IRP_MJ_DEVICE_CONTROL],(LONG)HookedDeviceControl);
    return STATUS_SUCCESS;
}



NTSTATUS HookedDeviceControl(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp)
{

}```

解决方法

在调用它或将其作为参数传递之前,您需要声明/定义函数 HookedDeviceControl。 所以选项之一是在 HookedDeviceControl 之前定义 InstallTCPDriverHook

NTSTATUS HookedDeviceControl(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp)
{
   ...
}
NTSTATUS InstallTCPDriverHook(IN ACCESS_MASK DesiredAccess)
{
  ...
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...