关于psp(程序段前缀)和 argv
在256个字节的psp数据当中,前127个字节是留给程序名的,而后半字节留给程序参数和其他程序信息,那么除了参数部分的信息,怎么查阅呢?还有他们都会有什么样的功能?
书上说当一个程序运行的时候,会把psp数据放到argv指向的缓冲区中,那么说可以用指针查看咯。。。
请教!
win32程序执行大部分是通过鼠标的双击,那么怎么给他们添加参数呢?
问题点数:100、回复次数:3Top
1 楼dsangvei(十年一剑)回复于 2002-09-13 14:55:04 得分 80
:Program Segment Prefix:PSP
^PSP - DOS Program Segment Prefix Layout
% Offset Size Description
00 word machine code ~INT 20~ instruction (CDh 20h)
02 word top of memory in segment (paragraph) form
04 byte reserved for DOS, usually 0
05 5bytes machine code instruction long call to the DOS
function dispatcher (obsolete CP/M)
06 word .COM programs bytes available in segment (CP/M)
0A dword ~INT 22~ terminate address; DOS loader jumps to this
address upon exit; the EXEC function forces a child
process to return to the parent by setting this
vector to code within the parent (IP,CS)
0E dword ~INT 23~ Ctrl-Break exit address; the original INT 23
vector is NOT restored from this pointer (IP,CS)
12 dword ~INT 24~ critical error exit address; the original
INT 24 vector is NOT restored from this field (IP,CS)
16 word parent process segment addr (Undoc. DOS 2.x+)
COMMAND.COM has a parent id of zero, or its own PSP
18 20bytes file handle array (Undocumented DOS 2.x+); if handle
array element is FF then handle is available. Network
redirectors often indicate remotes files by setting
these to values between 80-FE.
2C word segment address of the environment, or zero (DOS 2.x+)
2E dword SS:SP on entry to last INT 21 function (Undoc. 2.x+) ?
32 word handle array size (Undocumented DOS 3.x+)
34 dword handle array pointer (Undocumented DOS 3.x+)
38 dword pointer to previous PSP (deflt FFFF:FFFF, Undoc 3.x+) ?
3C 20bytes unused in DOS before 4.01 ?
50 3bytes DOS function dispatcher CDh 21h CBh (Undoc. 3.x+) ?
53 9bytes unused
5C 36bytes default unopened ~FCB~ #1 (parts overlayed by FCB #2)
6C 20bytes default unopened FCB #2 (overlays part of FCB #1)
80 byte count of characters in command tail; all bytes
following command name; also default ~DTA~ (128 bytes)
81 127bytes all characters entered after the program name followed
by a CR byte
- offset 5 contains a jump address which is 2 bytes too low for
PSP's created by the DOS EXEC function in DOS 2.x+ ?
- program name and complete path can be found after the environment
in DOS versions after 3.0. See offset 2Ch.Top
2 楼dsangvei(十年一剑)回复于 2002-09-13 14:57:55 得分 20
在运行(WIN+R)里输入命令,后接参数,Top
3 楼SysPlus(万诱引力)回复于 2002-09-13 19:35:32 得分 0
thanks...Top




