Jump to content











Photo
- - - - -

Dokan + 7zip = mount many possible archives as a logical drive

dokan 7zip

  • Please log in to reply
35 replies to this topic

#26 erwan.l

erwan.l

    Platinum Member

  • Developer
  • 2785 posts
  • Location:Nantes - France
  •  
    France

Posted 30 July 2019 - 12:36 PM

About LZ4, i am actually not surprised : focus there is not the compression but the time to compress/decompress.

It happens that LZ4 offers the best compromise on time versus compressio ratio.

 

Bzip2 is on the slow end but will often offers one of the best compression ratio.

 

About wim, give it a try with 7za may be as well?



#27 Hunter23071985

Hunter23071985

    Newbie

  • Members
  • 16 posts
  •  
    Russian Federation

Posted 30 July 2019 - 12:41 PM

One of these days I will try, now unfortunately a lot of work, sorry.



#28 Hunter23071985

Hunter23071985

    Newbie

  • Members
  • 16 posts
  •  
    Russian Federation

Posted 31 July 2019 - 10:21 AM

The result of 7za-wim was pleasantly surprised me:
952 MB - source (955 MB in test.tar)
278 MB - 089.487 sec., ptime cmd /c "7za a 7WIM.wim ./Test" > 7WIM.txt
What archivers/compressors would you also recommend to try and what do you think about this project (lib7zip)

Edited by Hunter23071985, 31 July 2019 - 10:24 AM.


#29 erwan.l

erwan.l

    Platinum Member

  • Developer
  • 2785 posts
  • Location:Nantes - France
  •  
    France

Posted 31 July 2019 - 11:07 AM

Archivefs (aka lib7zip) is actually the exact same thing as my current dokan/7zip proxy.

Writefile is not supported, mostly because the update 7zip dll function is currently near mission impossible to use.

See below.

And the 7zip author is not easy to approach.

 

I am currently reviewing possibly libraries (including archivers/compressors) that can easily be used to expose a virtual file system.

 

Still, i have now enough ideas and code to implement read/write with libzip (even if compression/algo methods are limited to bzip2 and zlib).

static int DOKAN_CALLBACK A7ZipWriteFile(
			  LPCWSTR		FileName,
			  LPCVOID		Buffer,
			  DWORD		NumberOfBytesToWrite,
			  LPDWORD		NumberOfBytesWritten,
			  LONGLONG			Offset,
			  PDOKAN_FILE_INFO	DokanFileInfo)
{
	DbgPrint("WriteFile not support\n");
	return DOKAN_ERROR;
}

  • Hunter23071985 likes this

#30 Hunter23071985

Hunter23071985

    Newbie

  • Members
  • 16 posts
  •  
    Russian Federation

Posted 17 August 2019 - 01:23 PM

Hi guys! Is there any positive news?



#31 Wonko the Sane

Wonko the Sane

    The Finder

  • Advanced user
  • 15044 posts
  • Location:The Outside of the Asylum (gate is closed)
  •  
    Italy

Posted 17 August 2019 - 02:06 PM

Hi guys! Is there any positive news?

There are NO news (neither good nor bad):

Spoiler

 

:duff:

Wonko



#32 erwan.l

erwan.l

    Platinum Member

  • Developer
  • 2785 posts
  • Location:Nantes - France
  •  
    France

Posted 20 August 2019 - 03:01 PM

I have been "playing" with libzip and dokan.

Because they are both well documented and open source it was easy enough to come with a solution that can mount a zip file as a filesystem in read and write mode.

 

The dokan "proxy" (not sure if the word is right) is there.

The dokan generic "mount" is there.

 

Install Dokan - Although there are several ways to do so, I recommend to simply use the installer here.

 

Command line is then : mount /r test.zip /l x /x proxy_LibZip.dll or mount /r test.zip /l c:\mount /x proxy_LibZip.dll

 

Regards,

Erwan


  • Blackcrack likes this

#33 Hunter23071985

Hunter23071985

    Newbie

  • Members
  • 16 posts
  •  
    Russian Federation

Posted 20 August 2019 - 06:22 PM

Fine! But I have some problems:
 
1) mount /r test.zip /l d:\mount /x proxy_LibZip.dll =
error "The instruction at 0x000000000418332A addressed to the memory at 0x0000000004360A74.
The memory could not be read."
 
2) mount /r test.zip /l x /x proxy_LibZip.dll =
X:\DVD Shrink 3.2.exe does not start (loop _GetFileinformation - _CreateFile - CleanUp... in a couple of minutes),
after closing and re-mounting it opens without any problems, but
error "0x8000FFFF" when trying to create a file
error "0x80070057" when trying to insert a file
error "This file or this folder does not exist" when trying to rename a file.
 
OS: Windows 10.0.16299.125 (1709) x64.


#34 erwan.l

erwan.l

    Platinum Member

  • Developer
  • 2785 posts
  • Location:Nantes - France
  •  
    France

Posted 21 August 2019 - 05:50 PM

 

Fine! But I have some problems:
 
1) mount /r test.zip /l d:\mount /x proxy_LibZip.dll =
error "The instruction at 0x000000000418332A addressed to the memory at 0x0000000004360A74.
The memory could not be read."
 
2) mount /r test.zip /l x /x proxy_LibZip.dll =
X:\DVD Shrink 3.2.exe does not start (loop _GetFileinformation - _CreateFile - CleanUp... in a couple of minutes),
after closing and re-mounting it opens without any problems, but
error "0x8000FFFF" when trying to create a file
error "0x80070057" when trying to insert a file
error "This file or this folder does not exist" when trying to rename a file.
 
OS: Windows 10.0.16299.125 (1709) x64.

 

 

Good feedback, thank you.

Let me do my test on a win10 machine (my dev computer is a win8.1).

Looks like win10 has introduced some changes around filesystem operations.



#35 Hunter23071985

Hunter23071985

    Newbie

  • Members
  • 16 posts
  •  
    Russian Federation

Posted 02 September 2019 - 01:48 PM

Let me do my test on a win10 machine

 
What are the results?
Can you reproduce and fix the problem or is it my PC/OS bug?


#36 Hunter23071985

Hunter23071985

    Newbie

  • Members
  • 16 posts
  •  
    Russian Federation

Posted 03 September 2019 - 08:45 AM

Maybe already at this stage it makes sense to think about alternatives?
1) creating a write-function for 7z (for example, as a separate dll): this will save a lot of space on SSD.
The full zip/7z index is stored in one block at the end of the archive.
And this is excellent: just cut off the index, add something, and then return the updated index.
The interface 7z.dll is complicated, but maybe bit7z will help?
2) downgrading dokan to Windows XP: this will expand the circle of users and testers.
IMHO, why not?





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users