常用函数库收集

Labwindows/CVI显示调用动态链接库,函数可调用但出现线程错误的解决方法 作者是在Labwindows/CVI工程里,利用loadlibrary函数显示调用的动态链接库DLL。工程运行时,在回调函数中成功使用了DLL中的函数,但是回调函数结束时出现了上述错误,后来发现,原来是函数定义时没有申明调用方式,因为函数调用是一个进栈出栈的过程,包扩函数参数等。虽然成功运行了DLL的库函数,但是退栈时,没有清理完DLL库函数的信息,导致了图片中的错误。 解决方法如下: ... 阅读详情

unsigned long resolv(char*host)

{

     struct hostent             *hp;

     unsigned long              host_ip;

 

     host_ip = inet_addr(host);

     if( host_ip == INADDR_NONE )

     {

         hp = gethostbyname(host);

         if(!hp)

         {

              //printf("/nError: Unable to resolve hostname (%s)/n",host);

              exit(1);

         }

         else

              host_ip = *(u_long*)hp->h_addr ;

     }

 

     return(host_ip);

}

 

 

 

//校验和算法

unsigned short checksum(unsigned short*buffer,int size)

{

     unsigned long cksum=0 ;

     while(size>1)

     {

         cksum+=*buffer++;

         size-=sizeof(unsigned short);

     }

 

     if(size)

         cksum+=*(UCHAR*)buffer ;

     cksum=(cksum>>16)+(cksum&0xffff);

     cksum+=(cksum>>16);

 

     return(unsigned short)(~cksum);

}

 

 

 

//

// 根据窗口句柄取得文件完整路径。

//

//

// 参数:

//      hWnd

//          窗口句柄

//      lpszFileName

//          获取文件完整路径的缓冲区

//      nSize

//          缓冲区长度

//

// 返回值

//      成功返回TRUE, 出错返回FALSE;

//

BOOL GetFileNameFromHwnd(HWND hWnd, LPTSTR lpszFileName, DWORD nSize)

{

     BOOL bResult = FALSE;

     // 从句柄获取进程ID号

     DWORD dwProcessId;

     GetWindowThreadProcessId(hWnd , &dwProcessId);

 

     // 获取系统版本信息

     OSVERSIONINFO osverinfo;

     osverinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);

     if ( !GetVersionEx(&osverinfo) )

         return FALSE;

 

     // 当系统为NT核心时

     if ( osverinfo.dwPlatformId == VER_PLATFORM_WIN32_NT )

     {

         // 调用PSAPI

         BOOL (WINAPI *lpfEnumProcessModules)

              (HANDLE, HMODULE*, DWORD, LPDWORD);

         DWORD (WINAPI *lpfGetModuleFileNameEx)

              (HANDLE, HMODULE, LPTSTR, DWORD);

 

         // 加载PSAPI.DLL

         HINSTANCE hInstLib = LoadLibrary("PSAPI.DLL");

         if ( hInstLib == NULL )

              return FALSE ;

 

         // 定位相关函数

         lpfEnumProcessModules = (BOOL(WINAPI *)

              (HANDLE, HMODULE *, DWORD, LPDWORD))GetProcAddress(

              hInstLib, "EnumProcessModules");

         lpfGetModuleFileNameEx =(DWORD (WINAPI *)

              (HANDLE, HMODULE, LPTSTR, DWORD))GetProcAddress(

              hInstLib, "GetModuleFileNameExA");

 

         if ( lpfEnumProcessModules && lpfGetModuleFileNameEx )

         {

              // 打开指定进程

              HANDLE hProcess;

              hProcess = OpenProcess(

                   PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,

                   FALSE, dwProcessId);

              if ( hProcess )

              {

                   // 权举模块

                   HMODULE hModule;

                   DWORD dwNeed;

                   if (lpfEnumProcessModules(hProcess,

                       &hModule, sizeof(hModule), &dwNeed))

                   {

                       // 获取文件路径

                       if ( lpfGetModuleFileNameEx(hProcess, hModule,

                            lpszFileName, nSize) )

                            bResult = TRUE;

                   }

                   // 关闭句柄

                   CloseHandle( hProcess ) ;

              }

         }

         // 释放PSAPI.DLL

         FreeLibrary( hInstLib ) ;

     }

     // 当系统为9X

     else if ( osverinfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS )

     {

         // 通过ToolHelp

         HANDLE (WINAPI *lpfCreateSnapshot)(DWORD, DWORD);

         BOOL (WINAPI *lpfProcess32First)(HANDLE, LPPROCESSENTRY32);

         BOOL (WINAPI *lpfProcess32Next)(HANDLE, LPPROCESSENTRY32);

 

         // 相关函数的获取

         lpfCreateSnapshot =

              (HANDLE(WINAPI*)(DWORD,DWORD))GetProcAddress(

              GetModuleHandle("kernel32.dll"),

              "CreateToolhelp32Snapshot" );

         lpfProcess32First=

              (BOOL(WINAPI*)(HANDLE,LPPROCESSENTRY32))GetProcAddress(

              GetModuleHandle("kernel32.dll"),

              "Process32First" );

         lpfProcess32Next=

              (BOOL(WINAPI*)(HANDLE,LPPROCESSENTRY32))GetProcAddress(

              GetModuleHandle("kernel32.dll"),

              "Process32Next" );

         if ( !lpfCreateSnapshot ||

              !lpfProcess32First ||

              !lpfProcess32Next)

              return FALSE;

 

         // 利用Toolhelp权举

         HANDLE hSnapshot;

         hSnapshot = lpfCreateSnapshot(TH32CS_SNAPPROCESS , 0);

         if (hSnapshot != (HANDLE)-1)

         {

              // 从第一个开始权举

              PROCESSENTRY32 pe;

              pe.dwSize = sizeof(PROCESSENTRY32);

              if ( lpfProcess32First(hSnapshot, &pe) )

              {

                   do {

                       // 如果是该进程的话取出进程路径

                       if (pe.th32ProcessID == dwProcessId)

                       {

                            lstrcpy(lpszFileName, pe.szExeFile);

                            bResult = TRUE;

                            break;

                       }

                   } while ( lpfProcess32Next(hSnapshot, &pe) );

              }

              // 关闭句柄

              CloseHandle(hSnapshot);

         }

     }

     else

         return FALSE;

 

     return bResult;

}

 

 

 

// 根据错误ID获取出错信息

void ErrorTrace(const char *msg, DWORD error)

{

     DWORD numWritten;

 

     if (error)

     {

         LPTSTR lpMsgBuf;

 

         FormatMessage(

              FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,

              NULL,

              error,

              MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language

              (LPTSTR) &lpMsgBuf,

              0,

              NULL

              );

 

         // Free the buffer.

         LocalFree( lpMsgBuf );

     }

}

 

 

//利用管道获取命令行

bool __fastcall TForm1::RunCmd(AnsiString cmd,TStringList *stringlist)

{

    TMemoryStream *memstream=new TMemoryStream();

    AnsiString rn="//r//n";

    PROCESS_INFORMATION proc;

    STARTUPINFO start;

    SECURITY_ATTRIBUTES sa;

    long ret;

    unsigned long lngBytesread;

    HANDLE hReadPipe,hWritePipe;

    char *strBuff=(char *)malloc(256);

    if(strBuff==NULL)

    {

        return false;

    }

    sa.nLength = sizeof(SECURITY_ATTRIBUTES);

    sa.bInheritHandle=true;

    sa.lpSecurityDescriptor=NULL;

    ret=CreatePipe(&hReadPipe,&hWritePipe,&sa,0);

    if(ret==0)

    {

        //创建管道失败

        return false;

    }

    memset(&start,0x00,sizeof(STARTUPINFO));

    start.cb=sizeof(STARTUPINFO);

    start.dwFlags=STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;

    start.hStdOutput=hWritePipe;

    start.hStdError=hWritePipe;

    bool retc=CreateProcess(NULL,cmd.c_str(),NULL,NULL,true, 0, 0, NULL, &start, &proc);

    if(!retc)

    {

        return false;

    }

    CloseHandle(hWritePipe);

    unsigned long len;

    memstream->Position=0;

    while(true)

    {

        memset(strBuff,0x00,256);

        GetFileSize(hReadPipe,&len);

        ret = ReadFile(hReadPipe, strBuff, 256, &lngBytesread,NULL);

        if(ret==0)

        {

            break;

        }

        else

        {

            memstream->Write(strBuff,lngBytesread);

        }

    }

    CloseHandle(proc.hProcess);

    CloseHandle(proc.hThread);

    CloseHandle(hReadPipe);

    memstream->Position=0;

    free(strBuff);

    stringlist->LoadFromStream(memstream);

    memstream->Clear();

    delete memstream;

    return true;

}


