Форум программистов, компьютерный форум CyberForum.ru

Ошибка компиляции драйвера - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сортировка слиянием http://www.cyberforum.ru/cpp-beginners/thread372207.html
я смог сделать только сортировку по методу Шелла, а мне еще нужно сорт слияния. Шелла: #include "stdafx.h" #include "iostream" #include "math.h" using namespace std; int _tmain(int argc, _TCHAR* argv) {
C++ вставить в матрицу столбец даны дейвствительеные числа а1...аn, дейвствительная квадратная матрица порядка n(n>6). получить дейвствительную матрицу размера nx(n+1), вставим в исходную матрицу между пятым и шестым столбцами новый столбец с элементами а1...аn http://www.cyberforum.ru/cpp-beginners/thread372190.html
C++ В символьной строке удалить все слова, состоящие из нечетного количества букв.
Привет. Нужна ваша помощь в написании проги на С. Не на С++ =) Ниже приведено условие: В символьной строке удалить все слова, состоящие из нечетного количества букв. Всем "+" за помощь=) Спасибо.
контейнеры С++ C++
Задача:заполнить массив четными числами ,а множество – нечетными,с пом. алгоритма merge()объединить эти контейнеры в вектор… Но если #include <iostream> #include <vector> #include <set> #include <algorithm> using namespace std; . . . int inarr; set<int> inset;
C++ Сжатия текстовых файлов посредством диандного кодирования http://www.cyberforum.ru/cpp-beginners/thread372141.html
Недавно увлёкся алгоритмами сжатия файлов. Если по алгоримтам Фано и Хафмана можно найти достаточно информации, то с диадным кодированием посложнее будет. Данный метод мне не понятен Есть ли у кого нибудь хоть какие то наработки по этому методу ?
C++ Можно ли в командной строке перевести курсор на строку вверх? Надо вернуться уже после того как курсор был переведен на новую строку. Может, есть какая управляющая последовательность или манипулятор? подробнее

Показать сообщение отдельно
fredwriter
7 / 7 / 1
Регистрация: 17.10.2009
Сообщений: 269
26.10.2011, 16:42  [ТС]     Ошибка компиляции драйвера
alkagolik, можете хотя бы прокомментировать мои действия описанные в 5 посте. Какие ошибки?

Добавлено через 22 минуты
почитал вашу, alkagolik, How to Use the Build Utility, переведенную гуглом, и после небольшого прочтения что-то натолкнуло меня на мысль обозначить переменную среды NTMAKEENV=C:\WINDDK\2600\bin\x86, и после этого еще раз использовал Build и в папке с моими файлами появился файл buildfre.log. Объясните пожалуйста бедному студенту.

Добавлено через 2 часа 15 минут
Разобрался как использовать эту утилиту Build, если DDK установлен корректно, то нужно сделать так: Пуск -> Все программы -> Development Kits -> Windows DDK 2600 -> Build Environments -> или WinXP Free Build Environment или WinXP Checked Build Environment. Если есть MakeFile, то нужно перейти в рабочую директорию командой cd и написать заветное слово Build, запустится утилита Build.exe c установленными переменными окружения и произойдет КОМПИЛЯЦИЯ(сборка) файла драйвера. Вот такие пироги. Вопрос у меня следующий: (первый раз пользуюсь этой утилитой и не было еще опыта успешного её использования) что должно произойти после использования этой утилиты? У меня только появился файл buildfre.log с одной строчкой: BUILD: Computing Include file dependencies:. Я думал, что должен был появится какие-то файлы Sys или еще что нибудь.

Добавлено через 37 минут
ау люди, кто нибудь мне подскажет? Это ж форум программистов.

Добавлено через 19 минут
Если подробнее, то у меня есть следующие файлы:
MyDriver.c, ниже его текст:
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include <ntddk.h>
#include <MyDriverMessages.h>
 
NTSTATUS DriverEntry(IN DRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath);
 
NTSTATUS CreateMyDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
 
NTSTATUS ReadMyDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
 
NTSTATUS WriteMyDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
 
NTSTATUS ShutdownMyDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
 
NTSTATUS CleanupMyDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
 
NTSTATUS IoCtlMyDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
 
VOID MyDriverUnload (IN PDRIVER_OBJECT DeviceObject);
 
BOOLEAN GetMessage(IN NTSTATUS ErrorCode, IN PVOID IoObject, IN PIRP Irp);
 
#ifdef ALLOC_PRAGMA 
#pragma alloc_text(PAGE, GetMessage)
#endif
 
