Re: [NTFS] Kasowanie (nie)zajętych folderów

Autor: Marek Janaszewski /USUN_TO. z adresu!/ <USUN_TO.j_marek_at_gazeta.pl>
Data: Wed 09 Jun 2004 - 22:32:58 MET DST
Message-ID: <ca7shd$pjk$3@achot.icm.edu.pl>
Content-Type: text/plain; charset="iso-8859-2"

W wiadomości: 2004060720165200@grush.one.pl,
Radosław Sokół <rsokol@magsoft.com.pl> napisał(a):
> Marek Janaszewski /USUN_TO. z adresu!/ wrote:
>> albo system blokuje dostęp do katalogu. Brak operacji odblokowania,
>> o ile wiem w Win32 API nie ma takiej funkcji, zatem system nie
>> sprząta tych blokad.. System nadał uważa, że katalog jest zajęty
>> więc nie mogę wykonać kasowania na tym katalogu.
>
> System nic nie uważa. Skoro system blokuje plik/katalog,
> muszą istnieć otwarte uchwyty do nich. A skoro istnieją
> otwarte uchwyty, istnieją też wątki (i procesy) trzymające
> te uchwyty.
[...]

Witam!

Sprawdziłem, istnieje coś takiego jak uchwyt do katalogu. Opisane przy
okazji funkcji CreateFile, powinien być zamykany przez CloseHandle. Moje
wywody dotyczyły domniemanej sytuacji, w której program przy okazji jakiś
operacji na plikach, być może niejawnie, tworzy taki uchwyt i go nie zamyka.
Przynajmniej tak sobie tłumaczyłem dziwne zachowania, kiedy nie mogę
skasować pustego katalogu.

W każdym razie istnieje narzędzie SysInternal Process Explorer, którym mogę
znaleźć uchwyt do katalogu lub pliku i nawet ewentualnie go brutalnie
zamknąć. Dzięki temu będę mógł zaobserwować lepiej te anomalie.

Przykład na wywołanie dziwnej sytuacji. Otwieram nowy projekt ASP.NET Visual
Studio, tworzony jest katalog w inetpub\wwwroot. Uruchamiam web-aplikacje,
zamykam Visual Studio i aplikację. Nie mogę usunąć powstałego katalogu. Co
ciekawe nie ma otwartych plików, bo wszystkie pliki mogę usunąć z katalogu i
podkatalogu bin. Jak sprawdzam przez ProcessExlorera proces ASP ma otwarte
uchwyty typu plik (jak pozuje ProcessExlorera) do tych katalogów. Skasowanie
.dll-ki projektu ASP.NET w katalogu Bin powoduje, że ASP odczepia się od
tego katalogu. Być może akurat to zachowanie wynika ze specyfiki ASP.NET.

-- 
Pozdrawiam,
Marek Janaszewski
[ j_marek@gazeta.pl ]
Received on Wed Jun 9 22:40:20 2004

To archiwum zostało wygenerowane przez hypermail 2.1.8 : Wed 09 Jun 2004 - 22:42:02 MET DST