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

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);

你可能感兴趣的:(struct,Integer)