“画壁”通过精心收集,向本站投稿了5篇实现在Windows下直接读写内存的方法,以下是小编收集整理后的实现在Windows下直接读写内存的方法,仅供参考,欢迎大家阅读。

实现在Windows下直接读写内存的方法

篇1:实现在Windows下直接读写内存的方法

实现在Windows下直接读写内存的方法

Windows以它一致的图形用户界面、完善的内存管理等特点,已被广大用户所接受,但在Windows下,计算机已运行在保护模式,虽然Windows已提供了一整套的内存管理函数,用户还是不可访问指定地址的内存,致使许多中、小型企业开发的计算机插件无法在Windows下使用,因为编写驱动程序是很费事的。他们仅希望能直接读、写电路板所占的内存即可。本文介绍的是在Windows 3.1下,用Borland C 3.1编程环境,实现用户对内存直接读写的方法,读者不难将它移植到其它编程语言。

1.利用Windows提供的各个段选择符标号,在C源程序中将选择符标号说明为外部变量。其对照表如下:

表1

2.利用宏定义MAKELONG(段内偏移量,&段选择符标号)即可得到一个长指针。

3.经上述方法得到的指针与C语言中定义的指针是一样的。

4.如果使用的段是D000H或E000H或其它上位内存时,需改动Windows的系统配置文件SYSTEM.INI,利用字符编辑器,在[386Enh]小节中加入EmmExclude=xxxxyyyy一行,禁止Windows使用这段存储空间。值xxxx和yyyy是16位内存范围。如开发的插件占用D000H段的64K,则应加入这样一行:EmmExclude=d000-dfff。

利用这一方法,已使我们自己开发的电路板(占用D000H段),在Windows控制下成功地运行了。考虑到读者没有相应的硬件,这里以读取中断向量、计算机ROM的制造时间和对DOS用户通讯区的读写为例,详见以下程序。对于DOS用户通讯区的内容,读者可用DOS的DEBUG程序检查(D命令)和修改(E命令)。DOS的用户通讯区在0040∶00F0H处开始,共计16个字节。在修改时请注意:从0040∶00F0H开始存放可显示ASCII码字符串,并以0结尾。

; MEMORY.DEF 模块定义文件

NAME

Memory

DESCRIPTION'demonstrate an intergrated menu'

EXETYPEWINDOWS

STUB'WINSTUB.EXE'

CODEPRELOAD MOVEABLE DISCARDABLE

DATAPRELOAD MOVEABLE MULTIPLE

HEAPSIZE1024

STACKSIZE8192

EXPORTSWndProc

/*----------

MEMORY.RC

直接读写内存的资源定义文件

----------*/

#include “memory.h”

MemoryMenu MENU

BEGIN

POPUP“取中断向量[&I]”

BEGIN

MENUITEM “int 0&3h”, IDM-INT03H

MENUITEM “int &10h”, IDM-INT10H

MENUITEM “int &21h”, IDM-INT21H

END

POPUP “ROM区域[&R]”

BEGIN

MENUITEM “制造时间[&T]”,

IDM-TIME

MENUITEM “取用户通讯区[&U]”, IDM-READ

MENUITEM “存用户通讯区[&S]”, IDM-WRITE

END

MENUITEM “a退出[&X]”,

IDM-EXIT

END

/*----------

MEMORY.H

直接读写内存的头文件

----------*/

#define IDM-INT03H 101

#d

[1] [2] [3]

篇2:Windows下查询电脑支持最大内存的方法

实现在Windows下直接读写内存的方法

这篇文章主要介绍了Windows下查询电脑支持最大内存的方法,本文使用cmd中的wmicmemphysical get maxcapacity命令解决这个需求,需要的朋友可以参考下

很多用户知道可以给电脑换内存或者是加内存,不过并不清楚自己电脑可以加多大的内存,今天就让小编来教大家怎么查询电脑支持的最大内存,

Windows下查询电脑支持最大内存的方法

1、打开“开始”菜单,点击“运行”按钮

2、在弹出来的窗口输入“CMD”,然后确定或者按下回车键。

3、在命令窗口输入“wmicmemphysical get maxcapacity”然后敲下回车键,

4、然后电脑会给出一串以千字节为单位的数字。我们再把这串数字换算成我们常见的GB单位的。

换算方法是:“得出来的数字/(除以)1024/(除以)1024”

如图:我的电脑得到的是16777216K字节这串数字,那我除以1024再除以1024,就等于16GB了。也就是说,我的这台电脑的硬件,跟我装的这个系统,支持的最大容量的内存是16GB。

注意事项:

1、操作系统不同,主板不同,那么它们所支持最大内存容量也是不同的

2、Win 32位的系统,最高是支持3.25G左右的内存,无论你的主板最高支持多少,但32位系统最高只能支持3.25G左右内存

3、如果你装的内存超过4G或刚好4G,请装64位的操作系统,以获得更大的内存支持,加快个人PC的处理速度。

篇3:python实现在windows服务中新建进程的方法

这篇文章主要介绍了python实现在windows服务中新建进程的方法,涉及Python针对Windows服务与进程操作的相关技巧,需要的朋友可以参考下