//提升进程权限
BOOL EnablePrivilege(LPCTSTR lpSystemName,LPCTSTR lpName)
{
HANDLE hToken ;
BOOL fOk=FALSE ;
if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken))
{
TOKEN_PRIVILEGES tp ;
tp.PrivilegeCount=1 ;
if(!LookupPrivilegeValue(lpSystemName,lpName,&tp.Privileges[0].Luid))
printf("Can't lookup privilege value./n");
tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED ;
if(!AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL))
printf("Can't adjust privilege value./n");
fOk=(GetLastError()==ERROR_SUCCESS);
CloseHandle(hToken);
}
return fOk ;
}

2004-11-29 7:00 PM | zwell

# 回复:常用函数库收集

//连接指定IP端口,返回socket
int conn(char *ip,int p)
{
int sockfd;
hrm.sin_family = AF_INET;
hrm.sin_addr.s_addr = inet_addr(ip);
hrm.sin_port = htons(p);
bzero(&(hrm.sin_zero),8);
sockfd=socket(AF_INET,SOCK_STREAM,0);
if((connect(sockfd,(struct sockaddr*)&hrm,sizeof(struct sockaddr))) < 0)
{
perror("connect");
exit(0);
}
printf("[x] Connected to: %s on port %d./n",ip,p);
return sockfd;
}
2004-12-03 12:44 AM | ZwelL

# 回复:常用函数库收集

//将指定程序安装成服务
int InstallService(
char *svr_name, char *display_name,char *exepath, int starttype
)
{
SC_HANDLE hService,hSCManager;
hSCManager=OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
if(hSCManager==NULL) return 0;
hService=CreateService(hSCManager,svr_name,display_name,
SERVICE_ALL_ACCESS, // desired access
SERVICE_WIN32_OWN_PROCESS, // service type
starttype, //SERVICE_AUTO_START
SERVICE_ERROR_NORMAL, // error control type
exepath, // service's binary
NULL, // no load ordering group
NULL, // no tag identifier
NULL, // no dependencies
NULL, // LocalSystem account
NULL); // no password
if(hService==NULL) return 0;
CloseServiceHandle(hService);
return 1;
}

//将指定服务删除
int AUTOLOAD::DeleteServiceByName(char *svr_name)
{
SC_HANDLE hService,hSCManager;
hSCManager=OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
if(hSCManager==NULL) return 0;
hService=OpenService(hSCManager,svr_name,SERVICE_ALL_ACCESS);
if(hService==NULL) return 0;
if(DeleteService(hService)==0) return 0;
if(CloseServiceHandle(hService)==0) return 0;
return 1;
}
HFSS 3D Layout一键导入PCB,高效搞定微带线损耗仿真 在高速PCB设计中,信号完整性与电磁仿真是确保链路质量的关键环节。传统的HFSS手动建模流程繁琐且极易出错,尤其面对微带线、带状线等高频结构时,叠层参数、铜箔粗糙度等细节难以精准还原,导致仿真结果与实测偏差较大。HFSS 3D Layout模块提供了从EDA工具直接导入PCB文件的能力,完整保留走线、过孔、叠层及材料属性,结合精确的介质损耗模型与端口设置,大幅缩短建模时间并提升仿真精度。该技术广泛应用于DDR、SerDes等高速数字链路的设计验证,以及SI/PI工程师对PCB损耗性能的快速评估。本文从导入操 阅读详情

相关推荐

深度学习初探 - 入门 DL 主流框架

这个课程主要是引导大家入门TensorFlow、Theano、Keras 及 Caffe 几个主流的深度学习框架。在课程中有关各种算法的详细推导及思想我们不会做过多的陈诉,旨在通过让同学们动手操作搭建自己的神经网络模型,了解如何使用这些框架解决实际问题。课程会基于每个框架的官方文档,先带大家熟悉框架中基本的定义语法及常用函数(可看成深度模型的小零件),每个实验最后都会综合这些零件搭建一个简易的神经深度网络模型。这个项目十分适合具有一定python编程基础,对人工智能、深度学习感兴趣的同学。Theano。

2401_86435672的博客 1235

linux动态链接库的使用,隐式调用(静态链接)和显示调用(动态链接)

