
C/C++
Tody Guo
分享,开源;Linux, Unix, C;
BIOS开发
展开
-
使用开源GCC编译微软WMI相关函数的示例代码
使用GCC编译WMI相关函数,使用WMI函数查询微软系统是否激活;原创 2024-11-28 13:51:48 · 336 阅读 · 0 评论 -
inpoutx64.dll 或WinIOx64.dll 相关函数原型C代码实现
根据inpoutx64.dll和WinIOx64.dll,导出函数原型,使用C代码调用其中的函数;自己在国内的网站也没有找到几个像样的代码;那就自己整理一个吧;原创 2023-04-01 15:30:39 · 1053 阅读 · 2 评论 -
读写HID的设备代码C语言代码
先上一段代码吧,不是我写的;从大神的文章里面Ctrl+V过来的;消化完后自己在整理一份;转载 2023-02-12 11:31:20 · 1063 阅读 · 0 评论 -
Dump系统定义的全局EFI变量
Dump 系统定义的全局EFI变量;全局的变量定义来之ReactOS里面的。原创 2022-10-08 15:42:22 · 593 阅读 · 0 评论 -
gnu-efi开发环境设置
gnu-efi的开发是独立的一个环境开发,可以不依赖EDK2的开发环境;可以很方便的进行UEFI程序的快速开发;原创 2022-06-08 21:28:29 · 1375 阅读 · 0 评论 -
C语言callback功能及命令列表实现代码
从网络上搜对应的代码不是很好找,参考了git的source code,修改了个建议的实现;方便后面在写命令的app时不重复造轮子;开源供大家参考;#include <stdio.h>#include <stdlib.h>#include <string.h>#define BARF_UNLESS_AN_ARRAY(arr) 0#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]) + BARF_UNLESS_A.原创 2022-05-06 10:00:32 · 597 阅读 · 0 评论 -
Linux inb() and outb() 的使用方式
Linux 下操作IO port的示例代码原创 2021-11-22 08:55:36 · 2924 阅读 · 1 评论 -
使用VS2019编译EDK2的方法
原先自己编译的EDK2的情况,有点旧,本次更新EDK2使用2019的编译器编译EDK2需要的工具链如下,自行下载哈:VS2019:Python 3.8:https://www.python.org/downloads/release/python-380/ASL:https://acpica.org/(MUST Extract to C:\ASL)NASM:http://www.nasm.us详细的步骤:1. 下载最新的EDK2git clone https://githu原创 2021-07-12 16:57:53 · 3092 阅读 · 0 评论 -
md5源码,C语言
为了避免卡脖子工程,Linux系统上面的md5sum在Windows系统下没有64位的版本,那只能自己动手写一个能检查的小工具。目的是为了能在64位的WinPE下运行。下面就直接上代码,网络Copy的一些md5的代码拿过来在VS2019上编译不过,现在终于调试通过了。这个代码是用来检查md5summer产生的md5文件作为标准检查的。其他需要学习的人,可以自己编写,反正这个核心就是md5.cpp的算法内容md5.h的头文件内容#ifndef __MD5_H__#define __MD原创 2020-10-10 08:41:27 · 1169 阅读 · 0 评论 -
记一次Windows下VS2019的Audacity的编译过程
第一次接触Audacity的内容,不是因为XX客户的要求,就不会用到它。因为它能通过微软的WASAPI能读取到有几个麦克风的功能,而且要测试这几个麦克风是不是好的。于是,有人推荐了个工具。但是为了方便产线使用,需要修改。加上它又是开源的。所以,就自己动手DIY起来。这个目的是,希望想自己编译的人不要走弯路了。我是走了不少,才有次总结。下面我们就讲怎么编译&运行吧。第一步:下载安装python 2.7.18这个版本。第二步:下载wxWidgets的源码:git clone -.原创 2020-06-09 08:46:30 · 779 阅读 · 2 评论 -
Visual Studio 编译不生成.iobj .ipdb .pdb 文件的方法
.iobj.ipdb这两个文件可用通过下面的方式解决:选择 Linker-> Optimization -> Link Time Code Generation里面的Use Link Time Code Generation(/LTCG).pdb的文件处理方式如下:原创 2020-05-21 09:58:57 · 4057 阅读 · 0 评论 -
Windows conio.h 的源码,实现gotoxy, textcolor,movetext等函数
经过自己的修改,成功从Dev-C++移植到VC,不用多说,直接上代码,支持Visual Studio and VC++, Windows only/* A conio implementation for Mingw/Dev-C++. * * Written by: * Hongli Lai <hongli@telekabel.nl> * tkorrovi <tko...原创 2020-04-29 11:30:22 · 1601 阅读 · 5 评论 -
C语言实现在控制台下创建窗口、设置字体大小、设置定时器的示例代码
// ConsoleApplication1.cpp : This file contains the 'main' function. Program execution begins and ends there.//#include <windows.h>#include <stdio.h>HWND hStatic1 = NULL;const int ...原创 2019-11-12 18:36:52 · 2918 阅读 · 0 评论 -
C语言方式 获取CPUID及处理器型号
#include <windows.h>#include <intrin.h>#include <stdio.h>int main(){ int cpuInfo[4] = {0}; int index = 0; printf("Dumping CPUID...\n\n"); printf("FuncID\t\tEAX\t\tEBX\t\tE...原创 2019-11-04 19:17:10 · 3951 阅读 · 0 评论 -
读取DMI信息(DOS)
#include #include#include#includeunsigned char far *TblAddr_Ptr; /*pointer to SMBIOS Address*/unsigned int TblLen; /*SMBIOS Table length*/typedef struct{ unsigned char type; unsigned原创 2010-03-13 19:36:00 · 3354 阅读 · 0 评论 -
判断链表是否有环
int is_looplist (ListNode *head){ ListNode *p1, *p2; p1 = p2 = head; if (head == NULL || head->next == NULL) { return 0转载 2010-03-24 17:20:00 · 720 阅读 · 0 评论 -
简单而又完整的makefile
刚开始学习makefile是一个痛苦的过程,从杂乱无章的规则到一个简单的makefile再到一个系统化的makefile不是一蹴而就的事情。今天我就写一个简单的,规范的(相对而言),功能也算齐全的Makefile。适合于初学者的makefile。希望对新加入linux的同学们有用;一,源文件准备 假设在项目文件夹(PName)中我们有源文件:main.c com1.c原创 2010-04-12 13:06:00 · 3929 阅读 · 0 评论 -
使用mmap()和使用 read()write()实现文件拷贝的对比
最近上课老师说了这样一句话:mmap()内存映射可以实现文件的拷贝,并且速度明显快于一般的文件拷贝,于是我试着实现了两种文件拷贝所花费时间的比较,首先看代码:#include #include #include #include #include #include #include #include #include #inclu转载 2010-04-12 19:13:00 · 3155 阅读 · 1 评论 -
VC++的Unicode编程
一、什么是Unicode 先从ASCII说起,ASCII是用来表示英文字符的一种编码规范。每个ASCII字符占用1个字节,因此,ASCII编码可以表示的最大字符数是255(00H—FFH)。其实,英文字符并没有那么多,一般只用前128个(00H—7FH,最高位为0),其中包括了控制字符、数字、大小写字母和其它一些符号。而最高位为1的另128个字符(80H—FFH)被称为“扩展AS原创 2010-04-03 18:51:00 · 702 阅读 · 0 评论 -
USB有关的编程
现在USB设备却很多,因此对USB设备的查找与读写就必不可少了。但是能找到关于USB读写的资料很少。这里使用VC++示范了一些获得USB的信息的方法。 一、枚举USB设备 通过枚举USB控制器->枚举此控制器上的USB HUB->枚举HUB的各个端口->获得设备信息。 枚举控制器: wsprintf(HCName, "////.//HCD%d",原创 2010-04-03 20:14:00 · 1031 阅读 · 0 评论 -
通过/dev/mem进行恶意代码注入
通过/dev/mem进行恶意代码注入Anthony Lineberry «anthony.lineberry@gmail.com»2009年3月27日原文http://www.dtors.org/papers/malicious-code-injection-via-dev-mem.pdf摘要在本文中,我们将要讨论使用字符设备/dev/mem向kernel进行代码注原创 2010-04-07 12:28:00 · 2950 阅读 · 0 评论 -
Win32拷贝文件夹
下面的代码展示了如何拷贝文件夹:BOOL CopyDir(LPCTSTR lpszSrcDir, LPCTSTR lpszDstDir){ SHFILEOPSTRUCT sfo; ZeroMemory(&sfo, sizeof(sfo)); sfo.wFunc = FO_COPY; sfo.pFrom = lpszSr原创 2010-04-21 12:33:00 · 3560 阅读 · 0 评论 -
快速关机
<br />使用 NtShutdownSystem 可以强制关闭 Windows 系统。这个函数是众多的未归档的 Windows NT/2000 Native API 函数之一,它在关闭系统时不会事先通知系统服务程序和用户程序。行为很是粗鲁,除非迫不得已,最好不要使用这个函数。msgina.dll 中用到了这个函数。该函数由 ntdll.dll 输出,其原型如下: <br /><br /> NTSYSAPI <br /> NTSTATUS原创 2010-08-03 12:24:00 · 1515 阅读 · 2 评论 -
文件CheckSUM
<br />/** Function: Get File checksum value for win32 Author: Tody Kwok Revsion: 1.0.0.1 (c) Tody 2010*/#include <stdio.h>#include <stdlib.h>#include <conio2.h>#define progname "wsum.exe"#define header "(c) Tody 2010原创 2010-08-05 18:53:00 · 3519 阅读 · 1 评论 -
获取Windows Server 2003的时间
<br />/*GNU s_time is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 3 of the License, or (at your option) any later version.Fun原创 2010-08-05 19:05:00 · 1261 阅读 · 0 评论 -
获取当前CPU使用率
<br />#include <windows.h>#include <conio.h>#include <stdio.h>#define SystemBasicInformation 0#define SystemPerformanceInformation 2#define SystemTimeInformation 3#define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).L原创 2010-08-06 14:20:00 · 3558 阅读 · 0 评论 -
快速关机代码
<br />/* * This is free software, Under GPL2.0 * * (c) Tody 2010, FIC Inc. * All Rights Reserved * * Fast Down System for Windows NT * * Revision: 1.0 * Author: Tody * Date: 2010-08-05 */#include <stdio.h>#include <stdlib.h>#inc原创 2010-08-05 18:50:00 · 5073 阅读 · 0 评论 -
计算条码枪的隐码
<br />/** (c) Tody 2010* All rights reserved** Compute Hidden Mask of MAC or GUID* Revision: 1.0.0* Author: Tody Kwok* Date: 2010-7-29*/#include <stdio.h>#include <conio.h>#include <stdlib.h>#define progname "hmask.exe"#define rev原创 2010-08-05 18:55:00 · 1314 阅读 · 0 评论 -
获取硬盘信息
<br />/*+++HDID.CPPWritten by Lu Linhttp://lu0.126.com2000.11.3---*/#include <windows.h>#include <iostream.h>#include <stdio.h>#define DFP_GET_VERSION 0x00074080#define DFP_SEND_DRIVE_COMMAND 0x0007c084#define DFP_RECEIVE_DRIVE_DATA 0原创 2010-08-05 19:02:00 · 2914 阅读 · 1 评论 -
C/C++ Windows蓝牙搜索代码
// wblue.cpp : Defines the entry point for the console application.///******************************************************************** created: 2010/01/29 file base: wBlue file ext: c aut...原创 2010-08-05 19:07:00 · 4584 阅读 · 0 评论 -
多线程时间服务器
// winsock.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include #include #include #include #define PORT 8080int x = 1;void error(char *str){ fprintf(stderr,"%s Error/n",str); exit(1);}原创 2010-08-05 19:11:00 · 994 阅读 · 0 评论 -
程序员须知 收包与发包
本文为作者原创翻译并且加入了一些自己的思路和观点,转载请注明。作者:rellikt@gmail.com首发链接:http://blog.youkuaiyun.com/rellikt/archive/2010/08/23/5833233.aspx原文链接:http://gafferongames.com/networking-for-game-programmers/sending-and-receiving-packets/简介大家好,今天我们就来说说网络游戏程序员须知的第二篇:收包与发包。上一篇中我们比较了UDP和T转载 2010-08-27 12:14:00 · 8629 阅读 · 0 评论 -
VC中的一些常用方法(20条
<br />//一、打开CD-ROM<br /><br />mciSendString("Set cdAudio door open wait",NULL,0,NULL);<br /><br />//二、关闭CD_ROM<br /><br />mciSendString("Set cdAudio door closed wait",NULL,0,NULL);<br /><br />//三、关闭计算机<br /><br />OSVERSIONINFO OsVersionInfo; //包含原创 2010-09-11 09:13:00 · 897 阅读 · 0 评论 -
C语言连接 Access 数据库
<br /> 看视频上是连接MySQL数据库,MySQL安装后配置比较麻烦,所以我试着用老师给的模板连接Access数据库,Access是比较方便使用的<br />只要装了office几乎都有。<br />首先在百度搜索 odbc 连接字符串 找到的是asp连接Access的方法,但是ODBC是通用的,所以直接拿过来也能用。<br />将<br /> SQLCHAR ConnStrIn[MAXBUFLEN] = "DRIVER={MySQL ODBC 5.1 Driver};SERVE原创 2010-08-30 13:06:00 · 5015 阅读 · 0 评论 -
雨中飞燕Win32 Console下扫雷游戏源代码
很久以前写的,2008年5月的时候的东西了,一个在Win32 Console下玩的扫雷游戏,写的比较简单曾经发布过,但现在网上不好找,就发一份在这里了,作为大家参考之用//Win32 Console Application//Complier: MinGW(GCC), VC6.0, VC2003, VC2005//Demo Game By yzfy(雨中飞燕) [url]http://yzfy.org[/url]//I'm too lazy to write comm原创 2010-09-11 17:12:00 · 2721 阅读 · 2 评论 -
HOOK API DLL 注入
<br />一、<br />序言对大多数的Windows开发者来说,如何在Win32系统中对API函数的调用进行拦截一直是项极富挑战性的课题,因为这将是对你所掌握的计算机知识较为全面的考验,尤其是一些在如今使用RAD进行软件开发时并不常用的知识,这包括了操作系统原理、汇编语言甚至是关于机器指令代码的(听上去真是有点恐怖,不过这是事实)。<br />当前广泛使用的Windows操作系统中,像Win 9x和Win NT/2K,都提供了一种比较稳健的机制来使得各个进程的内存地址空间之间是相互独原创 2010-09-06 18:58:00 · 4706 阅读 · 0 评论 -
发个邮件发送流程,SMTP应答原理
<br />----------------------------------------------------------------<br />首先先了解下:<br /> smtp协议常见返回码<br />----------------------------------------------------------------<br />220 服务器欢迎信息<br />250 命令执行成功<br />334 登录时候返回的base64编码<br />235 认原创 2010-09-07 12:07:00 · 2849 阅读 · 0 评论 -
读取显示器EDID信息
<br />Deubg命令:<br /> <br />a100<br />mov di, 130<br />mov ax, 4f15<br />mov bl, 01<br />xor dx, dx<br />int 10<br />inc cx<br />cmp ax, 014f <br />jz 100<br />int 3<br />g<br />d es:130<br />q<br /><br />用debug ,可以看到lcd的edid。。<br /原创 2010-09-23 14:28:00 · 8566 阅读 · 0 评论 -
软件编程21法则
<br />任何一个有经验的程序员都知道,软件开发遵循着一些不成文的法则。然而,如果你不遵循这些法则也并不意味着会受到惩罚;相反,有时你还会获得意外的好处。<br />下面的就是软件编程中的21条法则:<br /> 任何程序一旦部署即显陈旧。 修改需求规范来适应程序比反过来做更容易。 一个程序如果很有用,那它注定要被改掉。 一个程序如果没用,那它一定会有很好的文档。 任何程序里都仅仅只有10%的代码会被执行到。 软件会一直膨胀到耗尽所有资源为止。 任何一个有点价值的程序里都会有至少一个bug。 原型完美的程原创 2010-09-30 09:57:00 · 1332 阅读 · 0 评论 -
inet_pton和inet_ntop函数
Linux下这2个IP地址转换函数,可以在将IP地址在“点分十进制”和“整数”之间转换 而且,inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6。算是比较新的函数了。 inet_pton函数原型如下[将“点分十进制” -> “整数”] #include #include #include int inet_pton(int af, const char *src, void *dst); 这个函数转换字符串到原创 2010-10-28 19:19:00 · 5639 阅读 · 0 评论