Xilkernel API函数介绍
vb api函数使用手册

vb api函数使用手册一、简介VB(Visual Basic)是一种基于事件驱动的编程语言,广泛应用于Windows操作系统上的应用程序开发。
VB提供了强大的API (Application Programming Interface)函数库,可以用于访问操作系统的各种功能和资源。
本文将介绍一些常用的VB API函数及其使用方法。
二、API函数分类VB API函数可以分为以下几类:1.窗口和控件操作这类API函数可以用于创建、操纵和管理窗口和控件,以及处理窗口消息和事件。
- CreateWindowEx:创建一个具有扩展样式的窗口。
- SetWindowText:设置窗口标题文字。
- ShowWindow:显示或隐藏一个窗口。
- SendMessage:向窗口发送消息。
- GetWindowRect:获取窗口的客户区矩形。
2.文件和目录操作这类API函数可以用于访问、读写和管理文件和目录。
- CreateFile:创建或打开一个文件。
- ReadFile:从文件读取数据。
- WriteFile:将数据写入到文件。
- FindFirstFile/FindNextFile:查找文件。
- CreateDirectory:创建一个目录。
3.系统和进程操作这类API函数可以用于访问和管理操作系统和进程的信息。
- GetTickCount:获取系统启动后的毫秒数。
- GetSystemInfo:获取系统的硬件和配置信息。
- CreateProcess:创建一个新的进程。
- TerminateProcess:终止一个进程。
- EnumProcesses:枚举所有正在运行的进程。
4.网络通信这类API函数可以用于实现网络通信功能,如创建、连接和通信等。
- socket:创建一个套接字用于网络通信。
- bind:将套接字与一个本地地址绑定。
- connect:连接到一个远程地址。
- send/recv:发送和接收数据。
Socket之API函数介绍

Socket之API函数介绍1、创建套接字──socket() 应⽤程序在使⽤套接字前,⾸先必须拥有⼀个套接字,系统调⽤socket()向应⽤程序提供创建套接字的⼿段,其调⽤格式如下: SOCKET PASCAL FAR socket(int af, int type, int protocol); 该调⽤要接收三个参数:af、type、protocol。
(1)af:指定通信发⽣的区域:AF_UNIX、AF_INET、AF_NS等,⽽DOS、WINDOWS中仅⽀持AF_INET,它是⽹际⽹区域。
因此,地址族与协议族相同。
(2)type:描述要建⽴的套接字的类型。
这⾥分三种: [1]TCP流式套接字(SOCK_STREAM):提供了⼀个⾯向连接、可靠的数据传输服务,数据⽆差错、⽆重复地发送,且按发送顺序接收。
内设流量控制,避免数据流超限;数据被看作是字节流,⽆长度限制。
⽂件传送协议(FTP)即使⽤流式套接字。
[2]数据报式套接字(SOCK_DGRAM):提供了⼀个⽆连接服务。
数据包以独⽴包形式被发送,不提供⽆错保证,数据可能丢失或重复,并且接收顺序混乱。
⽹络⽂件系统(NFS)使⽤数据报式套接字。
[3]原始式套接字(SOCK_RAW):该接⼝允许对较低层协议,如IP、ICMP直接访问。
常⽤于检验新的协议实现或访问现有服务中配置的新设备。
(3)protocol:说明该套接字使⽤的特定协议,如果调⽤者不希望特别指定使⽤的协议,则置为0,使⽤默认的连接模式。
根据这三个参数建⽴⼀个套接字,并将相应的资源分配给它,同时返回⼀个整型套接字号。
因此,socket()系统调⽤实际上指定了相关五元组中的“协议”这⼀元。
2、指定本地地址──bind() 当⼀个套接字⽤socket()创建后,存在⼀个名字空间(地址族),但它没有被命名。
bind()将套接字地址(包括本地主机地址和本地端⼝地址)与所创建的套接字号联系起来,即将名字赋予套接字,以指定本地半相关。
delphi的api函数解读

