// ============================================================================= // 函数功能: Socket_Free // 释放套接字内存空间 // 输入参数: fd, 待释放的套接字 // 输出参数: 无 // 返回值 :无 // 说明 : // ============================================================================= bool_t Socket_Free(tagSocket *sockfd) { if(NULL != sockfd) { Lock_MutexDelete(sockfd->sync); sockfd->valid = false; sockfd->socktype = EN_SOCKET_NOTSURE; Mb_Free(pgSocketPool, (void *)sockfd); return true; } else { return false; } }
//----删除一个主窗口数据结构----------------------------------------------------- //描述:该函数为内部调用,除了释放窗口结构内存,还将自己丛父窗口去移除. //参数:需要删除的主窗口句柄 //返回:无. //------------------------------------------------------------------------------ void _DeleteMainWindowData(HWND hwnd) { WINDOW *prev,*next; //GDD_Lock(); prev =hwnd->Prev; next =hwnd->Next; if(NULL!=next) { next->Prev =prev; } if(NULL!=prev) { prev->Next =next; } else { hwnd->Parent->Child =NULL; } hwnd->Prev =NULL; hwnd->Next =NULL; list_remove(&hwnd->node_msg_close); list_remove(&hwnd->node_msg_ncpaint); list_remove(&hwnd->node_msg_paint); _RemoveWindowTimer(hwnd); GUI_DeleteMsgQ(hwnd->pMsgQ); UpdateDisplay(); GK_ApiDestroyWin(hwnd->pGkWin); UpdateDisplay(); free(hwnd->pGkWin); hwnd->pGkWin =NULL; Lock_MutexDelete(hwnd->mutex_lock); hwnd->mutex_lock =NULL; WIN_Free(hwnd); //GDD_Unlock(); }