WSAStartup
即WSA(Windows Sockets Asynchronous,Windows异步套接字)的启动命令。是Windows下的网络编程接口软件Winsock1 或 Winsock2 里面的一个命令(Ps:Winsock 是由Unix下的BSD Socket发展而来,是一个与网络协议无关的编程接口)。
WSAStartup必须是应用程序或DLL调用的第一个Windows Sockets函数。它允许应用程序或DLL指明Windows Sockets API的版本号及获得特定Windows Sockets实现的细节。应用程序或DLL只能在一次成功的WSAStartup()调用之后才能调用进一步的Windows Sockets API函数。
int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData);

为了在应用程序当中调用任何一个Winsock AP函数,首先第一件事情就是必须通过WSAStartup函数完成对Winsock服务的初始化,因此需要调用WSAStartup函数。使用Socket的程序在使用Socket之前必须调用WSAStartup函数。该函数的第一个参数指明程序请求使用的Socket版本,其中高位字节指明副版本、低位字节指明主版本;操作系统利用第二个参数返回请求的Socket的版本信息。当一个应用程序调用WSAStartup函数时,操作系统根据请求的Socket版本来搜索相应的Socket库,然后绑定找到的Socket库到该应用程序中。以后应用程序就可以调用所请求的Socket库中的其它Socket函数了。

⑴ wVersionRequested:一个WORD(双字节)型数值,在最高版本的Windows Sockets支持调用者使用,高阶字节指定小版本(修订本)号,低位字节指定主版本号。
⑵lpWSAData 指向WSADATA数据结构的指针,用来接收Windows Sockets实现的细节。
WindowsSockets API提供的调用方可使用的最高版本号。高位字节指出副版本(修正)号,低位字节指明主版本号。
返回值:
0 成功。
否则返回下列的错误代码之一。注意通常依靠应用程序调用WSAGetLastError()机制获得的错误代码是不能使用的,因为Windows Sockets DLL可能没有建立“上一错误”信息储存的客户数据区域。

GetModuleFileNameA
检索包含指定模块的文件的绝对路径。模块必须由当前进程加载。
如果第一个参数为NULL,返回当前进程的可执行文件的路径。

strrchr()

查找一个字符串在另一个字符串中 末次 出现的位置,并返回从字符串中的这个位置起,一直到字符串结束的所有字符;如果未能找到指定字符,那么函数将返回False。

例子:
strrchr(FilePath,'\\')[1]=0

从FilePath的右边开始查找"\"这个字符, 然后把这个字符的下一个字符设为0,即空字符.因为stttchr会返回一个字符指针,它代表FilePath中从"\"开始的字符串.
上面的代码相当于 char * p = strrchr(FilePath,'\\'); p[1] = 0; FilePath中就只剩下路径,而没有文件名了.
如“D:\1.exe”;
(strrchr(FilePath,'\\'))是查找'\\'即斜杆最后一次出现的位置指针,即“D:\1.exe”中斜杆的位置的指针。
(strrchr(FilePath,'\\'))[1]=0;是将斜杆后面的一个字符作为字符串结束符。即此时FilePath变为“D:\”。
最后再加上filname,如“2.exe”,最后FileName变为“D:\2.exe”。

WNDCLASS
结构WNDCLASS包含一个窗口类的全部信息,也是Windows编程中使用的基本数据结构之一,应用程序通过定义一个窗口类确定窗口的属性。
WNDCLASS是一个由系统支持的结构,用来储存某一类窗口的信息,如ClassStyle,消息处理函数,Icon,Cursor,背景Brush等。也就是说,CreateWindow只是将某个WNDCLASS定义的窗体变成实例。
要得到某一窗口的WNDCLASS数据,可以用GetClassLong();
RegisterClass()就是在系统注册某一类型的窗体。也就是将你提供的WNDCLASS数据注册为一个窗口类,在WNDCLASS.lpszClassName中定义该WNDCLASS的标识,
无论CreateWindow或CreateWindowEx创建的窗口都必须对应一个WNDCLASS,但一个WNDCLASS可以有多个窗口对象。
有一些系统预定义的窗口类,如:
ClassName=_T("BUTTON" or "COMBOBOX" or "EDIT" or "LISTBOX" or "MDICLIENT" or "SCROLLBAR" or "STATIC")
要用这些窗体,直接用CreateWindow创建相应对象就是了。
要得到某一窗口的窗口类,可以用GetClassName();
WNDCLASS中的回调函数是窗体的消息处理函数:
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM
lParam)
typedef struct _WNDCLASS {
UINT style;// 窗口类型
WNDPROC lpfnWndProc;//窗口处理函数
int cbClsExtra;//窗口扩展
int cbWndExtra;//窗口实例扩展
HINSTANCE hInstance;//实例句柄
HICON hIcon;//窗口的最小化图标
HCURSOR hCursor;//窗口鼠标光标
HBRUSH hbrBackground;//窗口背景色
LPCTSTR lpszMenuName;//窗口菜单
LPCTSTR lpszClassName;// 窗口类名
} WNDCLASS, *LPWNDCLASS;

HINSTANCE

程序使用HINSTANCE来区别task。
Handle 是代表系统的内核对象,如文件句柄,线程句柄,进程句柄。
HMODULE 是代表应用程序载入的模块,win32系统下通常是被载入模块的线性地址。
HINSTANCE 在win32下与HMODULE是相同的东西,在Win32下还存在主要是因为win16。
HWND 是窗口句柄。

GetModuleHandle

