-1

多くの関数では、出力である文字列のサイズを設定する必要があることがわかります。

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 として定義され、設定されるサイズは大きく異なります。

4

1 に答える 1

0

ドキュメントを注意深く読むと、サイズ パラメータが出力バッファのサイズ (通常はバイト単位) であることがわかります。

cbData [in]

lpData パラメーターが指す情報のサイズ (バイト単位)。データの型が REG_SZ、REG_EXPAND_SZ、または REG_MULTI_SZ の場合、cbData には終端の null 文字または文字のサイズを含める必要があります。

もちろん、次のことが必要になります。

WCHAR wStrExec[1024U];
RegSetValueExW(..., sizeof (wStrExec));
于 2014-01-14T20:15:53.153 に答える