winbase.hでは、DeviceIoControl関数は次のように定義されています。Microsoft SAL注釈 - オプションパラメータ
BOOL
WINAPI
DeviceIoControl(
__in HANDLE hDevice,
__in DWORD dwIoControlCode,
__in_bcount_opt(nInBufferSize) LPVOID lpInBuffer,
__in DWORD nInBufferSize,
__out_bcount_part_opt(nOutBufferSize, *lpBytesReturned) LPVOID lpOutBuffer,
__in DWORD nOutBufferSize,
__out_opt LPDWORD lpBytesReturned,
__inout_opt LPOVERLAPPED lpOverlapped
);
パラメータlpBytesReturnedの注釈が任意に定義されています。
しかし、呼び出し側が同期I/Oを使用する場合は、オプションのパラメータではありません。
呼び出し元がNullをlpBytesReturnedに設定し、同期I/Oを使用すると、アプリケーションが停止する可能性があります。
私が機能を作るとき、私はこの問題に直面することがよくあります。
私はこれをSALからどのように表現するのか分かりません。
これを表すアノテーションはありますか?
P.SできるだけSALタグを作成してください。まだSOにタグはありません。
oh、thanks Necrolis – Benjamin