NTSTATUS DriverEntry(IN DRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
 
{
         UNICODE_STRING nameString, linkString;
         
         PDEVICE_OBJECT deviceObject;
         
         NTSTATUS status;
         
         GetMessage(MSG_DRIVER_ENTRY, DriverObject, NULL);
         
         RtlInitUnicodeString(&nameString, L"\\Device\\MyDriver");
         
         status = IoCreateDevice(DriverObject, sizeof(65533), &nameString,
                                 0, 0, FALSE, &deviceObject);
         if (!NT_SUCCESS(status))
           return status;
         deviceObject->Flags |= DO_DIRECT_IO;
         deviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
         RtlInitUnicodeString(&linkString, L"\\DosDevices\\MyDriver");
         status = IoCreateSymbolicLink(&linkString, &nameString);
         if (!NT_SUCCESS(status))
         {
           IoDeleteDevice(DriverObject->DeviceObject);
           return status;
         }
         DriverObject->MajorFunction[IRP_MJ_CREATE] = CreateMyDriver;
         DriverObject->MajorFunction[IRP_MJ_READ] = ReadMyDriver;
         DriverObject->MajorFunction[IRP_MJ_WRITE] = WriteMyDriver;
         DriverObject->MajorFunction[IRP_MJ_SHUTDOWN] = ShutdownMyDriver;
         DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = IoCtlMyDriver;
         DriverObject->DriverUnload = MyDriverUnload;
         return STATUS_SUCCESS;
}
 
 
NTSTATUS CreateMyDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);         
{
         GetMessage(MSG_CREATE, (PVOID)DeviceObject, NULL);
         IoCompleteRequest(Irp, IO NO INCREMENT);
         
         Return STATUS_SUCCESS;
}
 
 
NTSTATUS ReadMyDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
{
         GetMessage(MSG_READ, DeviceObject, NULL);
         
         return STATUS_SUCCESS;
}
         
         
NTSTATUS WriteMyDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
{
         GetMessage(MSG_WRITE, DeviceObject, NULL);
         
         return STATUS_SUCCESS;    
};    
 
 
NTSTATUS ShutdownMyDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
{
         GetMessage(MSG_SHUTDOWN, DeviceObject, NULL);
         IoCompleteReguest(Irp, IO_NO_INCREMENT);
         return STATUS_SUCCESS;
}
                  
     
NTSTATUS IoCtlMyDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
{  
         GetMessage(MSG_IOCTL, DeviceObject, NULL);
         IoCompleteRequest(Irp, IO_NO_INCREMENT);
         return STATUS_SUCCESS;
}      
         
         
VOID MyDriverUnload (IN PDRIVER_OBJECT DeviceObject);
{
     UNICODE_STRING linkString;
     GetMessage(MSG_DRIVERUNLLOAD, DriverObject, NULL);
     RtlInitUnicodeString(&linkString, L"\\DosDDevices\\MyDriver");
     IoDeleteSymbolicLink(&linkString);
     IoDeleteDevice(DriverObject->DeviceObject);
}
 
 
BOOLEAN GetMessage(IN NTSTATUS ErrorCode, IN PVOID IoObject, IN PIRP Irp);
{ 
        PIO_ERROR_LOG_PACKET Log_Packet;
        PIO_STACK_LOCATION IrpStackLocation;
        PWCHAR pInsertString; 
        STRING AnsiInsertString;
        UNICODE_STRING UniInsertString;
        UCHAR Size_of_Packet;
        Size_of_Packet = sizeof(IO_ERROR_LOG_PACKET);
        Log_Packet = IoAllocateErrorLogEntry(IoObject, Size_of_Packet);
        If (Log_Packet == NULL)
          return FALSE;
        Log_Packet->ErrorCode = ErrorCode;
        Log_Packet->UniqueErrorValue = 0;
        Log_Packet->RetryCount = 0;
        Log_Packet->SequenceNumber = 0;
        Log_Packet->IoControlCode = 0;
        Log_Packet->Dump_Data_Size = 0;
        if (Irp != NULL)
        {
                IrpStack = IoGetCurrentIrpStackLocation(Irp);
                Log_Packet->MajorFunctionCode = IrpStack->MajorFunction;
                Log_Packet->FinalStatus = Irp->IoStatus.Status;
        }
        else
        {
            Log_Packet->MajorFunctionCode = 0;
            Log_Packet->FinalStatus = 0;
        } 
        IoWriteErrorLogEntry(Log_Packet);
        return TRUE;
}
Файл MyDriverMessager.mc ниже его текст:
MessageID = 1
Severity = Informational
SymbolicName = MSG_DRIVER_ENTRY
Language = English
Driver Entry
.
MessageID = 2
Severity = Informational
SymbolicName = MSG_CREATE
Language = English
Create
.
MessageID = 3
Severity = Informational
SymbolicName = MSG_READ
Language = English
Read
.
MessageID = 4
Severity = Informational
SymbolicName = MSG_WRITE
Language = English
Write
.
MessageID = 5
Severity = Informational
SymbolicName = MSG_SHUTDOWN
Language = English
Shutdown
.
MessageID = 6
Severity = Informational
SymbolicName = MSG_IOCTL
Language = English
IoCtl
.
MessageID = 7
Severity = Informational
SymbolicName = MSG_DRIVERUNLOAD
Language = English
Unload
.

Файлы MyDriverMessages.rc, MyDriverMessages.h Созданные утилитой MC,

Makefile - MakeFile.mak
его текст я уже приводил,

и файл Source.src ниже его текст:
TARGETNAME = MYDRIVER
TARGETTYPE = DRIVER
#DRIVERTYPE = WDM
TARGETPATH = obj
SOURCES = MyDriver.c MyDriverMessages.rc
C_DEFINES = -DUNICODE -DSTRICT

из этих файлов то и должна, как написано в книге, утилита Build собрать файл драйвера.

Добавлено через 2 часа 8 минут
Кто хочет поговорить о компиляции драйвера?
 
Текущее время: 11:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru