Набор тестовых Win32 программ
Пока что разобраны syscall'ы
NtCreateFile,
NtOpenFile,
NtWriteFile,
NtClose. и на их основе были реализованы программы.
create.c — создает файл, используя ntdll.lib
create2.c — создает файл, не используя ntdll.lib
writefile2.c — пишет в существующий файл HELLO в юникоде, используя ntdll.lib
writefile2.c — пишет в существующий файл HELLO в юникоде, используя ntdll.lib
для сборки использовать:
cl.exe /Gz /Od %PROGRAM.C%.c ntdll.lib /link /subsystem:console /NODEFAULTLIB
cl.exe /Gz /Od %PROGRAM.C% /link /subsystem:console /NODEFAULTLIB
соответственно для версий с ntdll.lib и без
- флаг /Gz указывает использовать соглашение _stdcall для вызовов функций
- /link — дальнейшие параметры передаются компоновщику
- /NODEFAULTLIB не линкует со стандартными библиотеками
На самом деле прямого вызова sysenter пока не происходит, за счет отсутствия данного вызова у inline assembler'а студии, в планах разобраться с ml.exe