Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Клуб профессиональных программистов :: Выпуск #89


Клуб профессиональных программистов "Весельчак У"
Информационная рассылка сайта и форума.  Выпуск No89 (2010-02-17).

Здравствуйте, уважаемые читатели!

Содержание.


Предисловие.

Каждый раз, создавая приложение с клиент-серверной архитектурой, я был вынужден повторять одни и теже действия, приводящие к появлению классов сервера и клиента — каждый раз со своими особенностями, но по структуре похожими. Появилось желание написать набор классов, где будет собрана вся рутина. Таким образом, не будет тратиться время (которое есть деньги) на повторение каждый раз общей части данной архитектуры. Кроме того, код классов клиента и сервера будет не так загружен, ведь рутина остаётся в родительских классах.

В этой части статьи будет реализована только структура клиент-сервер, работа же по дрессировке передаваемых и принимаемых данных будет проведена во второй части. Пока для передачи данных можно будет пользоваться прямыми вызовами методов CAsyncSocket::Send и CAsyncSocket::Receive. (Us_Send() и Us_Receive() соответственно). Но такой неструктурированный поток данных будет приниматься (а иногда и передаваться) нестабильно. Файлы классов (ASocket1153.cpp и ASocket1153.h) в том виде, в каком они сделаны в рамках первой части статьи, можно найти здесь.


Клиент-серверная архитектура приложения.

Для начала глянем, что пишет энциклопедия о данной архитектуре:


Цитата: Материал из Википедии — свободной энциклопедии
Клиент-сервер (англ. Client-server) — сетевая архитектура, в которой устройства являются либо клиентами, либо серверами. Клиентом (front end) является запрашивающая машина (обычно ПК), сервером (back end) — машина, которая отвечает на запрос. Оба термина (клиент и сервер) могут применяться как к физическим устройствам, так и к программному обеспечению.

При построении клиент-серверной архитектуры приложения неизменно используются следующие элементы создаваемой системы:

  • Клиент (обозначение далее — 1CL). Объект, который подключается к серверу.
  • Сервер (обозначение далее — SRV). Объект, осуществляющий ожидание запроса на подключение от Клиента (1CL) и подключающий его к одному из элементов серверного массива пАр для Клиентов.
  • Серверный клиент (обозначение далее — sCL). Этот объект является элементом серверного массива клиентов. В этом массиве содержатся «точки» (или «клиентские пАры») для подключения Клиентов (1CL).



Рисунок 1.


Установление постоянного соединения Клиента с Сервером типично для протокола TCP/IP, который и будет использоваться в наших классах.

...


Целиком статью вы можете прочесть на нашем сайте в разделе «Программирование в ОС::Windows».

