IsBadReadPtr 函式 (winbase.h)
確認呼叫進程具有指定記憶體範圍的讀取權限。
重要 此函式已過時,不應使用。 儘管其名稱為何,它並不保證指標有效,或指向的記憶體是安全的使用。 如需詳細資訊,請參閱此頁面上的。
語法
BOOL IsBadReadPtr(
[in] const VOID *lp,
[in] UINT_PTR ucb
);
參數
[in] lp
記憶體區塊第一個位元組的指標。
[in] ucb
記憶體區塊的大小,以位元組為單位。 如果此參數為零,則傳回值為零。
傳回值
如果呼叫進程具有指定記憶體範圍中所有位元組的讀取權限,則傳回值為零。
如果呼叫進程沒有指定記憶體範圍中所有位元組的讀取權限,則傳回值為非零。
如果應用程式編譯為偵錯版本,而且進程沒有指定記憶體範圍中所有位元組的讀取權限,則函式會造成判斷提示並中斷至偵錯工具。 離開偵錯工具,函式會如往常一樣繼續,並傳回非零值。 此行為設計為偵錯協助工具。
備註
使用從協力廠商程式庫傳回的指標時,通常會使用此函式,而您無法判斷協力廠商 DLL 中的記憶體管理行為。
進程中的執行緒預期會合作,如此一來,一個執行緒就不會釋放另一個所需的記憶體。 使用此函式並不會否定執行此動作的需求。 如果未這麼做,應用程式可能會以無法預期的方式失敗。
取消參考可能不正確指標可能會停用其他執行緒中的堆疊擴充。 當堆疊擴充已停用時,執行緒會耗盡其堆疊,導致父進程立即終止,沒有快顯視窗或診斷資訊。
如果呼叫進程具有指定記憶體範圍中位元組的讀取權限,但並非所有位元組,則傳回值為非零。
在先占式多工處理環境中,有些其他執行緒可能會變更進程對所測試記憶體的存取權。 即使函式指出進程具有指定記憶體的讀取權限,您也應該在嘗試存取記憶體時使用結構化例外狀況處理。 使用結構化例外狀況處理可讓系統在發生存取違規例外狀況時通知進程,讓進程有機會處理例外狀況。
規格需求
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | winbase.h (包含 Windows.h) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |