簡體   English   中英

Microsoft SAL注釋-optional參數

[英]Microsoft SAL annotation -optional parameter

在winbase.h中,像這樣定義DeviceIoControl函數。

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表達這一點。

是否有注釋來表達這一點?

PS如果可以,請制作SAL標簽。 SO中尚無標簽。

這是SAL注釋的當前版本的限制。 當參數可以為NULL時,SDK和DDK標頭中的注釋必須使用_opt。 如果沒有_opt后綴,您將得到太多的誤報。

DDK中的注釋功能更強大,並且包括條件注釋 ,可以更好地進行控制。 因此,如果您可以在允許參數為NULL時從其他參數中找出答案,則可以使用__drv_when來獲得更好的注釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM