               R. Loew Electronics Large File Emulator

                          Version 1.0

                           08/22/2011

                       Copyright (C) 2011
                       By Rudolph R. Loew


This Package intercepts User Mode FileSystem API requests so that a set of
smaller Files will appear as a single large File. This allows Programs to
Create Files that are larger than 4GiB. These Files can then be Read or
Modified by other Programs. Downloading and Playing or Archiving Blu-Ray
Videos are a example of what can be done with this Package.

This Package consists of two Parts; the DLLHOOK System API Hooker and the
FILE64 Large File Emulator API.

The DLLHOOK System API Hooker Patches the Entrypoint Address Resolver used
by the Executable Program Loader and GetProcAddress to locate API Entry
Points. This allows multiple API's to be Patched in any number of Modules
using a single set of Patches.

Since the actual APIs are not Patched, DLLHOOK must be running before an
Application is started in order to redirect the APIs. To Patch Windows
Explorer, you will need to Start DLLHOOK from the RUNSERVICE Key in the
Registry.

The FILE64 Large File Emulator API DLL is invoked by redirecting System File
API Calls as instructed by the provided DLLHOOK.INI Script.


REQUIREMENTS

Windows 98, 98SE or ME.



INSTALLATION:

Unpack this Package into a New Empty Directory. Do not mix these files with
others or add the Directory to your Command PATH.

Place the DLLHOOK.EXE, DLLHOOK.INI and DHFILE64.INI Files in your Windows
Folder.
Place the FILE64.DLL in your Windows\System Folder.

If you want to be able to access Large Files from Windows Explorer, run the
FILE64.REG Registry Script by Clicking it's ICON or running REGEDIT as
follows:

REGEDIT FILE64.REG

Then Reboot your Computer.

Otherwise you must run DLLHOOK.EXE manually before accessing Large Files.


UNINSTALL:

Remove any Startup Commands that start DLLHOOK.

If you installed the Registry Entry to Start DLLHOOK, run the NOFILE64.REG
Registry Script by Clicking it's ICON or running REGEDIT as follows:

REGEDIT NOFILE64.REG

Then Reboot your Computer.

Delete the DLLHOOK.EXE, DLLHOOK.INI and DHFILE64.INI Files from your Windows
Folder.
Delete the FILE64.DLL from your Windows\System Folder.


ACTIVATION:

If you have Installed the Registry Entry to Start DLLHOOK, it will be active
after every Boot. Otherwise you will need to Start it by Running DLLHOOK.
Most Programs that are Started before DLLHOOK is Activated will be unaffected.
Only Programs that use GetProcAddress to get System File API Addresses later
will be affected.


DEACTIVATION

If you have Installed the Registry Entry to Start DLLHOOK, it will be active
after every Boot. To Deactivate the Large File Emulator, shutdown DLLHOOK by
running:

DLLHOOK /R

Most Programs that were Started while DLLHOOK was Active will still use the
Large File Emulator API. Only Programs that use GetProcAddress to get System
File API Addresses later will start using the original API.


OPERATION:

The Large File Emulator API handles Large Files by creating smaller files
having the same name, as the specified Name, but with "`#" appended, where #
is the extension number starting from 0. No File is created with the original
Name. The Base Name can be found, opened and manipulated, but the actual data
is transferred to/from the Extension Files. Each Extension File is limited to
1GiB to simplify handling. Although not stored on Disk, the Hidden Attribute
is reported for the Extension Files.


USAGE:

Since the Large File Emulator is not compatable with normal file usage, the
Emulator is designed to limit itself to specific Directories. To enable the
Emulator for a new Directory, either Name it to "#64#" or one of it's Parent
Directores, such as C:\DOWNLOAD\#64#\VIDEO. It is not recommended to convert
a Directory with existing Files as the Files will not be recognized unless
their Names are appended with "`0".

Directories not containing a Path Segment of "#64#" will be passed through to
the standard System API Calls.

Download Large Files by pointing your Downloader to a File or Directory
within an Emulator Enabled Directory.

Windows Explorer will show an ICON for the Base Name, and will either Hide or
Ghost the Extension File Icons depending on Folder Settings.

You can Play Large Media Files by naming the File or Clicking on it's ICON,
not the Extenstion Icons, in Windows Explorer.

You can Copy, Move or Delete Large Files by clicking on either the BASE File
ICON or all of the Extension Files as a group. Do not do both, as errors or
unnecessary delays will occur. If Copying or Moving to or from a Non-Enabled
Directory or over a Network, use the Extension Files only. Do not specify
the BASE Name. Do not send to the Recycle Bin if Deleting the BASE Name. 
The Extension Files can be stored Remotely or in non-Enabled Directories but
will not be useable until returned to an Enabled Directory. Files stored
Remotely can only be used within it's host Computer and only if they are in
a Directory Enabled to that Computer. When the Extension Files are copied or
Moved to a new Folder, The Base ICON will appear when Extension 0 is Created.

You can Archive or Extract Large Files using 7-ZIP. Do not use Wildcards that
would include Extension Files, or use Extension Files Only. Make sure the
Archive is in an Enabled Directory if it can grow to 4GiB.

