[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Всем привет.Очень нужен хороший учебник по си,поскольку в библиотеках не нашёл.Также компилятор не помешал бы.Есть что-нибудь хорошее(исключая древние компильки).
     
  2. POS_troi

    POS_troi Elder - Старейшина

    Joined:
    1 Dec 2006
    Messages:
    1,569
    Likes Received:
    466
    Reputations:
    108
    gcc как компилятор
     
    #3602 POS_troi, 27 Aug 2009
    Last edited: 27 Aug 2009
  3. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Линукс как мечта.У меня винда.К тому же,в универе мы прогать бум на старье.А дома нужно нормальное...
     
  4. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    Как лучше всего из программы в юзермоде вызвать функцию из моего драйвера?
    Что будет если я например в XP SP3 сделаю int 2eh вместо SYSENTER?
     
  5. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    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
     
  6. denisov21g21

    denisov21g21 Banned

    Joined:
    1 Jul 2009
    Messages:
    17
    Likes Received:
    1
    Reputations:
    -1
    Я

    служба поддержки VDS manager
    591-493-245
     
  7. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    mingw как порт gcc под винду )
     
  8. Mr.Sylar

    Mr.Sylar New Member

    Joined:
    15 Jan 2009
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    :confused: :confused: :confused: Народ, я совсем недавно начал изучать С++, объясните, что такое функция и как к ней обращаться заранее спасибо!!! :confused: :confused: :confused:
     
  9. agrofyl2

    agrofyl2 New Member

    Joined:
    25 Apr 2008
    Messages:
    54
    Likes Received:
    4
    Reputations:
    0
    Функция - http://www.google.com/search?&q=define:%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F&
    Обратится - просто function(аргументы)
     
  10. POS_troi

    POS_troi Elder - Старейшина

    Joined:
    1 Dec 2006
    Messages:
    1,569
    Likes Received:
    466
    Reputations:
    108
    В любой части программы - после того места где описана сама функция

    вставляеш

    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.

    Извиняюсь - как всегда не обновил страницу перед ответом.

    не обязательно, функция может быть и без аргументов.
     
    1 person likes this.
  11. ImNaruto

    ImNaruto New Member

    Joined:
    24 Jul 2009
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    Ктонить объясните как созранять значение переменных в файл.
     
  12. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    начался трэшак... открывайте учебник и читайте пор работу с файлами, потоками ввода вывода. если каждый ленивый горепрограммер будет задавать одни и теже вопросы, разжованные идеально в любых буках - тема утонет в гуане.
     
    1 person likes this.
  13. POS_troi

    POS_troi Elder - Старейшина

    Joined:
    1 Dec 2006
    Messages:
    1,569
    Likes Received:
    466
    Reputations:
    108
    2ImNaruto

    Используй поиск - как по форуму так и по гуглу/яндексу

    как на мой взгляд то лучше использовать ini файл

    http://devoid.com.ua/c-builder/cpp-builder-for-beginners/load-and-save-properties-in-ini-files.html

    2Ra$cal

    ну что же поделать =)

    по этой теме уже можно написать буку
     
    #3613 POS_troi, 28 Aug 2009
    Last edited: 28 Aug 2009
  14. -m0rgan-

    -m0rgan- Elder - Старейшина

    Joined:
    29 Sep 2008
    Messages:
    514
    Likes Received:
    170
    Reputations:
    17
    привет, подскажите пожаляйста ф-ю для определения времени выполнения цикла(while)
    зарание спасибо!
     
  15. -m0rgan-

    -m0rgan- Elder - Старейшина

    Joined:
    29 Sep 2008
    Messages:
    514
    Likes Received:
    170
    Reputations:
    17
    И что?
    она должна определять время выполнения цикла на каждой тачке.
     
  16. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    #3616 Ra$cal, 28 Aug 2009
    Last edited: 28 Aug 2009
  17. eldar85

    eldar85 New Member

    Joined:
    27 Aug 2009
    Messages:
    126
    Likes Received:
    1
    Reputations:
    0
    Всем здрасти) Подскажите пожалуйста, какой функцией делать очистку консоли в Эклипсе под линуксом? System ("cls") в Эклипсе не дает ни каких результатов. В заранее благодарю.
     
  18. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    system("clear");
     
  19. Mozy

    Mozy Member

    Joined:
    15 Mar 2009
    Messages:
    52
    Likes Received:
    34
    Reputations:
    6
    Есть ли книги на русском языке по MFC ?
    И что можно почитать про переход к программированию графического интерфейса пользователя
     
  20. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Мешков и Тихомиров "Visual C++ и MFC"
    Программирование на VISUAL C++ 6.0
     
    1 person likes this.
Thread Status:
Not open for further replies.