С примерами и картинками. :)



  • Программирование :: Общий
  •   Я хочу написать собственную биллинговую систему для Linux шлюза. Поскольку на C++ я не пишу, а пишу на FreeBasic... Есть ли у кого нить из вас модуль который бы перехватывал заголовки IP пакетов и транслировал бы клиенту на TCP порт или локльный сокет.
      Примерно в таком формате: "Куда, откуда, размер пакета"
      То что будет накодено выложу в сеть под лицензией GNU.

    Жду советов и консультаций.
  • Здравствуйте!
    Это даже не вопрос, а просьба! Посоветуйте литературу, посвещенную принципам построения файловых систем и использования файловых систем!
  • Программирование :: Технологии разработки программных систем
  • День добрый! Вот набрел на такое понятие как lock-free синхронизация. Суть объяснена например здесь: http://developer.amd.com/documentation/articles/pages/125200689.aspx http://www.audiomulch.com/~rossb/code/lockfree/ Меня весьма заинтересовал этот вопрос, поскольку по роду деятельности тоже приходится часто разрабатывать хитрозамученные многопоточные проекты, причем синхронизация и масштабируемость (в случае, если используется целый пул потоков, с числом потоков меняющегося в динамике) доставляет прилично головной боли. В сквязи с этим интересно есть ли у кого опыт использования такого рода синхронизации, а особенно lock-free структур, и каковы результаты.
    ЗЫ Интересно, что в ядрах 2.6 линукса используется так называемый RCU механизм, по сути один из приемов lock-free синхронизации
  • Программирование :: .NET технология от и до
  • Пишу так?
    Код:
    pin_ptr<const wchar_t> ip = ::PtrToStringChars(dir);
    В переменной dir строка такая: "D:\Program Files\Fraps\Screenshots\ExeFile 2010-02-16 20-56-28-65.bmp"
    А в переменной ip при отладке наблюдается только "D"
    Поэтому при удаление этого файла, ничего не удаляется:
    Код:
    DeleteFile(ip);
    Как решить?
  • Доброго всем времени суток. Долго обшаривал Интернет и ничего конкретного по теме не нашел.... У меня следующая проблема: Имеется резистивная тач панель и имеется разработанное мною устройство, которое обрабатывает сигналы с этой панели и передает абсолютные координаты касания компьютеру по USB (реализовано стандартное HID устройство, типа мышь, правда, с одним отличием: я в дескрипторе HID устройства поменял тип передаваемых данных с относительных на абсолютные). И все это устройство прекрасно работает с Windows XP, а вот с Windows ce не хочет.... Курсор управляется, но только по относительным координатам., т.е., при передаче координат (0x01;0x01) указатель начинает двигаться по диагонали с постоянной скоростью, причем независимо от того, какой тип данных я ставлю в дескрипторе своего устройства.
    Буду рад любой помощи...
  • Программирование :: .NET технология от и до :: WinForms
  • Как их использовать? Можно како-нибудь пример кода?

    И самое главное: почему, когда я подключаю библиотеку Hotkey.lib вот так:
    Код:
    #pragma comment(lib,"Hotkey.lib")
    Коспилятор выдает мне такую ошибку:
    Цитировать
    fatal error LNK1104: не удается открыть файл ''Hotkey.lib''
  • Программирование :: С/С++
  • Доброго всем времени суток!
    хотелось поговорить с вами по поводу производительности методов на C++:
    1) советы по повышению производительности из личного опыта;
    2) наиболее продуктивные операции над переменными, и
        возможные ошибки провоцирующие понижение эффективности;
    3) наиболее эффективные способы использования функций (или классов),
        от которых зависит вся производительность приложения (на C++);
    4) ну и т. д. и т. п.
    если кто что-нибудь знает как "выжать" максимальную скорость и эффективность, отзовитесь!  :)
    спасибо всем за участие!
  • Продолжение темы "Давайте поговорим об exeption'ах?"

    Спасибо, друзья, за ценные мысли!

    Ну и тяжело же с этими вопросами...  Угрохал больше недели на предмет обнаружения ошибки переполнения буфера. Объясню. Я применяю известную библиотеку FFTW. Она обладает функцией вычисления так называемого плана расчета FFT. Я сделал класс, который заготавливает массивы, вычисляет планы, а потом производит полезную работу.

    Столкнулся с ситуацией, когда ошибка в моей части (запись массива результата) портит находящийся за нею в классе план. Результат: в библиотеке FFT производится вызов функции по не существующему адресу. Пытаюсь отлаживать - в стеке вызовов пару точек системной DLL... (по-моему NTDLL.DLL)

    Где искать, куды бечь?... Как отловить порчу полезных данных?

    Может и против такой напасти существует "противоядие"?

    Спасибо, друзья!
  • Программирование :: С/С++ :: WinAPI & Visual C++
  • Проблема в следующем GDI+ делает снимок экрана когда попало, и очень часто бывает, что кадр ещё полностью не отрендился, а снимок экрана уже делается, из-за чего не все эелементы окна попадают в кадр.

    Fraps делает снимки как надо и так понял он использует для снятие скриншотов технологию DirectX.

    Я ничего не понимаю в DirectX и мне не сильно хочется тратить 2-3 месяца на его изучение чтобы узнать написать только одну функцию. Для моего проекта мне вполне хватает GDI+ который я по мере продвижения подучиваю.

    Если у кого-нибудь есть функция, которая делает снимок игры в полноэкранном режиме и записывает это все в Bitmap, то выложите пожалусто. И если у Вас её нет, но вы знаете как просто её написать, тоже выложите :)
  • Говорят, в Microsoft Visual Studio 2008 Professional Edition компилятор существенно лучше. Скомпилированные программы работают быстрее, чем в Microsoft Visual С++ 6.

    1. Действительно ли настолько лучше или разница небольшая, хотелось бы ссылку на статью с тестами этих версий между собой или как-то самому можно это выяснить?

    Если нет практически никакой разницы, тогда ещё два вопросика:

    2. В Microsoft Visual С++ 6 размер SP6 примерно в два раза меньше чем SP5, это значит, что я должен для нормальной работы установить SP5, а затем SP6, я-то думал, что все заплатки из старого SP переходят в новый и плюс новые заплатки?

    3. Зачем нужно в Microsoft Visual С++ 6 при использовании функции timeGetTime​ подключать библиотеку
    #pragma comment(lib, "winmm.lib"), а если не подключать библиотеку, то при запуске программы возникает ошибка
    text.obj : error LNK2001: unresolved external symbol __imp__​timeGetTime@0, я её в компиляторе borland не подключал, она и так работала, да и во многих примерах для Microsoft Visual не написано про это?

    Помогите, пожалуйста, разобраться.
  • 1) при создание нового экземпляра класса bitmap используется не тот конструктор, тоесть: Я пише:
    Код:
    Bitmap bmp(membit,(HPALETTE *)NULL);//Где membit - HBITMAP
    А при компиляции выдается ошибка:
    Цитировать
    Gdiplus::Bitmap::Bitmap(const WCHAR *,BOOL): невозможно преобразовать параметр 1 из 'HBITMAP' в 'const WCHAR *'
    Почему такой бред получается, ведь я вызываю совсем другой конструктор?
    2) Открываю Bitmap из файла вот так:
    Код:
    Bitmap bmp1(L"D://Screen//Скрин2.bmp");
    Потом сохраняю вот так:
    Код:
    bmp1.Save(L"D://Screen//some.bmp",&((CLSID)::ImageFormatBMP));
    Затем пытаюсь вывести цвет пикселей вот так:
    Код:
    zvet = bmp1.GetPixel(x,y,&zvet);
    std::cout << x << "|" << y << "|" << zvet.Red << "|" << zvet.Green << "|" << zvet.Blue << "\n";
    И как это часто бывает, ничего не выходит.
  • Добрый день.
    программирую на VC++.

    подскажите код (или ссылку на код) снятия (в буфер или в память или куда там, чтоб доступ был к НBITMAP) скриншота 
    заданной зоны рабочего стола экрана.

    буду рад любой, даже косвенной информации.
    спасибо Вам
  • Программирование :: С/С++ :: Borland C/C++
  • Доброго времени суток! Хочу задать вот какие вопросы:

    1) Как в компоненте TRichEdit отключить звуковой сигнал, когда в пустом текстовом поле с помощью стрелок на клаве определяются, я так понимаю, границы заполненного или пустого поля??

    2) Можно-ли как-нибудь отключить возможность удаления загруженного текста в TRichEdit'e с помощью клавиши BackSpace, тобишь проше говоря - как отключить клавишу BackSpace только для компонента TRichEdit??
  • Программирование :: Delphi
  • Условие задачи:
    Газовая смесь, содержащая   (% объёмных) хлора и   (% объёмных) воздуха, обрабатывается в насадочном абсорбере водным раствором NaOH с целью удаления из смеси 99,5% хлора.
       Объёмная скорость газового потока -    . Процесс абсорбции проводится при температуре газового потока 17   и атмосферном давлении Р = 1 атм. Диаметр абсорбера составляет    . Структуру газового потока в колонне можно интерпретировать моделью идеального вытеснения.
       Требуется рассчитать высоту насадочного слоя     в колонне, при которой достигается требуемая степень поглощения хлора, т.е. 99,5%, если массовая скорость потока жидкой фазы (водного раствора NaOH), орошающего слой насадки, достаточна для обеспечения рабочего режима процесса хемосорбции. Конечное уравнение представляет собой:
     dy/dz=-0.5*S_a/G_vm*sqr(1-y)*ln(1/(1-y))*exp(0.8*ln((71*y/(1-y)+29)*G_vm/S_a));
    Где S_a-площадь поперечного сечения абсорбера
         G_vm- мольная скорость потока воздуха

    Теперь сам готовый код:
    Код:
    Program A;
    uses crt;
    var
    i:integer;
    k1,k2,k3,k4,k5,h,z,y,S_a,G_vm:real;
    Function f(y:real): real;

    begin
     G_vm:=0.00042*(100-50)*120;
     S_a:=pi*sqr(0.45)/4;
     f:=-0.5*S_a/G_vm*sqr(1-y)*ln(1/(1-y))*exp(0.8*ln((71*y/(1-y)+29)*G_vm/S_a));
    end;

    begin
     clrscr;
     h:=0.0001;
     z:=0; y:=0.5; i:=0;
     Repeat
     z:=z+h;
     i:=i+1;
     k1:=h*f(y);
     k2:=h*f(y+k1);
     k3:=h*f(y+k1/2+k2/2);
     k4:=h*f(y+3*k1/8+9*k3/8);
     k5:=h*f(y+3*k1/2-9*k3/2+6*k4);
     y:=y+1/6*(k1+4*k4+k5);
     if ((i=1) or (10204-i<6)
     or (i mod 500=0)) then

    begin
     writeln('z=',z:6:4,'y=',y:6:6);
     readln;
    end;

    until(y<=0.005);
    readln;
    end.
  • Программирование :: Ассемблер
  • Не могу сделать перевод 10-чного числа введённого с клавиатуры из ASCII строки в число.
    Код:
    ASCIIDecToBin proc
    push ebp
    mov ebp,esp
    push esi
    push ecx
    mov esi,[ebp+8]
    xor eax,eax
    xor ecx,ecx
    m2: 
    mov cl, byte ptr [esi]
    cmp cl, 0Dh
    je exit
    cmp cl, 39h
    jbe m1
    invoke StdOut,$CTA0("First number must be in range 1...255")
    invoke ExitProcess,0
    m1:
    sub cl,30h
    or al,cl
    shl eax,4
    inc esi
    jmp m2
    exit:
    shr eax,4
    pop ecx
    pop esi
    pop ebp
    ex:
    ret 4
    ASCIIDecToBin EndP
    Входящие параметры : буфер со строкой
    Каждый байт с кодом символа перевожу в число. Далее перемещаю его в первые 4 бита ЕАХ.
    Сдвигаю ЕАХ на 4 бита влево для ноговго разряда.
    Убираю лишний сдвиг после последнего розряда.
    Только потом понял что полученное распазнаётся в 16-ричной системе.
    Дайте совет.
  • Программирование :: Java
  • Есть некий метод:
    Код:
    public void formGUI(java.awt.Panel panel, Table table)
    {
        panel.removeAll();
        ...
            panel.add(new_component);
        ...
    }
    Он вставляет на панель кнопки/текстовые поля/лэйблы и т. д., в зависимости от таблицы table. Первый раз (когда эта функция вызывается с коструктора) всё нормально работает. Но следующий раз просто удаляет все компоненты и стает пустой. В отладчике проверил: все данные верны, код добавления елементов тоже работает. Но не отображает. Почему? Подскажите, пожалуйста.
  • Программирование :: Программирование 1С
  • Подскажите, в связи с вводом новых счетов мне нужно перенести счета из программы Бухгалтерия ?.? в ЗиК. В самой ЗиК они не редактируются. Как это сделать?
  • Доброго всем суток! Вот решилась на ответственный шаг изучения программирования 1С бухгалтерии. Мне как новичку предложили учитЬся по книге М.Г.Радченко 1С Предприятие 8.1.
    ПроблеМа возникла в процедуре заполнения цены в документе
     Вот код:
               Процедура ПереченьНоменклатурыНоменклатураOnChange(Control)
       
       СтрокаТабличнойЧасти = ЭлементыФормы.ПереченьНоменклатуры.ТекущиеДанные;
       
       СтрокаТабличнойЧасти.Цена = РозничнаяЦена(Дата,Элемент.Значение);
       
          РассчитатьСумму(СтрокаТабличнойЧасти);
       КонецПроцедуры

    А вот ошибка {Document.ОказаниеУслуг.Form.ФормаДокумента(72,49)}: Переменная не определена (Элемент)
       СтрокаТабличнойЧасти.Цена = РозничнаяЦена(Дата,<<?>>Элемент.Значение);

     А вот код функции РозничнаяЦена, которую я использую в общем модуле.

      Функция РозничнаяЦена (АктуальнаяДата, ЭлементНоменклатуры)Экспорт
       Отбор = новый Структура("Номенклатура",ЭлементНоменклатуры);
       ЗначениеРесурсов=РегистрыСведений.Цена.ПолучитьПоследнее(АктуальнаяДата, Отбор);
       Возврат ЗначениеРесурсов.Цена;
      КонецФункции

    Все смотрю, что сделала не так? Где мне нужно определить этот Элемент? Буду очень признательна за ответ.  

  • Программирование :: Программирование 1С :: 1С 7.x
  • В меню конфигуратора есть пункты:  Администрирование -> Сохранение, Восстановление, Загрузка и Выгрузка...
    Провел я эксперимент.
    Имею 1С с базой на SQL Server.
    Сначала сохранил данные в файл через Администрирование -> Сохранение.
    Потом сделал изменения в базе...
    Потом попробовал восстановить через Администрирование -> Восстановление.
    В результате должно было восстановиться то, что было до внесения изменений в базу данных...,
    однако база как будто не увидела моих попыток "восстановить" базу данных...
    Все внесённые мною после сохранения данные так в ней и остались после попытки "восстановить" базу...

    Тогда попробовал я выгрузить данные через Администрирование -> Выгрузка.
    Потом сделал изменения в базе...
    Потом попробовал восстановить через Администрирование -> Загрузка.
    В результате было восстановлено то, что было до внесения изменений в базу данных.
    Т.е. в базе восстановилось то, что было "выгружено", а все изменения, сделанные после выгрузки, исчезли.

    Означает ли это, что Сохранение-Восстановление предусмотрено для файл-сервера, а Загрузка-Выгрузка для SQL-сервера?
    И если нет, то поясните пожалуйста для чего и то и другое? :shuffle:

    И ещё... SQL Server имеет свои средства сохранения- восстановления данных минуя конфигуратор 1С. будет ли правильнее использовать средства сохранения данных SQL Server.
    Как лучше?
  • Программирование :: Программирование 1С :: 1С 8.x
  • Доброго времени суток и всех влюбленных с праздником, вот у меня любовь с 1С пока что 1-0 в её пользу... Есть неплохая книга с примерами Радченко, но вот выполнять, как мартышка, половину, не понимая значения выполненого, не очень интересно, когда-то очень давно программировал в Бейсике, помогает порой... Но большинство не совсем понятно: что в данный момент происходит, зачем и как! Естесственно, рыскаю в книгах, приходит какое-то понимание, но процесс такого самообразования происходит предельно медленно. Если есть кто терпеливый объяснить мне суть происходящего, прошу помочь в этом, от себя обещаю постараться быстро схватывать...
    Итак, есть такая функция в общем модуле:

    Функция РозничнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

       // Создать вспомогательный объект Отбор
       Отбор = Новый Структура("Номенклатура",ЭлементНоменклатуры);
      
       // Получить актуальные значения ресурсов регистра
       ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

       Возврат ЗначенияРесурсов.Цена;

    КонецФункции

    С первой строчкой пока вопросов нет- ясно, а вот вторая:
    Отбор = Новый Структура("Номенклатура",ЭлементНоменклатуры);

    Сразу за знаком = я теряю нить ясности, что означает и как работает: Новый, Структура, а также элементы в скобках, почему первый в кавычках (и что это дает)
    Пока остановимся на этом, добросердечные, помогите-разъясните :)
  • И снова здравствуйте) Кто-нибудь знает, как в запросе в СКД выбрать документы за период с начала года до выбранной даты?

    Текст запроса в СКД:


    Код:
    ВЫБРАТЬ
    Товары.Номенклатура КАК Номенклатура,
    Товары.Цена КАК Цена
    ПОМЕСТИТЬ Цены
    ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК Товары
    ГДЕ
    Товары.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&НГ,ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаКон,ДЕНЬ)


    На функцию НАЧАЛОГОДА((&НГ) ругается...


  • Здравствуйте.
    Мне в документ РеализацияТоваровУслуг в ТабличнуюЧасть Товары надо добавить реквизит Вес, в зависимости от количества товара должен просчитываться вес.

    Код:
    Процедура ТоварыКоличествоПриИзменении(Элемент)

       ПриИзмененииКоличестваТовары(Элемент);
       ВесОдного = Справочники.ЕдиницыИзмерения.Выбрать().Вес;
       ЭлТов = ЭлементыФормы.Товары.ТекущаяСтрока;
       ЭлТов.Вес = ЭлТов.Количество * ВесОдного;

    КонецПроцедуры

    Проблема в том, что я не знаю, как обратиться к реквизиту Вес в справочнику ЕдиницыИзмерения (как достать оттуда информацию и ею пользоваться).

    Помогите, пожалуйста!
  • Программирование :: Авторское ПО
  • ################### 16-03-2009 1:04 ########################
    Теперь игра запускается в оконном режиме. Оптимизировал реализацию фиксированного FPS.
    Ревизия в CVS равна '19', ветка 'http://svn.shelek.su/public/batty/batty_window'.

    Собраный бинарник batty.zip 37.2Кб

    P.S. Для запуска программы требуется DirectX 8.0 или выше.
    -------------------------
    <ESC> - выход из программы
    <P> - пауза
    Управление "мышью" и "клавиатурой":
    <K>  - влево ( <-- )
    <L>  - вправо ( --> )
    <SPACE> - стрелять
    -------------------------

    ################### 03-02-2009 1:04 ########################
    Игровой движок (logic.c) и модуль рисования игровых стадий (draw.c)  реализованы полностью.
    Ревизия в CVS отражающая текущее состояние равна '11', ветка 'http://svn.shelek.su/public/batty'.

    Осталось реализовать меню и добавить музыкальное сопровождение.

    Собраный бинарник batty.zip 26.5Кб, содержит все стадии.

    P.S. Для запуска программы требуется DirectX 8.0 или выше. Для отображения FPS передайте бинарнику в качестве параметра строку -debyg.
    -------------------------
    <ESC> - выход из программы
    <p> - пауза
    -------------------------

    ################### 16-11-2008 14:50 ########################
    Реализованы все падающие бонусы и переход между стадиями.

    Теперь все исходники размешены на SVN-сервере: http://svn.shelek.su/public/batty/, ревизия '1'.

    Собраный бинарник batty.zip 25.1Кб содержит первые три стадии.

    P.S. Для запуска программы требуется DirectX 8.0 или выше.
    <ESC> - выход из программы
    <q> - перегрузить уровень
    <e> - пауза

    ################### 06-08-2008 11:11 ########################
    Изменил модуль draw.c, теперь все работает стабильно на разных видеокартачках (хочется в это верить :-) ).

    Доработан модуль logic.c, в принципе логика вся написана и протестирована. Осталось реализовать в полной мере все падающие бонусы.

    Еще большая тема, это озвучка и фоновая музыка, sound.c. Предстоит искать midi для фоновой музыки и wav для озвучки событий.

    Но самая большая проблема, которая очень тяжело решается, это отсутствие свободного времени. :-) Но я думаю этот проект довести до конца.

    Исходники и скомпилированная программа: batty.zip 62.2Кб

    P.S. Для запуска программы требуется DirectX 8.0 или выше.
    <ESC> - выход из программы.
    1, 2, 3 – разные ракетки.

    Пишите свои отзывы по программе, будет интересно их услышать. Ну и конечно об обнаруженных багах. :-)

    ################### 21-03-2008 11:03 ########################
    В старые добрые времена был такой компьютер ZX Spectrum и была на нем очень хорошая игра 'Batty'. И вот я решил ее переписать под ПК. :-)

    После того как большая часть движка была написана я обнаружил интересный глюк, игра на моем старенком Pentium 3 бегает только шум стоит. А на современном железе с современной видеокарточкой игра стала тормозить. Пришлось переделывать функции привязки к FPS и приводить весь код к разрешению 640х480.

    Я выложил архив (batty.zip 142.8Кб) содержаший несколько вариантов программы с разными способами обеспечения FPS.

    Архив содержит:
    Цитировать
    batty_sync.exe - построена на основе 'timeGetTime()'
    batty_alt.exe - альтернативное использование 'timeGetTime()'
    batty_NoSync.exe - построена без использования привязки FPS (т.е. мотает на всю катушку)
    ./src - содержит исходники данного проекта

    У меня такая просьба, запустити данные программы у себя и скажите у кого какой FPS показывает и на каком железе, должно быть 50 FPS. Значение FPS отображается в верхней части экрана.

    P.S. Для запуска программы требуется DirectX 8.0 или выше. И еще, для выхода из программы нажмите <ESC> :-) .
  • Операционные системы :: Windows
  • На жёстом диске стоит Windows XP, диск не поделён на разделы. При запуске Windows выскакивает проверка как запустить Windows, то есть безопасный режим, обычный режим и т.д. После включения обычного режима мелькает синий экран смерти и начинается перезагрузка. Что на синем экране пишут, не успеваю посмотреть код ошибки. Такая вот беда. На диске важная информация, которую нужно извлечь. При подключении HDD к другому компу диск не открывается.
    Нужна помощЬ в извлечении информации. Может есть программы или как-то через реестр возможно починить систему?
  • Люди, такая проблема. При включении компьютера идет полоска загрузки Windows. После 2 проходов полоски на секунду мелькает синий экран с белым текстом и происходит перезагрузка ПК. Потом идет предложение запуститЬся в безопасном режиме (в нем не запускается тоже), и так раз за разом.
  • Как сделать так, чтобы некая конкретная папка всегда открывалась в одном и том же прямоугольнике на рабочем столе ?

    ( Вроде бы есть какое-то штатное средство - вроде системного файлика особого вида в папке , если не ошибаюсь)
  • Windows XP SP3 профессионал, лицензионная с последними обновлениями.
    Однажды заметил, что в окне "Выключить компьютер" пропали буквы "Выключить компьютер", остались только пустые квадратики вместо букв.
    Как восстановить эту надпись в окне?
    Знатоки, помогите, пожалуйста.
    Все остальное работает, на вирус проверен.
  • Никто не подскажет, где поискать функцию для перекодировки текста в одной CP в  другую?  Например, в OS/2 API имеется библиотечка для конвертации всего, чего угодно, в Unicode и обратно. Т.е., перегоняем текст, указывая CP, в Unicode, потом - в другую CP назад, и все просто и хорошо. АВключая экзотику типа UTF-8 или KOI8 . А есть ли  что-то подобное в WIndows&

    Заранее спасибо за конкретные  :yes: ответы.

  • Всем добрый вечер.
    Установил windows 7, до этого стояла Vista, с которой все было нормально.

    Проблема: не могу выйти в интернет.

    Информация:
    • к сети подключен
    • DNS пингуется, шлюз пингуется,
    • все программы, которые могут блокировать выход в интернет отключены.

    Для решения проблемы пробовал следующие варианты:
    • выключить и влкючить адаптер
    • обновить драйвер
    • команду netsh winsock reset, с последующей перезагрузкой компьютера
  • Операционные системы :: Unix и другие
  • Привет всем.
    После запуска бинарника, все кириллические шрифты (iso8859-5) внутри окна OpenWindow да и CDE отображаются корректно, кроме надписи в заголовке окна, там "кракозябры". Если конкретней, там где обычно пишут название проги, версию (наверное  :) СaptionBar).

    Вывод такой: получается, что шрифты "зашитые" в сам бинарник находятся, раз он запускается. Или я не прав?
    У этого шрифта в заголовке окна другая кодировка?
    Или из-за того, что у него более меньший размер - подключается шрифт (iso8859-1).

    В общем я в тупике.  :confused:

    Р.S. Тот же бинарник только со шрифтами (iso8859-1) - все ОК. Ось Solaris 8.
  • Всем привет. Вот столкнулся с такой проблемой: сервер(ЦС 1.6) берёт не тОт путЬ к файлу mysql.sock, хотя в my.cnf стоит всё правильно, но сервер почему-то читает путь другой, но не тот, что записан в my.cnf. Что делать?
  • Операционные системы :: Unix и другие :: BSD
  • На FreeBSD 7.1 используется ppp для поддержки соединения с провайдером через PPPoE.

    Суть в том, что на 100 Мбит/с сетке без ограничений по скорости предельная скорость колеблется лишь около 1,5 Мб/с при теоретическом потолке около 10-12 Мб/с. top показывает, что в процессе передачи данных со скоростью 1,5 Мб/с idle системы 0%, остальное всё уходит на system, interrupt (в основном и примерно поровну того и другого) и user (мало); время CPU целиком уходит на ppp.

    Машина старая и хилая (PII, 266 МГц), RAM много.

    Вопрос: кто занимался подобными вещами и знает, какие опции ppp можно отключать/включить, чтобы повысить производительность? (Экономией трафика можно пренебречь.)
  • Здравствуйте!

    Пишу вам в полушоковом состоянии... Дело в том, что недавно я решил попробовать в действии ОС FreeBSD. Скачал образ системы версии 8.0. И перед установкой решил почитать про эту систему, в особенности про то, какие программы для нее существуют и можно ли запускать Windows-приложения на ней. Нашел вот эту статью: http://www.computerra.ru/softerra/freeos/22624/ Прочитав ее, я сказал себе: "Как хорошо, что ты пока не всунул установочный диск и не начал установку!!!"... Вобщем, я понял, что перед тем, как мне познавать просторы FreeBSD, мне надо с головой погрузиться в теорию DOS-команд! Благо, у меня есть такое пристрастие и, немного попрактиковавшись, я не буду смотреть вот так  :o  на очередное сообщение от FreeBSD. В первую очередь скажите, пожалуйста, FreeBSD выходит только на английском? Русской версии нет в природе? А то у меня с английским очень туго... Вообще-то как-то не очень приятно смотреть на будущего программиста, который не знает английского...

    Но перейдем к теме вопроса... Вообще, зачем мне понадобился FreeBSD, спросят меня многие из вас. Отвечаю! Хочу сэмулировать хостинг, настроить свой блог на максимальную работоспособность и выложить его в Интернет в максимально рабочем виде... Кроме того, я задумал кое-какую фишку. У меня на блоге будет форум и чат. Вот я хочу скрестить авторизации этих средств общения и предоставить пользователям возможность сразу же входить в них, без лишних действий... Согласитесь, это было бы очень удобно! Т.е. пользователь регистрируется на блоге, а в форум и в чат он входит уже автоматически с этими данными... В прошлой теме мне дали пару ссылок на статьи о том как это можно сделать! Спасибо им за это!!!

    Теперь, непосредственно к самому вопросу. Скажите,  пожалуйста, есть ли где-нибудь программы для повседневного использования, которые написаны специально для FreeBSD, такие как: WinRAR, программы для открытия pdf, djvu и пр.?... Я нашел оперу для FreeBSD и ftp-сервер. В принципе, для начальной работы с системой больше ничего и не надо, кроме разве Офиса или его аналога... Чтобы можно было открывать doc-файлы... А установка самой системы и Web-сервера в ней описаны в книге "Установка Web-сервера на FreeBSD 7". Только вот вопрос. Отличается ли установка FreeBSD 7 от FreeBSD 8?... Что вы можете мне посоветовать?...

    Заранее спасибо...
  • Операционные системы :: Unix и другие :: Linux
  • Всем привет, возникла проблема, при загрузки нового ядра выдает ошибку:
    mount: mounting /dev/sda3/ on /mnt failid: No such device ERROR: No /sbin/init/ found on rootdev (or not mounted). Trouble ahead. You can try to fix it. Tupe 'exit' when things are done. /bin/sh: can't access tty; job control turned off /#


    fdisk –l

    Код:
    Disk /dev/sda: 120.0 GB, 120034123776 bytes
    255 heads, 63 sectors/track, 14593 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x90909090
    Device    Boot      Start         End      Blocks   Id  System
    /dev/sda1   *           1        5099    40957686    7  HPFS/NTFS
    /dev/sda2            5100       10447    42957810    f  W95 Ext'd (LBA)
    /dev/sda3   *       10448       14593    33302745   83  Linux
    /dev/sda5            5100       10198    40957686    7  HPFS/NTFS
    /dev/sda6           10199       10447     2000061   82  Linux swap

    fstab

    Код:
    /dev/sda6        swap                swap      defaults                                       0   0
    /dev/sda3        /                       ext4         defaults                                       1   1
    #/dev/cdrom   /mnt/cdrom      auto      noauto,owner,ro                        0   0
    /dev/fd0         /mnt/floppy       auto         noauto,owner                            0   0
    devpts            /dev/pts             devpts     gid=5,mode=620                      0   0
    proc               /proc                  proc          defaults                                      0   0
    tmpfs             /dev/shm            tmpfs       defaults                                     0   0




    lilo.conf

    Код:
    #Linux bootable partition config begins
    image = /boot/vmlinuz
    root = /dev/sda3
    label = Linux
    read-only
    # Linux bootable partition config ends
    image = /boot/bzImage-my
    root = /dev/sda3
    initrd = /boot/initrd.gz
    label = Linux-my

    Про initrd   и mkinitrd знаю читал README.initrd я собирал: mkinitrd -c -o initrd.img -k 2.6.29.6 -m ext4 -f /dev/sda3, mkinitrd -c -o initrd.gz -k 2.6.29.6-smp -m ext4 -f /dev/sda3
    O.S. Slackware 13,0
    Ядро по умолчанию грузится нормально, а вот новое которое я собрал, нет. Ничего не помогло, обшарим интернет, ни чего вразумительного не нашёл, ест много тем по этой ошибки, но так описывается ошибка, но не написано как ее решит, подскажите если знаете как ее решит?
    P.S. Прошу прощения за внешний вид fstab почему то не получилось колонки подогнать.
  • Направления программирования :: Drivers
  • Приветствую всех!
    Есть плата своей разработки на FPGA FLEX10K от Altera, c ядром pci_mt32, все обрамление написано мной на verilog. Плата успешно работает под DOS, но коды писал другой на Pascal, да он уже и уволился. Теперь надо обслуживать эту PCI-плату под Windows XP, но коды писать уже мне. В далекой перспективе есть еще проекты на PCI-X и PCIe.

    Сейчас я хочу:
    1. находить свою PCI-плату в компьютере;
    2. обмениваться с этой платой 32-разрядными данными;
    2. реагировать на её прерывания.

    Перечитал уже несколько книг, но в голове яснее по обслуживанию PCI-плат не стало, даже еще хуже. Все как-то фрагментами, а понимания как же это делается - нет. По этому, нужна «помощь зала», хотя бы пока по первому ряду вопросов:
    Как находить свою PCI-плату в компьютере, ведь там их может быть несколько?
    Как считать назначенный этой плате конфигурационный файл после процедур PnP?   

    Основные книги у меня есть в djvu и я с ними работаю:
    1) Уолтер Они «Использование microsoft windows driver model»
    2) М. Руссинович, Д. Соломон "Внутреннее устройство Microsoft Windows: Windows Server 2003, Windows XP, Windows 2000."
    3) В. П. Солдатов "Программирование драйверов Windows 3-е изд.
    4) Примеры "Программирование драйверов"На http://www.pcports.ru/Articles.php

    Буду очень благодарен за дельный ответ, по сути.

    Хотя я все же больше разработчик цифровой аппаратуры на FPGA, но работаю и с Microsoft Visual C++ 6.0, до этого был Borland C++ Builder 6. Последняя из моих работ - это Ethernet-100 (LAN91C111), где на C++ написан урезанный стек TCP/IP для Nios II  7.2 IDE.
  • У меня стоит WDK 7.0.0.7600. Для сборки драйверов использую штатное средство WDK (DDK) - build (из setenv).  Собирал и простенькие тестовые консольные утилиты. Решил вот собрать НЕконсольную программу. Библиотека C мне тут совсем не нужна, скорее наоборот, надо чтоб ее не было. Программа должна вызвать MessageBox и всё, на выход (с вещами). Пишу в sources
    Код:
    TARGETNAME=AccessVio
    TARGETTYPE=PROGRAM

    UMTYPE=windows
    UMENTRY=winmain
    USE_NOLIBS=1

    MSC_WARNING_LEVEL=/W1

    _NT_TARGET_VERSION= $(_NT_TARGET_VERSION_WINXP)

    TARGETLIBS=\
            $(SDK_LIB_PATH)\user32.lib

    INCLUDES=$(DDK_INC_PATH);

    SOURCES=accessvio.c

    Даю старт (build), а линкер мне в ответ (привожу лог полностью)
    Код:
    BUILD: Computing Include file dependencies:
    BUILD: Examining e:\code\prog\test\access_vio directory for files to compile.
    1>Compiling and Linking e:\code\prog\test\access_vio *************
    1>'nmake.exe /nologo BUILDMSG=Stop. -i BUILD_PASS=PASS2 LINKONLY=1 NOPASS0=1 MAKEDIR_RELATIVE_TO_BASEDIR='
    1>BUILDMSG: _NT_TARGET_VERSION SET TO WINXP
    1> cl @e:\code\prog\test\access_vio\objfre_wxp_x86\i386\cl.rsp
    1>Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.207 for 80x86
    1>Copyright (C) Microsoft Corporation.  All rights reserved.
    1>cl /Fo"e:\code\prog\test\access_vio\objfre_wxp_x86\i386/"
    1> /FC
    1> /Ii386
    1> /I.
    1> /IC:\WinDDK7600.16385.0\inc\ddk
    1> /Ie:\code\prog\test\access_vio\objfre_wxp_x86\i386
    1> /IC:\WinDDK7600.16385.0\inc\api
    1> /IC:\WinDDK7600.16385.0\inc\api
    1> /IC:\WinDDK7600.16385.0\inc\crt
    1> /D_X86_=1
    1> /Di386=1
    1> /DSTD_CALL
    1> /DCONDITION_HANDLING=1
    1> /DNT_UP=1
    1> /DNT_INST=0
    1> /DWIN32=100
    1> /D_NT1X_=100
    1> /DWINNT=1
    1> /D_WIN32_WINNT=0x0501
    1> /DWINVER=0x0501
    1> /D_WIN32_IE=0x0603
    1> /DWIN32_LEAN_AND_MEAN=1
    1> /DDEVL=1
    1> /D__BUILDMACHINE__=WinDDK
    1> /DFPO=0
    1> /DNDEBUG
    1> /DNDEBUG
    1> /DNTDDI_VERSION=0x05010200
    1> /DPSAPI_VERSION=1
    1> /c
    1> /Zc:wchar_t-
    1> /Zl
    1> /Zp8
    1> /Gy
    1> /Gm-
    1> /W1
    1> /WX
    1> /Gz
    1> /hotpatch
    1> /EHs-c-
    1> /GR-
    1> /GF
    1> /GS
    1> /Zi
    1> /Oxs
    1> /Oy-
    1> /Zi
    1> /Fde:\code\prog\test\access_vio\objfre_wxp_x86\i386\
    1> /DKMDF_MAJOR_VERSION_STRING=01
    1> /DKMDF_MINOR_VERSION_STRING=009
    1> /wd4603
    1> /wd4627
    1> /typedil-
    1> /FIC:\WinDDK7600.16385.0\inc\api\warning.h
    1> .\accessvio.c
    1>accessvio.c
    1> link.exe /out:e:\code\prog\test\access_vio\objfre_wxp_x86\i386\AccessVio.exe /machine:ix86 @e:\code\prog\test\access_vio\objfre_wxp_x86\i386\lnk.rsp
    1>Microsoft (R) Incremental Linker Version 9.00.30729.207
    1>Copyright (C) Microsoft Corporation.  All rights reserved.
    1>/MERGE:_PAGE=PAGE
    1>/MERGE:_TEXT=.text
    1>/SECTION:INIT,d
    1>/OPT:REF
    1>/OPT:ICF
    1>/IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221
    1>/INCREMENTAL:NO
    1>/release
    1>/NODEFAULTLIB
    1>/WX
    1>/debug
    1>/debugtype:cv,fixup,pdata
    1>/version:6.1
    1>/osversion:6.1
    1>/functionpadmin:5
    1>/safeseh
    1>/nxcompat
    1>/merge:.rdata=.text
    1>/pdbcompress
    1>/STACK:0x40000,0x2000
    1>/tsaware
    1>/dynamicbase
    1>/subsystem:windows,5.01
    1>/base:@C:\WinDDK7600.16385.0\bin\coffbase.txt,usermode
    1>/entry:WinMainCRTStartup
    1>e:\code\prog\test\access_vio\objfre_wxp_x86\i386\accessvio.obj
    1>c:\winddk7600.16385.0\lib\wxp\i386\BufferOverflowU.lib
    1>c:\winddk7600.16385.0\lib\wxp\i386\advapi32.lib
    1>c:\winddk7600.16385.0\lib\wxp\i386\kernel32.lib
    1>c:\winddk7600.16385.0\lib\wxp\i386\gdi32.lib
    1>c:\winddk7600.16385.0\lib\wxp\i386\user32.lib
    1>c:\winddk7600.16385.0\lib\wxp\i386\int64.lib
    1>c:\winddk7600.16385.0\lib\wxp\i386\user32.lib
    1>c:\winddk7600.16385.0\lib\wxp\i386\sehupd.lib
    1>LINK : error LNK2001: unresolved external symbol _WinMainCRTStartup
    1>errors in directory e:\code\prog\test\access_vio
    1>link : error LNK2001: unresolved external symbol _WinMainCRTStartup
    1>e:\code\prog\test\access_vio\objfre_wxp_x86\i386\AccessVio.exe : fatal error LNK1120: 1 unresolved externals
    1>e:\code\prog\test\access_vio\objfre_wxp_x86\i386\accessvio.exe : error LNK1120: 1 unresolved externals

    Попробовал добавить в sources
    Код:
    LINKER_FLAGS= $(LINKER_FLAGS) /entry:WinMain

    Ниикакой реакции. Тоже самое. Зачем он так со мной? И зачем линковать CRT, когда я явно говорю ему что так не нужно делать.
  • Портирую драйвер PCI карточки для Windows x64. Сборка прошла успешно (Windows Vista & Windows Server Longhorn x64 из DDK 6000).
    Пробую установить на Vista x64 Ultimate. Загружаюсь с выключенной проверкой цифровой подписи. На всякий случай выполнил :

    bcedit /set loadoptions DDISABLE_INTEGRITY_CHECKS

    Драйвер не устанавливается. Сначала была ошибка о неверной строке в inf файле, потом ошибка секции установки службы в инф файле.
    После последнего исправления  установщик пишет : "Драйвер не предназначен для работы на этой платформе. " Ошибка появляется после того, как система делает точку восстановления. То есть устройство опознается правильно.
    inf проверил c помощью CHKINF -
    Код:
    Summary of "c:\inf\lir940pci.inf"
    Total Errors:
       
    1
    Total Warnings:
       
    5

    Errors:
    # Line 1: (E22.1.1081) Directive: CatalogFile required (and must not be blank) in section [Version] for WHQL digital signature.
    Warnings:
    # Line 0: (W22.1.9998) NOTE: The ChkInf tool does not verify the WDF sections and directives of the INF file.
    # Line 0: (W22.1.2212) No Copyright information found.
    # Line 6: (W22.1.2025) No value for Version (DriverVer=mm/dd/yyyy,version).
    # Line 18: (W22.1.2023) Use a string token, and put localizable text in the [Strings] section.
    # Line 40: (W22.1.2034) No destination dir was defined for this section. Your driver is being copied to the DefaultDestDir location specified (10,System32\Drivers).

    Annotated INF:


    ; (W22.1.9998) NOTE: The ChkInf tool does not verify the WDF sections and directives of the INF file.
    ; (W22.1.2212) No Copyright information found.
    [Version]
    ; (E22.1.1081) Directive: CatalogFile required (and must not be blank) in section [Version] for WHQL digital signature.
    Signature=$CHICAGO$
    Class = Multifunction
    ClassGuid = {4d36e971-e325-11ce-bfc1-08002be10318}
    Provider="SKBIS"
    DriverVer=10/02/2009
    ; (W22.1.2025) No value for Version (DriverVer=mm/dd/yyyy,version).
    ;------------------------------------------------------------------------------
    ;  Standard INF sections
    ;------------------------------------------------------------------------------

    [Manufacturer]
    %MFGNAME%=DeviceList,NTamd64

    [DestinationDirs]
    DefaultDestDir=10,System32\Drivers

    [SourceDisksNames]
    1="SKBIS Install Disk",disk1
    ; (W22.1.2023) Use a string token, and put localizable text in the [Strings] section.

    [SourceDisksFiles]
    lir940pci.sys=1,,

    [DeviceList.NTamd64]
    %DESCRIPTION%=DriverInstall,PCI\VEN_0f0f&DEV_0f0f


    ;------------------------------------------------------------------------------
    ;  Windows 2000 Sections
    ;------------------------------------------------------------------------------

    [DriverInstall.NTamd64]
    CopyFiles=DriverCopyFiles






    [DriverCopyFiles]
    lir940pci.sys,,,2
    ; (W22.1.2034) No destination dir was defined for this section. Your driver is being copied to the DefaultDestDir location specified (10,System32\Drivers).


    [DriverInstall.NTamd64.Services]
    AddService=lir940pci,2,DriverService


    [DriverService]
    ServiceType=1
    StartType=3
    ErrorControl=1
    ServiceBinary=%10%\system32\drivers\lir940pci.sys


    [DriverInstall.NTamd64.hw]
    AddReg=DriverHwAddReg

    [DriverHwAddReg]
    HKR,,SampleInfo,,""

    ;HKR,,FriendlyName,,"Lir 940/941 PCI "
    ;HKR,,SampleInfo,,"Lir 940/941 PCI Sample Info"


    ;------------------------------------------------------------------------------
    ;  String Definitions
    ;------------------------------------------------------------------------------

    [Strings]
    MFGNAME="SKBIS"
    INSTDISK="Lir 940/941 PCI Disc"
    DESCRIPTION="Lir 940/941 Pci interface "

    Этот же inf при замене NTamd64 на NTx86 -  отлично устанавливается в Win XP, Vista, Win7 x86.
    Подскажите, где ошибка ? ну или хотя бы в чем, inf - файле или драйвере ?

  • Многострадальный passthru. В топике NDIS Firewall была дана ссылка на Extending passthru 2. Код, о котором пойдет речь далее из этой серии. Но вопрос в этот раз не о фильтрации траффика или каких-то примудростях NDIS. Представляю кусок функции перечилсяющей приатаченные PADAPT'ы (на языке passthru)
    Код:
     pListEntry = pListHead;

    NdisAcquireSpinLick(&Globals.GlobalLock);

    while (pListEntry->Flink != pListHead)
    {
    pListEntry = pListEntry->Flink;
    pAdapt = (PADAPT)pListEntry;

    RtlCopyMemory(pBuffer,
    pAdapt->DeviceName.Buffer,
    pAdapt->DeviceName.Length);

    pBuffer +=  pAdapt->DeviceName.Length;
    *((PWCHAR )ioBuffer) = UNICODE_NULL;
    pBuffer += sizeof(UNICODE_NULL);

    RtlCopyMemory(pBuffer,
    pAdapt->LowerDeviceName.Buffer,
    pAdapt->LowerDeviceName.Length);

    pBuffer +=  pAdapt->LowerDeviceName.Length;
    *((PWCHAR )ioBuffer) = UNICODE_NULL;
    pBuffer += sizeof(UNICODE_NULL);
    }

    NdisReleaseSpinLock(&Globals.GlobalLock);
    Насчет того, что
    Код:
      pAdapt = (PADAPT)pListEntry;
    ...я всё могу объяснить....
    Код:
    typedef struct _ADAPT
    {
    LIST_ENTRY List;
    .....
    } ADAPT, *PADAPT;

    Но, собственно, вопрос не в этом. Вопрос в захвате спин блокировки перед циклом, и освобождением после него. Всем известно, что спин блокировку нужно удерживать как можно меньшее время, т.е. освобождать как можно быстрее. DDK говорит что 25 микросекунд это "смертельный" предел (да ктож их возьмется подсчитать в многозадачной ОС). Ну а что если в списке будет 100 (чисто гипотетически) структур PADAPT. Нехорошо как получается - надеиться что всё успеется. Вопрос: действительно ли это так нехорошо как кажется? И какие тут еще есть варианты, более правильные и безопасные?
  • Начал изучать тему драйверов,
    хочу написать фильтр, для файловой системы, что бы при открытии файла 123.txt для примера выходило окно доступ запрещен.
    За основу взял пример из WDK (7600.16385.0)  scanner, в нем изменил функцию, и при запуске вылетает в бсод,
    Код:
    FLT_PREOP_CALLBACK_STATUS
    ScannerPreCreate (
        __inout PFLT_CALLBACK_DATA Data,
        __in PCFLT_RELATED_OBJECTS FltObjects,
        __deref_out_opt PVOID *CompletionContext
        )
    {
        PFLT_FILE_NAME_INFORMATION nameInfo;
        NTSTATUS status;
        BOOLEAN scanFile;
        const UNICODE_STRING *filename;
        UNREFERENCED_PARAMETER( FltObjects );
        UNREFERENCED_PARAMETER( CompletionContext );

        PAGED_CODE();

       
        status = FltGetFileNameInformation( Data,
                                            FLT_FILE_NAME_NORMALIZED |FLT_FILE_NAME_QUERY_DEFAULT,
                                            &nameInfo );
        FltParseFileNameInformation( nameInfo );
       
        if (!NT_SUCCESS( status )) {

            return FLT_PREOP_SUCCESS_WITH_CALLBACK;
        }

        FltParseFileNameInformation( nameInfo ); // если эту стр. за комментировать то в nameInfo->Name будет мусор, с ней вылетает в бсод
        filename = (L"123.txt\0");
        DbgPrint("FileCreate %wS \n",nameInfo->Name);
        DbgPrint("Our file %wS \n",filename);
        scanFile = RtlCompareUnicodeString(&nameInfo->Name,&filename,TRUE);
       
        if(scanFile)
        {
            DbgPrint("FileCreate STATUS_ACCESS_DENIED\n");
            Data->IoStatus.Status=STATUS_ACCESS_DENIED;
        }

        if (IoThreadToProcess( Data->Thread ) == ScannerData.UserProcess) {

            DbgPrint( "!!! scanner.sys -- allowing create for trusted process \n" );

            return FLT_PREOP_SUCCESS_NO_CALLBACK;
        }

        return FLT_PREOP_SUCCESS_WITH_CALLBACK;
    }
    Подскажите, где проблема?
  • День добрый!

    Есть разрабатываемое USB устройство, для него написан свой драйвер, для установки драйвера написан inf файл.
    Подключаем устройство первый раз, ОС требует драйвер - указываем наш inf файл, ОС его кушает, драйвер ставится и все корректно работает.
    Но есть определенное неудобство - на каждый новый экземпляр нашего устройства ОС требует драйвер. Каким макаром нужно установить драйвер,
     чтоб ОС не требовала драйвера каждый раз когда подключается новый экземпляр нашего устройства? по типу того как винда подставляет USBSTOR.sys для флешек...

    OC - win2k/xp
  • Привет. Драйвер пишу с использованием WDF, необходимо внутри драйвера хранить определенный стэк данных.
    Как лучше реализовать, предполагаю выделить порядка 20 килобайт данных. И вытаскивать эти данные в аппликацию.
    Как лучше это сделать?
  • Есть самодельная плата PCI. Написан простой WDM драйвер для чтения регистров памяти (больше в ней нет ничего).
    Под Windows ХР все работало отлично. А вот в Windows 7 начались непонятные проблемы. Плата определяется, ресурсы выдаются.
    Но чтения из регистров не происходит (возвращает FFFFFFFF).
    Поставил Windriver. С помощью его визарда обнаружил, что CMD PCI Configuration Space равен 0, а должен быть 2 (В ХР он всегда равен 2).  Если в визарде записать туда 2 - все работает. Теперь хочу сделать такую же запись программно при инициализации устройства.
    Попробовал в IRP_MN_START_DEVICE записывать 2 в CMD - не помогает. Возможно нужно делать запись в другом месте ?
    Вопросов 2 :
    1. Почему в Win7 CMD =0.
    (Есть один способ получить CMD=2  в Win7 - после загрузки компьютера заставить его "уснуть" (завершение работы - сон).
    Тогда при пробуждении CMD становится =2)/
    2. В какое время нужно записывать 2 в CMD ?
  • Доброго времени суток! Знаю, что на данном форуме куча информации про NDIS драйвер и, в частности, про Passthru. Но вот есть такой вопрос. Я пишу дипломный проект Файрвол. Не хочется сдавать чужой проект, поэтому взялся за дело сам. Перелопатил ваши статьи да так и не нашел, как драйвер может сообщить о пришедшем пакете и передать его в программу, использующую этот драйвер.
    Использовал пример Passthru driver вот с этого сайта: h**p://www.wd-3.com/downloads/PassThru3.zip
    Отличный сайт, куча примеров, ну а теперь по порядку. Хочу написать кроссплатформенный файрвол. Низкоуровневую часть под Windows собираюсь реализовывать с помощью NDIS driver. Возможно ли в NDIS драйвере реализовать с помощью механизма событий или callback'ов передачу пакета в программу? Необходимо, чтобы при приходе любого пакета программа узнавала об этом и получала его.

    Заранее спасибо)
  • Направления программирования :: Техно
  • Господа, а давайте лучше холивар переведем на сравнение DCOM и SOAP+WSDL. Интересно, для общего развития, услышать мнение уже применявших.

    С DCOM я уже поработал - через COM-stub: ничем от COM не отличается, кроме еще большей тормознутости. В VB использовать просто, в компилируемых языках - менее удобно. С генерацией вропера для BCB6 чуть не повесился - пришлось через Delphi7 делать (баги BCB6), а потом еще свой вропер поверх дописывать (ужасно неудобно было пользоваться).

    От SOAP-WSDL не жду большей скорости, т.к. они базируются на XML, но зато это открытые стандарты.

    Еще один интересный момент: с сохранением состояния или без (как пропагандирует SOA).
  • Третий день не могу овладеть техникой custom (ручного) маршалинга.

    Не помогает ни Дональдс Бокс, ни  Дейл Роджерсон, ни RSDN.

    В плане описания, как это делать я бы им уши пооткручивал ими не доволен.
    (Беретесь учить, так не надо халтурить)

    Вообще, что касается COM, спасибо только случайным статьям неизвестных маэстро от практики.

    Граждане, может, кто владеет такой техникой, поделитесь?

    У меня задача: передать объект по значению.

    Например, на сервере есть объект KOT
    class KOT
    {
       methodKot()  {cout<<"Hello KOT"<<endl;}
    }

    клиент получает от сервера этот объект, рвет связь с сервером и проводит этот  methodKot сам у себя.

А теперь прощаемся с Вами до следующего выпуска.


С уважением, команда Клуба.


В избранное