- 博客(417)
- 资源 (11)
- 收藏
- 关注
原创 Windows线程中调用WriteFileEx没有触发完成函数回调
近期为了封装部分功能模块,将Read和Write的逻辑封装到另一个线程中处理时发现,WriteFileEx没有触发lpCompletionRoutine。查看文档发现,要触发完成实例需要保证调用WriteFileEx的线程是alterable状态。如果线程使用sleep等待结束,WriteFileEx是无法完成回调的,但是如果调用SleepEx就可以触发。根据MSDN对WriteFileEx的lpCompletionRoutine的讲解。调用WriteFileEx的线程必须是alertable的。
2025-03-02 10:15:03
152
原创 离线安装windows应用商店中的应用
安装过程会报错,提示缺少什么框架,可以在https://store.rg-adguard.net/ 中搜出来的Windowsnotepad中看到对应的。使用迅雷下载器下载,下载的就是windows notepad的离线安装包,不包含依赖库,安装的时候会提示缺少依赖库。有很多notepad类似的应用,windows用的是windows notepad,不是notepad。此处以arm win11为例,如果是其他平台的系统,要选择对应的框架的msixbundle文件。隐私和安全性,开发者模式,打开。
2024-08-08 19:34:45
768
原创 windows c语言使用zlib库
使用库,有个小坑,自己编写了一个demo,库的确引入了,头文件只需要zlib.h和zconf.h两个文件,但是编译的时候,提示找不到uncompress和compress符号,对比zlib的demo【testzlibdll.vcxproj】发现工程里面定义了宏:ZLIB_WINAPI,自己的项目加上这个宏定义之后顺利编译通过。解决方案:压缩前通过compressBound获取一个大概的压缩后的大小,解压缩的时候要求传入压缩前的大小。不然就只能通过代码一点点尝试了。
2024-08-01 16:40:41
421
原创 windows 固定ip多了一个169.254.xx.xx的ip的问题
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters下的IPAutoconfigurationEnabled字段(不存在就创建DWORD类型)设置为0,然后禁用网卡,启动网卡,ip里面的确没有169.254的ip了,很久之前有个问题,网络适配器查看详细信息,发现ip地址变成两个了,一个是设置的固定ip,一个是169.254开头的无效ip。查找tcpip/params的注册表,研究了每个字段。
2024-01-26 18:55:38
3196
原创 boost编译静态库
根据命名方式发现直接执行b2没有static的-s-标志,如果要带上-s-标志,b2.exe的执行参数需要加上runtime-link=static。执行bootstrap.bat的时候会自动从系统中找最高版本的msvc编译器,本系统中是vs2019,也就是vc142。也就是先执行根目录的bootstrap.bat会生成b2.exe,然后执行b2.exe。根据6.3章节的描述,-s-是static的意思,可以直接编译到自己的二进制程序中。但是这种快速编译方式编出来的不是静态库。可通过此路径找到编译方法。
2023-12-13 20:57:39
549
原创 vue-cropper打包部署后运行报错i.call is not a function
既然本地运行良好,肯定直接引用vue肯定是可以用的,于是,将node_modules\vue-cropper\src目录下的vue-cropper.vue和exif-js-min.js复制到源码目录,将其当作组件调用。从npm安装的vue-cropper目录中看到vuecropper的源码,getComputedStyle的第一个参数时this.$refs.cropper,也就是说vuecropper根本就没有加载成功,标签名字已经不是用的vue-cropper,可以证明的确调用的是源码目录下的组件。
2023-10-13 01:59:00
1476
12
原创 windows注册表引发的bug记录
1.widows桌面黑了,桌面上鼠标右键没反应,没有快捷方式,没有任务栏。现象很像杀死所有explorer.exe。但是ctl+alt+delete后通过任务管理器打开explorer.exe后只是弹出了资源管理器的窗口,桌面并没有恢复。发现shell的值不是explorer.exe,将其改为explorer.exe后执行taskkill /f /im explorer.exe,然后再次打开explorer.exe,桌面就出来了。
2023-09-16 10:33:24
299
原创 kylin系统gcc报错fatal error: stdio.h: 没有那个文件或目录
今天在kylin系统上写了一个简单的c语言代码,直接报错./main.c:1:10: fatal error: stdio.h: 没有那个文件或目录,apt安装build-essential后依然后问题,根据网上在ubuntu上的解决方案,尝试了aptitude的安装方式安装,还是有问题。报错需要依赖老版本libc6 (= 2.31-0kylin9.1k20.6),于是先重装老版本的libc6 (= 2.31-0kylin9.1k20.6),再安装libc6-dev。再次重新编译,就报正常的语法错误了。
2023-09-06 11:46:03
756
原创 linux shell函数和返回值
shell函数可以有返回值,但是只能返回0-255作为状态值,不能返回字符串,字符串可以通过其他方式传递给调用者。
2023-08-29 09:42:01
1242
原创 linux shell进行数值计算
注意if[]中的-a要放在[]里面连接多个比较,并且[]前后里外都要有空格,declare -i的方式,后面的算式不能有空格,有空格相当于新的参数。4、-ge:大于等于,greater than or equal。5、-le:小于等于,less than or equal。最简单的方法1:$((这里写算式,可以写变量))1、-gt:大于,greater than。注意:$(())是计算,$()是执行命令。3、-lt:小于,less than。2、-eq:等于,equal。2、-o:或,or。
2023-08-28 17:42:54
423
原创 前端js后端nginx+php+workerman实现websocket通信
workerman默认是可以直接监听端口的,但是因为开发环境、防火墙、安全、其他项目等因素,js直接连服务器ip+端口,连不上,所以采用了nginx代理转发,server模块中添加如下location。workerman是纯PHP开发的开源PHP 应用容器,可以通过composer安装,目前因为要用到客户端与服务器实时通信,故使用了workerman中的websocket模块功能。2.服务端的send有两个参数,第二个可选参数不会当成数据发送,不要搞错了。3.根据worker示例编写代码。
2023-08-27 17:09:56
808
原创 条件变量与互斥锁
解锁mutex线程B获取到mutex,修改 ready,调用pthread_cond_signal发送信号,此时pthread_cond_wait返回,返回之前会加锁mutex,跳出while循环,然后解锁mutex。如果 线程B先获取到mutex,然后修改 ready 为 true,然后解锁锁mutex,接下来线程A 获取到mutex,read是true,不会进入到while里面的逻辑,直接解锁mutex。这里使用while,因为一般这种情况下线程A实例会被多次调用,生成多个线程,使用相同的逻辑。
2023-06-13 17:46:29
101
原创 关于windows异步命名管道通信的一些记录
要注意CreateEvent的第二个参数bManualReset:是否手动重置事件,一般手动设置的事件需要在事件触发后自行reset,是event处于无信号状态,如果是自动设置的事件,事件触发后,所有的wait结束后会自行变为无信号状态。客户端使用CreateFile打开命名管道,使用ReadFileEx和WriteFileEx进行管道的读写,经过测试,可以不用给overlap的hevent初始化,只需要有wait函数,读写完成后就能触发完成回调函数。分为服务端和客户端,参考。
2023-06-13 09:29:17
590
原创 windows修改程序图标后,快捷方式没有更新
最近换应用程序图标的时候发现程序的图标的确边了,但是快捷方式的图标还是以前的,双击打开快捷方式的时候,程序打开,任务栏上显示的图标是新的。右键查看快捷方式属性的时候,属性面板里显示的图标依然是新的,就是桌面上的快捷方式一直是旧的,很容易产生误解。关闭explorer.exe后再次打开explorer.exe不起作用,重启电脑也不起作用。清空icon缓存何缩略图缓存后,重启explorer.exe,终于眼前一亮。这里看到的都是icon缓存,将其清空后还有缩略图缓存。
2023-02-22 14:36:55
3288
原创 python查看库函数
以前查看python库的调用的时候,经常是百度,运气好的话能找到库的官网,但是每个库的查看方式还不一样。今天偶然发现python自己提供了本地查看的工具。就能看到本地python的库对应的文档了。
2023-01-30 10:32:44
698
原创 初识Linux内置命令
譬如 echo,既是 bash 的 builtin 命令也是一个独立的命令程序。根据 bash 中执行命令的优先级,对于同名的命令,内置命令会优先被执行,所以当我们在 bash 中直接输入 echo 命令时执行的是 bash 的 buildin 命令,如果要执行独立的命令程序 echo,则需要输入全路径 /usr/bin/echo。echo命令是内置命令,/usr/bin/echo和/usr/bin/read不一样,/usr/bin/echo是二进制程序,/usr/bin/read是可执行脚本。
2023-01-03 10:07:26
231
原创 Linux系统构建deb包
dpkg执行安装的之后只要有preinst、postinst、prerm、postrm中任意一个脚本,就报错,即使脚本内容为空。usr目录下的所有目录和文件会映射到 系统的 /usr 目录下。其他需要安装的目录可以和usr目录一样,由dpkg执行安装的时候复制到系统的目录。因为control文件中的Package字段对应的名字里面使用了下划线,把下划线去掉或者换成减号。DEBIAN中是包的信息control文件,和安装过程中执行的脚本文件。默认使用yum安装器,需要安装dpkg安装器。
2022-12-19 17:46:07
3374
原创 vue init webpack xxx报错timeout
如果直接下载zip,下载的名称是webpack-develop.zip,解压后将webpack-develop改名为webpack,然后将webpack复制到c:\users\xxxxx\.vue-templates目录里面。可以ping通,但是打不开网页,所以开了代理,但是执行git clone的时候还是报错timeout。但是这个报错的ip可以ping通。然后git clone执行成功了。最后需要同构如下命令取消配置。于是把自己的代理的端口配置到git命令中。今天创建项目的时候报错timeout。
2022-09-21 18:59:48
768
原创 终端截获ctrl+c,非阻塞获取按键事件
截获ctrl+c,通过api SetConsoleCtrlHandler监听部分事件,除了ctrl+c还有关机和账户退出事件。ctrl+c通过api signal注册回调事件SIGINT,也就是结束事件。kbhit判断当前是否已经有按键按下,如果有,就调用getch。默认getchar,fgetc需要敲回车后才会返回,按键之后直接返回,不用等待输入回车。windows非阻塞监听按键。linux非阻塞监听按键事件。
2022-09-16 11:04:26
532
原创 html打印pdf相关的问题
给期望的页尾部分设置style:page-break-after: always;设置了这个属性的dom,打印的时候该dom所在的最后一页的后面不会显示其他dom,下一个dom显示在下一页。不想分页的dom,比如div,设置style: page-break-inside: avoid;设置该dom或者上级dom的style:-webkit-print-color-adjust: exact;3.相邻dom连接太紧密,需要分页。2.关键dom被分页,防止分页。2.关键dom被分页,防止分页。
2022-09-08 15:08:03
860
原创 ios使用storyboard拖拽创建的WKWebView导致闪退
为什么其他控件拖上去是正常的,但是webview拖上去就闪退呢。百度之后发现别人也有这种问题。原来是 xcode不会自动添加webview的引用,可能是webview的库比较大吧,如果自动添加,无形中增加app的体积。xcode的ios项目,拖拽一个webview到storyboard,运行app时闪退,报错。已经提示了no xxx was found,明显是缺少库。添加wkwebview库。
2022-09-04 16:06:32
881
原创 php微信退款,提示证书验证失败
项目中的php微信支付和退费经过几轮商户账号的替换后,支付没问题,但是退费的时候提示证书验证失败,这种提示已经比较明显了,可是把项目中所有存放证书的路径都检查了一遍,也对比了下载时的文件内容。都是从商户页面下载下来的。跳转到对应的路径后发现原来是经过多次商户id的替换,目录用的是以前出过错的目录,检查路径时直接忽略掉了。有多个地方使用了相同的路径,需要注意多个地方使用了证书路径的话,需要注意不能遗漏。步骤也是正确的,只能看看项目中引用的api和路径。
2022-09-02 15:26:43
1166
原创 Android Studio release版本 build正常 run失败提示INSTALL_PARSE_FAILED_NO_CERTIFICATES
signingConfigs和buildTypes的顺序是signingConfigs在前面,buildTypes在后面,如果尝试了一下,果然跟signingConfigs和buildTypes的顺序有关。把本项目的buildTypes放在signingConfigs后面,并且添加在buildTypes中添加signingConfig signingConfigs.release配置。修改后点击 sync now,再run一遍,神奇的模拟器中出现了app的界面,也不报错了。都没有成功,于是发现一个细节。..
2022-08-30 17:09:26
912
原创 ios开发入门
创建一个ios app后,直接点击run,xcode会启动手机模拟器,先显示的是lanuchScreen,launchScreen结束后触发application:(UIApplication *)application didFinishLaunchingWithOptions,鼠标按住Sent Event下面的事件列表中的其中一个右侧的圆圈,拖动到storyboard绑定的ViewController。如上,设置了按钮文字,还添加绑定事件的api,也就是动态绑定控件的回调事件。输入名称后,自动绑定。..
2022-08-27 18:27:36
1229
原创 windows api获取软链接的目标路径
GetFinalPathNameByHandle可以获取软链接对应的真实设备路径,设备路径是\Device\HarddiskVolumex\xxxx\xxx,不知道盘符。GetVolumePathName可以通过\Device\HarddiskVolumex\xxxx\xxx获取到盘符c:\,但是不会自动拼接为盘符对应的文件全路径。QueryDosDevice可以通过盘符获取盘符c:对应的设备路径\Device\HarddiskVolumex。于是,做个拼接就可以了。.........
2022-08-11 11:37:35
1218
1
原创 UEFI开发环境搭建
这里没有开发需要的代码和库,但是又很多资料文档,比如UEFI Specification就在Developer->Specification Library里面。该页面提供了UDK2015 Downloads的各种资源,我们开发需要的是workspaces,所以选择UDK2015 Workspace (ZIP File)该页面最下面提供了UDK各种版本的链接,2022年看到最新版本是UDK2018,由于公司用的是UDK2015,所以就选择了UDK2015,下载解压后有两个目录,三个压缩包,一个txt。...
2022-08-09 12:11:52
1460
原创 linux C获取Mac地址
此处是通过设置ifr_name,然后通过ioctl获取mac地址,ifr_name一般是eth0或者ens33。无论是否联网都可以获取到,但是当程序运行在其他客户端,不可能要求用户那里的网卡名称也是eth0,所以此方法仅能用作本地测试,或者用命令行方式传入网卡名称,然后获取指定网卡名称的mac地址。可是ifconfig命令不是更好用更方便吗?ioctl调用SIOCGIFCONF只能获取到活动网卡,如果把ens33或者eth0的网络连接断开,就获取不到了。1.基础用法,获取eth0的mac地址。.......
2022-07-28 19:58:08
3030
原创 docker环境安装vim、ifconfig、ping
大部分docker环境下没有vim命令,但是可以自行安装,直接执行apt-get install vim,失败网上百度一番,说是要使用国内镜像,可是不管使用163还是清华的镜像,都报错已尝试过多个debian版本的镜像,都是如此索性尝试一下原始的source.list直接执行这次居然成功了。再执行直接安装成功。接下来可以安装ifconfig命令了安装ping命令...
2022-06-29 16:26:45
1285
原创 guacamole安装
环境vmware+centos7非docker环境参考链接Installing Guacamole natively — Apache Guacamole Manual v1.4.0一.安装依赖包依赖包如参考链接中的Required dependencies,逐个yum install xxx即可,xxx用的试centos对应的devel包安装到ffmpeg的时候,报错:No package ffmpeg-devel available新的安装ffmpeg的方式二.下载安装guacamole-ser
2022-06-25 19:51:35
1051
原创 安装docker guacamole
参考安装文档Installing Guacamole with Docker — Apache Guacamole Manual v1.4.0guacamole官网Apache Guacamole™一.安装docker安装后开启docker给root以外的用户docker权限docker的安装和使用就不多作介绍了。可以自行百度二.安装3个镜像官方支持PostgreSQL和MySQL两种数据库,没用过PostgreSQL所以就选用了MySqlguacamole/guacamole和gu
2022-06-20 18:23:31
2636
9
原创 windows10新增本地账户
添加windows10账户需要先激活windows,然后才能新增账户方法1.标准路径:打开windows设置:windows图标处,右键,设置进入【账户】设置,选择其他账户然后填写用户名即可方法2:命令行执行control userpasswords2点击添加 添加本地账户,即不使用microsoft账户登录 选择本地账户 输入用户名和密码 添加成功 本地用户中多了一个test用户,可以点击删除方法3:命令行执行lusrmgr.msc方式同方法1,不经过设置,直接打开本地用户和组............
2022-06-11 14:50:08
2944
原创 windows 7 iso镜像刻录到U盘后选择安装的版本
最近由于产品需求,要安装windows 7家庭版进行测试。直接通过PE安装后,系统启动不了,经过各种打听,原来是缺少usb3.0的驱动。排查问题的过程中发现一个奇怪的问题:pe安装系统的时候可以选择旗舰版、家庭版,但是如果把windows 7的iso文件刻录到U盘后,安装的时候不能选择安装的版本,一路下去直到看到了旗舰版的字样。这个问题倒不复杂,百度一番就有了答案,iso镜像中的\sources\ei.cfg文件可以配置当前iso镜像的版本[EditionID]Ultimate[Channel
2022-05-26 15:56:35
1278
原创 etw监控文件操作开发示例
微软官方文档Event Tracing - Win32 apps | Microsoft Docsetw相关工具(目前主要用到logman查询providers)Event Tracing Tools - Win32 apps | Microsoft Docs简述:windows事件跟踪也就是windows event trace(etw)。主要分为三个模块:事件提供者(provider)、事件控制器(controller)、事件订阅者(consumer)。普通程序员一般用系统提供的事件
2022-04-29 17:46:38
3923
3
原创 cpu和内存占用过高,但是任务管理器中的进程占用的内存和cpu看不出来
不知道从什么时候电脑总是卡卡的,因为cpu和内存比较高配也就没想过占用率的事情,最近卡的受不了了,任务管理器中发现cpu和内存占用都超过90%,内存更是动辄96%以上,网上有一些介绍解决方案,我通过对比试验,没采取一种方案后重启看看,最近一次是禁用cotana和升级网卡驱动。
2022-04-20 10:17:06
10683
2
原创 devcon命令开启启用/禁用端口
今天测试一个外接设备的时候发现打开失败,跟硬件提供商沟通后,说是蓝牙设备占用端口了。需要禁用蓝牙端口设备,于是找了devcon禁用端口设备的方法。devcon在winDDK目录中可以找到,找到对应位数的程序,使用管理员权限打开命令行窗口,找到ports设备C:\Users\xxx\Desktop>devcon find =portsFTDIBUS\VID_0403+PID_6001+A10JYLAEA\0000 : USB Serial Port (C
2022-04-13 11:58:25
2333
原创 windows命令行程序被鼠标点击后阻塞
最近写python程序发现双击程序后弹出命令行窗口,如果鼠标不小心点击了窗口,整个窗口处于选择状态,但是程序不继续输出了,根据以往经验知道这是windows10上cmd窗口的选择模式导致的,可以手动解决:1.点击左上角图标选择属性2.取消快速编辑和插入模式如上,命令行窗口就不能通过鼠标选择了,但是每个程序都这么设置有点烦躁,于是就找了找windows控制台模式相关的api,发现如下apiSetConsoleMode function - Windows Console | Mic..
2022-04-07 16:37:59
2130
原创 不依赖MFC创建Win32窗口
Windows.h提供了CreateWindow系列的函数,自己注册一个class,然后就能创建窗口,创建之后需要在WndProc中处理Message#include <stdio.h>#include <tchar.h>#include <Windows.h>LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){ switch (uMsg)
2022-04-01 13:04:11
464
原创 mt-datetime-picker只显示了标题栏,时间选项是空白的
提前说解决方案:在项目引用的公有css文件中添加属性.picker-items{ width: 100% !important;}开发框架:vue + mint ui本地调试环境中使用<mt-datetime-picker></mt-datetime-picker>能显示标题栏的确定和取消,标题栏下面是可滚动选择的日期上线后iPhone手机,部分安卓手机也显示正常没有问题部分用户反馈选择时间的地方是空白的,局部截图如下用户反馈的问题没法联机调试,于是
2022-03-29 16:18:12
1918
1
原创 Reg命令查询注册表
命令行中执行reg /?,reg query /?即可知道reg的操作方式,此处做个记录,方便记忆reg执行哪些操作C:\Users\Administrator>reg /?REG Operation [Parameter List] Operation [ QUERY | ADD | DELETE | COPY | SAVE | LOAD | UNLOAD | RESTORE | COMP
2022-03-24 12:56:03
8458
原创 微信小程序集成vant
1.新建项目打开微信开发者工具,项目->新建项目,输入目录名称和小程序id2.命令行进入到微信小程序的目录参考https://vant-contrib.gitee.io/vant-weapp/#/quickstart但是按照该页面介绍操作的话,会提示【没有找到可以构建的NPM包,请确认需要参与构建的npm。。。。】npm init #一路回车npm i @vant/weapp -S --productionproject.config.json的同级目录创建mi
2022-03-23 20:42:01
2686
2
支持win7-32位的msys
2023-12-12
wdk 6001 18002 示例代码
2022-05-06
从MS-CSVP中解析部分windows结构体
2022-03-10
api-ms-dll.zip
2020-04-22
unlocker v3.0 + 老版本的darwin.iso
2019-03-28
efibootmgr源码包
2015-11-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人