Kopirovani zamknutych souboru
Kopirovani zamknutych souboru
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.
-
- Plugin Developer
- Posts: 707
- Joined: 08 Dec 2005, 14:33
- Location: Prague, Czech Republic
- Contact:
Re: Kopirovani zamknutych souboru
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?

-
- ALTAP Staff
- Posts: 5231
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
Re: Kopirovani zamknutych souboru
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á.
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á.
Re: Kopirovani zamknutych souboru
Vyretusoval. Toto konkretne je zamkla souborova databaze z Money S3.
A to me prave zajima, nejde zjistit dopredu ze je soubor zamkly?
A to me prave zajima, nejde zjistit dopredu ze je soubor zamkly?
-
- ALTAP Staff
- Posts: 5231
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
Re: Kopirovani zamknutych souboru
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.
Re: Kopirovani zamknutych souboru
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.
-
- ALTAP Staff
- Posts: 5231
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
Re: Kopirovani zamknutych souboru
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"?
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"?
-
- ALTAP Staff
- Posts: 5231
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
Re: Kopirovani zamknutych souboru
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
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
}
Re: Kopirovani zamknutych souboru
Napadá mne jednoduché ale asi ne úplně praktické řešení: Zkusit zamknout celý soubor
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...

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...
-
- ALTAP Staff
- Posts: 5231
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
Re: Kopirovani zamknutych souboru
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).