自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (1)
  • 问答 (2)
  • 收藏
  • 关注

原创 ping 命令实现

ping 命令的实现远源码

2022-11-14 22:35:42 246 1

转载 Windows环境下32位汇编语言程序设计 相关资料

Windows环境下32位汇编语言程序设计.pdf:https://474b.com/file/15153148-465076702。ViewApi(DLL查看器).zip:https://474b.com/file/15153148-465077434。Windows PE权威指南.pdf:https://474b.com/file/15153148-465077295。加密与解密(第三版).pdf:https://474b.com/file/15153148-465077298。...

2022-08-05 02:38:26 798

原创 远程唤醒计算机

内网远程唤醒,需要在系统中开启对远程唤醒的支持。原理是使用UDP广播,发送有16个相同MAC地址组成的数据包,网卡收到后会帮我们唤醒计算机。需要被唤醒的计算机中,在设备管理器,找到对应的网络适配器(网卡),在网卡属性中启动【网络唤醒】功能代码:...

2022-07-13 18:34:22 878

原创 数据库密码暴力破解

当数据库密码忘记时,可使用下面的代码进行暴力破解:

2022-07-13 18:23:13 2324

原创 MYUI的基本使用 - demo讲解

MYUI 文档目录: MYUI 界面库 (前言)正文:大家下载MYUI仓库后,切换到 Branch_csdn_study 分支,用 VS2019 打开 MYUI.sln 文件,按 F5 即可运行 myui 的 demo。如果想使用 myui ,你可以把 myui 项目编译成 lib 或 dll ,然后再自己的项目中引用 myui.h 头文件即可。当然你也可以将 myui 集成到你的项目中,只需要将代码拷贝一下即可,MYUI 以简单方便为主,不会让开发者进行复杂的操作的。接来下让我们来看看 WinMain

2022-07-08 18:45:04 1649

原创 多线程锁详解之【互斥量】

更多的锁介绍可以先看看这篇文章:多线程锁详解之【序章】正文:互斥量,一个应用起来跟临界区十分相似的锁,但互斥量是可以命名的,可以跨进程使用,而临界区只能在单个进程内使用,效率方面互斥量往往也比临界区要低,这是什么原因导致的呢?让我们先来学习一遍互斥锁的源码,再讨论上面提出的问题。源码:先来看看互斥锁是如何创建的:如果你已经看过了事件对象的创建过程,就会发现互斥锁创建的过程是如此的熟悉。这里我们不过多赘述这个函数的流程是做了写什么了,都是一些三板斧动作。主要是讲述一些与其他锁对象不同的地方。首先是函数名

2022-07-06 15:22:31 435

原创 多线程锁详解之【信号量】

如果你有事件对象(Event)的作为基础,那么信号量理解起来将会十分容易。信号量,又名信号灯,是用来限定进入代码区域的次数。大家知道,如果事件对象带有信号自动重置的标记,那么即时事件对象处于有信号的状态下, WaitForSingleObject 函数也只能通过一次,想再次通过 WaitForSingleObject 就必须再次调用 SetEvent 函数。如果事件对象附带的是手动重置信号标记,那么在事件对象有信号的状态下, WaitForSingleObject 函数则可以无限次通过,除非调用 Rese

2022-07-03 19:06:29 346

原创 多线程锁详解之【条件变量】

注:本文以windows临界区作为案例说明,其实各个操作系统中的临界锁的理论是相通的,源码逻辑也是大同小异,其中 linux 系统的 mutex 锁原理与逻辑可以说与windows临界区是一样的。其次是很多开发者对锁的理解只局限于调用,如果需要他们自己实现一个锁,往往无能为力。比如XP系统没有条件变量和读写锁,当应用中需要的时候如何实现?还有如何模仿数据库中的表锁,行锁,网络锁,乐观锁等等。。。理解临界区的底层原理与逻辑,是实现这些锁的第一条件!正文开始先来回顾一下windows 临界区的几个函数:

2022-06-28 20:45:51 420

原创 多线程锁详解之【临界区】

正文:一般锁的类型可分为两种:用户态锁和内核态锁。用户态锁是指这个锁的代码只依赖于用户态,不会陷入内核态执行。而内核态锁很明显就是哪些会陷入内核态执行的锁。一般书中会说,windows 提供了两个用户态锁,一个是原子操作,而另外一个,正是我们要讨论的主题:临界区。原理:临界区作为用户态最常用的锁,它的使用方法并不复杂,就是拥有初始化和反初始化函数,一对 lock 和 unlock 函数,当然还有一个不太常用的 trylock 函数。如下:(1)初始化临界区 InitializeCriticalSecti

