News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

71A8

Started by old programmer, January 30, 2009, 06:11:18 PM

Previous topic - Next topic

old programmer

Where can I find out about the function 71A8? I had documentation for it that described its working in Win98, and
with one option that agreed with the documentation but not with another, and now under Vista its working is
different. I want the original function, what would the short name be, aside from the distinguisher, if some long name
were installed somewhere.

sinsi

Vista doesn't have any support for DOS programs does it?
Light travels faster than sound, that's why some people seem bright until you hear them.

Tedd

Assuming that's an ordinal identifier for a function, you'll need to find out which DLL it (the original that 'works') came from, and on which version and build of Windows -- they can easily change between both versions and builds; and different DLLs can use the same ordinal, but for a different function each. This is why you're supposed to use the textual names, which don't change (much :lol)
If you want, describe the function and we can have a guess what it was.
No snowflake in an avalanche feels responsible.

donkey

Ted's right. Without a description at least of what the function does it is impossible to say. Is it the value in AX on an interrupt call, if so what interrupt is called ? Is it an ordinal value from a DLL, if yes what DLL ? Though I doubt it is a Windows Ordinal since they are normally numbered sequentially from 1 and I know of no Windows DLL with 29 thousand+ functions. The question is essentially "what can you tell me about six", without some point of reference it is meaningless.
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable

Jimg

--------D-2171A8-----------------------------
INT 21 - Windows95 - LONG FILENAME - GENERATE SHORT FILENAME
AX = 71A8h
DS:SI -> ASCIZ long filename (no path allowed!)
ES:DI -> buffer for ASCIZ short filename
DH = short name's format
    00h 11-char directory entry/FCB filename format
    01h DOS 8.3
DL = character sets
    bits 7-4: short name's character set (see #1125)
    bits 3-0: long name's character set (see #1125)
Return: CF clear if successful
    ES:DI buffer filled
CF set on error
    AX = error code
7100h if function not supported
Note: this function uses the same algorithm as the filesystem except that
  the returned name never has a numeric tail for disambiguation
SeeAlso: AX=7160h/CL=00h,AX=7160h/CL=02h,AX=71A7h/BL=00h

(Table 1125)
Values for Windows95 filename character set:
00h Windows ANSI
01h current OEM character set
02h Unicode

I never thought I would need Ralf Browns interupt list again.

sinsi

Windows 9x and Windows NTx generate short names differently (NT can be told not to generate a short name as well), maybe that's where your problem is?
Light travels faster than sound, that's why some people seem bright until you hear them.

GreenTea

Quote from: old programmer on January 30, 2009, 06:11:18 PM
Where can I find out about the function 71A8? I had documentation for it that described its working in Win98, and
with one option that agreed with the documentation but not with another, and now under Vista its working is
different. I want the original function, what would the short name be, aside from the distinguisher, if some long name
were installed somewhere.

I am not clear on what you want.

Are you wanting to know if the function will return the short filename for a long filename under Vista?

I have 16 bit programs using Win95 functions that work under XP.



GregL

QuoteVista doesn't have any support for DOS programs does it?

32-bit Vista does. 64-bit doesn't.


sinsi

Quote from: Greg on February 01, 2009, 02:07:54 AM
QuoteVista doesn't have any support for DOS programs does it?

32-bit Vista does. 64-bit doesn't.


Thanks for the clarification.
Light travels faster than sound, that's why some people seem bright until you hear them.

old programmer

Quote from: Jimg on January 31, 2009, 02:42:56 AM
--------D-2171A8-----------------------------
INT 21 - Windows95 - LONG FILENAME - GENERATE SHORT FILENAME
AX = 71A8h
DS:SI -> ASCIZ long filename (no path allowed!)
ES:DI -> buffer for ASCIZ short filename
DH = short name's format
    00h 11-char directory entry/FCB filename format
    01h DOS 8.3

This is it, and so much I somewhere have. But under Win98 the "DOS 8.3" yields nothing useful--there are
underscores, and underscore is a perfectly valid character, only the FCB form is useful. Under Vista "AUTOEXEC.BAT",
say, becomes either "AUTOEXBAT" or "AUTOEX.BAT". There are no useless underscores under the "8.3" form,
but in the FCB form there is now no means of setting off name from extension, for "MSDOS.SYS", say, turns into
"MSDOSSYS". Furthermore, if the name is one or two long, it is padded with digits to five, and if the extension is
over three long, it is shortened to two, and _then_ the tilde-construct is used. *ugh* And how did this behave
in versions between 98 and Vista? Is there a break at NT, as someone (I forget who) wrote?

For using this, it seems I have to look at the version number (yugh).

The documentation that I have says nothing about its quirks in 98, although it came afterward.

GreenTea

Since I don't run Win98 anymore I am limited in what I can help you with.

I would be glad to send you all my code that uses Win95 functions plus what I have collected.
Most of my code was written using the Win98 platform and it's documented pretty well.