ERROR_SHARING_VIOLATION 32. Jaki proces korzysta z pliku?

dział ogólny

ERROR_SHARING_VIOLATION 32. Jaki proces korzysta z pliku?

Nowy postprzez mckri » sobota, 22 stycznia 2011, 11:45

Witam.
1.
Kopiuje pliki z jednej lokalizacji do drugiej. Sprawdzam, czy kopiowanie się powiodło czy nie. W przypadku błędu, przechwytuje go przez GetLastError(). Mam pytanie w związku z błędem kopiowania. Czy mogę w przypadku wystapienia błędu ERROR_SHARING_VIOLATION 32 (0x20) odczytać, jaki proces wykorzystuje plik, który jest akurat kopiowany?

2. Ten sam problem, ale od d... strony.
Czy znając nazwę procesu, można sprawdzić, czy dany (kopiowany akurat) plik jest przez niego otwarty?

//------------------------
Będę bardzo wdzięczny za przykładowy kod.
Pozdrawiam.
Avatar użytkownika
mckri
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): piątek, 15 sierpnia 2008, 13:48
Podziękował : 10
Otrzymał podziękowań: 2
System operacyjny: Windows Vista SP2
Kompilator: BCB 5/2007/2009
    Windows VistaOpera

Re: ERROR_SHARING_VIOLATION 32. Jaki proces korzysta z pliku?

Nowy postprzez polymorphism » sobota, 22 stycznia 2011, 13:53

Musisz użyć ZwQuerySystemInformation i ZwQueryObject do wylistowania wszystkich uchwytów. Problem w tym, że te funkcje są częścią DDK, a nie zwykłego API systemowego. Nie wiem, czy kod z tymi funkcjami skompilujesz pod C++ Builderem.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 5 gości