VC中GlobalAlloc,GlobalLock,GlobalUnlock的使用及其说明

本文介绍了VC中GlobalAlloc, GlobalLock及GlobalUnlock等函数的使用方法,这些函数用于内存的分配、锁定与解锁。此外,还提供了如何通过IStream获取文件大小的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VC中GlobalAlloc,GlobalLock,GlobalUnlock的使用及其说明


*buf_hdl = (char *)GlobalAlloc(GPTR, (size_t)buf_getsize);
*buf_data_p = (char *)GlobalLock(*buf_hdl)
(void)memcpy(((struct Rpc_bufhed *)buf_data_p)->eye,
buf_id,sizeof(((struct Rpc_bufhed *)buf_data_p)))
GlobalUnlock(*buf_hdl);

到网上些调查的资料:
调用GlobalAlloc函数分配一块内存,该函数会返回分配的内存句柄。
调用GlobalLock函数锁定内存块,该函数接受一个内存句柄作为参数,然后返回一个指向被锁定的内存块的指针。 您可以用该指针来读写内存。
调用GlobalUnlock函数来解锁先前被锁定的内存,该函数使得指向内存块的指针无效。
调用GlobalFree函数来释放内存块。您必须传给该函数一个内存句柄。

 

-------------------------------------------------------------------------------------------

获取IStream的大小

DWORD   dwSize   =   200000;
 HGLOBAL   hMem   =   ::GlobalAlloc(   GMEM_MOVEABLE,dwSize);
 LPVOID   lpBuf   =   ::GlobalLock(   hMem   );
 IStream* pStream   =   NULL;
 HRESULT hr =   ::CreateStreamOnHGlobal(   hMem,   TRUE,   &pStream   );
 ASSERT(SUCCEEDED(hr));
 ULARGE_INTEGER StreamSize;
 StreamSize.LowPart = 0;
 IStream_Size(pStream,&StreamSize);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值