+HWND CreateDialogParamM(HINSTANCE hInstance, LPCSTR lpTemplateName, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam)
+{
+ HWND r = NULL;
+ wchar_t* pw0 = NULL;
+START_ROUTINE
+ pw0 = DuplicateMtoW(lpTemplateName, -1);
+ r = CreateDialogParamW(hInstance, pw0, hWndParent, lpDialogFunc, dwInitParam);
+END_ROUTINE
+ FreeDuplicatedString(pw0);
+ return r;
+}
+
+int mkdirM(const char * _Path)
+{
+ int r = 0;
+ wchar_t* pw0 = NULL;
+START_ROUTINE
+ pw0 = DuplicateMtoW(_Path, -1);
+ r = _wmkdir(pw0);
+END_ROUTINE
+ FreeDuplicatedString(pw0);
+ return r;
+}
+
+int _mkdirM(const char * _Path)
+{
+ int r = 0;
+ wchar_t* pw0 = NULL;
+START_ROUTINE
+ pw0 = DuplicateMtoW(_Path, -1);
+ r = _wmkdir(pw0);
+END_ROUTINE
+ FreeDuplicatedString(pw0);
+ return r;
+}
+
+int rmdirM(const char * _Path)
+{
+ int r = 0;
+ wchar_t* pw0 = NULL;
+START_ROUTINE
+ pw0 = DuplicateMtoW(_Path, -1);
+ r = _wrmdir(pw0);
+END_ROUTINE
+ FreeDuplicatedString(pw0);
+ return r;
+}
+
+int _rmdirM(const char * _Path)
+{
+ int r = 0;
+ wchar_t* pw0 = NULL;
+START_ROUTINE
+ pw0 = DuplicateMtoW(_Path, -1);
+ r = _wrmdir(pw0);
+END_ROUTINE
+ FreeDuplicatedString(pw0);
+ return r;
+}
+
+size_t _mbslenM(const unsigned char * _Str)
+{
+ size_t r = 0;
+ wchar_t* pw0 = NULL;
+ wchar_t* wr;
+START_ROUTINE
+ pw0 = DuplicateMtoW(_Str, -1);
+ r = wcslen(pw0);
+END_ROUTINE
+ FreeDuplicatedString(pw0);
+ return r;
+}
+
+unsigned char * _mbschrM(const unsigned char * _Str, unsigned int _Ch)
+{
+ unsigned char* r = NULL;
+ wchar_t* pw0 = NULL;
+ wchar_t* wr;
+START_ROUTINE
+ pw0 = DuplicateMtoW(_Str, -1);
+ // TODO: \94ñASCII\95¶\8e\9a\82Ì\91Î\89\9e
+ wr = wcschr(pw0, _Ch);
+ if(wr)
+ {
+ *wr = L'\0';
+ r = _Str + WtoM(NULL, 0, pw0, -1) - 1;
+ }
+END_ROUTINE
+ FreeDuplicatedString(pw0);
+ return r;
+}
+
+unsigned char * _mbsrchrM(const unsigned char * _Str, unsigned int _Ch)
+{
+ unsigned char* r = NULL;
+ wchar_t* pw0 = NULL;
+ wchar_t* wr;
+START_ROUTINE
+ pw0 = DuplicateMtoW(_Str, -1);
+ // TODO: \94ñASCII\95¶\8e\9a\82Ì\91Î\89\9e
+ wr = wcsrchr(pw0, _Ch);
+ if(wr)
+ {
+ *wr = L'\0';
+ r = _Str + WtoM(NULL, 0, pw0, -1) - 1;
+ }
+END_ROUTINE
+ FreeDuplicatedString(pw0);
+ return r;
+}
+
+unsigned char * _mbsstrM(const unsigned char * _Str, const unsigned char * _Substr)
+{
+ unsigned char* r = NULL;
+ wchar_t* pw0 = NULL;
+ wchar_t* pw1 = NULL;
+ wchar_t* wr;
+START_ROUTINE
+ pw0 = DuplicateMtoW(_Str, -1);
+ pw1 = DuplicateMtoW(_Substr, -1);
+ wr = wcsstr(pw0, pw1);
+ if(wr)
+ {
+ *wr = L'\0';
+ r = _Str + WtoM(NULL, 0, pw0, -1) - 1;
+ }
+END_ROUTINE
+ FreeDuplicatedString(pw0);
+ FreeDuplicatedString(pw1);
+ return r;
+}
+
+int _mbscmpM(const unsigned char * _Str1, const unsigned char * _Str2)
+{
+ int r = 0;
+ wchar_t* pw0 = NULL;
+ wchar_t* pw1 = NULL;
+START_ROUTINE
+ pw0 = DuplicateMtoW(_Str1, -1);
+ pw1 = DuplicateMtoW(_Str2, -1);
+ r = wcscmp(pw0, pw1);
+END_ROUTINE
+ FreeDuplicatedString(pw0);
+ FreeDuplicatedString(pw1);
+ return r;
+}
+
+int _mbsicmpM(const unsigned char * _Str1, const unsigned char * _Str2)
+{
+ int r = 0;
+ wchar_t* pw0 = NULL;
+ wchar_t* pw1 = NULL;
+START_ROUTINE
+ pw0 = DuplicateMtoW(_Str1, -1);
+ pw1 = DuplicateMtoW(_Str2, -1);
+ r = _wcsicmp(pw0, pw1);
+END_ROUTINE
+ FreeDuplicatedString(pw0);
+ FreeDuplicatedString(pw1);
+ return r;
+}
+
+int _mbsncmpM(const unsigned char * _Str1, const unsigned char * _Str2, size_t _MaxCount)
+{
+ int r = 0;
+ wchar_t* pw0 = NULL;
+ wchar_t* pw1 = NULL;
+START_ROUTINE
+ pw0 = DuplicateMtoW(_Str1, -1);
+ pw1 = DuplicateMtoW(_Str2, -1);
+ r = wcsncmp(pw0, pw1, _MaxCount);
+END_ROUTINE
+ FreeDuplicatedString(pw0);
+ FreeDuplicatedString(pw1);
+ return r;
+}
+
+unsigned char * _mbslwrM(unsigned char * _String)
+{
+ unsigned char* r = NULL;
+ wchar_t* pw0 = NULL;
+START_ROUTINE
+ pw0 = DuplicateMtoW(_String, -1);
+ _wcslwr(pw0);
+ r = _String;
+ WtoM(_String, strlen(_String) + 1, pw0, -1);
+END_ROUTINE
+ FreeDuplicatedString(pw0);
+ return r;
+}
+
+unsigned char * _mbsuprM(unsigned char * _String)
+{
+ unsigned char* r = NULL;
+ wchar_t* pw0 = NULL;
+START_ROUTINE
+ pw0 = DuplicateMtoW(_String, -1);
+ _wcsupr(pw0);
+ r = _String;
+ WtoM(_String, strlen(_String) + 1, pw0, -1);
+END_ROUTINE
+ FreeDuplicatedString(pw0);
+ return r;
+}
+
+unsigned char * _mbsnincM(const unsigned char * _Str, size_t _Count)
+{
+ unsigned char* r = NULL;
+ wchar_t* pw0 = NULL;
+ wchar_t* wr;
+START_ROUTINE
+ pw0 = DuplicateMtoW(_Str, -1);
+ wr = _wcsninc(pw0, _Count);
+ if(wr)
+ {
+ *wr = L'\0';
+ r = _Str + WtoM(NULL, 0, pw0, -1) - 1;
+ }
+END_ROUTINE
+ FreeDuplicatedString(pw0);
+ return r;
+}
+