同福客栈's Archiver客栈› Delphi› delphi 的api函数查看完整版本: delphi 的api函数delphi 的api函数什么是API函数Win32 API即为Windows应用程序编程接口(Application ProgrammingInte**ce。
所有在Win32平台上运行的应用程序都可以调用这些函数。
早期的PC机内存非常少,Windows的设计者们不仅要把大量的代码和资源放入,而且还要留出足够的空间让应用程序运行,解决这种矛盾的方法就是通过让多个程序共享常用的代码来实现,这些被共享的代码就是今天所说的API函数。
随着软件技术的不断发展,在Windows平台上出现了很多优秀的可视化编程环境,程序员可以采用“所见即所得”的编程方式来开发具有精美用户界面和功能的应用程序。
这些可视化编程环境操作简便、界面友好,比如:Visual C++、Delphi和Visual Basic等。
在这些工具中提供了大量的控件,实现了API的部分功能,加速了Windows应用程序的开发。
但程序员要想开发出更灵活、更实用、更具效率的应用程序,必然要涉及到直接使用API函数。
API函数的分类分类单元功能及库文件基本管理windows操作系统的基本功能,提供分配内存、管理任务、装入资源、文件操作等shell例程shellapiwin32提供的外壳例程,如加载其它程序、管理登录等mci接口mmsystem多媒体mci编程接口(winmm.dll注册表管理regstrwin32系统中注册表的管理消息传送接口mapi微软消息传送系统的编程接口(mapi32.dll winsocketwinsockwinsocket网络编程接口(wsock32.dll标准对话框comdlgwin32的标准对话框,如打开文件、打印等(comdlg32.dllactivexactivex对象连接与嵌入ole函数win32外壳扩展shlobj针对系统外壳的编程接口,对资源管理器的某些功能或对象进行扩展[[i] 本帖最后由libosong 于2007-10-12 21:23 编辑[/i]]API函数按不同功能被存放在不同的动态链接库文件中,这些动态链接库文件一般是以DLL为扩展名。
使用api函数的流程

使用api函数的流程1. 什么是API函数API函数(Application Programming Interface)是一组可以供开发人员使用的函数和过程,以实现特定的目标。
通过使用API函数,开发人员可以访问不同的软件系统、库和服务,从而实现各种功能。
API函数可以使开发人员更容易地编写应用程序,同时降低开发的难度和复杂度。
2. 选择合适的API函数在使用API函数之前,首先需要选择适合的API函数来实现所需的功能。
这包括查找文档、参考示例代码、了解函数参数和返回值等。
以下是选择合适API函数的过程:•查找文档:通过搜索引擎或官方文档,查找与所需功能相关的API 函数。
•参考示例代码:检查文档中的示例代码,了解如何正确使用API函数。
•研究函数参数和返回值:仔细阅读文档,了解API函数的参数和返回值。
确保理解参数的含义和使用方式,以及函数返回值的含义和可能的取值。
3. 引入API函数库在使用API函数之前,需要将API函数库引入到项目中。
这可以通过编程语言的特定语法来实现。
以下是引入API函数库的常见方式:•导入模块:在Python中,可以使用import语句导入需要的模块,该模块包含所需的API函数。
•包含头文件:在C/C++中,可以使用#include指令包含所需的头文件,该头文件包含API函数的声明。
4. 调用API函数在引入API函数库后,可以直接调用API函数来实现所需的功能。
调用API函数需要按照函数的参数列表提供相应的参数,并根据需要处理函数的返回值。
以下是调用API函数的一般步骤:1.根据函数的参数列表准备好相应的参数。
2.调用API函数,并将参数传递给函数。
3.处理函数的返回值(如果有)。
5. 错误处理在调用API函数的过程中,可能会出现错误。
为了确保程序的正常运行和错误处理,需要进行适当的错误处理。
以下是处理API函数错误的一般步骤:1.检查函数返回值:判断函数是否调用成功,一般成功调用的函数会返回一个特定的值(例如0或True)。
sock函数库API 说明

错误代码:HOST_NOT_FOUND NO_ADDRESS NO_RECOVERY TRY_AGAIN
范例: #include <netdb.h> #include <sys/socket.h>
int main(int argc, char *argv[]) { struct hostent *hp; struct in_addr in; struct sockaddr_in local_addr;
if(argc<2) return; if(!(hp=gethostbyname(argv[1]))) { fprintf(stderr, "Can't resolve host.\n"); exit(1); } memcpy(&local_addr.sin_addr.s_addr, hp->h_addr, 4); in.s_addr= local_addr.sin_add.s_addr; printf("Domain Name:%s \n", argv[1]); printf("IP Address: %s\n", inet_ntoa(in)); }
gethostbyaddr 由 IP 地址取得网络数据
相关函数:gethostbyname 表头文件:#inlcude <netdb.h> 函数定义:struct hostent *gethostbyaddr(const char *addr, int len, int type) 函数说明:gethostbyaddr()会返回一个 hostent 结构,参数 addr 可以为 IPv4 或 IPv6 的 IP 地址,参数 len 为参数 addr 的长度,参数 type 为 AF_INET。结构 hostent 定义请参 gethostbyname() 返回值 :成功则返回 hostent 结构指针, 失败则返回 NULL 指针,错误原因存于 h_errno 变量 找不到指定的主机 该主机有名称却无 IP 地址 域名服务器有错误发生 请再调用一次
linux c语言api说明

Linux C语言API说明一、引言Linux操作系统是一款强大的开源操作系统,广泛应用于各种领域。
在Linux环境下进行C语言开发,需要了解和掌握Linux提供的各种应用程序接口(API)。
这些API提供了丰富的功能,包括文件操作、系统调用、网络编程和线程编程等。
本文将对Linux C语言API的主要方面进行详细的说明和解释。
二、Linux C语言API概览Linux C语言API主要由系统调用接口、库函数、工具和实用程序等组成。
这些API提供的功能涉及操作系统核心功能、文件操作、网络编程、多线程编程等。
1.系统调用接口:系统调用接口是应用程序与操作系统内核交互的接口,提供了一系列的系统调用函数。
这些函数允许应用程序请求内核提供服务,如进程管理、文件操作、网络通信等。
系统调用接口通常通过"unistd.h"或"sys/types.h"等头文件定义。
2.库函数:库函数是Linux C语言API的重要组成部分,提供了许多常用的功能和工具。
这些库函数通常由标准C库(如glibc)提供,包括字符串处理、数学计算、数据结构等。
库函数通过提供封装好的函数接口,使得开发者可以更加方便地使用这些功能,而无需直接调用系统调用接口。
3.工具和实用程序:Linux还提供了一系列工具和实用程序,用于管理和维护系统。
这些工具包括编译器、调试器、性能分析工具等。
了解和掌握这些工具的使用方法,对于开发人员来说也是非常重要的。
三、系统调用接口系统调用接口是Linux C语言API的重要组成部分,提供了许多核心的系统服务。
下面是一些常用的系统调用接口:1.进程管理:fork()、exec()、wait()、kill()等函数用于创建新进程、执行新程序、等待进程结束以及发送信号给进程等操作。
2.文件操作:open()、read()、write()、close()等函数用于打开文件、读取数据、写入数据以及关闭文件等操作。
Kernel32--内核库函数提供的API

AddAtom 向本地原子表添加一个字符串AllocConsole 为当前进程分配一个新控制台AreFileApisANSI 确定一个WIN32文件函数集是否在使用ANSI或OEM字符集代码页BackupRead 向一缓冲区读进与给定文件相关联的数据BackupSeek 在访问数据流中向前搜索BackupWrite 将数据传送到指定的文件或目录中Beep 在扬声器上发出简单的声音BeginUpdateResource 返回一个可被用来增加、删除或替换一个可执行文件资源的句柄BuildCommDCB 用指定字符串的值来填充指定的设备控制块BuildCommDCBAndTimeouts 将设备定义串转换成恰当的设备控制块代码CallNamedPipe 连接一个消息类型管道,向管道中写入或从中读出,然后关闭该管道ClearCommBreak 恢复给定通信设备的字符传输,并将传输设置成非中断状态ClearCommError 获得有关通信错误的信息,并报告该设备的当前状态CloseHandle 关闭一个打开的对象句柄CloseProfileUserMapping 关闭所有与初始化文件映射有关的登记键的句柄CommConfigDialog 显示有关通信设备的配置对话框,以允许进行配置CompareFileTime 比较两个文件的时间CompareStringW 比较同一地点两个字符串ConnectNamedPipe 使管道服务进程等待客户进程与之已命名的管道实例相连接ContinueDebugEvent 使调试程序继续先前报告的一个调试事件的线程ConvertDefaultLocale 把缺省地点值转换成实际地点标识符CopyFile 拷贝文件CreateConsoleScreenBuffer 创建一个控制台屏幕缓冲区并返回其句柄CreateDirectory 创建一个新目录CreateDirectoryEX 创建一个含有指定模板属性的新目录CreateEvent 创建一个事件对象CreateFile 创建、打开或截断一个文件、管道、通信源、磁盘设备或控制台,并返回其句柄CreateFileMapping 为指定文件创建一个映射对象,以便文件内容被共享CreateIoComplationPort 使一个打开的实例和一个最新创建的或正存在的I/O完成端口相联系;或创建一个不和文件相联系的I/O完成端口CreateMailslot 创建具有指定名字的邮件槽,并返回句柄CreateMutex 创建一个互斥对象并返回句柄CreateNamedPipe 创建一个有名管道的实例并返回句柄CreatePipe 创建一个无名管道并返回指向该管道的读端和写端句柄CreateProcess 创建新进程和它的主线程CreateRemoteThread 创建运行在另一个进程地址空间上的线程CreateSemaphore 创建一个信号对象并返回其句柄CreateTapePartition 重新格式化磁带CreateThread 创建一个线程以便在调用进程的地址空间内执行DebugActiveProcess 使调试程序连接到活动进程上并调试该进程DebugBreak 使断点异常发生在当前进程中,以便调用进程给调试程序发信号,迫使它接受某个动作DefineDosDevice 定义、重新定义或删除DOS设备名DeleteAtom 减少局部字符串原子引用的计数值DeleteCriticalSection 删除由未被拥有的临界对象所使用的所有资源DeleteFile 删除一个已有文件DeviceIoControl 将一个控制码直接发送给指定的设备驱动程序,以执行指定的操作DisableThreadLibraryCalls 禁止DLL_THREAD_ATTACH和DLL_THREAD_DETACH通知指定的DLL库DisConnectNamedPipe 取消一个有名管道实例的服务器端与一客户进程的连接DosDateTimeToFileTime 将MSDOS日期和时间值转换为一个64位文件时间DuplicateHandle 复制一个对象句柄EndUpdateResource 在可执行文件中终止一个资源的修改EnterCriricalSection 等待指定临界区对象的使用权EnumCalendarInfoEnumDateFormats 枚举指定地点有效的长短日期格式EnumResourceLanguages 查找模块中符合指定类型和名称的每个资源,并将资源的语言传递给一个自定义的回调函数EnumResourceNames 查找模块中符合指定类型的资源,并将其名称传递给一个自定义的回调函数EnumResourceTypes 查找模块中的资源,并将每个资源的类型传递给一个自定义的回调函数EnumSystemCodePages 枚举系统已安装或支持的代码页EnumSystemLocales 枚举系统已安装或支持的地点EnumTimeFormats 枚举指定地点可用的时间格式EraseTape 擦除磁带所有或部分内容EscapeCommFunction 指示一个给定的通信设备执行一个扩展功能ExitProcess 结束一个进程及其所有线程ExitThread 结束一个线程ExpandEnvironmentString 扩展环境变量字符串并以定义值替换它们FatalAppExit 显示一个消息框,当此消息框关闭时终止此应用程序FatalExit 将执行控制权交给调试程序FileTimerToDosDateTime 将64位文件时间转换成MSDOS的日期和时间值FileTimeToLocalFileTime 根据格林威治时间坐标将文件时间转换成一个局部文件时间FileTimeToSystemTime 将64位文件时间转换成系统时间格式FillConsoleOutputAttribute 为指定数目的字符单元设置文本和背景颜色属性FillConsoleOutputCharacter 将一字符按指定次数多次写入屏幕缓冲区FindAtom 在局部原子表中查找指定的字符串,并检取与该串相关的原子FindClose 关闭指定的查找句柄FindCloseChangeNotification 停止对通知句柄改变的监测FindFirstChangeNotification 创建一个改变通知句柄,并设置初始化改变通知过滤条件FindFirstFile 在目录中查找与其指定名称相匹配的一个文件FindNextChangeNotification 请求操作系统在下次检测一个相应改变时发出一个改变通知句柄FindNextFile 继续前一次FindFirstFile函数调用的文件查找FindResource 在模块中查找给定类型和名称的资源位置FindResourceEx 在模块中查找给定类型和名称的资源位置FlushConsoleInputBuffer 刷新控制台输入缓冲区FlushFileBuffers 清除用于指定文件的缓冲区,并将所有缓存的数据写入此文件中FlushInstructionCache 为指定的进程刷新指令高速缓存器FlushViewOfFile 将一个文件映射视图中的字节段写到盘上FoldStringW 将一个通配字符的串映射为另一个字符串FormatMessage 格式化一个消息串FreeConsole 使调用进程从其控制台分离FreeEnvironmentStrings 释放环境字符串块FreeLibrary 把已装入的库模块的引用数减1 FreeLibraryAndExitThread 将已装入的DLL库调用数减1,并退出一个调用线程FrreeTesource 释放由LoadResource函数装入的资源GenerateConsoleCtrEvent 向和共享调用进程有关的控制台进程组发送一个特殊信号GetACP 检取ANSI系统代码页的标识符GetAtomName 检取与指定局部原子有关的字符串的一个拷贝GetBinaryType 确定一个文件是否为可执行以及可执行文件的类型GetCommandLine 返回当前进程的命令行GetCommConfig 检取给定通信设备的当前配置GetCommMask 检取给定通信设备的事件屏蔽值GetCommModemStatus 检取调制解调器控制寄存器值GetCommProperties 检取给定通信设备的通讯特性GetCommState 用给定通信设备的当前控制设备填充一个DCB GetCommTimeouts 检取给定通信设备上所有读、写操作的超时参数GetCompressedFileSize 检取指定文件的压缩尺寸和磁盘的实际存贮空间,以便保存该文件GetComputerName 检取当前计算机的名称GetConsoleCP 检取与调用坚持有关的控制台所用输入代码页的等价内容,以便将键盘输入转换成相应的字符值GetConsoleCursorInfo 检取指定控制台屏幕缓冲区中光标的大小和可见性GetConsoleMode 报告控制台输入/输出缓冲区当前的输入/输出方式GetConsoleOutputCP 检取与调用进程有关的控制台所用的输出代码页的等价内容,以便将输出函数所写入的内容转换成显示图象GetConsoleScreenBuffreInfo 检取指定控制台屏幕缓冲区的信息GetConsoleTitle 检取当前控制台窗口的标题栏的字符串GetCPInfo 检取有关任意合法的已被安装或可用的代码页值GetCurrencyFormat 把指定地点的数字串格式化为通用字符串GetCurrentDirectory 检取当前进程的当前目录GetCurrentProcess 检取当前进程的伪句柄GerCurrentProcessId 检取调用进程的标识符GetCurrentThread 检取当前进程的伪句柄GetCurrentTreadId 检取当前调用进程的标识符GetDateFormat 以指定地点格式把日期数值变为日期字符串GetDefaultCommConfig 检取通信设备的缺省配置GetDiskFreeSpace 检取通信设备的缺省配置GetDriveType 确定磁盘驱动器是否是可移动的、固定的、CDROM、RAM磁盘或网络驱动器GetEnvironmentStings 返回当前进程的环境块地址GetEnvironmentVariable 从调用进程的环境块中检取指定变量的值GetExitCodeProcess 检取指定进程的终止状态GetExitCodeThread 检取指定进程的终止状态GetFileAttribtes 检取指定文件的属性GetFileInformationByHandle 检取指定文件的有关信息GetFileSize 检取指定文件的大小GetFileTime 检取指定文件被创建、最后一次被访问和最后一次被修改的日期和时间GetFileType 返回指定文件的类型GetFullPathName 检取指定文件的全路径和文件名GetHandkeInformation 检取指定对象句柄某种属性的信息GetLargestConsoleWindowSize 根据当前字体和显示器大小,返回最大可能的控制台窗口的大小GetLastError 返回最近的错误代码GetLocaleInfoW 通过查询记录来检取一事件发生地点的信息GetLocalTime 检取当前局部时间和日期GetLogicalDrives 返回表示当前可用磁盘驱动器的位屏蔽GetLogicalDriveStrings 检取指定的系统的合法驱动器的字符串GetMailslotInfo 检取给定邮件槽的信息GetModuleFileName 检取包含指定模块的可执行文件的全路径和文件名GetModuleHandle 返回指定模块的句柄GetNamedPipeHandleState 检取指定有名管道的状态GetNamedPipeInfo 检取给定有名管道的信息GetNumberFormat 把一个数字串定制成指定地点的的数字串格式GetNumberOfConsoleInputEvents检取控制台输入缓冲区中未读取的输入记录数GetNumberOfConsoleMouseButtons检取当前控制台所用鼠标的按扭数GetOEMCP 检取系统的OEM代码页标识符GetOverlappedResult 返回在指定文件、有名管道或通信设备上的一次重叠操作的结果GetPriorityClass 返回给定进程的优先级GetPrivateProfileInt 检取初始化文件中与指定段某个关键字相关的整数GetPrivateProfileSection 从给定的初始化文件中检取指定段的所有关键字和值GetPrivateProfileSectionNames在一个初始化文件中检取所有段的名称,它是为兼容16位WINDOWS应用程序提供的GetPrivateProfileString 从给定初始化文件的指定段中检取一字符串GetPrivateProfileStruct 在给定的初始化文件的段中检取指定关键字数据GetProcAddress 返回指定的输出动态链接库函数的地址GetProcessAffinityMask 检取调用进程或系统用到的处理器数GetProcessHeap 获取调用进程的堆句柄GetProcessHeaps 获取调用进程所有有效堆的句柄GetProcessShutdownParameters 检取当前调用进程的关机参数GetProcessTimes 检取调用进程的计时信息GetProcessVersion 获取指定进程期望运行WINDOWS版本的主、次版本号GetProcessworkingsetSize 获取指定进程工作集的最小和最大值GetProfileInt 从WIN.INI文件的指定段中检取指定键名的整数值GetProfileSection 检取WIN.INI文件中指定段的所有关键字和值GetProfileString 检取WIN.INI文件中与指定段内的指定关键字相关的字符串GetQueuedCompletionStatus 从指定的I/O完成端口里出队一个I/O完成信息包若无完成信息包队列,则等待挂起的I/O操作完成直到能出队一个完成信息包或限时已过才返回GetShortPathName 检取文件的短路径名GetStartupInfo 检取STARTUPINFO结构的内容,该结构在创建调用进程时指定GetSteHandle 返回标准输入/输出或错误设备句柄GetStringTypeA 返回指定字符串的字符类型信息GetStringTypeEx 返回指定字符串的字符类型信息GetStringTypeW 返回一个Unicode串的字符类型信息GetSystemDefaultLangID 检取系统缺省语言标识符GetSystemDefaultLCID 检取系统缺省地点标识符GetSystemDirectory 检取WINDOWS系统目录SYSTEM所在路径GetSystemInfo 返回当前系统的有关信息GetSystenPowerStatus 返回系统电源状态以确定系统使用AC还是DC电源、电池是否正在充电以及有多少电池可用GetSystemTime 检取当前系统的日期和时间GetSystemTimeAdjustment 确定系统是否在每个时钟中断应用时间调整值调整一天时间GetSystemTimeAsfileTime 检取当前系统的日期和时间GetTapeParameters 检取描述磁带和磁带驱动器的信息GetTapePosition 检取磁带的地址GetTapeStatus 检取磁带设备是否准备好处理磁带命令GetTempFileName 用指定的模式创建一个临时文件名GetTempPath 检取为临时文件指定的目录路径GetThreadContext 检取指定线程的描述表GetThreadLocale 返回当前线程的当前位置GetThreadPriority 返回给定线程的优先值GetThreadSelectorEntry 检取指定选择符和线程的描述符表表项GetThreadTimes检取当前线程的计时信息GetTickCount检取WINDOWS启动以来所经历的毫秒数GetTimeFormat把时间值格式化成指定地点的时间字符串GetTimeZoneInfomation检取当前的时间区参数GetUserDefaultLangID检取用户缺省语言标识符GetUsetDefaultLCID检取用户缺省地点标识符GetVersion返回WINDOWS的当前版本号GetVersionEx获取当前运行的操作系统版本的扩展信息GetVolumeInfomation返回有关指定的根目录文件系统的信息GetWindowsDirectory返回WINDOWS目录的路径GlobalAddAtom将一个字符串添加到全局原子表中,并返回标识此字符的值GlobalAlloc从堆中分配指定数目的字节GlobalCompact通过压缩产生全局自由内存GlobalDeleteAtom将全局字符串原子的引用数减一GlobalFindAtom在全局原子表中查找指定字符串,并检取与该字符串相关的全局原子GlobalFix在线形内存锁定一个全局内存对象GlobalFlags返回有关指定的全局内存对象信息GlobalFree释放指定的全局内存对象,并使其句柄无效GlobalGetAtomName检取与指定全局原子相关的字符串的一份拷贝GlobalHandle检取与指定的全局内存块指针相关的句柄GlobalLock加锁一个全局内存对象,并返回指向此对象内存块中第一字节的指针GlobalMemoryStatus检取当前可用内存信息GlobalReAlloc改变指定的全局内存对象的大小或属性GlobalSize检取指定的全局内存对象的大小GlobalUnfix在线形内存中解锁一个全局内存对象GlobalUnlock将一个以GMEM_MOVEABLE标志分配的内存对象的加锁计数值减1GlobalUnWire解锁一个全局内存对象GlobalWire加锁一个全局内存对象HeapAlloc从一堆中申请分配一个内存块HeapCompact通过压缩堆产生更大的可用内存块HeapCreate创建一个为调用进程私有的堆对象HeapDestroy撤消指定的堆对象HeapFree释放利用HeapAlloc或HeapReAlloc函数从堆中分配的内存块HeapLock获取临界对象区域或为指定的堆加锁HeapReAlloc重新分配堆中一个内存块HeapSize返回利用HeapAlloc或HeapReAlloc函数从堆中分配的内存快的大小HeapUnlock释放临界对象区域或一个已加锁的堆HeapValidate使指定的堆有效HeapWalk枚举在指定堆里的内存块数hread从指定文件中读数据hwrite向指定文件写数据。
API函数-消息部分解析

2.操作系统的消息相关函数OSMessage.h相关结构:typedef struct {POS_Ctrl pOSCtrl; //消息所发到的窗口(控件U32 Message;U32 WParam;U32 LParam;}OSMSG, *POSMSG相关函数:initOSMessage定义:void initOSMessage(功能:操作系统初始化消息,为消息队列分配内存空间OSCreateMessage定义:POSMSG OSCreateMessage(POS_Ctrl pOSCtrl, U32 Message, U32 wparam, U32 lparam 功能:向指定的控件创建消息返回指向消息的指针参数说明:pOSCtrl:指向控件的指针,为NULL 时指桌面Message:发送的消息类型,可以是表2-1 中的一种239wparam:随消息发送的附加参数,参见表2-2lparam:随消息发送的附加参数表2-1 系统消息类型消息类型数值说明OSM_KEY 1 键盘消息OSM_TOUCH_SCREEN 2 触摸屏消息OSM_LISTCTRL_SELCHANGE 1001 列表框的选择被改变的消息OSM_LISTCTRL_SELDBCLICK 1002 列表框的选择双击消息OSM_BUTTON_CLICK 003 单击按钮消息表2-2 系统消息参数消息参数wparam lparamOSM_KEY 键盘扫描码OSM_TOUCH_SCREEN低16 位存放了触摸点的x 坐标值,高16 位存放了触摸点的y 坐标值触摸动作OSM_LISTCTRL_SELCHANGE CtrlID CurrentSelOSM_LISTCTRL_SELDBCLICK CtrlID CurrentSelOSM_BUTTON_CLICK CtrlIDSendMessage定义:U8 SendMessage(POSMSG pmsg功能:发送消息,添加消息到消息队列中,如果队列以慢则返回FALSE,否则返回TRUE参数说明:pmsg:指向发送消息的指针WaitMessage定义:POSMSG WaitMessage(INT16U timeout功能:在超时的时间内等待消息,收到消息时返回指向消息结构的指针参数说明:timeout:消息等待的超时设定,如果为0,表示没有超时时间DeleteMessage定义:void DeleteMessage(POSMSG pMsg功能:删除指定的消息结构,释放相应的内存参数说明:pMsg:指向所要删除消息的指针。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Xilkernel是Xilinx公司提供的用于EDK系统的小型、模块化的操作系统,支持MicroBlaze、PowerPC405以及PowerPC440处理器。支持可移植操作系统接口(POSIX)。
Xilkernel功能函数包括:线程管理、信号量、消息队列、共享内存、互斥锁、动态内存管理、软件定时、用户层中断处理API等几个方面。
------------------------------------------------------------- 1、线程管理包括如下API函数 Xilkernel支持基本的POSIX线程操作,需要配合线程设置共同作用。使用该类函数需要包含头文件pthread.h。
int pthread_create(pthread_t thread, pthread_attr_t* att, void*(*start_func)(void*),void* param) 参数:thread是存储线程ID的地址,attr存储线程属性结构体的地址,start_func线程函数名,param线程函数参数指针。 返回:0创建成功,-1线程ID无效,EINVAL无效属性,EAGAIN资源不足 创建线程并执行。
void pthread_exit(void *value_ptr) 参数:线程返回值的指针 结束一个线程,但这个函数并不是必须的。需要用到返回值时才使用。
int pthread_join(pthread_t thread, void **value_ptr) 参数:thread线程ID,value_ptr线程返回值地址指针 返回:0成功,ESRCH无效线程,EINVAL线程返回值已经被使用 停止当前线程等待目标线程执行完成并返回值。
pthread_t pthread_self(void) 返回:本线程ID
int pthread_detach(pthread_t target) 返回:0成功,ESRCH线程未创建 回收线程存储资源,但并不会结束线程。
int pthread_equal(pthread_t t1, pthread_t t2) 参数:t1和t2两个待比较线程的ID 返回:1两线程是同一线程,0其它情况
int pthread_getschedparam(pthread_t thread, int *policy, struct sched_param *param) 参数:thread线程ID,policy全局调度策略指针,param调度策略结构体地址 返回:0成功,ESRCH线程无效,EINVAL调度参数无效 函数返回个别线程的调度策略。
int pthread_setschedparam(pthread_t thread, int policy, const struct sched_param *param) 参数:thread线程ID,policy忽略,param调度策略结构体地址 返回:0成功,ESRCH线程无效,EINVAL调度参数无效 函数返回个别线程的调度策略。
int pthread_attr_init(pthread_attr_t* attr) 参数:线程属性指针 返回:0成功,1未成功,EINVAL属性无效 按照默认设置初始化线程属性对象attr
int pthread_attr_destroy (pthread_attr_t* attr) 参数:线程属性指针 返回:0成功,EINVAL错误 函数销毁线程指针对象,设置成未定义值。
int pthread_attr_setdetachstate(pthread_attr_t* attr, int dstate) 参数:attr属性结构体,dstate要设置的状态 返回:0成功,EINVAL无效参数 设置线程状态
int pthread_attr_getdetachstate(pthread_attr_t* attr, int *dstate) 参数:attr属性结构体,dstate获取的状态地址 返回:0成功,EINVAL无效参数 获取线程状态:PTHREAD_CREATE_DETACHED或者PTHREAD_CREATE_JOINABLE
int pthread_attr_setschedparam(pthread_attr_t* attr, struct sched_param *schedpar) 参数:attr属性结构体,schedpar调度参数存储地址 返回:0成功,EINVAL无效参数,ENOTSUP无效调度参数 设置线程优先级,sched_param在sched.h文件中定义
int pthread_attr_getschedparam(pthread_attr_t* attr, struct sched_param* schedpar) 参数:attr属性结构体,schedpar线程调度参数指针 返回:0成功,EINVAL无效参数 获取线程优先级。
int pthread_attr_setstack(const pthread_attr_t *attr, void *stackaddr, size_t stacksize) 参数:attr属性结构体,stacksize堆栈地址 返回:0成功,EINVAL堆栈设置不当 设置线程堆栈
int pthread_attr_getstack(const pthread_attr_t *attr, void **stackaddr, size_t *stacksize) 参数:attr属性结构体,stackaddr堆栈地址指针,stacksize堆栈空间以字节为单位 返回:0成功,EINVAL无效属性 获取线程的堆栈信息
pid_t get_currentPID(void) 返回:当前正在运行的线程或操作的ID
int kill(pid_t pid) 参数:pid线程或操作ID 返回:0成功,-1未成功 终止指定线程或操作
int process_status(pid_t pid, p_stat *ps) 参数:pid操作或线程ID,ps状态存储地址 返回:无 获取当前正在运行的县城或操作的状态
int xmk_add_static_thread(void* (*start_routine)(void *), int sched_priority) 参数:start_routine线程函数,sched_priority优先级 返回:0成功,-1未成功 该函数将线程加入到启动或静态线程列表中,这个函数要在xilkernel_main()函数之前调用
int yield(void) 迫使处理器运行下一个准备好的线程或操作,当前线程或操作今日任务准备完毕队列,等待再次获取时间片运行。
------------------------------------------------------------- 2、信号量包括API函数如下 Xilkernel支持信号量操作,信号量提供高速的任务间同比和互斥机制,遵循POSIX。Xilkernel的信号量分为有名信号量和无名信号量量化总。有名信号量基于文件系统实现,无名信号量基于内存实现。信号量是实现进程间通信(IPC)的重要手段,使用该类函数需要包含头文件semaphore.h。
int sem_init(sem_t *sem, int pshared, unsigned value) 参数:sem信号量ID,pshared共享状态,value初始值 返回:0成功,-1未成功。 初始化一个信号量,并初始化信号量的值,适用于无名信号量。
int sem_destroy(sem_t* sem) 参数:sem信号量ID 返回:0成功,-1未成功 释放一个信号量资源,适用于无名信号量
int sem_getvalue(sem_t* sem, int* value) 参数:sem信号量ID,value获取值地址 返回:0成功,-1未成功 获取信号量当前值
int sem_wait(sem_t* sem) 参数:sem信号量ID 返回:0成功,-1未成功 等待信号量的值大于0,并将信号量值减1。执行对信号量的锁操作
int sem_trywait(sem_t* sem) 参数:sem信号量ID 返回:0成功,-1未成功 功能与sem_trywait()函数相同,但不阻塞进程。
int sem_timedwait(sem_t* sem, unsigned ms) 参数:sem信号量ID,ms定时器时间 返回:0成功,-1未成功 功能与sem_trywait()函数相同,等待信号量大于0过程中,通过定时器超时来停止阻塞进程。
sem_t* sem_open(const char* name, int oflag,...) 参数:name信号量对象的字符串名,oflag控制信号量创建的标识 返回:创建的或已存在的信号量ID 创建一个信号量,适用于有名的信号量
int sem_close(sem_t* sem) 参数:sem信号量ID 返回:0成功,-1未成功 关闭信号量,适用于有名信号量
int sem_post(sem_t* sem) 参数:sem信号量ID 返回:0成功,-1未成功 增加信号量的值,执行该函数为制定信号量的值加1