entry.c

来自「获取SSDT列表的程序源码」· C语言 代码 · 共 45 行

C
45
字号
//////////////////////////////////////////////////////////////////////////
// SSDTDump by 李马
// http://www.titilima.cn
//////////////////////////////////////////////////////////////////////////

#include <ntddk.h>
#include "ioctl.h"
#include "SSDTDump.h"

NTSTATUS DriverEntry( PDRIVER_OBJECT pDriverObject,
                    PUNICODE_STRING pRegistryPath );

#pragma alloc_text( INIT, DriverEntry )

NTSTATUS DriverEntry( PDRIVER_OBJECT pDriverObject,
                    PUNICODE_STRING pRegistryPath )
{
    NTSTATUS s         = STATUS_SUCCESS;
    ULONG ulIndex      = 0;
    PDEVICE_OBJECT pdo = NULL;
    UNICODE_STRING sDriverName, sDosDeviceName;

    KdPrint(( "DriverEntry called.\r\n" ));

    RtlInitUnicodeString( &sDriverName, L"\\Device\\SSDTDump" );
    RtlInitUnicodeString( &sDosDeviceName, L"\\DosDevices\\SSDTDump" );

    s = IoCreateDevice( pDriverObject, 0, &sDriverName, FILE_DRIVER_SSDTDUMP,
        FILE_DEVICE_SECURE_OPEN, FALSE, &pdo );
    if ( STATUS_SUCCESS == s )
    {
        for ( ulIndex = 0; ulIndex < IRP_MJ_MAXIMUM_FUNCTION; ++ulIndex )
        {
            pDriverObject->MajorFunction[ulIndex] = SSDT_Unimplmented;
        }
        pDriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL]
            = SSDT_DeviceIoControl;
        pDriverObject->DriverUnload = SSDT_Unload;

        IoCreateSymbolicLink( &sDosDeviceName, &sDriverName );
    }

    return s;
}

⌨️ 快捷键说明

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