Kopirovani zamknutych souboru

Vítáme všechny návrhy na nové funkce a vylepšení programu Altap Salamander. Pro každý návrh prosím vytvořte samostatný příspěvek.
Raptor

Kopirovani zamknutych souboru

Post by Raptor »

Narazil jsem na hodne divnou vec. jedna se o kopirovani souboru zamknutych jinym procesem exkluzivne (snad ted nekecam). Pokud soubor chci kopirovat, vyskoci chyba. To je ok, to problem neni. Ale co nechapu je to, proc se jakoby neco kopiruje a pri 97% vyskoci chyba? Proc nevyskoci hned kdyz dam kopirovat? Pokud ten soubor ma par giga tak cekam, cekam cekam, kopiruje se to a najednou chyba a ja tim cekanim zabil par minut tak to nepotesi.
copy.png
copy.png (42.18 KiB) Viewed 8698 times
Jan Patera
Plugin Developer
Plugin Developer
Posts: 707
Joined: 08 Dec 2005, 14:33
Location: Prague, Czech Republic
Contact:

Re: Kopirovani zamknutych souboru

Post by Jan Patera »

Raptor wrote:Narazil jsem na hodne divnou vec. jedna se o kopirovani souboru zamknutych jinym procesem exkluzivne (snad ted nekecam). Pokud soubor chci kopirovat, vyskoci chyba. To je ok, to problem neni. Ale co nechapu je to, proc se jakoby neco kopiruje a pri 97% vyskoci chyba? Proc nevyskoci hned kdyz dam kopirovat?
;-) Mozna by bylo dobre si precist tu chybovou hlasku. Proste dokud tam Salamander nedocetl, tak to nezjistil. Otazkou je, zda se to da zjistit apriori.
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Re: Kopirovani zamknutych souboru

Post by Jan Rysavy »

Tu položku Name jste vyretušoval nebo tam skutečně nebylo nic zobrazeno?

O jaké jde soubory a jakým procesem jsou zamčené? Jde o nějaký torrent nebo jiný downloader?

Poznámka: Salamander čte při kopírování soubory s flagy FILE_SHARE_READ | FILE_SHARE_WRITE. Viz Creating and Opening Files.
Takže ostatní procesy mohou z/do kopírovaného souboru číst i zapisovat.
Jiný proces by nám ale neměl mít možnost odebrat právo ke čtení. Proto mě zajímá o jakou aplikace se jedná.
Raptor

Re: Kopirovani zamknutych souboru

Post by Raptor »

Vyretusoval. Toto konkretne je zamkla souborova databaze z Money S3.

A to me prave zajima, nejde zjistit dopredu ze je soubor zamkly?
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Re: Kopirovani zamknutych souboru

Post by Jan Rysavy »

Pokud nám popíšete, jak problém reprodukovat, můžeme se na věc mrknout. Momentálně nás nenapadá, jak k situaci může docházet, viz update mého příspěvku.
Raptor

Re: Kopirovani zamknutych souboru

Post by Raptor »

No jedine co me napada je nainstalovat si Trial Money S3, spustit to, otevrit treba nejakou kmenovou kartu nebo neco a zkusit zkopirovat adresar Data.
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Re: Kopirovani zamknutych souboru

Post by Jan Rysavy »

Ještě několik nápadů:
Jaký OS máte na počítači, kde spouštíte kopírování?
Je soubor na lokálním nebo síťovém disku?
Pokud na síťovém, o jaký jde systém na straně "serveru"?
Raptor

Re: Kopirovani zamknutych souboru

Post by Raptor »

Kopirovani ze serveru.
Win Vista x32 a Win Server 2003
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Re: Kopirovani zamknutych souboru

Post by Jan Rysavy »

Přesunu vlákno do návrhů na vylepšení, asi se shodneme, že se nejedná o chybu.
Přál byste si, aby Salamander dokázal předem detekovat, že část souboru nebude přístupná pro čtení.
Momentálně to Salamander zjistí a oznámí až ve chvíli, kdy se tuto část snaží přečíst.

Poznámka: situaci lze navodit takto

Code: Select all

  HANDLE hFile = CreateFile("soubor.tmp", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL);
  if (hFile != INVALID_HANDLE_VALUE)
  {
    LockFile(hFile, 100000, 0, 1, 0); // 100000 je ofset, od ktereho soubor zamkneme
    CloseHandle(hFile); // zde umistit breakpoint a po jeho dosazeni zacit soubor kopirovat v Salamanderu
  }
User avatar
zarevak
Plugin Developer
Plugin Developer
Posts: 789
Joined: 04 Feb 2006, 16:49
Location: Prague, Czech Republic

Re: Kopirovani zamknutych souboru

Post by zarevak »

Napadá mne jednoduché ale asi ne úplně praktické řešení: Zkusit zamknout celý soubor 8)

Pokud na něm již budou nějaké zámky existovat, tak zamčení selže. Jen nevím, jak to dopadne s ostatními aplikacemi, které mají soubor otevřený - aby pak nespadly s touto chybou 33... Případně, zda vůbec lze zamknout soubor, který má pro zápis otevřený jiná aplikace...
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Re: Kopirovani zamknutych souboru

Post by Jan Rysavy »

Je to rozhodně zajímavé, neměli jsme o možnosti zamčení části souboru tušení. Nyní chápu, jak mohou souborové databáze jako MS Access zamykat databázi po větách. Samozřejmě bude otázkou, jak zamykání bude fungovat na síťových discích (třeba namátkou Samba).
Post Reply