CreateFile

Тема в разделе "WASM.WIN32", создана пользователем kyprizel, 8 дек 2006.

  1. kyprizel

    kyprizel New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2003
    Сообщения:
    232
    Адрес:
    TSK
    ситуация следующая, есть программа А(интернет пейджер QIP, который хранит хистори в txt файлах), которая периодически пишет в файл.
    есть программа Б, которой нужно получать хистори QIP и отсылать на заданный сервер.
    программа А работает так: открываем на чтение файл хистори,
    смотрим, не изменился ли он, если изменился, постим изменения на сервер. спим.
    и так в цикле.
    всё бы хорошо, но с программой А возникла проблема, при работающей программе Б(открытом дескрипторе), оно отказывается писать в файл.

    файл на чтение открываю так:
    CreateFile(... , FILE_READ_DATA, FILE_SHARE_READ | FILE_SHARE_WRITE,
    NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

    или я не правильно понимаю атрибуты доступа или где-то хитрость QIP?
    сори, дебажить QIP немного лень, может быть кто-то сходу врубится и предложит вариант решения,
    отличный от хука WriteFile ;)
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    kyprizel
    Можно следить за свойствами файла (размер и/или время последнего обновления) через FindFirstFile. Для этого не надо открывать файл. Если обнаружено изменение, можно скопировать хистори-файл во временный и уже временный читать/парсить/отсылать на сервер.
     
  3. kyprizel

    kyprizel New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2003
    Сообщения:
    232
    Адрес:
    TSK
    Quantum, ты читаешь мои мысли %))))))) я только что это реализовал
    но это один из вариантов, ведь файл может быть большим, а изменения маленькими и что - теперь из-за нескольких байт делать копию?
     
  4. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Пропатчить QIP, чтоб не открывал файл эксклюзивно (у него в параметре dwShareMode, видимо, 0 стоит).
     
  5. kyprizel

    kyprizel New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2003
    Сообщения:
    232
    Адрес:
    TSK
    Quantum, спасибо )


    эх, придется качать квип... а так хотелось обойтись малой кровью )
     
  6. fr0b-p

    fr0b-p New Member

    Публикаций:
    0
    Регистрация:
    1 окт 2006
    Сообщения:
    118
    а FILE_FLAG_BACKUP_SEMANTICS не покатит?
     
  7. ak217

    ak217 New Member

    Публикаций:
    0
    Регистрация:
    28 дек 2004
    Сообщения:
    25
    А если стоит compression или шифрование?
     
  8. fr0b-p

    fr0b-p New Member

    Публикаций:
    0
    Регистрация:
    1 окт 2006
    Сообщения:
    118
    ak217 я в том не шарю потому и спросил :) а вроде были IOCTL отключать это или нет?
     
  9. DeeoniS

    DeeoniS New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2004
    Сообщения:
    132
    для обнаружения изменеий в файли можно заюзать FindFirstChangeNotification и FindNextChangeNotification