Windows API зарезервированные параметры - PullRequest
5 голосов
/ 09 декабря 2010

Мне было интересно, почему некоторые функции имеют некоторые параметры, которые должны быть установлены в NULL из-за «зарезервированных параметров».Например:

LONG WINAPI RegQueryValueEx(
  __in         HKEY hKey,
  __in_opt     LPCTSTR lpValueName,
  __reserved   LPDWORD lpReserved,
  __out_opt    LPDWORD lpType,
  __out_opt    LPBYTE lpData,
  __inout_opt  LPDWORD lpcbData
);

Я не могу понять, почему существует lpReserved?Я имею в виду, если он зарезервирован, зачем его ставить, не проще ли его опустить?

Спасибо!:) (не обращайте внимания на мой английский, пожалуйста ..)

1 Ответ

11 голосов
/ 09 декабря 2010

Я вижу как минимум две причины.

Можно предположить, что этот параметр зарезервирован для будущего использования и возможного расширения функциональности. Если он установлен на NULL, это может до некоторой степени гарантировать, что в будущем, когда будут добавлены новые функции, он не сломает старые программы.

Вторая возможная причина заключается в том, что этот параметр может фактически использоваться внутри как часть частного API, а открытая часть API предписывает установить для этого параметра значение NULL.

Почему бы не пропустить это вообще? Позже гораздо проще расширить функциональность системы без изменения интерфейса. Он остается двоичным и исходным кодом, совместимым со старым API, и не требует перестройки старого программного обеспечения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...