Output messages I can't invoke.

Discussion forum for all Windows batch related topics.

Moderator: DosItHelp

Post Reply
Message
Author
npocmaka_
Posts: 498
Joined: 24 Jun 2013 17:10
Location: Bulgaria
Contact:

Output messages I can't invoke.

#1 Post by npocmaka_ » 05 Apr 2017 02:38

Some messages from cmd mui file that I don't know how to reproduce (and I even't don't know if it's possible):

Code: Select all

An incorrect parameter was entered for the command.

The system cannot accept the path or file name requested.

The system is out of environment space. (probably if a lot environment variables are created?)

The contents of the target file were lost.

Insert the diskette that contains the batch file and press any key when ready. %0 

The Process Identification Number is %1.  (probably something from start command? If it can show the pid of the started process it will be great)

The system cannot complete the process.

"%1" is not a recognized device. (probably something related to serial ports devices?)

A program attempted to reference storage outside the limits of a stack segment.  The program was ended.

Command not implemented.

Out of memory.

Parameter format not correct - "%1".

(Error occurred in environment variable)



And the strings for TRANSACTION command which was planned as internal cmd command but it's part of fsutil

Code: Select all

Local NTFS volumes are required to complete the operation.
The new link and the existing file must be on the same NTFS volume.
The device does not support symbolic links.
You do not have sufficient privilege to perform this operation.
Allows control of file operations via transactions to commit or abort
changes.
TRANSACTION [/START | /COMMIT | /ROLLBACK | /SUSPEND | /RESUME]
   /START    - Start a new transaction.  Only one can be pending
               at a time.
   /COMMIT   - Commit all changes for the current transaction.
   /ROLLBACK - Rolls back all changes for the current transaction.
   /SUSPEND  - Disables the running transaction, leaving it pending,
               and continue in non-transacted mode.
   /RESUME   - Enable the transaction disabled with suspend.
For both commit and rollback, the transaction is then closed after
the command executes.
If no argument is given, this command displays the current state of the
transaction for CMD.EXE.
Transaction ID: %1
An active transaction is in progress.
There is no active transaction.
A transaction has been successfully started.
There is no transaction to commit, rollback, suspend or resume.
An active transaction is already in progress. A new one cannot
be started until the current one is committed or rolled back.
Cannot commit or rollback a transaction that has been inherited
from another process.
Cannot commit a transaction that was started outside of a batch
file from within a batch file.
Cannot suspend a transaction because a transaction is already
suspended.
Cannot resume a transaction because no transaction is currently
suspended.
Cannot resume a transaction suspended in a previous batch file.
Transaction successfully resumed.
Transaction successfully suspended.
There are still %1 process(es) running within this
transaction.  Commit or rollback will continue once those
processes have terminated.
This transaction has already been rolled back.
The current transaction has been rolled back.
The current transaction has been rolled back because
CMD exited or the batch file completed.
This transaction has already been committed.
The current transaction has been committed.
The current transaction has been committed or aborted outside of
CMD, and has been successfully abandoned.
Failed to query transaction state.  Unknown outcome state is %1
Administrator: %0
Local volumes are required to complete the operation.

Aacini
Expert
Posts: 1670
Joined: 06 Dec 2011 22:15
Location: México City, México

Re: Output messages I can't invoke.

#2 Post by Aacini » 05 Apr 2017 14:04

Most messages of the first group are related to the old MS-DOS COMMAND.COM processor and the .COM file format.

  • Code: Select all

    The system is out of environment space.

    In old MS-DOS days (and also in 32-bits Windows running DOS code), when a .com/.exe program was loaded for execution its environment is loaded first, removing all unused space up to paragraph (16-bytes) boundary, and after it the executable code is loaded. The exception is COMMAND.COM, that load its environment after the program code, so it could grow with no limit. However, if another program is loaded after it as a Terminate and Stay Resident (TSR) one, then the environment of previous COMMAND.COM can not longer grow, so this message is issued.

    You may observe this behavior in the image posted after the MCB-Chain.bat program at this topic. In the screen image you may see that COMMAND.COM program is loaded at address 0510 and its environment is at address 05BB, so it could grow after such an address. However, the DOSX TSR program was loaded after it, so the environment could not longer grow beyond its current size of 1568 bytes. Also, you may see in the same image that PEEK.com program was loaded at address 0EF2, but its environment was loaded before it at address 0E99 with a size of 1408 bytes.

    There was also another COMMAND.COM error message related to this management:

    Code: Select all

    Memory control blocks destroyed! System halted.
    This happens when one of the MCB's described at such topic was altered, so the MCB chain is broken.


  • Code: Select all

    Insert the diskette that contains the batch file and press any key when ready.

    In old systems that have just diskettes, a Batch file could run a command that required a disk change, like FORMAT or DISKCOPY. After such commands ends, the system ask for the original diskette with this message.


  • Code: Select all

    A program attempted to reference storage outside the limits of a stack segment.  The program 
    was ended.

    This message is related to the .COM executable file format, that can only access a single 64 Kb segment.


  • Code: Select all

    Out of memory.

    This message is issued when a .com/.exe file is requested for execution and there are not enough memory to load it.


Antonio

npocmaka_
Posts: 498
Joined: 24 Jun 2013 17:10
Location: Bulgaria
Contact:

Re: Output messages I can't invoke.

#3 Post by npocmaka_ » 06 Oct 2020 12:41

https://github.com/shaswata56/WindowsXP ... /cmdmsg.mc

here are the message ids that can be searched in the repository for some insights. Since windows vista these messages are stored in the .mui files in order to achieve some localisation.

Looks like the process id can be printed in a certain conditions that I cannot emulate :

https://github.com/shaswata56/WindowsXP ... ext.c#L624

I thinks this file concerns exit codes when the START command is used. Looks like the process should be piped ? I'm not so comfortable in reading this code ,though it is interesting.

Post Reply