linux 动态链接库so

qq_41043166的博客 2408

WSL2迁移后用户名不见了?一招教你快速恢复Ubuntu22.04默认用户

本文针对WSL2迁移后Ubuntu 22.04默认用户名丢失的常见问题,提供了详细的诊断与修复方案。通过分析迁移底层逻辑,指导用户使用`ubuntu2204.exe config --default-user`命令或配置`/etc/wsl.conf`文件快速恢复用户身份,并涵盖权限修复、冲突解决及自动化迁移脚本等进阶内容,确保子系统迁移后环境完整可用。

web39explorer的博客 558

Labwindows\CVI通过调用DLL文件与非NI采集卡通信---双诺ISA AC1080

CVI与NI采集卡,主要是通过NI-DAQ函数库来实现。 CVI与非NI采集卡,主要是通过调用动态库方式执行。非NI采集卡,例如北京双诺、研华等,都提供了.lib文件和.dll文件。 这里说明下,.lib和.dll文件的区别。 1. .LIB文件,包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。CVI通过加载该lib文件和.h文件,即可使用。 详见的使用方式:参考书本<La...

sym_simon的博客 2145

COMSOL仿真教程—激光烧蚀

本例使用二维模型,将来自激光的入射热通量模拟为金属表面上空间分布的热源,从而得到金属的烧蚀过程和瞬态温度分布。

qq_40977332的博客 2万+

zemax双透镜公差分析

蒙特卡罗分析: 评估公差的整体影响,模拟过程中产生一系列随机的lens,满足指定的公差,然后再按照标准评估。公差分析,就是在设计了一个理想的系统后,想看看实际生产过程中如果产生公差(误差),系统会坏到什么程度,也就是光学性能受到多大影响。反灵敏度分析:分别对每个公差在性能方面的一个给定的最小允许减少量来计算公差,也就是限制了系统性能的变化,和灵敏度分析方向相反。灵敏度分析对每个公差单独求值,分别计算每个公差操作数的最大、最小、标准值(如上图)所有设计上可能的公差都列出来了。注意要固定透镜的口径。

fendoudecheng的博客 3207

C++ 动态链接库和静态链接库

概论   先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。   静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该DLL

攻城狮 6710

实验六 存储器实验

只读存储器(ROM)是一种在正常工作时其存储的数据固定不变,其中的数据只能读出,不能写入,即使断电也能够保留数据,要想在只读存储器中存入或改变数据,必须具备特定的条件。当地址为00000101时,会分别在数据位宽为8,16,32的只读寄存器中找到地址为00000101所对应的十进制地址位置,也就是地址为5的数据,并将其分别以8位,16位,32位输出。因此,输出保持为0。因此,当异步清零信号为1时,无论其他输入信号是什么,触发器的输出都会被强制清零,输出为0。1)寄存器输入0011,使能端1,异步清零0。

wenmou1111的博客 3006

python常用函数库收集。

学习过Python都知道python中有很多库。python本身就是万能胶水,众多强大的库/模块正是它的优势。 收集一些Python常用的函数库,方便大家选择要学习的库,也方便自己学习收集,熟悉运用好这几个库,在Python这门语言也做不少的事。 1、爬虫神器scrapy框架。配上scrapy-redis组件,轻松开发一个分布式爬虫。言语无法表达我的景仰。 2、matp...

qq_35224441的博客 535

VS2022错误列表高效处理:从复制到Excel表格的完整指南

本文详细介绍了在Visual Studio 2022中高效处理错误列表的实用技巧,重点讲解了如何将错误信息一键复制并粘贴到Excel表格中。通过基础操作、自定义视图、筛选功能及常见问题解决方案,帮助开发者将杂乱的编译错误整理成清晰、可排序、可筛选的数据表,极大提升了团队协作、错误分析和项目管理的效率。

weixin_28837817的博客 360

季节性注意力的时间序列预测模型 SAITS 进行数据补齐 完整代码数据

季节性注意力的时间序列预测模型 SAITS 进行数据补齐 完整代码数据

1072

[机器学习实战] 机器学习简介

1. 算法及解决问题介绍 2. 开发机器学习程序的基本步骤:   1)收集数据。   2)准备输入数据。保证格式相符。   3)分析输入数据。保证数据有效性。   4)训练算法。 3. 开发环境   1)python   2)Numpy函数库 转载于:https://www.cnblogs.com/foreverstars/p/7196966.html...

