/*********************************************************************** * DefResourceHandler (KERNEL.456) * * This is the default LoadProc() function. */ HGLOBAL16 WINAPI NE_DefResourceHandler( HGLOBAL16 hMemObj, HMODULE16 hModule, HRSRC16 hRsrc ) { HGLOBAL16 handle; WORD sizeShift; NE_NAMEINFO* pNameInfo; NE_MODULE* pModule = NE_GetPtr( hModule ); if (!pModule) return 0; sizeShift = *(WORD *)((char *)pModule + pModule->ne_rsrctab); pNameInfo = (NE_NAMEINFO *)((char *)pModule + hRsrc); if ( hMemObj ) handle = GlobalReAlloc16( hMemObj, pNameInfo->length << sizeShift, 0 ); else handle = AllocResource16( hModule, hRsrc, 0 ); if (handle) { if (!NE_READ_DATA( pModule, GlobalLock16( handle ), (int)pNameInfo->offset << sizeShift, (int)pNameInfo->length << sizeShift )) { GlobalFree16( handle ); handle = 0; } } return handle; }
/****************************************************************************** * This method is part of the ILockBytes interface. * * It will change the size of the byte array. * * See the documentation of ILockBytes for more info. */ HRESULT CDECL HGLOBALLockBytesImpl16_SetSize( ILockBytes16* iface, ULARGE_INTEGER libNewSize) /* [in] */ { HGLOBALLockBytesImpl16* const This=(HGLOBALLockBytesImpl16*)iface; HGLOBAL16 supportHandle; TRACE("(%p,%d)\n",This,libNewSize.u.LowPart); /* * As documented. */ if (libNewSize.u.HighPart != 0) return STG_E_INVALIDFUNCTION; if (This->byteArraySize.u.LowPart == libNewSize.u.LowPart) return S_OK; /* * Re allocate the HGlobal to fit the new size of the stream. */ supportHandle = GlobalReAlloc16(This->supportHandle, libNewSize.u.LowPart, 0); if (supportHandle == 0) return STG_E_MEDIUMFULL; This->supportHandle = supportHandle; This->byteArraySize.u.LowPart = libNewSize.u.LowPart; return S_OK; }
static BOOL PRINTDLG_CreateDevNames16(HGLOBAL16 *hmem, const char* DeviceDriverName, const char* DeviceName, const char* OutputPort) { long size; char* pDevNamesSpace; char* pTempPtr; LPDEVNAMES lpDevNames; char buf[260]; DWORD dwBufLen = sizeof(buf); size = strlen(DeviceDriverName) + 1 + strlen(DeviceName) + 1 + strlen(OutputPort) + 1 + sizeof(DEVNAMES); if(*hmem) *hmem = GlobalReAlloc16(*hmem, size, GMEM_MOVEABLE); else *hmem = GlobalAlloc16(GMEM_MOVEABLE, size); if (*hmem == 0) return FALSE; pDevNamesSpace = GlobalLock16(*hmem); lpDevNames = (LPDEVNAMES) pDevNamesSpace; pTempPtr = pDevNamesSpace + sizeof(DEVNAMES); strcpy(pTempPtr, DeviceDriverName); lpDevNames->wDriverOffset = pTempPtr - pDevNamesSpace; pTempPtr += strlen(DeviceDriverName) + 1; strcpy(pTempPtr, DeviceName); lpDevNames->wDeviceOffset = pTempPtr - pDevNamesSpace; pTempPtr += strlen(DeviceName) + 1; strcpy(pTempPtr, OutputPort); lpDevNames->wOutputOffset = pTempPtr - pDevNamesSpace; GetDefaultPrinterA(buf, &dwBufLen); lpDevNames->wDefault = (strcmp(buf, DeviceName) == 0) ? 1 : 0; GlobalUnlock16(*hmem); return TRUE; }
/****************************************************************** * SetMetaFileBitsBetter (GDI.196) * * Trade in a metafile memory handle for a handle to a metafile object, * making a cursory check (using IsValidMetaFile()) that the memory * handle points to a valid metafile. * * RETURNS * Handle to a metafile on success, NULL on failure.. */ HMETAFILE16 WINAPI SetMetaFileBitsBetter16( HMETAFILE16 hMeta ) { if( IsValidMetaFile16( hMeta ) ) return GlobalReAlloc16( hMeta, 0, GMEM_SHARE | GMEM_NODISCARD | GMEM_MODIFY); return 0; }