С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Работа с указателем - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычисление значения функции http://www.cyberforum.ru/cpp-beginners/thread619232.html
Вычислить значения функции f(x)=(x^2-1)/x с интервалом (0,5) с шагом 0,25. 1) Сумма всех нечетных чиcел функции f(x) 2) Значение минимальной (min) фунцкии f(x). Программа должна работать на "do...
C++ Создание RSS агрегатора возникла срочная необходимость создать простенький RSS,который получает новости,а отображает их в дефолтном браузере,однако ни с чем подобным не сталкивался прежде.я не прошу готовый код,я лишь прошу... http://www.cyberforum.ru/cpp-beginners/thread619229.html
C++ Как выразить условие в операторе if для нахождения простого числа
Приветствую вас!Уважаемые, подскажите пожалуйста как выразить условие в операторе if для нахождения простого числа, с помощью логических и операторов отношений.Если это возможно.Без массивов.Мне...
Нахождение всех возможных путей для спуска с вершины матрицы C++
имеется массив вида 1 2 х х 3 4 5 х 6 7 8 9 высота массива = 3 количество вершин = 2 более удобное графическое представление
C++ Методом деления отрезка пополам и методом итерации найти приближенное значение корня 2х3+3х-1=0 на интервале [0;0,8] абсолютная погрешность не превыша http://www.cyberforum.ru/cpp-beginners/thread619218.html
Методом деления отрезка пополам и методом итерации найти приближенное значение корня 2х3+3х-1=0 на интервале абсолютная погрешность не превышает 0,001. Сравнить результаты методов вычисления....
C++ Книга Стивена Поттса помогите найти книгу: "BORLAND C++ в примерах" Автор: Стивен Поттс, Тимоти С. Монк подробнее

Показать сообщение отдельно
balrak
6 / 6 / 1
Регистрация: 01.04.2012
Сообщений: 81

Работа с указателем - C++

04.07.2012, 22:02. Просмотров 671. Ответов 2
Метки (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <ntddk.h>
NTSTATUS PsLookupProcessByProcessId(__in   HANDLE ProcessId,
                                    __out  PEPROCESS *Process);
 
static VOID LoadImageNotifyRoutine( PUNICODE_STRING FullImageName, HANDLE ProcessId, PIMAGE_INFO ImageInfo);
 
NTSTATUS ObOpenObjectByPointer(__in      PVOID Object,
                               __in      ULONG HandleAttributes,
                               __in_opt  PACCESS_STATE PassedAccessState,
                               __in      ACCESS_MASK DesiredAccess,
                               __in_opt  POBJECT_TYPE ObjectType,
                               __in      KPROCESSOR_MODE AccessMode,
                               __out     PHANDLE Handle);
 
 
VOID LoadImageNotifyRoutine( PUNICODE_STRING FullImageName, HANDLE ProcessId, PIMAGE_INFO ImageInfo)
{
    HANDLE hProcess = NULL;
    NTSTATUS status;
    PEPROCESS peProcess;
    PWCHAR path;
    USHORT length;
    
    length = (FullImageName->Length) / 2;
    path = FullImageName->Buffer;
    if (path[length - 1] == 'e' )
    {
        path += 10;
        DbgPrint(path);
        DbgBreakPoint();
        status = PsLookupProcessByProcessId(ProcessId, &peProcess);
        if (status != STATUS_SUCCESS)
            DbgPrint(("Err PsLookupProcessByProcessId\n"));
        DbgPrint("Process ID: %d",ProcessId);
        DbgPrint("Full Name: %wZ",FullImageName);
        
        status = ObOpenObjectByPointer(peProcess, OBJ_KERNEL_HANDLE,
                                        NULL, DELETE, NULL, KernelMode,
                                        &hProcess);
        if(status != STATUS_SUCCESS)
            DbgPrint("ObOpenObjectByPointer error");
        ObfDereferenceObject(peProcess);
        
        status = ZwTerminateProcess(hProcess, STATUS_SUCCESS);
        if(status)
            DbgPrint("ZwTerminateProcess error /n");
        ZwClose(hProcess);
    }
 
}
 
 
VOID UnloadRoutine(IN PDRIVER_OBJECT DriverObject)
{
    PsRemoveLoadImageNotifyRoutine(  LoadImageNotifyRoutine );
    DbgPrint("Unload!\n");
}
 
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,  IN PUNICODE_STRING RegistryPath)
{
    PsSetLoadImageNotifyRoutine( LoadImageNotifyRoutine );
    DriverObject->DriverUnload = UnloadRoutine;
    DbgPrint("Driver loaded");
    
    return STATUS_SUCCESS; 
 
}
правильно я понимаю ?
path = FullImageName->Buffer;
path указывает на адрес в памяти такой как у Buffer
как мне выделить последнее слово(имя файла) ?

path += 10;
DbgPrint(path);
почему выводится только символ r?
спасибо за помошь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.