DOS and it's Commands do not use the System File APIs so they will not
recognize Large Files. The Directory Command will only show the Extension
Files. You can use the COPY Command to copy the Extension Files from
Directory to Directory regardless of whether they are Enabled or not, or
Remote. Delete all Extensions belonging to the same BASE File. You may be
able to delete files based on their Short Names but be careful you do not
Delete Files you intended to keep.

Large Files can be handled from a DOS Box more effectively using a compatable
File Manager such as my XFILE Version 2.0 or later.


LIMITATIONS:

Do not use the "`" character in a FileName in, or a Path to, a Large File
Emulated Directory, other than as described above.

Files cannot be accessed properly by their Short File Names.

Programs that use legacy API Calls such as _lopen and all 16-Bit Programs
including DOS, DIR, COPY, REN, DEL etc. will only see the extension Files.
Programs that startup before DLLHOOK will only see the extension Files.

Shutdown problems may occur if you use the Power Button, or a forced
ExitWindows Call.

Large files on a NTFS Filesystem must be split and named as described above
before being transferred to Window 98. SPLIT64.EXE can be used to split a
Large File into Extension Files. Large Files cannot be sent to an XP
system. The Extension Files must be sent and recombined at the other end.
MERGE64.EXE can be used recombine the Extension Files back into a Large File.

Programs not written to handle Large Files will not work properly. Programs
that can handle Large Files on NTFS FileSystems should work if Windows 98
Compatable.

XCOPY cannot be used while DLLHOOK is Active.



DLLHOOK

The DLLHOOK Program hooks the GetProcAddress Routine and it's internal
equvalents. This allows DLLHOOK to redirect System API Calls to alternate
Routines. An Option allows display or logging of Unknown API Requests.

The DLLHOOK Program read it's Configuration File DLLHOOK.INI and any Include
Files, installs the GetProcAddress Hook and waits in the Background for Calls
to GetProcAddress or it's internal Versions.

Rerunning the same copy of DLLHOOK with the /R Option will shutdown DLLHOOK.

NOTE: DLLHOOK.EXE runs in Shared Memory so running a separate Copy of DLLHOOK
will result in both running simultaneously. It is not recommended that more
than one copy be run without careful consideration as a crash could occur.

The DLLHOOK.INI File defines the mapping between System API Calls and the
Alternate Routines. Mapping entries have the following format:

LIBRARY NAME NEWLIBRARY [NEWNAME]

LIBRARY is the Name of the Library of the API (.DLL is not needed)
NAME is the Name of the API Call in the Library (Ordinals are not implemented)
NEWLIBRARY is the Name of the Library to be redirected to.
NEWNAME is the Name of the API Call in the Library to be redirected to.

If NEWNAME is not specified, the old name is used

Wildcards can be used to redirect an entire LIBRARY or any NAME regardless of
Library. The Wildcard Symbol is "-" for all instances, or "+" only for
Undefined Names.

When several entries refer to the same LIBRARY or NAME, the "*" Symbol can be
used to repeat the corresponding Column of the Previous Entry.

"@" followed by a File Name indicates an Include File that can contain more
mappings or Options. This allows additional mappings for other Packages to be
added by inserting one line into DLLHOOK.INI pointing to it's mapping File.

/S will cause a Requester to appear whenever an undefined API is requested.
/L will record all undefined API requests in C:\DLLHOOK.LOG.
Comment lines must start with a ";".

The supplied DLLHOOK.INI contains a summary of the Syntax along with an
Include File for this Package.

To facilitate Patching of System APIs, DLLHOOK provides mappings back to the
original APIs that were redirected. This avoids the need to create an
additional set of mapping to let the Patched routines access the original
ones. To access the original APIs, prepend the API Name with "DLLHOOK_". If
using C++, you can prepend with "dllhook_" instead. DLLHOOK will then strip
off the Stack Size Decoration "@#" as well before resolving the Name.



SPLIT64

SPLIT64 is a tool that can be used on an XP or other NTFS compatable system
that can split a Large File into a set of Extension Files that can be
transferred to a Windows 9X FILE64 Enabled Directory for later use with
FILE64.

The Command Syntax is as follows:

SPLIT64 Large_File Split_File_Base

Large_File is the Name of the Large File to be Split.
Split_File_Base is the Base Name of the set of Extension Files to be created,
and should not have the "`#" extension.

The Large File must be on a NTFS or UDF Partition.
The Extension Files can be written through a Network to Windows 9X.


MERGE64

MERGE64 is a tool that can be used on an XP or other NTFS compatable system
that can merge a set of Extension Files, Created by FILE64 or SPLIT64.EXE,
into a Large File.

The Command Syntax is as follows:

MERGE64 Split_File_Base Large_File 

Split_File_Base is the Base Name of the set of Extension Files to be merged,
and should not have the "`#" extension.
Large_File is the Name of the Large File to be Created.

The Extension Files can be read through a Network from Windows 9X.
The Large File must be placed on a NTFS or UDF Partition.



RELATED PRODUCTS

XFILE    Advanced File Manipulation Utility.



CONTACT INFORMATION

Rudolph R. Loew
506 Bieling Rd.
Elmont, NY 11003

1-516-352-9078

RLoew@hotmail.com

Website:  http://rloew1.no-ip.com

IP = conference.no-ip.org  PORT = 8192 (Conference Console)

