KERNEL: Implement undocumented SetCPGlobal API call

Dmitry Timoshkov dmitry at
Tue Mar 29 22:10:28 CST 2005

"Troy Rollo" <wine at> wrote:

> > What app does depend on it?
> I can't name a specific app that depends on it already (other than Windows 
> login management processes),

I wonder then how did you discover its existence and syntax and how did you test
its real behaviour?

> but:
> - the call has some fairly obvious uses such that it is not out of the 
> question for an app to use it;

I'd say that an obvious one is SetThreadLocale.

> - similar API calls to change the OEM code page are documented;

What are they? Could you list that API calls?

> - documented facilities in the API necessarily imply the existence of this API 
> call;

and this API has enough power to break an app without a notice.

> and
> - I am considering using it myself.
> While the MultiByteToWideChar API can have its behaviour varied by changing 
> the first parameter from CP_ACP to some global, the *A calls cannot. Thus 
> this API call may be important for a server app not compiled for Unicode (or 
> which uses C libraries without a Unicode interface) which receives, for 
> example, file names from a client application.

Do you have an evidence that Windows does it in the same way?

> In fact I had an enquiry a week or so ago from our London office which 
> involved a problem for which the use of this API call is the only reasonable 
> solution.
> Ideally the altered code page setting would be inherited by any child process 
> created by the parent.

No. It's better to change the locale of your system to an appropriate one.


More information about the wine-devel mailing list