35static const WCHAR TEST_DDE_SERVICE[] = {
'T',
'e',
's',
't',
'D',
'D',
'E',
'S',
'e',
'r',
'v',
'i',
'c',
'e',0};
38static WCHAR exec_cmdAW[] = {
'A',
'N',
'S',
'I',
' ',
'd',
'd',
'e',
' ',
'c',
'o',
'm',
'm',
'a',
'n',
'd',0};
39static WCHAR exec_cmdW[] = {
'u',
'n',
'i',
'c',
'o',
'd',
'e',
' ',
'd',
'd',
'e',
' ',
'c',
'o',
'm',
'm',
'a',
'n',
'd',0};
92 memset(&wcA, 0,
sizeof(wcA));
97 ok (aclass,
"RegisterClass failed\n");
102 ok(*
hwnd !=
NULL,
"CreateWindowExA failed\n");
137 ok(!
lstrcmpA(
str,
"TestDDEService"),
"Expected TestDDEService, got %s\n",
str);
151 "Expected 2, 3, 4, 7 or 8, got %d\n",
msg_index);
173 ok(hglobal !=
NULL,
"Expected non-NULL hglobal\n");
209 ok(poke !=
NULL,
"Expected non-NULL poke\n");
222 "Expected 'poke data\\r\\n', got %s\n", poke->
Value);
238 ok(!
lstrcmpA(
ptr,
"[Command(Var)]"),
"Expected [Command(Var)], got %s\n",
ptr);
284 ok( !
res,
"client failed with %lu error(s)\n",
res );
289 HSZ hsz1, HSZ hsz2, HDDEDATA hdata,
292 ok(
FALSE,
"Unhandled msg: %08x\n", uType);
318 if (
broken(!conversation))
338 ok( hdata !=
NULL,
"hdata is NULL\n" );
342 ok(!
lstrcmpA(
str,
"requested data\r\n"),
"Expected 'requested data\\r\\n', got %s\n",
str);
343 ok(
size == 17,
"Expected 17, got %ld\n",
size);
357 ok( hdata !=
NULL,
"hdata is NULL\n" );
361 ok(!
lstrcmpA(
str,
"requested data\r\n"),
"Expected 'requested data\\r\\n', got %s\n",
str);
362 ok(
size == 17,
"Expected 17, got %ld\n",
size);
380 ok(!
lstrcmpA(
str,
"requested data\r\n"),
"Expected 'requested data\\r\\n', got %s\n",
str);
381 ok(
size == 17,
"Expected 17, got %ld\n",
size);
392 ok(hdata ==
NULL,
"Expected NULL hdata, got %p\n", hdata);
393 ok(
res == 0xdeadbeef,
"Expected 0xdeadbeef, got %08lx\n",
res);
403 ok(hdata !=
NULL,
"Expected non-NULL hdata\n");
410 ok(
op ==
NULL,
"Expected NULL, got %p\n",
op);
411 ok(
res == 0xdeadbeef,
"Expected 0xdeadbeef, got %ld\n",
res);
419 ok(
op ==
NULL,
"Expected NULL, got %p\n",
op);
420 ok(
res == 0xdeadbeef,
"Expected 0xdeadbeef, got %ld\n",
res);
428 ok(
op == (HDDEDATA)
TRUE,
"Expected TRUE, got %p\n",
op);
437 ok(
op == (HDDEDATA)
TRUE,
"Expected TRUE, got %p\n",
op);
446 ok(hdata !=
NULL,
"Expected non-NULL hdata\n");
454 ok(
op == (HDDEDATA)
TRUE,
"Expected TRUE, got %p\n",
op);
462 ok(
op ==
NULL,
"Expected NULL, got %p\n",
op);
463 ok(
res == 0xdeadbeef,
"Expected 0xdeadbeef, got %ld\n",
res);
471 ok(
op ==
NULL,
"Expected NULL, got %p\n",
op);
472 ok(
res == 0xdeadbeef,
"Expected 0xdeadbeef, got %ld\n",
res);
488 ok(!
strcmp(
str,
"command executed\r\n"),
"Expected 'command executed\\r\\n', got %s\n",
str);
489 ok(
size == 19,
"Expected 19, got %ld\n",
size);
499 ok(
op ==
NULL,
"Expected NULL, got %p\n",
op);
500 ok(
res == 0xdeadbeef,
"Expected 0xdeadbeef, got %ld\n",
res);
507 ok(
op ==
NULL,
"Expected NULL, got %p\n",
op);
508 ok(
res == 0xdeadbeef,
"Expected 0xdeadbeef, got %ld\n",
res);
515 ok(
op ==
NULL,
"Expected NULL, got %p\n",
op);
516 ok(
res == 0xdeadbeef,
"Expected 0xdeadbeef, got %ld\n",
res);
523 ok(
op ==
NULL,
"Expected NULL, got %p\n",
op);
524 ok(
res == 0xdeadbeef,
"Expected 0xdeadbeef, got %ld\n",
res);
531 ok(
op ==
NULL,
"Expected NULL, got %p\n",
op);
532 ok(
res == 0xdeadbeef,
"Expected 0xdeadbeef, got %ld\n",
res);
539 ok(
op ==
NULL,
"Expected NULL, got %p\n",
op);
540 ok(
res == 0xdeadbeef,
"Expected 0xdeadbeef, got %ld\n",
res);
547 ok(
op ==
NULL,
"Expected NULL, got %p\n",
op);
548 ok(
res == 0xdeadbeef,
"Expected 0xdeadbeef, got %ld\n",
res);
555 ok(
op ==
NULL,
"Expected NULL, got %p\n",
op);
556 ok(
res == 0xdeadbeef,
"Expected 0xdeadbeef, got %ld\n",
res);
563 ok(
op ==
NULL,
"Expected NULL, got %p\n",
op);
564 ok(
res == 0xdeadbeef,
"Expected 0xdeadbeef, got %ld\n",
res);
571 ok(
op ==
NULL,
"Expected NULL, got %p\n",
op);
572 ok(
res == 0xdeadbeef,
"Expected 0xdeadbeef, got %ld\n",
res);
587 HSZ hsz1, HSZ hsz2, HDDEDATA hdata,
595 static HCONV conversation = 0;
604 ok(uFmt == 0,
"Expected 0, got %d\n", uFmt);
605 ok(hconv == 0,
"Expected 0, got %p\n", hconv);
606 ok(hdata == 0,
"Expected 0, got %p\n", hdata);
607 ok(dwData1 == 0,
"Expected 0, got %08Ix\n", dwData1);
608 ok(dwData2 == 0,
"Expected 0, got %08Ix\n", dwData2);
611 ok(!
lstrcmpA(
str,
"TestDDEServer"),
"Expected TestDDEServer, got %s\n",
str);
612 ok(
size == 13,
"Expected 13, got %ld\n",
size);
615 ok(!
strncmp(
str,
"TestDDEServer(", 14),
"Expected TestDDEServer(, got %s\n",
str);
619 return (HDDEDATA)
TRUE;
625 ok(uFmt == 0,
"Expected 0, got %d\n", uFmt);
626 ok(hconv == 0,
"Expected 0, got %p\n", hconv);
627 ok(hdata == 0,
"Expected 0, got %p\n", hdata);
628 ok(dwData1 == 0,
"Expected 0, got %08Ix\n", dwData1);
629 ok(dwData2 ==
FALSE,
"Expected FALSE, got %08Ix\n", dwData2);
633 ok(
size == 12,
"Expected 12, got %ld\n",
size);
636 ok(!
lstrcmpA(
str,
"TestDDEServer"),
"Expected TestDDEServer, got %s\n",
str);
637 ok(
size == 13,
"Expected 13, got %ld\n",
size);
639 return (HDDEDATA)
TRUE;
644 conversation = hconv;
647 ok(uFmt == 0,
"Expected 0, got %d\n", uFmt);
648 ok(hconv !=
NULL,
"Expected non-NULL hconv\n");
649 ok(hdata == 0,
"Expected 0, got %p\n", hdata);
650 ok(dwData1 == 0,
"Expected 0, got %08Ix\n", dwData1);
651 ok(dwData2 ==
FALSE,
"Expected FALSE, got %08Ix\n", dwData2);
655 ok(
size == 12,
"Expected 12, got %ld\n",
size);
658 ok(!
lstrcmpA(
str,
"TestDDEServer"),
"Expected TestDDEServer, got %s\n",
str);
659 ok(
size == 13,
"Expected 13, got %ld\n",
size);
661 return (HDDEDATA)
TRUE;
667 "Expected 4, 5 or 6, got %d\n",
msg_index);
668 ok(hconv == conversation,
"Expected conversation handle, got %p\n", hconv);
669 ok(hdata == 0,
"Expected 0, got %p\n", hdata);
670 ok(dwData1 == 0,
"Expected 0, got %08Ix\n", dwData1);
671 ok(dwData2 == 0,
"Expected 0, got %08Ix\n", dwData2);
674 ok(uFmt == 0xbeef,
"Expected 0xbeef, got %08x\n", uFmt);
676 ok(uFmt ==
CF_TEXT,
"Expected CF_TEXT, got %08x\n", uFmt);
680 ok(
size == 12,
"Expected 12, got %ld\n",
size);
710 ok(uFmt ==
CF_TEXT,
"Expected CF_TEXT, got %d\n", uFmt);
711 ok(hconv == conversation,
"Expected conversation handle, got %p\n", hconv);
712 ok(dwData1 == 0,
"Expected 0, got %08Ix\n", dwData1);
713 ok(dwData2 == 0,
"Expected 0, got %08Ix\n", dwData2);
717 ok(
size == 12,
"Expected 12, got %ld\n",
size);
720 ok(!
lstrcmpA(
ptr,
"poke data\r\n"),
"Expected 'poke data\\r\\n', got %s\n",
ptr);
721 ok(
size == 12,
"Expected 12, got %ld\n",
size);
744 ok(uFmt == 0,
"Expected 0, got %d\n", uFmt);
745 ok(hconv == conversation,
"Expected conversation handle, got %p\n", hconv);
746 ok(dwData1 == 0,
"Expected 0, got %08Ix\n", dwData1);
747 ok(dwData2 == 0,
"Expected 0, got %08Ix\n", dwData2);
748 ok(hsz2 == 0,
"Expected 0, got %p\n", hsz2);
752 ok(
size == 12,
"Expected 12, got %ld\n",
size);
760 ok(!
lstrcmpA(
ptr,
"[Command(Var)]"),
"Expected '[Command(Var)]', got %s\n",
ptr);
761 ok(
size == 15,
"Expected 15, got %ld\n",
size);
766 ok(!
lstrcmpA(
ptr,
"[BadCommand(Var)]"),
"Expected '[BadCommand(Var)]', got %s\n",
ptr);
767 ok(
size == 18,
"Expected 18, got %ld\n",
size);
778 ok(
size == 17,
"DdeGetData should have returned 17 not %ld\n",
size);
780 ok(
ptr !=
NULL,
"malloc should have returned ptr not NULL\n");
782 ok(rsize ==
size,
"DdeGetData did not return %ld bytes but %ld\n",
size, rsize);
784 ok(!
lstrcmpA(
ptr,
"[Command-2(Var)]"),
"Expected '[Command-2(Var)]' got %s\n",
ptr);
785 ok(
size == 17,
"Expected 17, got %ld\n",
size);
797 ok(uFmt == 0,
"Expected 0, got %d\n", uFmt);
798 ok(hconv == conversation,
"Expected conversation handle, got %p\n", hconv);
799 ok(dwData1 == 0,
"Expected 0, got %08Ix\n", dwData1);
800 ok(dwData2 == 0,
"Expected 0, got %08Ix\n", dwData2);
801 ok(hsz1 == 0,
"Expected 0, got %p\n", hsz2);
802 ok(hsz2 == 0,
"Expected 0, got %p\n", hsz2);
808 ok(
FALSE,
"Unhandled msg: %08x\n", uType);
832 ok(
server !=
NULL,
"Expected non-NULL string handle\n");
835 ok(hdata == (HDDEDATA)
TRUE,
"Expected TRUE, got %p\n", hdata);
877 ok(!
lstrcmpA(
str,
"TestDDEServer"),
"Expected TestDDEServer, got %s\n",
str);
878 ok(
size == 13,
"Expected 13, got %ld\n",
size);
883 ok(
size == 12,
"Expected 12, got %ld\n",
size);
891 "Expected 2, 3, 4, 6, 7, 8, 9, 10 or 11, got %d\n",
msg_index);
900 ok(!
lstrcmpA(
str,
"TestDDEServer"),
"Expected TestDDEServer, got %s\n",
str);
901 ok(
size == 13,
"Expected 13, got %ld\n",
size);
906 ok(
size == 12,
"Expected 12, got %ld\n",
size);
925 ok(!
lstrcmpA(
ptr,
"[Command(Var)]"),
"Expected '[Command(Var)]', got %s\n",
ptr);
929 ok(!
lstrcmpA(
ptr,
"[Command-2(Var)]"),
"Expected '[Command-2(Var)]', got %s\n",
ptr);
934 ok(!
lstrcmpA(
ptr,
"[BadCommand(Var)]"),
"Expected '[BadCommand(Var)]', got %s\n",
ptr);
961 ok(hi ==
item,
"Expected item atom, got %08Ix\n", hi);
967 ok(hi == 0,
"Expected 0, got %08Ix\n", hi);
968 ok(
size == 0,
"Expected empty string, got %ld\n",
size);
972 ok(hi ==
item,
"Expected item atom, got %08Ix\n", hi);
992 ok(
data->unused == 0,
"Expected 0, got %d\n",
data->unused);
993 ok(
data->fResponse ==
TRUE,
"Expected TRUE, got %d\n",
data->fResponse);
996 ok(
data->fRelease ==
TRUE,
"Expected TRUE, got %d\n",
data->fRelease);
998 ok(
data->fAckReq == 0,
"Expected 0, got %d\n",
data->fAckReq);
1001 "Expected 'requested data\\r\\n', got %s\n",
data->Value);
1007 ok(
size == 7,
"Expected 7, got %ld\n",
size);
1030 ok(hglobal != 0,
"Expected non-NULL hglobal\n");
1049 ok(hglobal != 0,
"Expected non-NULL hglobal\n");
1066 ok(
server != 0,
"Expected non-NULL server\n");
1069 ok(
topic != 0,
"Expected non-NULL topic\n");
1079 ok(
item != 0,
"Expected non-NULL item\n");
1107 ok(
item != 0,
"Expected non-NULL item\n");
1222 static BOOL client_unicode, conv_unicode;
1237 conv_unicode = client_unicode;
1238 if (step >= 10) client_unicode = !client_unicode;
1314 else ok( 0,
"bad command data %Ix\n", hi );
1353 static BOOL client_unicode, conv_unicode;
1365 conv_unicode = client_unicode;
1366 if (step >= 10) client_unicode = !client_unicode;
1380 trace(
"server W: got WM_DDE_INITIATE from %p with %08Ix (client %s conv %s)\n", (
HWND)
wparam,
1381 lparam, client_unicode ?
"Unicode" :
"ANSI", conv_unicode ?
"Unicode" :
"ANSI" );
1418 if (conv_unicode && !client_unicode)
1420 else if (!conv_unicode && client_unicode)
1427 if (conv_unicode && !client_unicode)
1429 else if (!conv_unicode && client_unicode)
1436 if (conv_unicode && !client_unicode)
1438 else if (!conv_unicode && client_unicode)
1445 if (conv_unicode && !client_unicode)
1447 else if (!conv_unicode && client_unicode)
1455 else ok( 0,
"bad command data %Ix\n", hi );
1497 static const char server_class_nameA[] =
"dde_server_windowA";
1498 static const WCHAR server_class_nameW[] = {
'd',
'd',
'e',
'_',
's',
'e',
'r',
'v',
'e',
'r',
'_',
'w',
'i',
'n',
'd',
'o',
'w',
'W',0};
1502 memset(&wcW, 0,
sizeof(wcW));
1514 memset(&wcA, 0,
sizeof(wcA));
1529 HSZ hsz1, HSZ hsz2, HDDEDATA hdata,
1532 static const char *
const cmd_type[15] = {
1533 "XTYP_ERROR",
"XTYP_ADVDATA",
"XTYP_ADVREQ",
"XTYP_ADVSTART",
1534 "XTYP_ADVSTOP",
"XTYP_EXECUTE",
"XTYP_CONNECT",
"XTYP_CONNECT_CONFIRM",
1535 "XTYP_XACT_COMPLETE",
"XTYP_POKE",
"XTYP_REGISTER",
"XTYP_REQUEST",
1536 "XTYP_DISCONNECT",
"XTYP_UNREGISTER",
"XTYP_WILDCONNECT" };
1538 const char *cmd_name;
1544 trace(
"client_dde_callback: %04x (%s) %d %p %p %p %p %08Ix %08Ix\n",
1545 uType, cmd_name, uFmt, hconv, hsz1, hsz2, hdata, dwData1, dwData2);
1557 BOOL conv_unicode = client_unicode;
1559 static char test_cmd[] =
"test dde command";
1586#if !defined(__REACTOS__) || !defined(_WIN64)
1588 "wrong iCodePage %d\n",
info.ConvCtxt.iCodePage);
1589 ok(!
info.hConvPartner,
"unexpected info.hConvPartner: %p\n",
info.hConvPartner);
1596 ok(
info.wType == 0,
"unexpected info.wType: %04x\n",
info.wType);
1602 ok(!hdata,
"DdeClientTransaction succeeded\n");
1610 if (conv_unicode && (!client_unicode || !server_unicode))
1613 ok(!hdata ||
broken(hdata != 0) ,
"DdeClientTransaction returned %p, error %lx\n", hdata,
err);
1617 ok(!hdata,
"DdeClientTransaction returned %p, error %lx\n", hdata,
err);
1622 else if (!conv_unicode && client_unicode && server_unicode)
1624 ok(!hdata,
"DdeClientTransaction returned %p, error %lx\n", hdata,
err);
1631 ok(hdata != 0 ||
broken(!hdata) ,
"DdeClientTransaction returned %p, error %lx\n", hdata,
err);
1635 ok(hdata != 0,
"DdeClientTransaction returned %p, error %lx\n", hdata,
err);
1645 if (conv_unicode && (!client_unicode || !server_unicode))
1648 ok(hdata != 0 ||
broken(!hdata) ,
"DdeClientTransaction returned %p, error %lx\n", hdata,
err);
1652 ok(hdata != 0,
"DdeClientTransaction returned %p, error %lx\n", hdata,
err);
1657 else if (!conv_unicode && client_unicode && server_unicode)
1659 ok(!hdata,
"DdeClientTransaction returned %p, error %lx\n", hdata,
err);
1665 ok(!hdata,
"DdeClientTransaction returned %p, error %lx\n", hdata,
err);
1673 if (conv_unicode && (!client_unicode || !server_unicode))
1676 ok(!hdata ||
broken(hdata) ,
"DdeClientTransaction returned %p, error %lx\n", hdata,
err);
1680 ok(!hdata,
"DdeClientTransaction returned %p, error %lx\n", hdata,
err);
1685 else if (!conv_unicode && client_unicode && server_unicode)
1687 ok(!hdata,
"DdeClientTransaction returned %p, error %lx\n", hdata,
err);
1694 ok(hdata != 0 ||
broken(!hdata) ,
"DdeClientTransaction returned %p, error %lx\n", hdata,
err);
1698 ok(hdata != 0,
"DdeClientTransaction returned %p, error %lx\n", hdata,
err);
1707 if (conv_unicode && (!client_unicode || !server_unicode))
1709 ok(!hdata,
"DdeClientTransaction returned %p, error %lx\n", hdata,
err);
1713 else if (!conv_unicode && client_unicode && server_unicode)
1715 ok(hdata != 0,
"DdeClientTransaction returned %p, error %lx\n", hdata,
err);
1722 ok(!hdata ||
broken(hdata) ,
"DdeClientTransaction returned %p, error %lx\n", hdata,
err);
1726 ok(!hdata,
"DdeClientTransaction returned %p, error %lx\n", hdata,
err);
1737 ok(!
ret,
"DdeQueryConvInfo should fail\n");
1774 ok(conversation ==
NULL,
"Expected NULL conversation, %p\n", conversation);
1786 ok(hdata ==
NULL,
"Expected NULL, got %p\n", hdata);
1790 ok(
res == 0xdeadbeef,
"Expected 0xdeadbeef, got %08lx\n",
res);
1802 static const WCHAR dde_string[] = {
'D',
'D',
'E',
' ',
'S',
't',
'r',
'i',
'n',
'g',0};
1810 ok(str_handle != 0,
"DdeCreateStringHandleW failed with error %08x\n",
1815 ok(
ret == 1,
"DdeQueryStringW returned wrong length %d\n",
ret);
1817 ok(
ret ==
lstrlenW(dde_string),
"DdeQueryStringW returned wrong length %d\n",
ret);
1822 ok(
ret == 1,
"DdeQueryStringW returned wrong length %d\n",
ret);
1823 ok(!
lstrcmpA(
"D", (
LPCSTR)bufW),
"DdeQueryStringW returned wrong string\n");
1827 ok(
ret ==
lstrlenW(dde_string),
"DdeQueryStringW returned wrong length %d\n",
ret);
1828 ok(!
lstrcmpW(dde_string, bufW),
"DdeQueryStringW returned wrong string\n");
1834 ok(
ret == 1,
"DdeQueryStringA returned wrong length %d\n",
ret);
1835 ok(!
lstrcmpA(
"D",
buf),
"DdeQueryStringW returned wrong string\n");
1839 ok(
ret ==
lstrlenA(
"DDE String"),
"DdeQueryStringA returned wrong length %d\n",
ret);
1840 ok(!
lstrcmpA(
"DDE String",
buf),
"DdeQueryStringA returned wrong string %s\n",
buf);
1846 ok(
ret == 1,
"DdeQueryStringA returned wrong length %d\n",
ret);
1847 ok(!
lstrcmpA(
"D",
buf),
"DdeQueryStringA returned wrong string %s\n",
buf);
1851 ok(
ret ==
lstrlenA(
"DDE String"),
"DdeQueryStringA returned wrong length %d\n",
ret);
1858 ok(atom != 0,
"Expected a valid atom\n");
1862 ok(atom == 0,
"Expected 0, got %d\n", atom);
1864 "Expected ERROR_FILE_NOT_FOUND, got %ld\n",
GetLastError());
1869 ok(atom != 0,
"Expected a valid atom\n");
1873 ok(atom == 0,
"Expected 0, got %d\n", atom);
1875 "Expected ERROR_FILE_NOT_FOUND, got %ld\n",
GetLastError());
1890 WCHAR item_str[] = {
'i',
't',
'e',
'm',0};
1936 ok(hdata ==
NULL,
"Expected NULL, got %p\n", hdata);
1949 ok(hdata !=
NULL,
"Expected non-NULL hdata\n");
1953 ok(
ptr !=
NULL,
"Expected non-NULL ptr\n");
1954 ok(
size == 260,
"Expected 260, got %ld\n",
size);
1966 ok(hdata !=
NULL,
"Expected non-NULL hdata\n");
1970 ok(
ptr !=
NULL,
"Expected non-NULL ptr\n");
1971 ok(
size == 0,
"Expected 0, got %ld\n",
size);
1983 ok(hdata !=
NULL,
"Expected non-NULL hdata\n");
1987 ok(
ptr !=
NULL,
"Expected non-NULL ptr\n");
1988 ok(
size == 262,
"Expected 262, got %ld\n",
size);
2004 ok(hdata !=
NULL,
"Expected non-NULL hdata\n");
2008 ok(
ptr !=
NULL,
"Expected non-NULL ptr\n");
2010 ok(
size == 260,
"Expected 260, got %ld\n",
size);
2022 ok(hdata !=
NULL,
"Expected non-NULL hdata\n");
2026 ok(
ptr !=
NULL,
"Expected non-NULL ptr\n");
2028 ok(
size == 260,
"Expected 260, got %ld\n",
size);
2040 ok(hdata !=
NULL,
"Expected non-NULL hdata\n");
2044 ok(
ptr !=
NULL,
"Expected non-NULL ptr\n");
2046 ok(
size == 260,
"Expected 260, got %ld\n",
size);
2137 ok(
lparam == (
int)0xbeefcafe,
"Expected 0xbeefcafe, got %08Ix\n",
lparam);
2142 ok(lo == 0xcafe,
"Expected 0xcafe, got %08Ix\n", lo);
2143 ok(hi == 0xbeef,
"Expected 0xbeef, got %08Ix\n", hi);
2149 ok(
lparam == (
int)0xbeefcafe,
"Expected 0xbeefcafe, got %08Ix\n",
lparam);
2154 ok(lo == 0xcafe,
"Expected 0xcafe, got %08Ix\n", lo);
2155 ok(hi == 0xbeef,
"Expected 0xbeef, got %08Ix\n", hi);
2162 ok(
ptr !=
NULL,
"Expected non-NULL ptr\n");
2163 ok(
ptr[0] == 0xcafe,
"Expected 0xcafe, got %08Ix\n",
ptr[0]);
2164 ok(
ptr[1] == 0xbeef,
"Expected 0xbeef, got %08Ix\n",
ptr[1]);
2167 ok(
ret == 1,
"Expected 1, got %d\n",
ret);
2172 ok(lo == 0xcafe,
"Expected 0xcafe, got %08Ix\n", lo);
2173 ok(hi == 0xbeef,
"Expected 0xbeef, got %08Ix\n", hi);
2179 ok(
lparam == (
int)0xbeefcafe,
"Expected 0xbeefcafe, got %08Ix\n",
lparam);
2184 ok(lo == 0xcafe,
"Expected 0xcafe, got %08Ix\n", lo);
2185 ok(hi == 0xbeef,
"Expected 0xbeef, got %08Ix\n", hi);
2192 ok(
ptr !=
NULL,
"Expected non-NULL ptr\n");
2193 ok(
ptr[0] == 0xcafe,
"Expected 0xcafe, got %08Ix\n",
ptr[0]);
2194 ok(
ptr[1] == 0xbeef,
"Expected 0xbeef, got %08Ix\n",
ptr[1]);
2197 ok(
ret == 1,
"Expected 1, got %d\n",
ret);
2202 ok(lo == 0xcafe,
"Expected 0xcafe, got %08Ix\n", lo);
2203 ok(hi == 0xbeef,
"Expected 0xbeef, got %08Ix\n", hi);
2210 ok(
ptr !=
NULL,
"Expected non-NULL ptr\n");
2211 ok(
ptr[0] == 0xcafe,
"Expected 0xcafe, got %08Ix\n",
ptr[0]);
2212 ok(
ptr[1] == 0xbeef,
"Expected 0xbeef, got %08Ix\n",
ptr[1]);
2215 ok(
ret == 1,
"Expected 1, got %d\n",
ret);
2220 ok(lo == 0xcafe,
"Expected 0xcafe, got %08Ix\n", lo);
2221 ok(hi == 0xbeef,
"Expected 0xbeef, got %08Ix\n", hi);
2227 ok(
lparam == (
int)0xbeefcafe,
"Expected 0xbeefcafe, got %08Ix\n",
lparam);
2232 ok(lo == 0xcafe,
"Expected 0xcafe, got %08Ix\n", lo);
2233 ok(hi == 0xbeef,
"Expected 0xbeef, got %08Ix\n", hi);
2240 ok(
ptr !=
NULL,
"Expected non-NULL ptr\n");
2241 ok(
ptr[0] == 0xcafe,
"Expected 0xcafe, got %08Ix\n",
ptr[0]);
2242 ok(
ptr[1] == 0xbeef,
"Expected 0xbeef, got %08Ix\n",
ptr[1]);
2245 ok(
ret == 1,
"Expected 1, got %d\n",
ret);
2250 ok(lo == 0xcafe,
"Expected 0xcafe, got %08Ix\n", lo);
2251 ok(hi == 0xbeef,
"Expected 0xbeef, got %08Ix\n", hi);
2262 ok(lo == 0,
"Expected 0, got %08Ix\n", lo);
2263 ok(hi == 0xbeef,
"Expected 0xbeef, got %08Ix\n", hi);
2280 ok(lo == 0,
"Expected 0, got %08Ix\n", lo);
2281 ok(hi == 0,
"Expected 0, got %08Ix\n", hi);
2288 ok(lo == 0xdead,
"Expected 0xdead, got %08Ix\n", lo);
2289 ok(hi == 0xcafe,
"Expected 0xcafe, got %08Ix\n", hi);
2296 ok(lo == 0xbabe,
"Expected 0xbabe, got %08Ix\n", lo);
2297 ok(hi == 0xbeef,
"Expected 0xbeef, got %08Ix\n", hi);
2303 ok(lo == 0xbabe,
"Expected 0xbabe, got %08Ix\n", lo);
2304 ok(hi == 0xcafe,
"Expected 0xcafe, got %08Ix\n", hi);
2310 ok(lo == 0xbabe,
"Expected 0xbabe, got %08Ix\n", lo);
2311 ok(hi == 0xcafe,
"Expected 0xcafe, got %08Ix\n", hi);
2319 "Expected 0, got %08Ix\n", lo);
2322 "Expected 0, got %08Ix\n", hi);
2326 ptr[0] = 0xcafebabe;
2327 ptr[1] = 0xdeadbeef;
2334 ok(lo == 0xcafebabe,
"Expected 0xcafebabe, got %08Ix\n", lo);
2335 ok(hi == 0xdeadbeef,
"Expected 0xdeadbeef, got %08Ix\n", hi);
2341 ok(lo == 0xbabe,
"Expected 0xbabe, got %08Ix\n", lo);
2342 ok(hi == 0xcafe,
"Expected 0xcafe, got %08Ix\n", hi);
2348 ok(lo == 0xcafebabe,
"Expected 0xcafebabe, got %08Ix\n", lo);
2349 ok(hi == 0xdeadbeef,
"Expected 0xdeadbeef, got %08Ix\n", hi);
2355 ok(lo == 0xcafebabe,
"Expected 0xcafebabe, got %08Ix\n", lo);
2356 ok(hi == 0xdeadbeef,
"Expected 0xdeadbeef, got %08Ix\n", hi);
2362 ok(lo == 0xbabe,
"Expected 0xbabe, got %08Ix\n", lo);
2363 ok(hi == 0xcafe,
"Expected 0xcafe, got %08Ix\n", hi);
2369 ok(lo == 0xcafebabe,
"Expected 0xcafebabe, got %08Ix\n", lo);
2370 ok(hi == 0xdeadbeef,
"Expected 0xdeadbeef, got %08Ix\n", hi);
2376 ok(lo == 0,
"Expected 0, got %08Ix\n", lo);
2377 ok(hi == 0xcafebabe,
"Expected 0xcafebabe, got %08Ix\n", hi);
2384 {
't',
'e',
's',
't',
' ',
'd',
'd',
'e',
' ',
'c',
'o',
'm',
'm',
'a',
'n',
'd',0},
2385 { 0x2018, 0x2019, 0x0161, 0x0041, 0x02dc, 0 },
2386 { 0x2026, 0x2020, 0x2021, 0x0d0a, 0 },
2387 { 0x4efa, 0x4efc, 0x0061, 0x4efe, 0 },
2388 { 0x0061, 0x0062, 0x0063, 0x9152, 0 },
2394 HSZ hsz1, HSZ hsz2, HDDEDATA hdata,
2399 static HCONV conversation = 0;
2401 static const char test_topic [] =
"TestDDETopic";
2413 return (HDDEDATA)
TRUE;
2419 ok(uFmt == 0,
"Expected 0, got %d, msg_index=%d\n", uFmt,
msg_index);
2420 ok(hconv == 0,
"Expected 0, got %p, msg_index=%d\n", hconv,
msg_index);
2421 ok(hdata == 0,
"Expected 0, got %p, msg_index=%d\n", hdata,
msg_index);
2422 ok(dwData1 != 0,
"Expected not 0, got %08Ix, msg_index=%d\n", dwData1,
msg_index);
2423 ok(dwData2 ==
FALSE,
"Expected FALSE, got %08Ix, msg_index=%d\n", dwData2,
msg_index);
2426 ok(!
lstrcmpA(
str, test_topic),
"Expected %s, got %s, msg_index=%d\n",
2435 return (HDDEDATA)
TRUE;
2440 conversation = hconv;
2441 return (HDDEDATA)
TRUE;
2447 char test_cmd_w_to_a[64];
2448 WCHAR test_cmd_a_to_w[64];
2449 DWORD size_a, size_w, size_w_to_a, size_a_to_w;
2452 ok(uFmt == 0,
"Expected 0, got %d\n", uFmt);
2453 ok(hconv == conversation,
"Expected conversation handle, got %p, msg_index=%d\n",
2455 ok(dwData1 == 0,
"Expected 0, got %08Ix, msg_index=%d\n", dwData1,
msg_index);
2456 ok(dwData2 == 0,
"Expected 0, got %08Ix, msg_index=%d\n", dwData2,
msg_index);
2457 ok(hsz2 == 0,
"Expected 0, got %p, msg_index=%d\n", hsz2,
msg_index);
2459 ok(!
lstrcmpA(
str, test_topic),
"Expected %s, got %s, msg_index=%d\n",
2466 ok(rsize ==
size,
"Incorrect size returned, expected %ld got %ld, msg_index=%d\n",
2477 test_cmd_w_to_a,
sizeof(test_cmd_w_to_a),
NULL,
NULL );
2483 ok(
size == size_a_to_w,
"Wrong size %ld/%ld, msg_index=%d\n",
size, size_a_to_w,
msg_index);
2508 ok(
size == size_w_to_a,
"Wrong size %ld/%ld, msg_index=%d\n",
2527 "Wrong size %ld/%ld, msg_index=%d\n",
size, size_a_to_w,
msg_index);
2533 ok(
size == size_w_to_a,
"Wrong size %ld/%ld, msg_index=%d\n",
size, size_w_to_a,
msg_index);
2567 ok(
size == size_w_to_a,
"Wrong size %ld expected %ld, msg_index=%d\n",
size, size_w_to_a,
msg_index);
2573 todo_wine ok(
size == size_w_to_a ||
size == (size_w_to_a - 1),
"Wrong size %ld expected %ld or %ld, msg_index=%d\n",
2588 return (HDDEDATA)
TRUE;
2598 HSZ hsz1, HSZ hsz2, HDDEDATA hdata,
2604 return (HDDEDATA)
TRUE;
2607 ok(
FALSE,
"Unhandled msg: %08x\n", uType);
2621 static const WCHAR test_service_w[] = {
'T',
'e',
's',
't',
'D',
'D',
'E',
'S',
'e',
'r',
'v',
'i',
'c',
'e',0};
2622 static const char test_topic[] =
"TestDDETopic";
2623 static const WCHAR test_topic_w[] = {
'T',
'e',
's',
't',
'D',
'D',
'E',
'T',
'o',
'p',
'i',
'c',0};
2656 ok(hdata !=
NULL,
"DdeClientTransaction failed\n");
2666 ok(hdata !=
NULL,
"DdeClientTransaction failed\n");
2703 ok(
server !=
NULL,
"Expected non-NULL string handle\n");
2706 ok(hdata == (HDDEDATA)
TRUE,
"Expected TRUE, got %p\n", hdata);
2718 ok( !
res,
"client failed with %lu error(s)\n",
res );
2768#if defined(__REACTOS__) && defined(__GNUC__)
2770 ok(
FALSE,
"FIXME: Running these test_dde_aw_transaction() tests again crashes GCC ReactOS but not MSVC ReactOS!\n");
2775#if defined(__REACTOS__) && defined(__GNUC__)
ATOM WINAPI GlobalAddAtomA(LPCSTR lpString)
ATOM WINAPI GlobalFindAtomA(LPCSTR lpString)
LPARAM WINAPI ReuseDDElParam(LPARAM, UINT, UINT, UINT_PTR, UINT_PTR)
BOOL WINAPI UnpackDDElParam(UINT, LPARAM, PUINT_PTR, PUINT_PTR)
BOOL WINAPI FreeDDElParam(UINT, LPARAM)
LPARAM WINAPI PackDDElParam(UINT, UINT_PTR, UINT_PTR)
HDDEDATA WINAPI DdeClientTransaction(LPBYTE, DWORD, HCONV, HSZ, UINT, UINT, DWORD, LPDWORD)
HSZ WINAPI DdeCreateStringHandleA(DWORD, LPCSTR, INT)
UINT WINAPI DdeQueryConvInfo(HCONV, DWORD, PCONVINFO)
#define XTYP_XACT_COMPLETE
HDDEDATA WINAPI DdeCreateDataHandle(DWORD, LPBYTE, DWORD, DWORD, HSZ, UINT, UINT)
BOOL WINAPI DdeUninitialize(DWORD)
UINT WINAPI DdeInitializeW(LPDWORD, PFNCALLBACK, DWORD, DWORD)
#define DMLERR_MEMORY_ERROR
HCONV WINAPI DdeConnect(DWORD, HSZ, HSZ, PCONVCONTEXT)
#define XTYP_CONNECT_CONFIRM
#define DMLERR_NOTPROCESSED
UINT WINAPI DdeGetLastError(DWORD)
HSZ WINAPI DdeCreateStringHandleW(DWORD, LPCWSTR, INT)
#define DDE_FNOTPROCESSED
DWORD WINAPI DdeQueryStringA(DWORD, HSZ, LPSTR, DWORD, INT)
DWORD WINAPI DdeQueryStringW(DWORD, HSZ, LPWSTR, DWORD, INT)
BOOL WINAPI DdeFreeStringHandle(DWORD, HSZ)
BOOL WINAPI DdeDisconnect(HCONV)
HDDEDATA WINAPI DdeNameService(DWORD, HSZ, HSZ, UINT)
#define DMLERR_NO_CONV_ESTABLISHED
BOOL WINAPI DdeUnaccessData(HDDEDATA)
LPBYTE WINAPI DdeAccessData(HDDEDATA, LPDWORD)
BOOL WINAPI DdeFreeDataHandle(HDDEDATA)
#define APPCMD_CLIENTONLY
DWORD WINAPI DdeGetData(HDDEDATA, LPBYTE, DWORD, DWORD)
#define DMLERR_INVALIDPARAMETER
#define APPCLASS_STANDARD
UINT WINAPI DdeInitializeA(LPDWORD, PFNCALLBACK, DWORD, DWORD)
#define WideCharToMultiByte
#define MultiByteToWideChar
ATOM WINAPI FindAtomW(LPCWSTR lpString)
ATOM WINAPI GlobalFindAtomW(LPCWSTR lpString)
ATOM WINAPI FindAtomA(LPCSTR lpString)
ATOM WINAPI GlobalDeleteAtom(ATOM nAtom)
UINT WINAPI GlobalGetAtomNameA(ATOM nAtom, LPSTR lpBuffer, int nSize)
ATOM WINAPI GlobalAddAtomW(LPCWSTR lpString)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
BOOL WINAPI GetExitCodeProcess(IN HANDLE hProcess, IN LPDWORD lpExitCode)
BOOL WINAPI IsDBCSLeadByte(BYTE testchar)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
LANGID WINAPI GetUserDefaultLangID(void)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA(const char *app_name, char *cmd_line, SECURITY_ATTRIBUTES *process_attr, SECURITY_ATTRIBUTES *thread_attr, BOOL inherit, DWORD flags, void *env, const char *cur_dir, STARTUPINFOA *startup_info, PROCESS_INFORMATION *info)
ULONG WINAPI DECLSPEC_HOTPATCH GetTickCount(void)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
_ACRTIMP int __cdecl strncmp(const char *, const char *, size_t)
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
SIZE_T NTAPI GlobalSize(HGLOBAL hMem)
static ERESOURCE GlobalLock
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
#define ERROR_FILE_NOT_FOUND
static PROCESS_INFORMATION pi
#define create_process(cmd, pi)
static void test_service(void)
static void test_PackDDElParam(void)
static WCHAR test_cmd_w_to_w[][32]
static LRESULT WINAPI dde_server_wndprocA(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static LRESULT WINAPI dde_msg_client_wndproc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static const DWORD default_timeout
static void test_end_to_end_client(BOOL type_a)
static void test_dde_aw_transaction(BOOL client_unicode, BOOL server_unicode)
static void test_DdeCreateStringHandleW(DWORD dde_inst, int codepage)
static HGLOBAL create_poke(void)
static HDDEDATA CALLBACK server_ddeml_callback(UINT uType, UINT uFmt, HCONV hconv, HSZ hsz1, HSZ hsz2, HDDEDATA hdata, ULONG_PTR dwData1, ULONG_PTR dwData2)
static void test_DdeCreateDataHandle(void)
static LRESULT WINAPI dde_server_wndproc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static void test_DdeCreateStringHandle(void)
static HDDEDATA CALLBACK server_end_to_end_callback(UINT uType, UINT uFmt, HCONV hconv, HSZ hsz1, HSZ hsz2, HDDEDATA hdata, ULONG_PTR dwData1, ULONG_PTR dwData2)
static void test_msg_server(void)
static HWND create_dde_server(BOOL unicode)
static HDDEDATA CALLBACK client_ddeml_callback(UINT uType, UINT uFmt, HCONV hconv, HSZ hsz1, HSZ hsz2, HDDEDATA hdata, ULONG_PTR dwData1, ULONG_PTR dwData2)
static LRESULT WINAPI hook_dde_client_wndprocA(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static HDDEDATA CALLBACK client_dde_callback(UINT uType, UINT uFmt, HCONV hconv, HSZ hsz1, HSZ hsz2, HDDEDATA hdata, ULONG_PTR dwData1, ULONG_PTR dwData2)
static void test_ddeml_server(void)
static void test_end_to_end_server(void)
static const WCHAR TEST_DDE_SERVICE[]
static void flush_events(void)
static void test_FreeDDElParam(void)
static char test_cmd_a_to_a[]
static void test_ddeml_client(void)
static HGLOBAL create_execute(LPCSTR command)
static LRESULT WINAPI hook_dde_client_wndprocW(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static void test_initialisation(void)
static void test_UnpackDDElParam(void)
static HDDEDATA CALLBACK client_end_to_end_callback(UINT uType, UINT uFmt, HCONV hconv, HSZ hsz1, HSZ hsz2, HDDEDATA hdata, ULONG_PTR dwData1, ULONG_PTR dwData2)
static WNDPROC old_dde_client_wndproc
static BOOL unicode_client
static void destroy_dde_window(HWND *hwnd, LPCSTR name)
static void test_msg_client(void)
static HGLOBAL execute_hglobal
static void create_dde_window(HWND *hwnd, LPCSTR name, WNDPROC wndproc)
static WCHAR exec_cmdAW[]
static BOOL unicode_server
static LRESULT WINAPI dde_server_wndprocW(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
unsigned __int3264 UINT_PTR
int winetest_get_mainargs(char ***pargv)
unsigned short bAppReturnCode
TW_UINT32 TW_UINT16 TW_UINT16 MSG
#define FIELD_OFFSET(t, f)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
DWORD WINAPI GetLastError(void)
LRESULT WINAPI DispatchMessageA(_In_ const MSG *)
#define SetWindowLongPtrA
HWND WINAPI CreateWindowExA(_In_ DWORD dwExStyle, _In_opt_ LPCSTR lpClassName, _In_opt_ LPCSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
BOOL WINAPI UnregisterClassA(_In_ LPCSTR, HINSTANCE)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
DWORD WINAPI MsgWaitForMultipleObjects(_In_ DWORD nCount, _In_reads_opt_(nCount) CONST HANDLE *pHandles, _In_ BOOL fWaitAll, _In_ DWORD dwMilliseconds, _In_ DWORD dwWakeMask)
HWND WINAPI GetDesktopWindow(void)
BOOL WINAPI IsWindowUnicode(_In_ HWND)
ATOM WINAPI RegisterClassA(_In_ CONST WNDCLASSA *)
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
BOOL WINAPI PeekMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
#define SetWindowLongPtrW
LRESULT WINAPI CallWindowProcW(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI DestroyWindow(_In_ HWND)
BOOL WINAPI PostMessageA(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI CallWindowProcA(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)