2022-06-24 11:24:57 1564

原创 获取显卡制作商品牌

背景实现一个获取显卡品牌的接口,由于对硬件不够了解,兜兜转转搞了好几天。刚开始直接从WMI 的 Win32_VideoController 取 AdapterCompatibility 字段数据,后来发现哪个是显卡芯片品牌,不是显卡制作商品牌,只能再从网上去找资料。期间有人说这个技术是商业机密,不能透露实现方式,还有人报价3000帮我处理这个问题。额,价格太高,网上也到处找不到相关的资料,而且我还尝试了 DX,CUDA,MMIO,等技术都没有成功。令我一度以为这个确实是很有深度的技术。后来兜兜转转,同事

2022-06-14 18:18:16 1565 1

原创 调用exe接口

把exe当成dll加载

2022-06-09 20:25:05 468

原创 通过COM接口选中桌面图标

背景:前段时间开发时遇到一个文件生成到桌面,需要选中桌面图标的功能。大家知道选中文件夹下的文件,可以使用 SHOpenFolderAndSelectItems 函数,当时就想,选中桌面图标,应该也是提供了对应的API。结果网上搜了一圈,没发现对应的API。于是我的目光很快转移到 IShellView 这个COM接口上,去MSDN文档一看,果然有SelectItem这个函数。根据经验,八九不离十 IShellView 能够选中桌面图标。但额外的问题来了,如果才能拿到属于桌面的 IShellView 接口

2022-06-09 18:44:56 229

原创 多线程锁详解之【WaitForSingleObject】

WaitForSingleObject

2022-06-04 19:49:15 2766

原创 多线程锁详解之【事件对象】

更多的锁介绍可以先看看这篇文章: 多线程锁详解之【序章】正文:信号量,又名事件锁或者事件,是一个内核锁,可用于跨进程等待。先看看事件锁的头文件定义:对内核有了解的同学都知道,一般应用层的内核函数,下层都会调用对应的【Nt!XXX】函数,那我们再来看看NtCreateEvent源码上面的代码,在不考虑安全性和出错的情况下,我们可以简化为下面这样。.................................

2022-06-03 18:34:50 401

转载 对象创建(ObCreateObject)和对象删除(ObDereferenceObject、ObpRemoveObjectRoutine)

转载来源:https://blog.csdn.net/wzsy/article/details/6188554为对象分配内存看完了, 这次我们看一个比较高层的函数。ObCreateObject, 这是内核的导出函数, 所有模块都可以使用(虽然它没有被文档化…)它的作用是创建指定类型(OBJECT_TYPE)的对象示例。(注意ObAllocateObject只是分配了空间, 这里可以看到后续的操作)这个函数的参数还真多啊。微软函数的参数一直都和火车一样。我们只能淡定。。。NTSTATUSObCrea

2022-06-03 18:10:11 662

原创 多线程锁详解之【原子操作】

原子操作,顾名思义它的操作具有原子性。所谓原子性就是指动作不可分割且独占数据读写。什么是操作不可分割?我们知道系统的线程数总是大于CPU数,系统其实是把这些线程对象放到了一个队列里面,然后轮流把这些线程对象放到CPU核心上,执行对象一部分的代码,周而复始,直至所有的线程代码执行完毕。由于CPU计算速度极快,肉眼上是看不出线程的轮流执行的,但事实上每一个线程对象,确实是轮流地,断断续续地执行,不是连续的。而线程对象这种断断续续执行的特性,我们称之为线程对象的动作是可分割。既然原子性动作不可分割,那就说明原

2022-06-02 20:03:43 899

原创 多线程之锁详解之【序章】

在日常多线程开发中,大家应该碰到过各种形形式式的锁,比如原子变量,事件对象(Event),临界区,互斥量(Mutex)等等。大家有没有好奇过,这些锁的底层是如何实现的呢?比如在XP系统中没有条件变量和读写锁这两个锁,当我们需要在XP系统下自行实现这两个锁的时候,该怎么办?想实现上述两个锁,大家首先需要的入门知识是:CPU缓存行锁与系统中断锁的原理。CPU缓存行锁与系统中断锁这两个锁可能很多人闻所未闻,这里需要告诉大家的是:主流的操作系统中,真正的锁只有这两个!而你们所看到的什么条件变量,临界区,互斥量等

2022-06-02 14:59:08 244

原创 多线程入门常识

