;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;FileName: FileTime.asm
;Function: Show the last write time of file "C:/IO.SYS"
; Author: Purple Endurer
;
;Date Summary
;---------------------------------------------------------------------------
; 2006.10.28 Created and Passed!
.386
.model
flat,
stdcall
option
casemap:
none
include /masm32/
include/windows.inc
include /masm32/
include/user32.inc
include /masm32/
include/kernel32.inc
includelib /masm32/
lib/user32.lib
includelib /masm32/
lib/kernel32.lib
GetFileLastWriteTime
PROTO :LPSTR, :LPSTR
SysTime2Str
PROTO :
DWORD, :LPSTR
; SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
.data
; SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
g_szFileSpec
db
"C:/IO.SYS", 0
; SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
.data?
; SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
g_buf20
db 20 dup(?)
; SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
.code
; SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
start:
invoke GetFileLastWriteTime,
OFFSET g_szFileSpec,
OFFSET g_buf20
.if
eax==0
invoke MessageBox, NULL,
OFFSET g_buf20,
OFFSET g_szFileSpec, NULL
.else
invoke MessageBox, NULL,
eax,
OFFSET g_szFileSpec, NULL
.endif
invoke ExitProcess, NULL
;///
; Get the last write time of a file
; input: lpstrFileSpec--the pointer to the file specifier
; output: eax > 0, fail, eax = the begin addr of error message
; eax = 0, success, the time str is stored in g_buffer1
;///
GetFileLastWriteTime
PROC lpstrFileSpec: LPSTR, lpstrBuf: LPSTR
LOCAL hOpenFile: HANDLE
LOCAL stFileLastWriteTime: FILETIME
LOCAL stLocalFileTime: FILETIME
LOCAL stSysTime: SYSTEMTIME
LOCAL dwResult:
DWORD
invoke CreateFile, lpstrFileSpec, GENERIC_READ, FILE_SHARE_READ, NULL,/
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL
.if
eax==INVALID_HANDLE_VALUE
mov
eax,
OFFSET g_szFailToCreateFile
.else
mov hOpenFile,
eax
; BOOL GetFileTime(
; HANDLE hFile, // identifies the file
; LPFILETIME lpCreationTime, // address of creation time
; LPFILETIME lpLastAccessTime,// address of last access time
; LPFILETIME lpLastWriteTime // address of last write time
; );
invoke GetFileTime, hOpenFile, NULL, NULL,
ADDR stFileLastWriteTime
.if
eax == 0
mov dwResult,
OFFSET g_szGetFileTimeErr
.else
; BOOL FileTimeToSystemTime(
; CONST FILETIME *lpFileTime, // pointer to file time to convert
; LPSYSTEMTIME lpSystemTime // pointer to structure to receive system time
; );
invoke FileTimeToLocalFileTime,
ADDR stFileLastWriteTime,
ADDR stLocalFileTime
invoke FileTimeToSystemTime,
ADDR stLocalFileTime,
ADDR stSysTime
.if
eax==0
mov dwResult,
OFFSET g_szFileTimeToSystemTimeErr
.else
invoke SysTime2Str,
ADDR stSysTime, lpstrBuf
mov dwResult, 0
.endif
.endif
invoke CloseHandle, hOpenFile
mov
eax, dwResult
.endif
ret
g_szFailToCreateFile
db
"创建文件失败!", 0
g_szGetFileTimeErr
db
"取文件时间失败!", 0
g_szFileTimeToSystemTimeErr
db
"转换时间失败!", 0
GetFileLastWriteTime
ENDP
SysTime2Str
PROC lpSysTime:
DWORD, lpstrBuf: LPSTR
xor
eax,
eax
jz @F
g_szFmt4SysTime
db
"%d-%d-%d %d:%d:%d", 0
@@:
pushad
mov
edi, lpSysTime
assume
edi:
ptr SYSTEMTIME
movzx
eax, [
edi].wYear
movzx
ebx, [
edi].wMonth
movzx
ecx, [
edi].wDay
movzx
edx, [
edi].wHour
movzx
esi, [
edi].wMinute
movzx
edi, [
edi].wSecond
assume
edi: nothing
invoke wsprintf, lpstrBuf,
OFFSET g_szFmt4SysTime,
eax,
ebx,
ecx,
edx,
esi,
edi
popad
ret
SysTime2Str
ENDP
end
MASM32编程获取文件最后修改时间
原创
©著作权归作者所有:来自51CTO博客作者PurpleEndurer的原创作品,请联系作者获取转载授权,否则将追究法律责任

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Ubuntu之修改时区/时间
查看当前时间及时区状态sudo timedatectl status# 显示当前时区为Asia/Shanghai查看当前系统时间sudo date查看当前系统时间及时区sudo date -R# 显示当前时间及对应时区,时区为“+0800”北京时区修改硬件时间修改日期格式:MM月/DD日/YYYY年sudo date -s MM/DD/YYYY修改时间:hh时:mm分:ss秒 sudo date
ubuntu修改时区 ubuntu修改时间 ubuntu修改时间及时区 ubuntu修改时区和时间 ubuntu修改系统时间 -
Docker修改容器的时间
Docker容器内系统时间不准确,可能会导致一系列问题,尤其是在依赖于时间戳进行操作的应用和服务中。
系统时间 Docker 时间同步 后端 服务器 -
用MASM32编程截取屏幕
;; 功能: 把屏幕内容拷贝到剪贴板并显
编程 null include dialog command -
MASM32编程分析、获取命令行参数
我们在执行应用程序时经常会指定命令行参数来传递程序运行所需要的数据,控制程序的执行。高级程序设计语言会自动分析和提供命令行参数
编程 语言 汇编 windows api -
MASM32编程使用自动完成功能
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
编程 null include windows c -
masm32 链接问题
网上也没找到解决办法,经过后来思考了一下,会不会是link.exe这个玩意有问题?当我参考资料学
汇编 Windows 参考资料 绝对路径 -
MASM32编程通过WMI获取杀毒软件信息
Windows XP SP2 开始提供安全中心,杀毒软件会向安全中心注册报道,这样windows就可以检测到系统中是否安装了杀毒软件。
杀毒软件 编程 null vbscript windows -
golang获取文件创建时间,最后访问时间,最后修改时间
简言1. golang为我们提供了完善的文件操作库,例如os,ioutil等2. windows下,linux下获取文件时间信息的方式不太一
golang获取文件创建时间 golang获取文件最后访问 golang获取文件最后修改 linux 递归 -
MASM32汇编SDK安装
打开终端输入ml出现如下图信息表示安装成功。MA
android 编译器 官网 配置环境变量