本文实例讲述了python实现在windows服务中新建进程的方法,分享给大家供大家参考。具体实现方法如下:

需要安装的软件:python和pywin32,我这里装的分别是python-2.6.amd64、pywin32-217.win-amd64-py2.6

文件名:dma_ws.py

#!pythonimport win32serviceutil import win32service import win32eventimport os from subprocess import Popen, PIPEimport jsonimport signalrun_proc = Noneclass DMA_WS(win32serviceutil.ServiceFramework): _svc_name_ = “DMA_WS” _svc_display_name_ = “DMA_WS” def __init__(self, args): win32serviceutil.ServiceFramework.__init__(self, args) self.hWaitStop = win32event.CreateEvent(None, 0, 0, None) def SvcStop(self): self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) win32event.SetEvent(self.hWaitStop) def SvcDoRun(self): f = file(‘C:/DXMonitorSystem/dma.conf‘) host = json.load(f) f.close dxsrv = os.path.join(host[‘app_path‘], ‘DXHttpServer.py‘) run_proc = Popen([host[‘ironpython‘], dxsrv],stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=False,cwd=host[‘app_path‘])#这里新建进程,注意cwd参数必不可少且要是绝对路径 #res, err = run_proc.communicate() #这个函数内的上面部分都是逻辑处理的部分,可以根据自己的需求订制,但下面这行代码任何服务都需要 win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE) run_proc.kill() # 用于关闭服务所创建的子进程 #os.kill(run_proc.pid, signal.SIGTERM)if __name__==‘__main__‘: win32serviceutil.HandleCommandLine(DMA_WS)

使用方法:

创建服务:Python dma_ws.py install

开始服务:python dma_ws.py start

停止服务:python dma_ws.py stop

希望本文所述对大家的Python程序设计有所帮助,

篇4:windows下实现在bat中启动s h e l l

因为需要用到cygwin,来执行 每日定时任务

有一种cygwin 里面安装定时任务来完成,

但是在windows下或许会比较麻烦,考虑到windows自身有计划任务,如果能将制定计划任务,每天按时启动应用程序,或者bat脚本。

因为脚本是shell脚本,所以在windows下是无法直接执行的,只能通过cygwin。

所以必须现在 bat中启动cygwin,编写bat文件:

1

@echo off

2

rem change to d:

3

d:

4

rem change the dir

5

chdir D:cygwinbin

6

echo “begin...”

7

rem start the cygwin and run the shell file.

8

D:cygwinbinmintty.exe /home/scripts/webFunc

出现一个问题:启动cygwin后,无法运行命令,困扰了好几天,

一直不知道为什么直接启动快捷方式可以运行,但是通过bat启动就无法找到“ls,find,mkdir”等命令。。一开始一直以为是bat中需要给cygwin传递一些参数,查看它的快捷方式,并没有发现很特别的参数。

一直到刚才,才意识到是环境变量的问题,于是在环境变量的path后追加 cygwinbin;问题解决了。

一个需要注意的小地方,我的shell脚本中有用到find, 而windows下find也是有的。所以系统默认使用的是windows下的find命令,于是总是报出一个“参数错误”的异常。 将shell中的find 改为 /user/bin/find 后,问题解决,好在我的脚本并不多,也就两三个地方用的find。更改后正常执行。

另外就是脚本中用到mysql ,所以需要安装mysql 并添加环境变量。

从linux下移植到windows,听起来很简单的事情,做的时候遇到的问题还是挺多,还有一个问题就是代码中出现路径的问题。 当初写代码的同学将所有查找配置的路径都是写死的,/home/...现在移植到的时候,只要自己手动全改成windows能识别的。 以后也要多注意,尽量路径也符合 posix标准。

篇5:实现在console下看pdf文档的一种方法(权宜之计)Unix系统

前提是你装了xpdf软件包(slackware用户可以直接在第一张安装光盘上的x/目录下找到) xpdf软件包有几个处理pdf文件的程序,如pdfinfo,pdfimage,pdftotext要实现标题所说的目标,就要用到pdftotext,这个命令可以将pdf文件转换成.txt/.html文件(所以说是权宜之计嘛^

前提是你装了xpdf软件包(slackware用户可以直接在第一张安装光盘上的x/目录下找到)

xpdf软件包有几个处理pdf文件的程序,如pdfinfo,pdfimage,pdftotext要实现标题所说的目标,就要用到pdftotext,这个命令可以将pdf文件转换成.txt/.html文件(所以说是权宜之计嘛^-^)命令格式pdftotext -layout -eol unix /path/to/yourfile.pdf /path/to/yourfile.txt选项说明:-layout :保持源文件的物理布局(及所见即所得),这个选项一定要有,否则生成的.txt文件会惨不忍睹-eol :设置转换后的文件所用的行结束方式(unix LF,win CR+LF,mac CR),linux上选unix其他较重要的选项还有-enc(用于设置文件编码,若你要转换中文pdf文件,它必须设置正确)等,可参考manpage

原文转自:www.ltesting.net

阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。