weixin_30492047的博客 75

【连接器专题】 EIA-364 系列标准的完整列表

EIA-364 系列标准在电子工业中具有重要的地位,为电子连接器和互连系统的测试和验证提供了统一的、可操作的流程和方法,有助于提高电子产品的质量和可靠性,促进了电子工业的发展

一点硬件 2660

bash-utils项目启动,欢迎关注

写shell脚本断断续续也有1年了, 平时零零碎碎和写法一直没想起来整理. 在github上开了个项目bash-utils, 收集一些常用的工具函数, 命名方面和php的函数名称尽量保持一致. 项目地址: https://github.com/GerryLon/bash-utils 欢迎大家学习, 交流, 提PR! ...

开心就好的专栏 309

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C/C++常用库函数收集

这篇博客用来收集C/C++中一些常用的库函数。 1、字符判断函数    isalnum()        如果参数为字母数字,则返回ture  isalpha()        如果参数为字母,则返回ture  iscntrl()        如果参数为控制字符,则返回ture  isdigit()        如果参数为数字(0-9),则返回ture  isgraph()

JakeMiao的专栏 1048

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Lua中的常用函数库汇总

lua库函数 这些函数都是Lua编程语言的一部分, 点击这里了解更多. assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调试信息 collectgarbage() - 垃圾收集器. (新增于1.10.1) date(format, time) - 返回当前用户机器上的时间. error("error ...

918

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

常用c函数收集

1 strstr:        The strstr() function finds the first occurrence of the substring needle in the string haystack.  The terminating null bytes ('\0') are not compared.        The strcasestr() functio

逐日者 941

lua常用函数库汇总

lua库函数 assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调试信息 collectgarbage() - 垃圾收集器. (新增于1.10.1) date(format, time) - 返回当前用户机器上的时间. error(“error message”,level) - 发生错误时,...

丁香枝上,豆蔻梢头 1957

一个JavaScript函数库

最近写的一个JavaScript函数库,提供一些常用函数方法,有收集重写的,也有自写的。 github地址:https://github.com/seazeg/eg-utils 下面是库的函数列表 基础判断函数 isString (value) 判断字符串类型 isNumber (value) 判断数字类型 isBoolean (value) 判断布尔类型 isFunction (value)...

weixin_30343157的博客 206

算法C常用函数库

C 语言中有大量的标准库函数,根据功能不同,声明于不同的头文件中。这些库函数在C++中也能使用。下面分类总结了一些C 语言常用库函数。 一、数学库函数 C语言数学库函数声明在 math.h 中,C++是cmath。 abs(x) //求整型数x 的绝对值 cabs(struct complex znum) //返回复数znum的绝对值 cos(x) //x(弧度)的余弦 fabs(x) //求浮点数x 的绝对值 labs(long n) //返回长整型参数n的...

香蕉的博客 1401

Lua中的基本函数库

基本函数库为Lua内置的函数库,不需要额外装载 assert (v [, message]) 功能:相当于C的断言, 参数: v:当表达式v为nil或false将触发错误, message:发生错误时返回的信息,默认为"assertion failed!" -----------------------------------------------------------

半山枫叶的专栏 571

c语言函数common,常用C函数库libfastcommon 发布1.0版本

常用C函数库libfastcommon发布1.0版本(2012-04-11 01:10:18)标签:杂谈常用C函数库libfastcommon发布1.0版本libfastcommon是从开源软件FastDFS和FastDHT中提取出来的公共C函数库。它提供了字符串处理、链表、哈希表、日志记录、配置文件读取、socket操作、base64编码、url编码、md5等常用函数库。还包括http的一个简...

weixin_31308407的博客 431

收集一些不错的函数库持续更新(作为自己的移动笔记本)

C++函数库: Blitz++ (http://www.oonumerics.org/blitz) POOMA (http://www.codesourcery.com/pooma/pooma) MTL (http://www.osl.iu.edu/research/mtl) CGAL (http://www.cgal.org/) Intel Math Kernel Library I...

m0_38036750的博客 491

NodeJS常用模块收集

收集了NodeJS开发中常用的一些质量比较高的模块,方便大家学习开发。

BorisHuai前端修炼 4801
上一篇: Process-wide API spying - an ultimate hack
下一篇: 五个反弹后门的源代码[转]
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值