Was even bezig uit te zoeken hoe het file locking mechanisme van Windows/Word eigenlijk werkt bij network shares.
Als iemand een Word document opent (test.doc) wordt er een hidden file (~$test.doc) gegenereerd met daarin o.a. de naam van degene die de file open heeft. Wanneer iemand anders via het netwerk dezelfde file opent wordt krijg je keurig de melding dat iemand bezig is (met de naam uit de hidden file).
Gooi ik echter de hidden file weg dan heeft Word nog steeds door dat de file geopend is (door 'another user'). Hoe gaat dit in zijn werk? Ik wil een soortgelijk mechanisme hebben voor een applicatie die we hier aan het maken zijn (dus dat er maar 1 persoon tegelijk een bestand kan wijzigen. Wanneer een tweede persoon via het netwerk hetzelfde bestand wil open moet het automatisch read-only geopend worden (de applicatie behandelt hem dan als read only).
Google geeft vrij weinig (bruikbare) info terug dus vandaar dat ik hem hier maar even op gooi.
Komt het gewoon neer op low level io system calls (_fsopen) of is er een simpeler/standaard voorziening aanwezig die ik zou kunnen gebruiken. De applicatie wordt gemaakt met Visual Studio .Net C++.
Als iemand een Word document opent (test.doc) wordt er een hidden file (~$test.doc) gegenereerd met daarin o.a. de naam van degene die de file open heeft. Wanneer iemand anders via het netwerk dezelfde file opent wordt krijg je keurig de melding dat iemand bezig is (met de naam uit de hidden file).
Gooi ik echter de hidden file weg dan heeft Word nog steeds door dat de file geopend is (door 'another user'). Hoe gaat dit in zijn werk? Ik wil een soortgelijk mechanisme hebben voor een applicatie die we hier aan het maken zijn (dus dat er maar 1 persoon tegelijk een bestand kan wijzigen. Wanneer een tweede persoon via het netwerk hetzelfde bestand wil open moet het automatisch read-only geopend worden (de applicatie behandelt hem dan als read only).
Google geeft vrij weinig (bruikbare) info terug dus vandaar dat ik hem hier maar even op gooi.
Komt het gewoon neer op low level io system calls (_fsopen) of is er een simpeler/standaard voorziening aanwezig die ik zou kunnen gebruiken. De applicatie wordt gemaakt met Visual Studio .Net C++.