
Windows C/C++
Windows C/C++
SleepyPat
化整为零
有的放矢,心无旁骛
展开
-
[Windows] Windows系统编程笔记(3)
所有API的官方路径:https://docs.microsoft.com/en-us/windows/win32/api/heapapi/nf-heapapi-heapcreate#1 ============== Windows服务 ==============#2 ============== 异步输入/输出与完成端口 ==============重叠I/O :线程发出 读/写或者其他I/O操作命令后继续执行。当线程需要I/O结果才能继续时,它要么等待文件句柄,要么等待在Rea原创 2020-12-02 17:41:20 · 208 阅读 · 0 评论 -
[Windows] Windows下进程间通讯机制
Windows下的IPC机制有:1)匿名管道2)命名管道3)消息队列4)socket5)共享内存6)邮件槽7)剪切板。原创 2020-06-23 11:33:01 · 245 阅读 · 0 评论 -
[Windows][转] Windows内存详解
原文地址:https://www.cnblogs.com/georgepei/archive/2012/03/07/2383548.html前一篇文章介绍了任务管理器中关于内存的两个重要概念:private和working set。但是内存远不止那么简单,下面我根据VMMap来详细介绍一下内存的分类。内存是一个很复杂的系统,其中的paging file,sharable memory,reserve和commit等概念使得要算清楚一个进程到底使用了多少内存几乎成了不可能的事情了。还好..原创 2020-08-07 16:35:11 · 1031 阅读 · 0 评论 -
[Windows] vs配置中的 LIB 和 LIBPATH 的各自含义
LIBis for the linker, helps it find import and static libraries.LIBPATHis for the compiler, helps it find metadata files. Like type libraries, .NET assemblies, WinRT .winmd files.PS:如果编译时提示找不到元数据文件,则需要设置好LIBPATH ,如果提示找不到库文件,则需要设置好 LIB 和编译选项卡中...原创 2020-09-18 10:23:54 · 1232 阅读 · 0 评论 -
[Windows c/c++] x86向x64迁移的问题
Q1:x64编译器编译提示 GWL_USERDATA 找不到,打开 WinUser.h 发现在其中,为什么?A1:需要将GWL_USERDATA 该为GWLP_USERDATA,GWLP_USERDATA 也在WinUser.h中。如果提示某些宏/变量类型找不到,那么可以在同头文件中找找是不是有 “加P” 版本。...原创 2020-09-16 11:04:38 · 686 阅读 · 0 评论 -
[Windows] Windows平台下编译OpenSSL
准备工作:1.Perl建议使用5.30以上版本,本人在使用时发现28的版本好像在配置openssl的时候有问题。下载路径:http://strawberryperl.com/ps:ActivePerl和Strawberry Perl都可以2.nasm如果不适用汇编库,则可以不下载https://www.nasm.us/pub/nasm/stable/3.VS 编译环境主要为了使用nmake配置及编译:1.打开包含开发环境的命令行:2.确...原创 2020-11-04 14:37:33 · 833 阅读 · 0 评论 -
[Windows] Windows实用工具汇总
Process Explorer:加强版的任务管理器下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/process-explorervmmap:内存使用情况监视下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/vmmap原创 2020-10-14 17:33:46 · 236 阅读 · 0 评论 -
[Windows] windows下进程退出端口仍在
转:https://blog.youkuaiyun.com/kevin3683/article/details/51742622?utm_medium=distribute.pc_relevant_bbs_down.none-task--2~all~first_rank_v2~rank_v29-2.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task--2~all~first_rank_v2~rank_v29-2.noneca原创 2021-03-19 18:02:51 · 388 阅读 · 0 评论 -
[Windows C/C++] 获取当前时间戳
#include <sys/timeb.h>struct timeb rawtime;ftime(&rawtime);DWORD time = rawtime.time * 1000 + rawtime.millitm;cout << "timestampus -> " << time;原创 2020-07-20 16:59:14 · 2899 阅读 · 0 评论 -
[Windows] Windows系统编程笔记(2)
#1 ============== 进程管理 ==============(API)创建一个进程:CreateProcessWindows下不会维护父-子进程的关系。不像unix中那样会牵扯到会话首进程、僵尸进程之类的。(!!!)对线程句柄的关闭不会终止线程,因此在创建完线程后可以直接关闭句柄。在创建进程时可以指定一个是否继承句柄的参数,如果true,则会集成父进程所有已经打开的句柄的副本,比如文件、内存映射等等。unix下的fork不适用与多线程场景。Windows下Creat.原创 2020-12-01 20:13:38 · 223 阅读 · 0 评论 -
[Windows] Windows下的COM编程技术
COM组件不需要再工程构建时指定,也不需要动态加载,只需要在想使用的使用调用操作系统提供的接口去获取,然后再通过相应的接口查询自己想要的函数对象即可。COM组件是经过特殊处理的动态库,这里的特殊处理是需要实现几个标准接口,之所以要实现这些接口是因为操作系统的COM组件管理器需要调用这些接口来把COM组件注册到自己的管理列表中。动态库的加载需要在工程构建时就指定导入库,并将dll二进制文件放到相应的目录下以供exe调用。动态库不需要实现任何标准接口,他只需要对外提供自己的头文件即可。原创 2020-06-23 11:33:48 · 1131 阅读 · 0 评论 -
[Windows] Windows环境下系统相关的API
https://docs.microsoft.com/en-us/windows/win32/sysinfo/system-information-reference原创 2021-01-29 11:27:22 · 163 阅读 · 0 评论 -
[Windows][转] zlib编译的一些问题
转自:https://blog.youkuaiyun.com/wangningyu/article/details/106078990现在用的是QT+VS开发环境(仅用 VS编译器),但是被这个zlib坑死了,如果单独的库放在QT GCC没问题,放在VS也没问题,但QT + VS混合的环境下就各种奇葩问题了!zlib uncompress unzReadCurrentFile解压内存直接溢出进汇编死循环了!!!!!!!整理了一下思路和解决办法,先下载最新官方源码,打开zlib-1.2.11...原创 2020-10-22 10:39:01 · 480 阅读 · 0 评论 -
[Windows] vmmap内存监视工具
windows提供了很多性能监控工具,不比Linux差多少,这里介绍下vmmap。官方路径:https://docs.microsoft.com/en-us/sysinternals/downloads/vmmap截图:Committed:当前进程分配的虚拟内存。原创 2021-01-29 10:09:10 · 643 阅读 · 0 评论 -
[Windows] windows.h 和 winsock2.h 一并使用导致编译时提示类型重定义
工程中添加预定义宏:WIN32_MEAN_AND_LEARN原创 2020-09-07 10:58:11 · 345 阅读 · 0 评论 -
[Windows] windows系统编程笔记(1)
#1 ============== windows文件系统 和 io ==============windows下共有四种文件系统,最常用且通用的文件系统为 NT文件系统(NTFS),其他的都或多或少已经弃用(API)文件创建:CreateFile(API)文件关闭:CloseHandle(API)读文件:ReadFile(API)写文件:WriteFile +++ 中文乱码问题可通过如下编程规范解决 +++ 如何编写UNICODE编码的...原创 2020-08-28 18:04:17 · 339 阅读 · 0 评论 -
[Windows] 内核对象和句柄
概念:内核对象是操作系统维护的一个数据结构(结构体)。内核对象是操作系统级别的,不同的进程可以访问同一个内核对象。内核对象是操作系统级别的,进程终止不一定触发其创建的内核对象的销毁,大部分情况下会跟着进程一起销毁,有些则会残留。内核对象是操作系统级别的,如果多个进程同时使用某个内核对象,那么任何一个进程终止都不会触发内核对象的销毁,因为系统会维持引用计数。所有内核对象的数据结构中都有引用计数这个字段。所有内核对象都有一个安全属性,这个属性会在内核对象创建函数中指定,其描述了那些进程可以更原创 2021-04-19 16:24:27 · 573 阅读 · 0 评论 -
[Windows c++] CRITACAL_SECTION 和 Mutex 的安全性对比
例子代码:// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <Windows.h>#include <process.h>#include <string>#include <iostream>using namespace std;CRITICAL_SECTION protector;int a = [](CRITICAL_SECTI原创 2020-08-12 18:28:15 · 182 阅读 · 0 评论 -
[Windows C++] [转] VirtualAlloc函数使用总结
原文链接:https://www.cnblogs.com/davidshi/p/3386710.html如果我们的程序需要动态内存的话,则迟早会调用Win32函数VirtualAlloc。但是程序也可以不调用VirtualAlloc,而是直接调用Windows堆函数或者CRT堆函数。不过,知道VirtualAlloc如何工作,可以帮助我们更好地理解这些调用函数。 首先,必须知道保留(Reserved)内存和占用(Committed)内存的含义。当内存放保留时,一段连续虚拟地址空间被留出。例如,...原创 2020-08-07 16:01:33 · 1728 阅读 · 0 评论 -
[Windows] 从def文件生成lib文件
准备条件:需要def文件和对应的dll文件在同一级目录下运行如下命令:lib /MACHINE:X86 /def:sqlite3.def如果是64位的dll库,那么 /MACHINE应当是X64原创 2020-09-16 17:21:39 · 693 阅读 · 0 评论 -
[Windows][网络编程] Windows WSAGetLastError错误码查询
https://docs.microsoft.com/en-us/windows/win32/winsock/windows-sockets-error-codes-2Return code/value Description WSA_INVALID_HANDLE 6 Specified event object handle is invalid. An application attempts to use an event object.原创 2020-07-10 17:30:31 · 4295 阅读 · 0 评论 -
[Qt][Windows] Windows环境下Qt调试环境的搭建
前言:Windows环境下,Qt使用CDB作为调试器,目前Qt安装包不会自带此调试器,因此需要自行下载和配置。下载:CDB的下载目前没有找到比较好的官方途径,不过可以 “曲线救国” ,微软钦定的调试器windbg会自带CDB调试器,可能windbg就是对CDB的图形化封装。因此我们直接去微软官网下载windbg。配置:在windbg的安装路径中找到 cbd.exe (这里建议把windbg的 x86版本 和 x64版本都下载下来),把他们分别拷贝到相应的Qt安装版本的bin目..原创 2020-09-04 15:06:42 · 965 阅读 · 0 评论 -
[Windows] Windows线程池
WaitAndWorkInThreadPool.h#pragma once#include <windows.h>#include "common.h"//Thread Pools//https://docs.microsoft.com/zh-cn/windows/win32/procthread/thread-pools//对RegisterWaitForSingleObject的包装,功能为 “等到内核对象后立刻新起线程执行指定的例程,这个线程是被注册到windows原创 2021-07-19 15:53:23 · 334 阅读 · 0 评论 -
[Windows] CloseHandle到底做了什么
https://docs.microsoft.com/en-us/windows/win32/api/handleapi/nf-handleapi-closehandlehttps://docs.microsoft.com/en-us/windows/win32/sysinfo/kernel-objects原创 2021-01-28 10:48:55 · 578 阅读 · 0 评论 -
[Windows c/c++] WIN32 _WIN32 _WIN64 之间的区别
结论:WIN32 : 跨平台时使用,如果一个工程使用了windows api,那么它在引入windows api相关的头文件后,必须预定义WIN32以启用 所有API。_WIN32:编译时使用,用来指定编译器的编译结果可以在哪种架构上运行,如果是_WIN32,则既可以在 x86上 又可以在x64上运 行,此外还可以在ARM32和ARM64上运行,简言之,编出来的代码可以同时在 32位机器和64位机器上运行。_WIN64:编...原创 2020-09-16 10:55:35 · 2623 阅读 · 0 评论 -
[Windows C++] Windows下线程终止
前言:Windows环境下线程的终止有别于Linux,Linux可以通过发信号的方式通知相应线程终止,也可以通过线程终止函数来终止线程,这两种方法都是安全的。但是在Windows下,一是没有现成可用的信号系统,二是其终止线程的函数相当粗暴会产生一系列后遗症,因此Windows下的线程终止还是比较麻烦的。使用线程终止函数TerminateThread(不推荐):Windows提供了一个线程终止函数TerminateThread,但是这个函数有如下缺点,而且这些缺点很多都是让人无法忍受的:.原创 2020-07-28 15:57:28 · 1359 阅读 · 0 评论 -
[Windows c++] Windows多线程编程笔记
====================================================================================================================GetExitCodeThread() 用来检查某个线程的状态,以及如果线程退出了那么他的return返回值是多少。如果子线程不多,那么主线程可以通过反复调用这个函数来观察线程状态(不能控制,这个函数只能观察),但是如果子线程比较多,那么主线程在观察监视这个行为上就会花.原创 2020-11-30 18:20:55 · 417 阅读 · 0 评论 -
[Windows] Windows下一些常用命令
查看总共多少行:tasklist|find /i /c "chrome.exe"原创 2021-04-30 11:10:56 · 89 阅读 · 0 评论 -
[Windows] Windows下的对象系统
对象的分类:对象分为三种:用户对象、图形设备接口(GDI)对象、内核对象三种对象的职责:用户对象:为窗口管理提供支持GDI图像设备接口对象:为图形展示提供支持(!)内核对象:内存管理,进程执行,进程间通讯 三个主要用途如果不做MFC相关编程,我们只需要关心内核对象。所有细分的对象列表:https://docs.microsoft.com/en-us/windows/win32/sysinfo/object-categories对象管理:windows 对象(内核对象、..原创 2021-01-29 11:13:41 · 574 阅读 · 1 评论 -
[Windows] windows环境下编译Nginx
前言:Nginx工程没有使用cmake进行管理,而是传统的make和configure,因此就需要一个linux环境用来进行工程配置。这里推荐使用MSYS,因为后面的make动作需要使用windows的nmake工具主导编译。官方的编译步骤为:http://nginx.org/en/docs/howto_build_on_win32.html但是按照其推荐步骤进行的话并不是很顺利,有很多坑,这里几种记录一下,同时总结一个完全可靠的方案流程。准备工作:1. windows下的c语言编.原创 2020-10-19 19:51:42 · 1800 阅读 · 0 评论 -
[Windows] windows系统编程笔记(2)
#1 ============== 进程管理 ==============(API)创建一个进程:CreateProcessWindows下不会维护父-子进程的关系。不像unix中那样会牵扯到会话首进程、僵尸进程之类的。(!!!)对线程句柄的关闭不会终止线程,因此在创建完线程后可以直接关闭句柄。在创建进程时可以指定一个是否继承句柄的参数,如果true,则会集成父进程所有已经打开的句柄的副本,比如文件、内存映射等等。unix下的fork不适用与多线程场景。Windows下Creat.原创 2020-08-31 19:56:39 · 250 阅读 · 0 评论