当前位置:首页 > 行业动态 > 正文

c#句柄相关api

创建和打开句柄,**CreateFile**:用于创建或打开文件、管道、邮件槽等内核对象,并返回一个句柄。,**CreateEvent**:创建一个事件内核对象,并返回一个句柄。,**CreateMutex**:创建一个互斥量内核对象,并返回一个句柄。,**CreateSemaphore**:创建一个信号量内核对象,并返回一个句柄。,**OpenProcess**:打开一个进程对象,并返回一个句柄。,**OpenThread**:打开一个线程对象,并返回一个句柄。 操作句柄,**CloseHandle**:关闭一个内核对象的句柄。,**DuplicateHandle**:复制一个内核对象的句柄。,**GetHandleInformation**:获取指定句柄的信息。,**SetHandleInformation**:设置指定句柄的信息。,**WaitForSingleObject**:等待指定的内核对象进入信号状态。,**WaitForMultipleObjects**:等待多个内核对象中的任何一个进入信号状态。,**SwitchToThread**:将执行切换到另一个线程,放弃当前线程的剩余时间片。,**PulseEvent**:触发一个手动重置事件。,**ResetEvent**:重置一个手动重置事件。,**SetEvent**:设置一个手动重置事件。 查询句柄信息,**GetFileType**:获取文件类型的信息。,**GetFileSize**:获取文件的大小。,**GetFileTime**:获取文件的创建时间、最后访问时间和最后写入时间。,**QueryPerformanceCounter**:获取高精度计数器的当前值。,**QueryPerformanceFrequency**:获取高精度计数器的频率。 其他,**ConvertToGLBoolean**:将一个布尔值转换为GLBoolean类型。,**ConvertToGLDouble**:将一个双精度浮点数转换为GLDouble类型。,**ConvertToGLInt**:将一个整数转换为GLInt类型。,**ConvertToGLSizeI**:将一个整数转换为GLSizeI类型。,**ConvertToGLString**:将一个字符串转换为GLString类型。,**ConvertToGLUnsignedInt**:将一个无符号整数转换为GLUnsignedInt类型。

在C#中,句柄(Handle)是Windows操作系统用于标识和管理资源的一种机制,以下是一些常用的与句柄相关的API:

1、CreateFile

功能:创建、打开或截取文件、管道、邮件槽等内核对象,并返回一个可以访问该对象的句柄。

语法HANDLE CreateFile(LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile);

参数说明

lpFileName:指向文件名的指针。

dwDesiredAccess:指定对文件的访问权限,如读取、写入等。

dwShareMode:指定文件的共享模式,如只读、读写等。

lpSecurityAttributes:指向安全属性的指针,通常为NULL。

dwCreationDisposition:指定文件存在时的操作方式,如新建、打开现有文件等。

dwFlagsAndAttributes:文件的属性和标志,如隐藏、只读等。

hTemplateFile:指向模板文件的句柄,通常为NULL。

返回值:如果函数成功,则返回一个有效的句柄;如果失败,则返回INVALID_HANDLE_VALUE。

2、ReadFile

功能:从文件、管道、套接字等对象中读取数据。

语法BOOL ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped);

参数说明

hFile:要读取的文件的句柄。

lpBuffer:指向接收数据的缓冲区的指针。

nNumberOfBytesToRead:要读取的字节数。

lpNumberOfBytesRead:指向实际读取的字节数的指针。

lpOverlapped:指向OVERLAPPED结构的指针,用于异步操作。

返回值:如果函数成功,则返回TRUE;如果失败,则返回FALSE。

3、WriteFile

功能:向文件、管道、套接字等对象中写入数据。

语法BOOL WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped);

参数说明

hFile:要写入的文件的句柄。

lpBuffer:指向要写入的数据的缓冲区的指针。

nNumberOfBytesToWrite:要写入的字节数。

lpNumberOfBytesWritten:指向实际写入的字节数的指针。

lpOverlapped:指向OVERLAPPED结构的指针,用于异步操作。

返回值:如果函数成功,则返回TRUE;如果失败,则返回FALSE。

4、CloseHandle

功能:关闭由CreateFile、CreatePipe、CreateMailslot等函数创建的内核对象句柄。

语法BOOL CloseHandle(HANDLE hObject);

参数说明hObject:要关闭的对象的句柄。

返回值:如果函数成功,则返回TRUE;如果失败,则返回FALSE。

5、FindFirstFile

功能:查找与指定路径和文件名匹配的第一个文件,并返回一个包含文件信息的WIN32_FIND_DATA结构。

语法HANDLE FindFirstFile(LPCSTR lpFileName, LPWIN32_FIND_DATA lpFindFileData);

参数说明

lpFileName:指向要查找的文件名的指针。

lpFindFileData:指向WIN32_FIND_DATA结构的指针,用于存储文件信息。

返回值:如果函数成功,则返回一个有效的句柄;如果失败,则返回INVALID_HANDLE_VALUE。

6、FindNextFile

功能:继续查找与指定路径和文件名匹配的下一个文件,并更新WIN32_FIND_DATA结构。

语法BOOL FindNextFile(HANDLE hFindFile, LPWIN32_FIND_DATA lpFindFileData);

参数说明

hFindFile:由FindFirstFile函数返回的句柄。

lpFindFileData:指向WIN32_FIND_DATA结构的指针,用于存储文件信息。

返回值:如果函数成功,则返回TRUE;如果失败,则返回FALSE。

7、GetFileInformationByHandle

功能:获取与指定文件句柄关联的文件的信息。

语法BOOL GetFileInformationByHandle(HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation);

参数说明

hFile:要查询的文件的句柄。

lpFileInformation:指向BY_HANDLE_FILE_INFORMATION结构的指针,用于存储文件信息。

返回值:如果函数成功,则返回TRUE;如果失败,则返回FALSE。

8、SetFilePointer

功能:移动文件指针的位置。

语法DWORD SetFilePointer(HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod);

参数说明

hFile:要移动指针的文件的句柄。

lDistanceToMove:要移动的距离,以字节为单位。

lpDistanceToMoveHigh:指向距离的高32位的指针,通常为NULL。

dwMoveMethod:移动方法,如文件开始、当前位置、文件结束等。

返回值:如果函数成功,则返回新的文件指针位置;如果失败,则返回INVALID_SET_FILE_POINTER。

9、DuplicateHandle

功能:复制一个句柄,使其可以在另一个进程或线程中使用。

语法BOOL DuplicateHandle(HANDLE hSourceProcessHandle, HANDLE hSourceHandle, HANDLE hTargetProcessHandle, LPHANDLE lpTargetHandle, DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwOptions);

参数说明

hSourceProcessHandle:源进程的句柄。

hSourceHandle:要复制的句柄。

hTargetProcessHandle:目标进程的句柄。

lpTargetHandle:指向复制后的句柄的指针。

dwDesiredAccess:对复制后的句柄的访问权限。

bInheritHandle:指定复制后的句柄是否可以被继承。

dwOptions:复制选项,通常为0。

返回值:如果函数成功,则返回TRUE;如果失败,则返回FALSE。

这些API提供了对Windows资源的底层访问和控制能力,但同时也需要谨慎使用,以避免资源泄漏和其他潜在问题,在使用这些API时,务必遵循正确的用法和最佳实践,以确保程序的稳定性和安全性。

0