Резултати от 1 до 6 от общо 6

Sharing violation

Сподели във Facebook Сподели в Twitter Изпрати на Email Сподели в LinkedIn
  1. Junior Member
    Тук е от
    Feb 2006
    Мнения
    11
    #1

    Sharing violation

    прощавайте за английския термин но, това е най-смисленото име за темата.
    пиша програма TCP клиент който изпраща файлове на сървър. преди да пратя файла го копирам в дир. на п-мата.
    проблема идва със файл на Access отворен в момента на трансфера(копирането).
    отварям го чрез:
    //================================================================
    hReadFile = CreateFile(fName[f], GENERIC_READ, FILE_SHARE_READ, NULL,
    OPEN_EXISTING, 0, NULL);
    if(hReadFile == INVALID_HANDLE_VALUE)
    {
    dwError = GetLastError();
    sprintf(msg, "Opening file to read failure!\n error code:%lu", dwError);
    MessageBox(NULL, msg, "file operation", MB_OK);
    return 0;
    }
    //================================================================
    но получавам грешка :
    error code:32---> sharing violation.
    В този момент фаила е само отворен, не се обработва.

    налага се програмата да работи с отворени файлове, така че има ли начин да преодолея (заобиколя) проблема?
    наглия Windows успява да копира фаила ама аз не мога при същите условия...
    Благодаря

  2.  
     
  3. Junior Member
    Тук е от
    Feb 2006
    Мнения
    11
    #2

    Re: Sharing violation

    разбрах си грешката!
    Обаче възниква следващия въпрос:
    Програмите ми работещи с файлове не освобождават файла макар че извиквам CloseHandle(), и от Windows получавам грешка, че файла се ползава от някого и не мога да го манипулирам докато не затворя програмата си.
    как да направя програмата си по-кадърна?(да отстраня описания проблем)
    п.с.
    не ползвам 2 хендъла за един файл това съм 99% сигурен

  4. SAGE
    Guest
    #3

    Re: Sharing violation

    Цитат Първоначално публикувано от Scorpion
    разбрах си грешката!
    Обаче възниква следващия въпрос:
    Програмите ми работещи с файлове не освобождават файла макар че извиквам CloseHandle(), и от Windows получавам грешка, че файла се ползава от някого и не мога да го манипулирам докато не затворя програмата си.
    как да направя програмата си по-кадърна?(да отстраня описания проблем)
    п.с.
    не ползвам 2 хендъла за един файл това съм 99% сигурен
    Проверяваш ли резултата който ти връща CloseHandle?
    Ако ти дава, че успешно затваря файла, то сигурно си го отворил повече от един път.

  5. Junior Member
    Тук е от
    Feb 2006
    Мнения
    11
    #4

    Re: Sharing violation

    Цитат Първоначално публикувано от SAGE
    Проверяваш ли резултата който ти връща CloseHandle?
    Ако ти дава, че успешно затваря файла, то сигурно си го отворил повече от един път.
    @sage
    проверявам резултата и всичко е наред, проверих си и кода и съм 100% сигурен че затварям хендълите щом приключа работа с файла.
    номера е там че имам глобална структура (във вид на клас с методи) в която има само един хендъл който използвам за последователната обработка на всички нужни фаилове. Ако някой оставаше отворен, предполагам че следващото повикване на CreateFile() щеше да даде грешка, но такава нямам!
    а ако не затварях последния файл то CopyFile() щеше да даде грешка N32 само на последния, я то дава грешка на всички (ползвам до 5 файла).

  6. SAGE
    Guest
    #5

    Re: Sharing violation

    Цитат Първоначално публикувано от Scorpion
    @sage
    проверявам резултата и всичко е наред, проверих си и кода и съм 100% сигурен че затварям хендълите щом приключа работа с файла.
    номера е там че имам глобална структура (във вид на клас с методи) в която има само един хендъл който използвам за последователната обработка на всички нужни фаилове. Ако някой оставаше отворен, предполагам че следващото повикване на CreateFile() щеше да даде грешка, но такава нямам!
    а ако не затварях последния файл то CopyFile() щеше да даде грешка N32 само на последния, я то дава грешка на всички (ползвам до 5 файла).
    Без да се гледа кода ще е трудно да се търсят грешките.
    Виж тогава да не създаваш няколко обекта от този клас. CreateFile може и да не ти даде грешка защото имаш OPEN_EXISTING и FILE_SHARE_READ.
    Направи си експеримент, като за всеки файл използваш отделен handle.

  7. Junior Member
    Тук е от
    Feb 2006
    Мнения
    11
    #6

    Re: Sharing violation

    беше прав - отварям множество хендъли по начин който не осъзнавах. махнах флага SHARE_READ, затварям си хендълите на всяко излизане от функцията и нещата заспаха. благодаря за подсказките!

  8.  
     
Сподели във Facebook Сподели в Google Plus Сподели в Twitter Изпрати на Email Сподели в LinkedIn

Подобни теми

  1. HDD sharing
    От Smurfa във форум Общ - хардуер
    Отговори: 6
    Последно: 27-11-07, 16:02
  2. Пак за Internet sharing s VPN
    От Jogo_1 във форум Мрежи
    Отговори: 2
    Последно: 11-07-06, 18:16
  3. Sharing в LAN
    От Delta1 във форум Мрежи
    Отговори: 6
    Последно: 03-06-05, 13:31
  4. Internet and Sharing
    От Tai-Pan във форум Windows
    Отговори: 10
    Последно: 06-09-03, 20:39
  5. Sharing под XP
    От Big Bug във форум Windows
    Отговори: 5
    Последно: 16-01-03, 23:10

SetCombG.com
SetCombG.com е портален сайт и Форум за битова техника, телевизори, климатици, лаптопи и смартфони, създаден през 1999 година.
Заедно сме над 20 години!
Следвай ни
Горе