Both the Windows NT and Windows 95 operating systems have two API interfaces. One interface is based on the American National Standards Institute (ANSI) character set, where a single byte represents each character. The other interface was created for the Unicode character set, where two bytes represent each character.

What is a difference for asm-coder?
how is an adsress geting by name of api-function when dll is loaded?
what is the address if many threads are using the same function, the same for all or different?
Does a dll an own describtor and selector?

Can I find the dll's function adress by my self(algorithm) or must get it by API?
Posted on 2003-10-21 03:35:22 by HarryTuttle
The API names are actually like this:


The include files for a specific dll will include a line that looks like this

MessageBox equ <MessageBoxA>

So when you type MessageBox it will be replaced by the ansi version of the command. You can still use MessageBoxA and MessageBoxW directly to specify the ANSI or Unicode version but if you do not it will default to the ansi version. MASM has no intrinsic support for unicode strings so at least in that assembler you are better off using ANSI. However some functions require a Unicode string (especially COM functions that require a path) to do conversion back and forth use MultibyteToWideChar and WideCharToMultibyte. The other option is to use an assembler that fully supports Unicode, the only one I am aware of that provides complete unicode support is GoAsm.
Posted on 2003-10-21 04:24:40 by donkey
I see. thank You Donkey:)

and how about the rest?
Posted on 2003-10-21 08:16:17 by HarryTuttle
There is a macro, called l, to create unicode strings with masm
Look into the masm32\com\ subdirecory
Posted on 2003-10-21 15:06:40 by greenant
Another thing to be aware of.

Win9x (95, 98, ME) does not fully support Unicode out of the box.

In 9x, only a few of the core API support Unicode. Most of the 9x Unicode API are stubs that return a NOT_IMPLEMENTED error code. There is a downloadable extension to 9x for Unicode available from MSDN.

The only other 9x support for Unicode is via COM. (COM requires Unicode support.)
Posted on 2003-10-21 17:12:30 by tenkey