Всем привет.Очень нужен хороший учебник по си,поскольку в библиотеках не нашёл.Также компилятор не помешал бы.Есть что-нибудь хорошее(исключая древние компильки).
Линукс как мечта.У меня винда.К тому же,в универе мы прогать бум на старье.А дома нужно нормальное...
Как лучше всего из программы в юзермоде вызвать функцию из моего драйвера? Что будет если я например в XP SP3 сделаю int 2eh вместо SYSENTER?
2 ntldr 1) в DriverEntry пишеш Code: NTSTATUS st; PCWSTR dDeviceName = L"\\Device\\DRVNAME"; PCWSTR dSymbolicLinkName = L"\\DosDevices\\DRVNAME"; RtlInitUnicodeString(&DeviceName, dDeviceName); RtlInitUnicodeString(&SymbolicLinkName, dSymbolicLinkName); st = IoCreateDevice(DriverObject, 0, &DeviceName, FILE_DEVICE_UNKNOWN, 0, FALSE, &deviceObject); if (NT_SUCCESS(st)) st=IoCreateSymbolicLink(&SymbolicLinkName, &DeviceName); if (!NT_SUCCESS(st)) return STATUS_DRIVER_INTERNAL_ERROR; DriverObject->DriverUnload=DriverUnload; DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DriverDispatcher; другими словами регаешь устройство. DriverDispatcher - функция обработчик запросов к устройству. В ней ты будеш обрабатывать IOCTL запросы типа Code: NTSTATUS DriverDispatcher(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { NTSTATUS status=STATUS_SUCCESS; PIO_STACK_LOCATION irpStack; irpStack = IoGetCurrentIrpStackLocation (Irp); Irp->IoStatus.Information=0; if (irpStack->MajorFunction == IRP_MJ_DEVICE_CONTROL) { if (irpStack->Parameters.DeviceIoControl.IoControlCode==IOCTL_QUERY) { DPRINT("QUERY"); тут ты делаеш всю обработку. Короче читай работу с дровами } else status = STATUS_INVALID_DEVICE_REQUEST; } Irp->IoStatus.Status = status; IoCompleteRequest(Irp,IO_NO_INCREMENT); return status; } А в проге открываеш файл CreateFile("\\\\.\\DRVNAME) и через DeviceIoControl отправляй запросы дрову. PS - IOCTL_QUERY это моя буфкция обработчик которая строится так: #define IOCTL_QUERY CTL_CODE(FILE_DEVICE_UNKNOWN, 0x01, METHOD_OUT_DIRECT, FILE_ALL_ACCESS) METHOD_OUT_DIRECT значит прямой доступ к выходному буферу(без использования промежуточного) Это всё описано в книге Солдатов В.П. Программирование драйверов Windows. 2) врядли будет пахать int 2eh потому как он устанавливается как дань традициям, но всё равно юзается тока sysenter если винда начиная с XP и проц начиная с P2
Народ, я совсем недавно начал изучать С++, объясните, что такое функция и как к ней обращаться заранее спасибо!!!
Функция - http://www.google.com/search?&q=define:%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F& Обратится - просто function(аргументы)
В любой части программы - после того места где описана сама функция вставляеш function_name() - если функция без аргументов (function_name - имя функции- например Main) или function_name(аргумент1 , Аргумент2, .... и т.д.) - если с аргументами. Сама функция выглядит Code: int Summa(int x, int y) { int z; z = x+y; return z; } Вызов в свою очередь будет происходить так Code: int result; result = Summa(4,6); В итоге в result будет сумма чисел 4 и 6. Извиняюсь - как всегда не обновил страницу перед ответом. не обязательно, функция может быть и без аргументов.
начался трэшак... открывайте учебник и читайте пор работу с файлами, потоками ввода вывода. если каждый ленивый горепрограммер будет задавать одни и теже вопросы, разжованные идеально в любых буках - тема утонет в гуане.
2ImNaruto Используй поиск - как по форуму так и по гуглу/яндексу как на мой взгляд то лучше использовать ini файл http://devoid.com.ua/c-builder/cpp-builder-for-beginners/load-and-save-properties-in-ini-files.html 2Ra$cal ну что же поделать =) по этой теме уже можно написать буку
GetTickCount перед входом в цикл и после выхода или мой самописный класс, который считает с точностью до наносекунд
Всем здрасти) Подскажите пожалуйста, какой функцией делать очистку консоли в Эклипсе под линуксом? System ("cls") в Эклипсе не дает ни каких результатов. В заранее благодарю.
Есть ли книги на русском языке по MFC ? И что можно почитать про переход к программированию графического интерфейса пользователя