随笔分类 -  Windows编程

摘要:在前面的一篇文章中,我们对.NET 中的配置Configuration进行了一个详细的介绍,并且从整个源码的解读解释了配置中的核心接口以及主要的实现类。文章链接为:https://cshelloworld.com/home/detail/1912874623360438272。这篇文章我们主要来介绍 阅读全文
posted @ 2025-04-23 10:07 caoruipeng 阅读(1247) 评论(3) 推荐(10)
摘要:什么是配置 .NET中的配置,本质上就是key-value键值对,并且key和value都是字符串类型。 在.NET中提供了多种配置提供程序来对不同的配置进行读取、写入、重载等操作,这里我们以为.NET 的源码项目为例,来看下.NET中的配置主要是有那些类库。下面这个截图是.NET 源码中和配置相关 阅读全文
posted @ 2025-04-18 10:07 caoruipeng 阅读(1026) 评论(0) 推荐(3)
摘要:什么叫WPF的资源(Resource) 资源是保存在可执行文件中的一种不可执行数据。WPF中资源用ResourceDictionary类表示,这个类就是一个字典,字典的key和value都是object类型。所以在WPF中,资源可以可以是图像、字符串等所有的任意CLR对象,只要对象有一个默认的构造函 阅读全文
posted @ 2025-04-15 11:48 caoruipeng 阅读(502) 评论(0) 推荐(1)
摘要:in、out 和 ref 关键字 首先我们来说in、out 和 ref ,在 C# 中,in、out 和 ref 是用于方法参数的引用传递。在引用传递过程中,形参和实参都是指向相同的引用地址。 名称 作用 使用场景 是否需要提前初始化 in 只读参数,按引用传递 高效传递大对象但不希望修改其值 不需 阅读全文
posted @ 2025-04-14 11:45 caoruipeng 阅读(1152) 评论(0) 推荐(5)
摘要:字符串消息的序列化 在上一篇文章中,我们使用MQTTnet 框架,实现了一个MQTT服务器、MQTT发布者进程、MQTT订阅者进程。在消息传递过程中,我们将控制台的字符串直接传递。因为MQTT是应用层协议,它是基于TCP协议进行数据传输。我们 直到TCP本身是基于字节流的传输协议。所以我们的字符串最 阅读全文
posted @ 2025-04-08 11:44 caoruipeng 阅读(621) 评论(0) 推荐(2)
摘要:MQTT协议 MQTT协议是基于TCP传输协议之上的应用层协议,全程Message Queuing Telemetry Transport。主要用于物联网设备间的通信,在低带宽、不稳定网络环境下的优势非常明显。 当然普通的通信业务开发也是完全可以使用的。MQTT协议采用客户端-服务端架构模式,实现了 阅读全文
posted @ 2025-04-03 09:31 caoruipeng 阅读(1548) 评论(3) 推荐(8)
摘要:原子访问 通过Interlocked系列函数是 Windows API 提供的一组原子操作函数,用于在多线程环境中安全地操作共享变量。当我们执行这些Interlocked系列函数的时候 ,函数会对总线发出一个硬件信号,这个硬件信号可以防止CPU同一时刻访问同一个内存地址,从而大打到原子访问的目的。以 阅读全文
posted @ 2025-03-28 09:34 caoruipeng 阅读(123) 评论(0) 推荐(0)
摘要:系统中,进程主要有两部分组成:进程内核对象和进程地址空间。操作系统通过进程内核对象来管理进程,进程地址空间用于维护进程所需的资源:如代码、全局变量、资源文件等。 那么线程也是有两部分组成:线程内核对象和线程堆栈。操作系统通过线程内核对象对线程进行管理,线程堆栈用于维护线程执行代码时需要的所有的函数参 阅读全文
posted @ 2025-03-17 09:34 caoruipeng 阅读(616) 评论(0) 推荐(0)
摘要:什么是内核对象 内核对象本质上就是内存中的一块内存 ,这块内存由操作系统进行管理和分配,任何应用程序都无法直接操作这块内存区域。至于内核对象的作用,我们暂且不说,这里只需要直到它是内存中的一块内存。 在内存中,内核对象的存储类似下图,进程中的每个内核对象都有自己的地址,并且内核对象有一个固定的数据结 阅读全文
posted @ 2025-03-14 13:41 caoruipeng 阅读(663) 评论(0) 推荐(4)
摘要:进程有启动就有终止,通过CreateProcess函数可以启动一个新的子进程,但是如何终结子进程呢?主要有四种方法: 通过主线程的入口函数(main函数、WinMain函数)的return关键字终止进程 一个应用程序只有一个入口函数,对于控制台来说是main函数,对于GUI程序来说这个入口函数一般是 阅读全文
posted @ 2025-03-12 12:00 caoruipeng 阅读(597) 评论(0) 推荐(0)
摘要:CreateProcess函数原型 CreateProcess 函数用于创建一个新进程(子进程)及其主线程,其函数原型如下: BOOL CreateProcess( LPCWSTR lpApplicationName,//指向可执行模块名称的指针 LPWSTR lpCommandLine,//指向命 阅读全文
posted @ 2025-03-11 09:36 caoruipeng 阅读(1255) 评论(0) 推荐(1)
摘要:进程的当前目录 Windows Api中有大量的函数在调用的时候,需要传递路径。比如创建文件,创建目录,删除目录,删除文件等等。创建文件的APICreateFile做比喻,如果我们要创建的文件路径不是全路径,那么windows在创建的时候,首先会获取到进程的当前目录,然后用这个目录拼接成一个全路径创 阅读全文
posted @ 2025-03-09 19:41 caoruipeng 阅读(451) 评论(0) 推荐(1)
摘要:什么是系统环境变量 每台计算机针对当前用户和系统中所有用户分别提供了两个环境变量设置,通过计算机属性>环境变量的界面,我们可以查看当前这台计算机上的所有环境变量,这些环境变量都是key-value键值对。具体如下: 上面看到的环境变量其实是存储在注册表中的, 系统环境变量存储在计算机\HKEY_LO 阅读全文
posted @ 2025-03-08 14:59 caoruipeng 阅读(210) 评论(0) 推荐(0)
摘要:什么是进程的命令行参数 每个进程在启动(双击exe启动、cmd命令行启动或者由其他程序通过CreateProcess启动)的时候,都会有一个命令行参数给它。命令行的参数以空格区分。这个命令行总是不为空,因为命令行参数的第第一参数是exe程序的启动路径。但是一般情况下,我们会忽略这个参数。一般情况下, 阅读全文
posted @ 2025-03-07 11:55 caoruipeng 阅读(235) 评论(0) 推荐(0)