Дык, теперь подытожим.
Дося-эхстендером для STORMGR является CauseWay, DOS4GW compatible, а ни как не
DOS16M, как кто-то(не будем показывать пальцы крутому спецу, кхе...) пытался
утвеждать.
Исходники, дока и все прочие потроха CW лежат на
www.sybase.com/developer/opensource
или
www.openwatcom.org под названием open_watcom_1.4.0-src.zip
Сергею Савельеву: stormgrv.exe отличается от stormgr.exe только отсутствием
в своём теле по смещению 0x3E5 в строке CAUSEWAY= параметра NOVM .
Сергей, Вы задавали вопрос по этому поводу - см. ответ ниже, причём Вы можете как править
(hiew) этот параметр как в теле STORMGR(V).EXE, так и задав его как SET CAUSEWAY=
in environment variable.
---<cut>---
The CAUSEWAY environment variable controls operation of the DOS extender at
application runtime. Eleven (11) options are supported, although they are
ignored in a Windows or OS/2 DPMI environment. Use any combination of the
options in the following format:
SET CAUSEWAY=[<setting_1>;][<setting_2>;][<setting_n>;]
Items in square brackets ([ ]) are optional. Do not actually type the
brackets if you use the optional items. Items in brackets (< >) should be
replaced with actual values, separated by semicolons. Following is a
description of the valid settings:
BIG1
Force CauseWay to use an alternate method to determine available extended
memory under RAW memory environments (no DPMI host, no HIMEM.SYS loaded),
allowing CauseWay to see more than 64MB of memory on machines which do not
support more than 64MB under original INT 15h method. This method uses INT
15h function 0e801h to determine available extended memory, falling back to
the original function if 0e801h fails. Note that old machines may not
support this function and there is a slight chance that some older machines
may not work if this setting is used.
DPMI
Force DPMI rather than default VCPI usage whenever possible (recommended for
386Max and BlueMax users). The memory manager must support DPMI or else this
setting is ignored.
EXTALL
Force CauseWay to use all extended memory and sub-allocate memory from the
bottom up instead of the default top-down approach. This setting is most
useful for processor intensive environments which have a small hardware cache
that does not cover the entire physical address range. Use of this setting
means that no extended memory will be available for other programs while the
application is loaded (including shelling to DOS).
HIMEM:<nnn>
Set maximum physical (conventional plus extended) memory that can be consumed
by CauseWay where <nnn> is the decimal number of kilobytes that can be
consumed. If memory allocation requests exceed this figure, CauseWay will
use virtual memory, even if additional physical memory is present. If the
HIMEM memory value exceeds available physical memory, then memory allocations
operate normally. For example, HIMEM:2048 on a 4MB machine would force
virtual memory use after 2MB of memory allocations (including loading the
executable file). The remaining 2MB of memory could be used by other
applications while the CauseWay application is active.
LOWMEM:<nnn>
Set DOS (conventional) memory to restrict it from use by CauseWay. This
memory is in addition to the default 32KB low DOS memory block reserved by
CauseWay for use by any applications which need to allocate DOS memory.
<nnn> is the decimal number of kilobytes to reserve. If there is not enough
conventional memory to satisfy the <nnn> request value, then CauseWay will
leave all conventional memory free that is not required by the extender to
operate. Note that this option does not guarantee the amount of free DOS
memory, just how much needs to be free before CauseWay will consume DOS
memory after exhausting all extended memory. For example, LOWMEM:200 will
attempt to reserve 200KB of DOS memory, even if CauseWay has exhausted all
extended memory and is using conventional memory to fill memory allocation
requests.
MAXMEM:<nn>
Set maximum linear address space provided by CauseWay where <nn> is the
decimal number of megabytes of linear address space. This setting is similar
to HIMEM except that it includes any virtual memory. For example, MAXMEM:32
on a 16MB memory system restricts VMM disk space usage to 32MB, even if more
disk space is present. MAXMEM:8 on the same system would restrict the
application to 8MB of memory (all physical). Note that the setting is in
megabytes, rather than kilobytes used in the LOWMEM and HIMEM options.
NAME:<filename>
Set a name, without a pathspec, to use the virtual memory temporary swap
file. To set a path for the swap file, use the CAUSEWAY=SWAP , TEMP , or TMP
environment variable. The filename must be valid, 12 characters or less.
Additional characters are truncated or invalidate the filename, depending
upon how DOS handles it (e.g., multiple periods make an invalid file name
whereas a five-character extension is truncated to three). If the filename
specified is invalid, CauseWay shuts off virtual memory. It makes no further
attempts for a temporary file name. If a pre-existing file name is
specified, CauseWay overwrites the file.
In conjunction with the PRE setting, the NAME setting can be a very powerful
tool. Not only can no clusters be lost due to reset/reboot, but the leftover
temporary file can be forced to a known name and location. Erase the swap
file prior to running the application or leave it as a "permanent" swap file
for CauseWay.
Note: In a multi-user or muti-CauseWay application situation, do not use the
NAME setting unless it generates a unique file for each user and application.
Otherwise, applications will be stepping on others' temporary files.
NOEX
Force CauseWay to not patch the INT 21h, function 4bh (EXEC) vector to turn
off CauseWay's INT 31h extensions when the EXEC function is called. CauseWay
normally turns off support of its INT 31h extensions with an EXEC call to be
well behaved and avoid conflicts with other extenders or programs which may
add their own extensions to INT 31h. However, if your CauseWay extended
application shells out to DOS and passes the shelled-to application a
callback address pointing to a routine within the parent CauseWay
application, the callback will not work properly if the protected mode code
uses the CauseWay extensions. With the NOEX setting present, CauseWay still
supports its INT 31h extensions for those users who need to operate with
callbacks in this fashion. Be aware that when the NOEX setting is present,
CauseWay is less "well-behaved" about other programs which might add their
own INT 31h extensions.
NOVM
Disable all virtual memory use by CauseWay. If physical memory is exhausted,
CauseWay will fail further memory allocation requests.
PRE:<nnn>
Pre-allocates a swap file size, under non-DPMI environments, at start-up,
where <nnn> is file size in megabytes, not kilobytes (same as MAXMEM). There
are at least two uses for this feature. First, to pre-allocate a virtual
memory file size for applications with a total memory allocation (including
EXE image) that does not exceed the set size. For example:
SET CAUSEWAY=PRE:4
pre-allocates a virtual memory file of 4MB. If an enduser resets or powers
off the computer while the application is running and virtual memory is in
use, the enduser's machine will not have lost clusters. There is only a 4MB
temporary file to find and erase. If virtual memory usage exceeds 4MB, then
SCANDISK must be used to recover lost clusters above and beyond what was
pre-allocated.
Secondly, PRE can be used to allow your application to stake a claim to disk
space before it needs it.
PRE may be used in conjunction with MAXMEM to ensure that virtual memory does
not exceed the pre-allocation setting.
SWAP:<path>
Set CauseWay's virtual memory manager swap file path. This path takes
precedence for choosing the location of a swap file over the TEMP and TMP
environment variables.
---<cut>---
Moreover, Вы можете переименовать STORMGRV.EXE и STORMGR.NLM в одно и тоже имя, типа
например, STOR.EXE и STOR.NLM - будут передаваться и параметры командной строки в том числе.
BTW, STORMGR.CLM нужен только для экономии места на 1.44" дискретке - но сейчас это
уже почти не актуально.
Кроме того, для STOR 3.20a (2003/10/20) есть доступ к технологической консоли,
3.3х я не ломал - мне ЛЕНЬ.
---<cut>---
Portlock Storage Manager v3.20a (2003/10/20), (#) 2003 by Kludge
enable ANY password to System Commands->Command Promt
stormgr.nlm
000DB418: 75 EB
000DB45E: 74 EB
---<cut>---
А команды там очень весёлые(желательно включить логгер):
---
preface:
<drive> means zero-based drive #
<volume> usually zero(or one)-based volume #
<block_number> always zero-based #
<partition> ,IMHO, one-based partition #
---<cut>---
block <volume> <block_number>
block keyfind <drive> <partition> [-pause]
block find <drive> <partition> <number> <string> [-pause] [-data]
block map <volume>
cdrom config <drive> <feature>
cdrom eject <drive>
cdrom eom <drive> <block>
cdrom fill <drive>
cdrom format <drive>
cdrom load <drive>
cdrom read <drive> <block>
cdrom readtest <drive> <block>
cdrom reset <drive>
cdrom test <drive> <block>
cdrom write <drive> <block>
cdrom readformat <drive>
cdrom sectorcheck <drive>
cluster <volume> <number>
cluster zero <volume> <number> [-random]
dos cluster <drive> <part> <cluster>
dos defrag <drive> <part> <StartingCluster> <ClusterOfFileToDefrag>
dos display <drive> <part>
dos fatboothex <drive> <part>
dos move <drive> <part> <oldCluster> <newCluster>
fat32 bootsector <drive> <partition>
fat32 cluster <drive> <partition> <cluster_number>
fat32 label <drive> <partition>
fdisk <drive> [-l | -p]
fdisk active <drive> <partition>
fdisk add <drive> <partition>
fdisk del <drive> <partition>
fdisk init <drive>
filerecover <volume> <@scipt>
inode <volume> <inode>
image <volume> <filename>
nss <drive> <partition> <record>
Where record is: SPB5, XLEF, CKP7, ZVLO, ZVOL, DIRH, PRGQ
nss guid - Generate a GUID and display the new GUID
nss dirh <VolumeName> [[block] [next | left]
nss zid <VolumeName> <ZID>
nss <drive> <partition> <zlbh> <block>
nss free <VolumeName>
nss remfree <VolumeName> <block> <count>
nss addfree <VolumeName> <count>
nss block allocate <VolumeName> <block> <count>
nss block free <VolumeName> <block> <count>
nss split <VolumeName>
nss dir <VolumeName>
nss freelist <volume>
nss find <drive>
nss clear_sg_name <drive> <partition>
nss repair_rsvd <drive> <sector> <group>
ntfs blocks <drive> <partition or sector_offset>
ntfs bootsector <drive> <partition or sector_offset>
ntfs cluster <drive> <partition> <cluster_number>
ntfs freelist <drive> <partition>
ntfs indx <drive> <partition or sector_offset>
ntfs inode <drive> <partition> <inode_number>
ntfs resize <drive> <partition>
ntfs pagefile <drive> <partition>
ntfs hiberfil <drive> <partition>
ntfs test
ntfs cluster <drive> <partition> <cluster_number> [count]
ntfs mfts
MFT Record Types
----------------------------------------
0 - $MFT Master File Table
1 - $MFTMirr Backup copy of the first four records of the MFT
2 - $LogFile Transactional logging file
3 - $Volume Serial number, creation time, dirty flag
4 - $AttrDef Attribute definitions
5 - . Root directory of the disk
6 - $Bitmap Contains the volume cluster map
7 - $Boot Boot record of the volume
8 - $BadClus Lists bad clusters on the volume
9 - $Quota (NT) Quota information
9 - $Secure (2K) Secturity descriptiors used by the volume
10 - $UpCase Table of uppercase characters used for collating
11 - $Extend (2K) A directory: $ObjId, $Quota, $Reparse, $UsnJrnl
ntfs inode <drive> <partition or sector_offset> <inode_number>
ntfs freelist <drive> <partition>
ntfs blocks <drive> <partition or sector_offset>
ntfs indx <drive> <partition or sector_offset>
ntfs resize <drive> <partition>
ntfs findfile <drive> <partition>
ntfs pagefile <drive> <partition>
ntfs hiberfil <drive> <partition>
partition test <drive>
recover <old_volume> <new_volume> [-nocreate]
recoverscript <old_volume> <new_volume> <script> [-nocreate] [-skip]
xrecover <old_volume> <new_volume> <script>
repair <drive> <start_cyl> <count_cyl> <VolumeName>
sector <drive> <partition> <number> [count]
sector zero <drive> <partition> <sector>
sector find <drive> <partition> <sector> <string>
sector hexfind <drive> <partition> <number> <hex_string> [hex_string]
Sector OffFind <drive> <partition> <number> <offset> <hex_string>
sector dumppart <drive> <partition> <filename>
sector check <drive> <partition> [sectors]
sector zero <drive> <partition> <sector> [count]
sector check <drive> <partition> [sectors]
sector compare <src_drive> <src_part> <dst_drive> <dst_part>
sector fix <drive> <sector>
sector volfind <drive> <partition> <number>
sector dirfind <drive> <partition> <number>
sector fatfind <drive> <partition> <number>
sector mbr_copy <src_drive> <dst_drive>
sg display <drive> <partition>
sg freemap [minsize]
sg add <drive> <part> <name> <sectors>
move <volume> <oldblock> <newblock> [noclear]
purge <volume> [-verbose]
volume fix <volume>
get <web_server> <path> <dst_file>
put <web_server> <path> <src_file>
---<cut>---
P.S. кому интересно - ковыряйте сами. Ину![/b]