GetModuleHandle是获取一个应用程序或动态链接库的模块句柄。
HMODULEGetModuleHandle(LPCTSTRlpModuleName);
函数的作用是返回指定模块名的句柄,如果为NULL,则返回本模块的句柄。
返回的句柄值存放在寄存器eax中。

ZeroMemory

void ZeroMemory( PVOID Destination,SIZE_T Length );
Destination :指向一块准备用0来填充的内存区域的开始地址。
Length :准备用0来填充的内存区域的大小,按字节来计算。

作用:

ZeroMemory只是将指定的内存块清零。
使用结构前清零,而不让结构的成员数值具有不确定性,是一个好的编程习惯。

(笔记)涉及到的WinAPI函数相关推荐

  1. Windows事件等待学习笔记(三)—— WaitForSingleObject函数分析

    Windows事件等待学习笔记(三)-- WaitForSingleObject函数分析 要点回顾 WaitForSingleObject NtWaitForSingleObject KeWaitFo ...

  2. ① ESP8266 开发学习笔记_By_GYC 【更新 ets_printf 函数 使ESP_IDF 能够支持浮点数打印】

    ① ESP8266 开发学习笔记_By_GYC [更新 ets_printf 函数 使ESP_IDF 能够支持浮点数打印] 在我们日常的开发过程中,经常使用到的一个功能就是串口打印功能.在ESP826 ...

  3. Python学习笔记——for循环和range函数

    Python学习笔记--for循环和range函数 Python的for循环 for 目标 in 表达式 :循环体 案例一 >>> example = 'abcdef' >&g ...

  4. pandas学习笔记:pandas.Dataframe.rename()函数用法

    pandas学习笔记:pandas.Dataframe.rename()函数用法 pandas.Dataframe.rename()函数主要是用来修改Dataframe数据的行名和列名. 主要用到的参 ...

  5. OpenCV学习笔记(5)_ ellipse绘制函数浅析

    OpenCV学习笔记(5)_ ellipse绘制函数浅析 文章目录 OpenCV学习笔记(5)_ ellipse绘制函数浅析 1. ellipse第一种重载--绘制椭圆弧 1.1 函数原型 1.2 参 ...

  6. UE4 获取主窗口HWND和调用WINAPI函数

    很多文章介绍获取UE4主窗口都是通过GetActiveWindow或者FindWindow等方法,这种方法不是很方便,也不准确. 可以通过UEngine的Viewport获取NativeWindow来 ...

  7. python学习笔记(五)---替换函数

    python学习笔记(五)-替换函数 replace()函数替换内容 用法: replace('需要替换的内容','替换后的内容',替换次数) 备:如果需要替换单引号需要加'\' 例子: str = ...

  8. 云开发(微信-小程序)笔记(五)----云函数,就这(上)

    云开发(微信-小程序)笔记(四)---- 还有吗?再来点 云函数 云函数即在云端(服务器端)运行的函数.在物理设计上,一个云函数可由多个文件组成,占用一定量的 CPU 内存等计算资源:各云函数完全独立 ...

  9. XFC演示-使用C语言通过WinAPI函数编写Windows程序

    XFC演示-使用C语言通过WinAPI函数编写Windows程序 1,目标效果: 2,代码片段: winMain.c /*!\file winMain.c\version v1.00\date 10/ ...

  10. CodeMonkey过关学习笔记系列:71-85关 函数

    CodeMonkey过关学习笔记系列:71-75关 •"函数"农场 (FUNCTION FARM) 71 ~ 85 第 71 关挑战 "函数"农场step di ...

最新文章

  1. Nginx + Tomcat 负载均衡集群配置
  2. AI模型落地难?试试这个15分钟搞定的开源工具
  3. 如何在window系统VS中设置boost编程环境
  4. 数据挖掘十大算法--Apriori算法
  5. threading多线程模块
  6. SqlServer图形数据库初体验
  7. LeetCode 450. 删除二叉搜索树中的节点
  8. WPF Image Source 设置相对路径图片
  9. 监听浏览器是否被缩放 - 案例篇
  10. 中柏平板触摸驱动_要成绩也要玩乐,聊聊学生买平板那些事儿
  11. jvisualvm插件安装
  12. UDA/语义分割-ColorMapGAN: Unsupervised Domain Adaptation for Semantic Segmentation Using Color Mapping G
  13. 习题9-2(免费糖果)【深搜dfs】+【记忆化搜索】
  14. Hongment鸿蒙系统
  15. .netcore向写es日志报错Elasticsearch.Net.UnexpectedElasticsearchClientException:expected:‘{‘,actual:‘<‘
  16. 虚拟服务器网卡怎么添加,如何为VMware虚拟机添加网卡
  17. 盛世昊通山东省运营中心盛大启动,迈向新的篇章
  18. [张国荣][10CD][1991-1995][APE+CUE][3.60G][115][sqhhj0622#HD2PT]
  19. 广工 AnyviewC 数据结构习题 第四章
  20. 算法 2.2 合并链表 LA 和 LB

热门文章

  1. ubuntu装指定分区_安装Ubuntu时如何手动指定分区(高级分区)
  2. 大漠插件最新版7.2107
  3. Nginx工作原理和优化、漏洞
  4. OpenDDS项目练习指南
  5. LeetCode答案详解
  6. python航空订票系统_航空订票系统 - 智慧点点的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. php 连接芒果数据库,芒果数据库配置文件
  8. DWF是个什么格式,要怎么进行相应的格式转换?
  9. 【java初学】正则表达式和敏感词汇过滤
  10. 新MacBook Pro软件安装记录