Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| |
Виноват, обоср-ся! Кого интересует, как сделать свой sys см.внутри! 30.07.02 04:26 Число просмотров: 1000
Автор: Zef <Alloo Zef> Статус: Elderman
|
Итак, чтобы не гемороиться, читая Мелкомягкие хелпы:
sys компилиься не VC, а входящей в DDK утилитой build.
Запускают ее из того же консольного окна, в котором отработал Checked или Build Environment.
Установить в нем каталог проекта и запустить.
Мона батик написать.
|
<programming>
|
[win32] муть с typedefами в ntddk. ниче не понимаю! 24.07.02 06:09
Автор: Zef <Alloo Zef> Статус: Elderman
|
Нуно состряпать драйвер монитора файловой системы. В качестве "рыбы" использую проект FileObjectInfo. Там один #include <ntddk.h>, бльше ссылок на ДДК нет. Компилю: 95 ошибок - "то не определено", "это определено дважды"!!! Пытался просто выдрать из ДДК все определения: запутался в "многоэтажных" ifdefах.
Народ, кто писал сам драйверы под НТ, подскажите, как обычно эта хрень распутывается?
|
|
возьми готовый драйвер от FileMon-a 26.07.02 23:03
Автор: z0 <z0> Статус: Member
|
|
| |
Виноват, обоср-ся! Кого интересует, как сделать свой sys см.внутри! 30.07.02 04:26
Автор: Zef <Alloo Zef> Статус: Elderman
|
Итак, чтобы не гемороиться, читая Мелкомягкие хелпы:
sys компилиься не VC, а входящей в DDK утилитой build.
Запускают ее из того же консольного окна, в котором отработал Checked или Build Environment.
Установить в нем каталог проекта и запустить.
Мона батик написать.
|
| | |
Виноват, обоср-ся! Кого интересует, как сделать свой sys см.внутри! 30.07.02 10:59
Автор: Green Статус: Незарегистрированный пользователь
|
Ну это в самом начале DDK написано... но не удобно, согласись.
А я makefile свой подставляю, примерно такого содержания :
NAME = PrlPrgm
OBJS = %Hook.obj %Filters.obj %FastIO.obj %PrlPrgm.obj
#----------------------------------------------------------------------------
# Path definitions
#----------------------------------------------------------------------------
DDK_PATH=d:\winddk\2195
DDK_INCPATH=$(DDK_PATH)\inc
DDK_INCPATH_EXT=$(DDK_PATH)\inc\ddk
!ifdef DEBUG
TARGET_PATH = .\Debug
OBJS = $(OBJS:%=.\Debug\)
#DDK_LIBPATH = $(DDK_PATH)\lib\i386\checked
DDK_LIBPATH = $(DDK_PATH)\libchk\i386
!else
TARGET_PATH = .\Release
OBJS = $(OBJS:%=.\Release\)
#DDK_LIBPATH = $(DDK_PATH)\lib\i386\free
DDK_LIBPATH = $(DDK_PATH)\libfre\i386
!endif
TARGETTYPE=DRIVER
#----------------------------------------------------------------------------
# Common definition
#----------------------------------------------------------------------------
TARGET = $(TARGET_PATH)\$(NAME).sys
#----------------------------------------------------------------------------
# Libraries for building kernel driver
#----------------------------------------------------------------------------
LIBRARIES = $(DDK_LIBPATH)\ntoskrnl.lib $(DDK_LIBPATH)\hal.lib \
$(DDK_LIBPATH)\int64.lib $(DDK_LIBPATH)\libc.lib
#----------------------------------------------------------------------------
# C compiler executable, compiler options
#----------------------------------------------------------------------------
CC = cl
!ifdef DEBUG
CFLAGS = /nologo /c /Zp8 /Fd"$(TARGET_PATH)/" \
# /Fa"$(TARGET_PATH)/" /Fo"$(TARGET_PATH)/" /I$(DDK_INCPATH) /I$(DDK_INCPATH_EXT) /I$(WIN_INCPATH) \
/Od /Zi /W3 /Gz /DWIN32=100 /D_NT1X_=100 /DWINNT=1 /D_WIN32_WINNT=0x0400 \
/D_X86_=1 /Di386=1 /D_DEBUG /DDBG=1 /DDEBUG_INTO_MEM=1
!else
CFLAGS = /nologo /c /Zp8 /Fd"$(TARGET_PATH)/" \
/Fo"$(TARGET_PATH)/" /I$(DDK_INCPATH) /I$(DDK_INCPATH_EXT) /I$(WIN_INCPATH) /GB /Ox /W3 /Gz \
/DWIN32=100 /D_NT1X_=100 /DWINNT=1 /D_WIN32_WINNT=0x0400 \
/D_X86_=1 /Di386=1 /DNDEBUG
!endif
#----------------------------------------------------------------------------
# Resource compiler
#----------------------------------------------------------------------------
RC = rc
!ifdef DEBUG
RCOPT= -R -L 0x409 -X -I "$(DDK_INCPATH)" -D "_DEBUG"
!else
RCOPT= -R -L 0x409 -X -I "$(DDK_INCPATH)" -D "NDEBUG"
!endif
#----------------------------------------------------------------------------
# Linker executable, linker options
#----------------------------------------------------------------------------
LINKER = link
!ifdef DEBUG
LFLAGS = /NOLOGO /DRIVER:UPONLY /ALIGN:0x20 /BASE:0x10000 /DEBUG \
/DEBUGTYPE:BOTH /ENTRY:DriverEntry@8 /INCREMENTAL:NO /MACHINE:IX86 \
/NODEFAULTLIB /SUBSYSTEM:NATIVE,4.00
!else
LFLAGS = /NOLOGO /DRIVER:UPONLY /ALIGN:0x20 /BASE:0x10000 \
/ENTRY:DriverEntry@8 /INCREMENTAL:NO /MACHINE:IX86 \
/NODEFAULTLIB /SUBSYSTEM:NATIVE,4.00
!endif
#----------------------------------------------------------------------------
# Debug support Ýòî ÷òîá ñðàçó ñîçäàâàëàñü òàáëèöà ñèìâîëîâ äëÿ SoftIce
#----------------------------------------------------------------------------
NMSYM = "d:\Program Files\NuMega\DriverStudio\SoftICE\nmsym.exe"
#NMFLAGS = /trans:source,package,always /load:symbols /out:$(TARGET_PATH)\prlprgm.nms /source:.
NMFLAGS = /trans:source,package,always /load:symbols /out:d:\winnt\system32\drivers\prlprgm.nms /source:.
#----------------------------------------------------------------------------
# Display some parameters
#----------------------------------------------------------------------------
!message Target = $(TARGET)
#----------------------------------------------------------------------------
# Main targets
#----------------------------------------------------------------------------
ALL: destdir "$(TARGET)"
destdir:
@if not exist "$(TARGET_PATH)\." mkdir "$(TARGET_PATH)"
CLEAN:
@-echo Clear target directory
@-del "$(TARGET_PATH)\*.*"
SOFTICE:
@-net start ntice
@$(NMSYM) $(NMFLAGS) "$(TARGET)"
INSTALL:
# copy "$(TARGET)" *.bak
# @-net stop $(NAME)
# @-del "%SystemRoot%\system32\drivers\$(NAME).sys"
# @copy "$(TARGET)" "%SystemRoot%\system32\drivers\$(NAME).sys"
"$(TARGET)": $(OBJS)
$(LINKER) @<<linker.opt
$(LFLAGS)
/OUT:"$(TARGET)"
/MAP:"$(TARGET_PATH)\$(NAME).map"
$(OBJS) $(LIBRARIES)
<<
!ifdef DEBUG
@$(NMSYM) $(NMFLAGS) "$(TARGET)"
!endif
#----------------------------------------------------------------------------
# Sources
#----------------------------------------------------------------------------
SOURCE = Hook.c
#DEP = prlprgm.h
"$(TARGET_PATH)\Hook.obj": $(SOURCE) $(DEP)
$(CC) $(CFLAGS) $(SOURCE)
SOURCE = prlprgm.c
#DEP = prlprgm.h
"$(TARGET_PATH)\prlprgm.obj": $(SOURCE) $(DEP)
$(CC) $(CFLAGS) $(SOURCE)
SOURCE = Filters.c
#DEP = prlprgm.h
"$(TARGET_PATH)\Filters.obj": $(SOURCE) $(DEP)
$(CC) $(CFLAGS) $(SOURCE)
SOURCE = FastIO.c
#DEP = prlprgm.h
"$(TARGET_PATH)\FastIO.obj": $(SOURCE) $(DEP)
$(CC) $(CFLAGS) $(SOURCE)
#----------------------------------------------------------------------------
# end of makefile
> Итак, чтобы не гемороиться, читая Мелкомягкие хелпы: > sys компилиься не VC, а входящей в DDK утилитой build. > Запускают ее из того же консольного окна, в котором > отработал Checked или Build Environment. > Установить в нем каталог проекта и запустить. > Мона батик написать.
|
|
|