В чем разница между __deref_out_opt и __deref_opt_out? - PullRequest
5 голосов
/ 24 января 2011

В чем разница между следующими SAL аннотациями?

void foo(__deref_out_opt PSTR* bar);

void foo(__deref_opt_out PSTR* bar);

1 Ответ

4 голосов
/ 24 января 2011

A PSTR* параметр out означает, что вызывающая сторона передает в буфер, который получает указатель на строку.

В __deref_out_opt строка является необязательной (функция помещает NULL в предоставленный вызывающей стороной буфер).

В __deref_opt_out буфер является необязательным (вызывающий передает NULL, чтобы указать на отсутствие интереса к выходному значению).

Предположительно, возможно объединить эти понятия, должен быть модификатор __deref_opt_out_optза это.

...