判斷句柄是否有效
睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接
句柄相當于一個指向指針的指針,指向指針的指針同樣是指針,所以暫且認為它是一個指針,那么CreateFile相當于new 分配一個資源,讓這個指針指到這塊資源的首地址,那么當CloseHandle(handle)后等于是delete操作。此時handle的值還在,但是資源已被釋放掉,那這個時候如果去訪問這個句柄,就等于訪問一個非法的內存資源。那么現在回到這個問題,如何判斷句柄是否有效,就好比是回答如何判斷指針是否有效。大家知道指針就是地址,如何判斷地址是否有效呢?那就是判斷這塊地址上是否有有效數據了?那如何判斷這個地址上有有效數據呢?微軟提供了API,講到這里問題基本就迎刃而解,希望樓主給分給我啊。答案另起一行
答案:
Tests a memory address to make sure it represents a currently active memory block that was allocated by the diagnostic version of new.
BOOL AfxIsMemoryBlock(
const void* p,
UINT nBytes,
LONG* plRequestNumber = NULL
);
或者:
Tests any memory address to ensure that it is contained entirely within the program's memory space.
BOOL AfxIsValidAddress(
const void* lp,
UINT nBytes,
BOOL bReadWrite = TRUE
);