关于多线程,很多刚接触的同学,总是理解不够,或者理解有误,这里我们分享一下多线程的入门常识。常识一:什么是响应,效率,性能。响应指的是某个函数的完成时间,假设界面上有一个按钮,点击按钮后悔创建一个新的线程去执行备份操作:DWORD WINAPI DoBackup(LPVOID pParam) { //备份操作,需要10秒 ::Sleep(10 * 1000);}void OnButton() //点击按钮回调{ //1毫秒 CreateThread(NULL,

2022-05-30 01:44:17 819

原创 相对定时器实现详解

对定时器概念不是特别熟悉的同学可以先看看 定时器概述 这篇文章。地址: https://blog.csdn.net/qq492927689/article/details/123262563下面我们从代码层面上,讲解一下相对定时器如何实现。先上代码:main.cpp:#include "Timer.h"void TimerOut(TIMER* pTimer, void* pParam) { printf("TimerOut = %s\n", (char*)pParam);}void

2022-05-26 21:31:53 273

原创 class 关键字内存布局详解(三)

基类,单继承,多继承,虚继承,的内存布局已经前面已经跟大家讲解过了。细心的同学可能会发现,之前代码的析构函数,并非虚析构。这是因为虚析构函数有点特别,我们这里再讲一下虚析构。#define _CRT_SECURE_NO_WARNINGS#include <stdlib.h>#include <stdio.h>#include <string>#include <memory>class CBase{public: CBase() {

2022-05-25 14:55:12 174

原创 class 关键字内存布局详解(二)

之前讲解了 class基类和单继承的内存布局,本章将一下多集成的内存布局是怎样的。先上代码:#define _CRT_SECURE_NO_WARNINGS#include <stdlib.h>#include <stdio.h>#include <string>#include <memory>#include <windows.h>class CBase{public: CBase(){ printf("Init B

2022-05-19 20:33:54 225

原创 多线程之线程池设计

代码下载地址:https://gitee.com/dai-jiapei/iocp/tree/master/Thread主要下载 demo.c ,threadpool.c, threadpool.h 三个文件即可这个一个跨系统线程池,支持Linux, windows。其中包含XP,需要将threadpool.c::COMPATIBLE_XP 这个宏定义为 1。XP 需要宏控制是因为XP没有条件变量,只能自己实现一个,当 COMPATIBLE_XP 为0时, 使用系统提供的条件变量函数。线程池这东西,

2022-05-16 21:48:31 571

原创 class 关键字内存布局详解(一)

C++ class 关键字内存布局

2022-05-13 21:32:53 177

原创 定时器概述

在日常的开发工作中,我们总是或多或少地接触到各式各样样的定时器,一般我个人喜欢将定时器划分为三类:频率定时器相对/绝对定时器异步定时器首先说一下最简单的,频率定时器。其实就是设置一个频率的值。然后其所在定时器相信大家都不陌生,在日常的网络编程,窗口编程,都会接触到 SetTimer 这一类函数。那么定时器到底是怎么实现的呢?首先我们以WIN32的定时器为列子,看看定时器函数的定义。UINT_PTR SetTimer(HWND hWnd, // 窗口句柄UINT_PTR nIDEvent

2022-03-03 20:38:12 1434

原创 _beginthread 与 _endthread 函数分析 (ReactOS版)

多线程常用函数CreateThread - 创建线程ExitThread - 退出线程TerminateThread - 终结线程SuspendThread - 挂起线程ResumeThread - 唤醒线程GetExitCodeThread - 取得线程返回值WaitForSingleObject - 可用来等待线程

2021-08-25 23:41:10 1090

原创 MYUI 界面库 (前言)

开始之前,先奉上下载地址: MYUI界面库下载地址(下载完成后,如果需要想学习MYUI的相关文章,请切换到 Branch_csdn_study 分支,我们将以此分支的代码作为讲解。如果直接在 master 分支进行讲解的话,将来版本迭代,可能出现代码跟文章对不上的情况)大家下载后,直接编译运行即可。如果想在自己的项目中使用myui,可以使用源码集成(将源码直接拷贝到项目中并引用文件),或者使用常规编译 lib 或 dll 的方法引用即可。MYUI 特性界面库功能要求以现在的开发需求来看,一款界面库的需要

2019-03-13 23:39:03 1074

原创 新人报道

新人报道个人资料个人资料称昵:红烧小鲫鱼性别:男职业:C++工程师Q Q :492927689邮箱:[email protected]自我介绍:C++ 菜鸟一枚,喜欢研究互联网技术。 今天总算开通博客了,在这里写下第一遍文章,做一下自我介绍。今后将会在这里分享一下我日常的开发心得和研究成果。喜欢的可以加个关注。...

2019-03-13 23:29:19 103

MYUI界面库

自己编写的一套windows C++界面库,使用WIN32架构,代码简单,适合学习界面开发技术

2019-03-14

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除