我看到很多函数需要你设置输出字符串的大小。
GetComputerNameW 需要:
WCHAR wStrName[16U];
DWORD uSize = 16U;
GetComputerNameW(wStrName, &uSize);
RegSetValueExW 需要:
WCHAR wStrExec[1024U];
RegSetValueExW(..., (wcslen(wStrExec) + 1U) * sizeof(WCHAR));
GetWindowTextW 需要:
WCHAR wStrText[1024U];
GetWindowsTextW(..., sizeof(wStrText));
GetModuleBaseNameW 需要:
WCHAR wStrName[1024U];
GetModuleBaseNameW(..., sizeof(wStrName) / sizeof(WCHAR));
我的问题是,如何设置尺寸之间的区别?字符串始终定义为WCHAR,并且设置的大小差别很大。
答案 0 :(得分:0)
如果你仔细read the documentation,你会看到size参数是输出缓冲区的大小,通常是字节:
cbData [in]
lpData参数指向的信息大小 字节。如果数据类型为REG_SZ,REG_EXPAND_SZ或REG_MULTI_SZ, cbData必须包含终止空字符的大小或 字符。
当然,您需要产生以下内容:
WCHAR wStrExec[1024U];
RegSetValueExW(..., sizeof (wStrExec));