[英]How do I determine the size of a registry value's data using the Windows API?
[英]How do I determine clipboard data size?
我在剪貼板中有一個自定義數據格式(它由第三方程序放置在剪貼板中)。 我使用以下命令從剪貼板獲取數據大小:
HANDLE data = GetClipboardData(format);
DWORD len = GlobalSize(data);
問題是,我得到的數據大小不正確(大約加上實際大小的100字節)。 我的意思是,剪貼板中實際“有效”數據的大小不同。 而且,從一個調用到另一個調用,我得到不同的(!)數據大小(盡管數據本身不會改變)。 看起來很神秘。 我的意思是,如果我繼續在循環中執行上述兩行,則此格式的“ len”將獲得不同的值。
所以我基本上有兩個問題
對於相同的數據,“ GlobalSize”怎么可能從一個調用返回另一個調用的非恆定值?
如何獲得這種格式的剪貼板數據的“實際”數據大小?
先感謝您!
從GlobalSize
功能的MSDN頁面上:
內存塊的大小可能大於分配內存時請求的大小
因此,您不能依靠GlobalSize
返回所請求的分配大小。 相反,您應該將大小作為數據對象本身的一部分傳遞(例如,以包含大小的DWORD
開頭,后跟數據)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.