Windows
csdn_gddf102384398
这个作者很懒,什么都没留下…
展开
-
Win32实现阴影窗口
#include <windows.h>#include <math.h>#pragma comment(lib,"Msimg32.lib")LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam );LRESULT CALLBACK ForegroundWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARA.原创 2022-04-14 19:49:56 · 756 阅读 · 0 评论 -
Win32按钮设计思路
#include <windows.h>#include <stdio.h>LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);LRESULT CALLBACK ChildWndProc(HWND, UINT, WPARAM, LPARAM);HINSTANCE hInst;#ifdef _DEBUGint main()#elseint WINAPI WinMain(HINSTANCE hInstance, .原创 2022-04-09 01:02:55 · 366 阅读 · 0 评论 -
DebugView在win7下没有输出内核信息解决办法
在注册表下创建如下键:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter在Debug Print Filter下创建名为Default,类型为REG_DWORD,值为0xF的值。必须禁用驱动签名强制。原创 2022-03-30 18:37:44 · 783 阅读 · 0 评论 -
PAINTSTRUCT中的无效矩形
Windows在WM_PAINT中调用BeginPaint函数使无效矩形变为有效是指Windows用注册窗口类时指定的画刷来擦除无效区,Windows只需要擦除无效区而非整个客户区。原创 2020-12-26 10:54:46 · 206 阅读 · 0 评论 -
《COM本质论》学习第一章
COM本质论学习笔记转载 2020-11-03 21:07:03 · 155 阅读 · 0 评论 -
虚拟盘、逻辑盘、分区、卷的含义
转载自百度:添加链接描述转载 2020-06-23 10:38:12 · 483 阅读 · 0 评论 -
Windows CloseHandle
一个进程打开一个内核对象,在未调用CloseHandle就结束后,系统会关闭内核对象,这可以通过编写驱动程序证明。原创 2020-06-22 16:36:24 · 236 阅读 · 0 评论 -
Windows动态库注意事项
如果是编译的.c文件,则不能使用extern "C"这类语句;用户不能访问动态库的全局变量;原创 2020-06-19 10:00:08 · 153 阅读 · 0 评论 -
一个完整的Windows驱动程序示例(应用与内核通信)
驱动程序DriverEntry.c#include <ntddk.h>#define DEVICE_NAME L"\\Device\\MyDDKDevice1"#define SYMBOLIC_LINK_NAME L"\\??\\MyDDKDevice1"#define DEVICE_EX_SIZE 200//读设备#define READ_CTL_CODE CTL_CODE(FILE_DEVICE_UNKNOWN,0x830,METHOD_BUFFERED,FILE_REA原创 2020-06-18 15:27:34 · 1964 阅读 · 0 评论 -
Windows驱动开发笔记
1、32位系统只能运行32位的驱动,64位系统只能运行64位的驱动;2、DebugView既能查看32位驱动的输出,也能查看64位驱动的调试输出;3、win7开机按F8,然后设置禁用驱动签名强制,之后加载驱动工具和DebugView均以管理员权限执行;4、目前在VS2015下编译的64位驱动不能运行,只能在命令行下编译,但是可以使用VS编辑驱动程序源码;...原创 2020-06-14 18:48:38 · 211 阅读 · 0 评论 -
VS2015生成XP程序
1、平台工具集要设置为:Visual Studio 2015 - Windows XP (v140_xp)2、连接器->系统->子系统必须设置为控制台或Windows3、必须静态链接VC运行时库原创 2020-06-13 18:49:48 · 551 阅读 · 1 评论 -
DLL注入提升进程权限(有时还需要注入程序使用管理员权限运行)
void SetToken(){ HANDLE hToken; if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) { printf("打开进程的访问令牌失败\n"); return; } LUID luid; if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luid)) { prin原创 2020-06-10 09:01:53 · 1316 阅读 · 0 评论 -
Linux驱动开发笔记
使用alloc_chrdev_region函数创建的设备号不知道,可以使用如下代码调试打印出主设备号printk(KERN_INFO “devno=%d,minor=%d\n”,MAJOR(devno),MINOR(devno));使用“mknod /dev/设备名 设备类型 主设备号 0”的方式为设备创建节点,之后应用程序就可以使用open("/dev/设备名",O_RDWR)函数打开设备了。...原创 2020-05-11 23:06:52 · 194 阅读 · 0 评论 -
Windows XP
目前Windows XP中文简体版没有64位的,只有32位的。原创 2020-02-11 09:57:16 · 389 阅读 · 0 评论 -
Windows远程登录权限设置和Win10安装后的图标设置
Windows远程登录权限设置加粗样式远程登录通过远端主机预设的账户进行登录。目标主机需要设置“本地安全策略”,在“本地策略”-“安全选项”中禁用“使用空密码的本地账户只允许进行控制台登录”。然后右键“我的电脑”/“此电脑”,选择“属性”,设置远程设置,添加用户中输入“everyone”即可。Win10安装后的图标设置加粗样式Win10未激活用户是没有办法通过个性化来打开桌面图标设置的,但是...原创 2020-02-10 17:45:37 · 599 阅读 · 0 评论 -
对GDI位图对象的理解《Windows程序设计》
转:https://blog.51cto.com/12731497/2114185转载 2020-02-04 13:17:27 · 193 阅读 · 0 评论 -
MyUtilityOnWin
MyUtilityOnWin.h#pragma once#include <stdio.h>#include <time.h>#include <windows.h>#define OnlyRead 1 //文件必须存在,若不存在,则返回NULL#define ReadWrite 2 //清空文件内容,若文件不存在就创建#define Appe...原创 2020-01-15 10:04:31 · 177 阅读 · 0 评论 -
Win32从资源中加载PNG图片,然后创建GDI+的Image对象
void LoadPNGFromStaticRes(HMODULE hModule, UINT nResId, Image** ppImg){ HRSRC hRes = FindResource(hModule, MAKEINTRESOURCE(nResId), TEXT("PNG")); DWORD dwResSize = SizeofResource(hModule, hRes); ...原创 2018-12-01 22:15:22 · 2531 阅读 · 1 评论 -
VC链接器选项之/MT和/MD的区别
如果一个dll有下面这种函数,则必须使用/MD或/MDd选项链接,不能使用/MT或/MTd://必须使用/MD或/MDd链接选项来生成此模块,不能是/MT或/MTd_declspec(dllexport)int* test(){ return new int[5];}否则,使用此模块的人如果有下述操作,程序运行就会崩溃:int main(){ int* p = test();...原创 2019-06-22 19:26:44 · 1636 阅读 · 0 评论 -
Windows在命令行中改变工作目录
test.exe在D盘testfile在E盘的test目录下,即E:/test此时要在命令行下使用test.exe来操作testfile,方法是:D:>e:E:>cd E:/testE:\test>test testfile原创 2019-06-26 11:15:35 · 2512 阅读 · 0 评论 -
win10右键菜单显示打开命令行
转载:https://www.cnblogs.com/ssooking/p/8536468.html转载 2019-08-10 17:46:12 · 440 阅读 · 0 评论 -
Win32进程间通信之共享内存
写进程/*写进程*/#include <stdio.h>#include <Windows.h>void main(){ HANDLE hFileMap = CreateFileMappingA(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,1024,"ShareMemTest"); if (hFileMap == N...原创 2019-09-07 14:29:42 · 476 阅读 · 0 评论 -
Win32窗口子类化:使用TAB键切换控件焦点
// Win32Project1.cpp : 定义应用程序的入口点。//#include "stdafx.h"#include "Win32Project1.h"#define MAX_LOADSTRING 100// 全局变量: HINSTANCE hInst; // 当前实例WCHAR szTitle[MAX_L...原创 2019-09-20 07:24:08 · 909 阅读 · 0 评论 -
I/O的理解
当应用层发起一个读请求时,比如从网卡读数据:recv(s,buf,len,0);这个len仅仅代表buf缓冲区的长度,并不表示此次必须要读到len个字节才返回。当发起recv调用时,recv内部将检查内核缓冲区中是否有数据,如果有,封闭内核缓冲区,然后将内核缓冲区中的数据拷贝至用户缓冲区(即buf),然后离开临界区,以便内核继续向内核缓冲区追加数据,或让其它读函数进入临界区读取数据,然后函数返...原创 2019-04-03 14:59:47 · 460 阅读 · 0 评论 -
为什么说Linux不存在真正意义上的线程?
个人理解:Linux不存在真正意义上的线程,是因为Linux中线程调度是由创建线程的进程进行管理的,这点有别于Windows,Windows的CreateThread确实创建了线程,Windows中由操作系统负责线程的调度(而不是创建线程的进程进行调度)。...原创 2019-03-28 16:59:54 · 1318 阅读 · 1 评论 -
逻辑地址、线性地址、物理地址的解释
一、在保护模式下,有以下三个地址概念:1、逻辑地址2、线性地址3、物理地址其中逻辑地址又叫做相对地址或偏移地址,无论是使用C语言还是汇编语言编程,程序中所用到的地址都是逻辑地址,逻辑地址在程序编译链接后就确定了。在x86环境下,线性地址是从0x00000000到0xFFFFFFFF之间的一个地址,线性地址由段描述符中的段基址+逻辑地址构成,而段描述符由段选择子确定。线性地址到物理地址的...原创 2019-03-22 11:15:00 · 1247 阅读 · 0 评论 -
数据解析
对于面向字节流的协议,如串口通信、TCP,数据解析方法简介如下(以串口为例):读取串口: BYTE readBuf[BUF_SIZE]; DWORD dwRead; DWORD dwWantRead = BUF_SIZE; DWORD dwResolveSuccess = 0; while (pctcb->bStartCheck) { dwRead = 0; if...原创 2018-12-29 14:53:48 · 310 阅读 · 0 评论 -
Win32格式化字符串到消息框
int MessageBoxPrintf(TCHAR * szCaption, TCHAR * szFormat, ...){ TCHAR szBuffer[1024]; va_list pArgList; // The va_start macro (defined in STDARG.H) is usually equivalent to: // pArgList = (cha...原创 2018-12-17 10:15:32 · 541 阅读 · 0 评论 -
GetFileSizeEx的用法和printf输出64位的值
LARGE_INTEGER li;GetFileSizeEx(hFile,&li);UINT64 uFileSize = li.QuadPart;printf("%I64u\n", uFileSize);//或直接输出li,对于超过4GB的同样有效原创 2018-12-10 17:37:39 · 1384 阅读 · 0 评论 -
基于TCP的C/S模式模板(Winsock实现)
服务器程序server.cpp:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <tchar.h>#include <locale.h>#include <WinSock2.h>#pragma comment(lib,"ws2_32.lib")void ShowS...原创 2018-12-03 22:33:08 · 668 阅读 · 0 评论 -
基于select非阻塞模型的服务端程序示例(Winsock2实现)
/*总结: ①无论阻塞还是非阻塞,select都不会立即返回,select就是用于非阻塞模型中的。 ②将SOCKET置于非阻塞模式下时,处理连接或处理收发数据的Socket API都会立即返回。 ③select会监视fd_set中的所有套接字,一旦有套接字发生IO事件(包括客户端的连接请求),select会立即返回, 并将fd_set中没有发生IO事件的套接字移除。由此可见,如果想让...原创 2018-11-25 19:34:31 · 527 阅读 · 0 评论 -
getaddrinfo函数在Winsock中的使用方法
#include <stdio.h>#include <tchar.h>#include <WinSock2.h>#include <ws2tcpip.h>#pragma comment(lib,"ws2_32.lib")int _tmain(){ //加载WinSock库 int nRet = 0; WSADATA wd; n...原创 2018-11-23 11:13:51 · 1028 阅读 · 0 评论 -
Win32显示系统调用失败后的错误信息
void ShowSystemError(HWND hwndMsgOwner){ HLOCAL hlocal = NULL; FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_ALLOCATE_BUFFER, NULL, GetLastError(), MAK...原创 2018-11-13 10:23:07 · 909 阅读 · 0 评论 -
多线程之多生产者,多消费者,多缓冲区问题解决(Win32API实现)
/* 多线程之多生产者,多消费者,多缓冲区问题*/#include<stdio.h>#include<windows.h>#include<process.h>#define BUF_SIZE 10int buffer[BUF_SIZE]; //缓冲区int in=0, out=0;HANDLE hEmpty, hFull;C...原创 2018-08-17 10:02:33 · 1777 阅读 · 2 评论 -
Windows GDI绘图
①对话框程序中,WM_INITDIALOG消息在产生之后并不会产生WM_SIZE消息,只有具有OVERLAPPED风格的对话框才会在WM_INITDIALOG后产生WM_SIZE;对话框在尺寸发生变化时不会产生WM_PAINT消息,要想尺寸变化时更新窗口,需要在WM_SIZE中调用InvalidateRect。②在WM_PAINT中创建内存DC,并在WM_PAINT中销毁,这种情况下即使不擦除背...原创 2019-01-10 21:59:24 · 820 阅读 · 0 评论 -
Windows动态链接库与静态库和System32与SysWOW64目录的区别
一、静态库(lib)①Win32程序不能链接64位静态库;②Debug下可以链接Release版的静态库,反之亦然;二、动态链接库(dll)①32位程序依赖32位dll,dll文件可以放在“C:\Windows”目录下,也可以放在“C:\Windows\SysWOW64”目录,但不能放在“C:\Windows\System32”目录;②64位程序依赖64位dll,dll文件可以放在“C:...原创 2019-01-05 19:33:54 · 823 阅读 · 0 评论 -
关于MSXML3.dll与MSXML6.dll
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms762752(v=vs.85)Msxml3.dll, msxml2.lib (MSXML 3.0)msxml6.dll, msxml6.lib (MSXML 6.0)Header and IDL files: msxml2.h, msxml2.idl, m...原创 2019-01-20 09:20:17 · 1839 阅读 · 0 评论 -
VS去掉函数或变量的安全警告
VS去掉函数或变量的安全警告1.右击”项目”–>”属性”–>”C/C++”–>”预处理器”–>”预处理器定义”2.在预处理定义的编辑窗口中添加一句命令:_CRT_SECURE_NO_WARNINGS...转载 2019-03-25 09:42:10 · 572 阅读 · 0 评论 -
Windows保存文件对话框、打开文件对话框、获取文件目录对话框
BOOL OpenFileDialog(const TCHAR* szTitle, HWND hWnd, TCHAR *szFullName, int fullNameLength,TCHAR* szFileName,int fileNameLength,TCHAR* szFilter) { OPENFILENAME ofn; ZeroMemory(&ofn, sizeof(of...原创 2019-03-16 09:43:17 · 1006 阅读 · 2 评论 -
Windows配置Apache
这是详细配置教程的链接:https://www.cnblogs.com/freeweb/p/5056979.html转载 2019-03-14 10:54:46 · 294 阅读 · 0 评论