Fast WindowsAPI Call cached by user programs

Share your advanced PureBasic knowledge/code with the community.
User avatar
oryaaaaa
Addict
Addict
Posts: 825
Joined: Mon Jan 12, 2004 11:40 pm
Location: Okazaki, JAPAN

Fast WindowsAPI Call cached by user programs

Post by oryaaaaa »

I am very lazy seeker.

Code: Select all

Global Pre_Buffer.s, Pre_Buffer_count.i, Pre_Buffer_no.i
Pre_Buffer = GetClipboardText()
Pre_Buffer_count = CountString(Pre_Buffer, Chr(13)+Chr(10))
For Pre_Buffer_no=1 To Pre_Buffer_count
  Debug "!extrn "+StringField(Pre_Buffer, Pre_Buffer_no, Chr(13)+Chr(10))
Next
For Pre_Buffer_no=1 To Pre_Buffer_count
  Debug "!NOP QWORD ["+StringField(Pre_Buffer, Pre_Buffer_no, Chr(13)+Chr(10))+"]"
  Debug "!NOP QWORD ["+StringField(Pre_Buffer, Pre_Buffer_no, Chr(13)+Chr(10))+"+8]"
  Debug "!NOP QWORD ["+StringField(Pre_Buffer, Pre_Buffer_no, Chr(13)+Chr(10))+"+16]"
Next
Debug "!NOP QWORD [Rip]"
Debug "!NOP QWORD [Rip]"
windows/win32/api/fileapi, this text set clipboardText.
AreFileApisANSI
CompareFileTime
CreateDirectoryA
CreateDirectoryW
CreateFile2
CreateFileA
CreateFileW
DefineDosDeviceW
DeleteFileA
DeleteFileW
DeleteVolumeMountPointW
FileTimeToLocalFileTime
FindClose
FindCloseChangeNotification
FindFirstChangeNotificationA
FindFirstChangeNotificationW
FindFirstFileA
FindFirstFileExA
FindFirstFileExW
FindFirstFileNameW
FindFirstFileW
FindFirstStreamW
FindFirstVolumeW
FindNextChangeNotification
FindNextFileA
FindNextFileNameW
FindNextFileW
FindNextStreamW
FindNextVolumeW
FindVolumeClose
FlushFileBuffers
GetCompressedFileSizeA
GetCompressedFileSizeW
GetDiskFreeSpaceA
GetDiskFreeSpaceExA
GetDiskFreeSpaceExW
GetDiskFreeSpaceW
GetDriveTypeA
GetDriveTypeW
GetFileAttributesA
GetFileAttributesExA
GetFileAttributesExW
GetFileAttributesW
GetFileInformationByHandle
GetFileSize
GetFileSizeEx
GetFileTime
GetFileType
GetFinalPathNameByHandleA
GetFinalPathNameByHandleW
GetFullPathNameA
GetFullPathNameW
GetLogicalDrives
GetLogicalDriveStringsW
GetLongPathNameA
GetLongPathNameW
GetShortPathNameW
GetTempFileNameA
GetTempFileNameW
GetTempPathA
GetTempPathW
GetVolumeInformationA
GetVolumeInformationByHandleW
GetVolumeInformationW
GetVolumeNameForVolumeMountPointW
GetVolumePathNamesForVolumeNameW
GetVolumePathNameW
LocalFileTimeToFileTime
LockFile
LockFileEx
QueryDosDeviceW
ReadFile
ReadFileEx
ReadFileScatter
RemoveDirectoryA
RemoveDirectoryW
SetEndOfFile
SetFileApisToANSI
SetFileApisToOEM
SetFileAttributesA
SetFileAttributesW
SetFileInformationByHandle
SetFileIoOverlappedRange
SetFilePointer
SetFilePointerEx
SetFileTime
SetFileValidData
UnlockFile
UnlockFileEx
WriteFile
WriteFileEx
WriteFileGather
Results

Code: Select all

!extrn AreFileApisANSI
!extrn CompareFileTime
!extrn CreateDirectoryA
!extrn CreateDirectoryW
!extrn CreateFile2
!extrn CreateFileA
!extrn CreateFileW
!extrn DefineDosDeviceW
!extrn DeleteFileA
!extrn DeleteFileW
!extrn DeleteVolumeMountPointW
!extrn FileTimeToLocalFileTime
!extrn FindClose
!extrn FindCloseChangeNotification
!extrn FindFirstChangeNotificationA
!extrn FindFirstChangeNotificationW
!extrn FindFirstFileA
!extrn FindFirstFileExA
!extrn FindFirstFileExW
!extrn FindFirstFileNameW
!extrn FindFirstFileW
!extrn FindFirstStreamW
!extrn FindFirstVolumeW
!extrn FindNextChangeNotification
!extrn FindNextFileA
!extrn FindNextFileNameW
!extrn FindNextFileW
!extrn FindNextStreamW
!extrn FindNextVolumeW
!extrn FindVolumeClose
!extrn FlushFileBuffers
!extrn GetCompressedFileSizeA
!extrn GetCompressedFileSizeW
!extrn GetDiskFreeSpaceA
!extrn GetDiskFreeSpaceExA
!extrn GetDiskFreeSpaceExW
!extrn GetDiskFreeSpaceW
!extrn GetDriveTypeA
!extrn GetDriveTypeW
!extrn GetFileAttributesA
!extrn GetFileAttributesExA
!extrn GetFileAttributesExW
!extrn GetFileAttributesW
!extrn GetFileInformationByHandle
!extrn GetFileSize
!extrn GetFileSizeEx
!extrn GetFileTime
!extrn GetFileType
!extrn GetFinalPathNameByHandleA
!extrn GetFinalPathNameByHandleW
!extrn GetFullPathNameA
!extrn GetFullPathNameW
!extrn GetLogicalDrives
!extrn GetLogicalDriveStringsW
!extrn GetLongPathNameA
!extrn GetLongPathNameW
!extrn GetShortPathNameW
!extrn GetTempFileNameA
!extrn GetTempFileNameW
!extrn GetTempPathA
!extrn GetTempPathW
!extrn GetVolumeInformationA
!extrn GetVolumeInformationByHandleW
!extrn GetVolumeInformationW
!extrn GetVolumeNameForVolumeMountPointW
!extrn GetVolumePathNamesForVolumeNameW
!extrn GetVolumePathNameW
!extrn LocalFileTimeToFileTime
!extrn LockFile
!extrn LockFileEx
!extrn QueryDosDeviceW
!extrn ReadFile
!extrn ReadFileEx
!extrn ReadFileScatter
!extrn RemoveDirectoryA
!extrn RemoveDirectoryW
!extrn SetEndOfFile
!extrn SetFileApisToANSI
!extrn SetFileApisToOEM
!extrn SetFileAttributesA
!extrn SetFileAttributesW
!extrn SetFileInformationByHandle
!extrn SetFileIoOverlappedRange
!extrn SetFilePointer
!extrn SetFilePointerEx
!extrn SetFileTime
!extrn SetFileValidData
!extrn UnlockFile
!extrn UnlockFileEx
!extrn WriteFile
!extrn WriteFileEx
!extrn WriteFileGather
!NOP QWORD [AreFileApisANSI]
!NOP QWORD [AreFileApisANSI+8]
!NOP QWORD [AreFileApisANSI+16]
!NOP QWORD [CompareFileTime]
!NOP QWORD [CompareFileTime+8]
!NOP QWORD [CompareFileTime+16]
!NOP QWORD [CreateDirectoryA]
!NOP QWORD [CreateDirectoryA+8]
!NOP QWORD [CreateDirectoryA+16]
!NOP QWORD [CreateDirectoryW]
!NOP QWORD [CreateDirectoryW+8]
!NOP QWORD [CreateDirectoryW+16]
!NOP QWORD [CreateFile2]
!NOP QWORD [CreateFile2+8]
!NOP QWORD [CreateFile2+16]
!NOP QWORD [CreateFileA]
!NOP QWORD [CreateFileA+8]
!NOP QWORD [CreateFileA+16]
!NOP QWORD [CreateFileW]
!NOP QWORD [CreateFileW+8]
!NOP QWORD [CreateFileW+16]
!NOP QWORD [DefineDosDeviceW]
!NOP QWORD [DefineDosDeviceW+8]
!NOP QWORD [DefineDosDeviceW+16]
!NOP QWORD [DeleteFileA]
!NOP QWORD [DeleteFileA+8]
!NOP QWORD [DeleteFileA+16]
!NOP QWORD [DeleteFileW]
!NOP QWORD [DeleteFileW+8]
!NOP QWORD [DeleteFileW+16]
!NOP QWORD [DeleteVolumeMountPointW]
!NOP QWORD [DeleteVolumeMountPointW+8]
!NOP QWORD [DeleteVolumeMountPointW+16]
!NOP QWORD [FileTimeToLocalFileTime]
!NOP QWORD [FileTimeToLocalFileTime+8]
!NOP QWORD [FileTimeToLocalFileTime+16]
!NOP QWORD [FindClose]
!NOP QWORD [FindClose+8]
!NOP QWORD [FindClose+16]
!NOP QWORD [FindCloseChangeNotification]
!NOP QWORD [FindCloseChangeNotification+8]
!NOP QWORD [FindCloseChangeNotification+16]
!NOP QWORD [FindFirstChangeNotificationA]
!NOP QWORD [FindFirstChangeNotificationA+8]
!NOP QWORD [FindFirstChangeNotificationA+16]
!NOP QWORD [FindFirstChangeNotificationW]
!NOP QWORD [FindFirstChangeNotificationW+8]
!NOP QWORD [FindFirstChangeNotificationW+16]
!NOP QWORD [FindFirstFileA]
!NOP QWORD [FindFirstFileA+8]
!NOP QWORD [FindFirstFileA+16]
!NOP QWORD [FindFirstFileExA]
!NOP QWORD [FindFirstFileExA+8]
!NOP QWORD [FindFirstFileExA+16]
!NOP QWORD [FindFirstFileExW]
!NOP QWORD [FindFirstFileExW+8]
!NOP QWORD [FindFirstFileExW+16]
!NOP QWORD [FindFirstFileNameW]
!NOP QWORD [FindFirstFileNameW+8]
!NOP QWORD [FindFirstFileNameW+16]
!NOP QWORD [FindFirstFileW]
!NOP QWORD [FindFirstFileW+8]
!NOP QWORD [FindFirstFileW+16]
!NOP QWORD [FindFirstStreamW]
!NOP QWORD [FindFirstStreamW+8]
!NOP QWORD [FindFirstStreamW+16]
!NOP QWORD [FindFirstVolumeW]
!NOP QWORD [FindFirstVolumeW+8]
!NOP QWORD [FindFirstVolumeW+16]
!NOP QWORD [FindNextChangeNotification]
!NOP QWORD [FindNextChangeNotification+8]
!NOP QWORD [FindNextChangeNotification+16]
!NOP QWORD [FindNextFileA]
!NOP QWORD [FindNextFileA+8]
!NOP QWORD [FindNextFileA+16]
!NOP QWORD [FindNextFileNameW]
!NOP QWORD [FindNextFileNameW+8]
!NOP QWORD [FindNextFileNameW+16]
!NOP QWORD [FindNextFileW]
!NOP QWORD [FindNextFileW+8]
!NOP QWORD [FindNextFileW+16]
!NOP QWORD [FindNextStreamW]
!NOP QWORD [FindNextStreamW+8]
!NOP QWORD [FindNextStreamW+16]
!NOP QWORD [FindNextVolumeW]
!NOP QWORD [FindNextVolumeW+8]
!NOP QWORD [FindNextVolumeW+16]
!NOP QWORD [FindVolumeClose]
!NOP QWORD [FindVolumeClose+8]
!NOP QWORD [FindVolumeClose+16]
!NOP QWORD [FlushFileBuffers]
!NOP QWORD [FlushFileBuffers+8]
!NOP QWORD [FlushFileBuffers+16]
!NOP QWORD [GetCompressedFileSizeA]
!NOP QWORD [GetCompressedFileSizeA+8]
!NOP QWORD [GetCompressedFileSizeA+16]
!NOP QWORD [GetCompressedFileSizeW]
!NOP QWORD [GetCompressedFileSizeW+8]
!NOP QWORD [GetCompressedFileSizeW+16]
!NOP QWORD [GetDiskFreeSpaceA]
!NOP QWORD [GetDiskFreeSpaceA+8]
!NOP QWORD [GetDiskFreeSpaceA+16]
!NOP QWORD [GetDiskFreeSpaceExA]
!NOP QWORD [GetDiskFreeSpaceExA+8]
!NOP QWORD [GetDiskFreeSpaceExA+16]
!NOP QWORD [GetDiskFreeSpaceExW]
!NOP QWORD [GetDiskFreeSpaceExW+8]
!NOP QWORD [GetDiskFreeSpaceExW+16]
!NOP QWORD [GetDiskFreeSpaceW]
!NOP QWORD [GetDiskFreeSpaceW+8]
!NOP QWORD [GetDiskFreeSpaceW+16]
!NOP QWORD [GetDriveTypeA]
!NOP QWORD [GetDriveTypeA+8]
!NOP QWORD [GetDriveTypeA+16]
!NOP QWORD [GetDriveTypeW]
!NOP QWORD [GetDriveTypeW+8]
!NOP QWORD [GetDriveTypeW+16]
!NOP QWORD [GetFileAttributesA]
!NOP QWORD [GetFileAttributesA+8]
!NOP QWORD [GetFileAttributesA+16]
!NOP QWORD [GetFileAttributesExA]
!NOP QWORD [GetFileAttributesExA+8]
!NOP QWORD [GetFileAttributesExA+16]
!NOP QWORD [GetFileAttributesExW]
!NOP QWORD [GetFileAttributesExW+8]
!NOP QWORD [GetFileAttributesExW+16]
!NOP QWORD [GetFileAttributesW]
!NOP QWORD [GetFileAttributesW+8]
!NOP QWORD [GetFileAttributesW+16]
!NOP QWORD [GetFileInformationByHandle]
!NOP QWORD [GetFileInformationByHandle+8]
!NOP QWORD [GetFileInformationByHandle+16]
!NOP QWORD [GetFileSize]
!NOP QWORD [GetFileSize+8]
!NOP QWORD [GetFileSize+16]
!NOP QWORD [GetFileSizeEx]
!NOP QWORD [GetFileSizeEx+8]
!NOP QWORD [GetFileSizeEx+16]
!NOP QWORD [GetFileTime]
!NOP QWORD [GetFileTime+8]
!NOP QWORD [GetFileTime+16]
!NOP QWORD [GetFileType]
!NOP QWORD [GetFileType+8]
!NOP QWORD [GetFileType+16]
!NOP QWORD [GetFinalPathNameByHandleA]
!NOP QWORD [GetFinalPathNameByHandleA+8]
!NOP QWORD [GetFinalPathNameByHandleA+16]
!NOP QWORD [GetFinalPathNameByHandleW]
!NOP QWORD [GetFinalPathNameByHandleW+8]
!NOP QWORD [GetFinalPathNameByHandleW+16]
!NOP QWORD [GetFullPathNameA]
!NOP QWORD [GetFullPathNameA+8]
!NOP QWORD [GetFullPathNameA+16]
!NOP QWORD [GetFullPathNameW]
!NOP QWORD [GetFullPathNameW+8]
!NOP QWORD [GetFullPathNameW+16]
!NOP QWORD [GetLogicalDrives]
!NOP QWORD [GetLogicalDrives+8]
!NOP QWORD [GetLogicalDrives+16]
!NOP QWORD [GetLogicalDriveStringsW]
!NOP QWORD [GetLogicalDriveStringsW+8]
!NOP QWORD [GetLogicalDriveStringsW+16]
!NOP QWORD [GetLongPathNameA]
!NOP QWORD [GetLongPathNameA+8]
!NOP QWORD [GetLongPathNameA+16]
!NOP QWORD [GetLongPathNameW]
!NOP QWORD [GetLongPathNameW+8]
!NOP QWORD [GetLongPathNameW+16]
!NOP QWORD [GetShortPathNameW]
!NOP QWORD [GetShortPathNameW+8]
!NOP QWORD [GetShortPathNameW+16]
!NOP QWORD [GetTempFileNameA]
!NOP QWORD [GetTempFileNameA+8]
!NOP QWORD [GetTempFileNameA+16]
!NOP QWORD [GetTempFileNameW]
!NOP QWORD [GetTempFileNameW+8]
!NOP QWORD [GetTempFileNameW+16]
!NOP QWORD [GetTempPathA]
!NOP QWORD [GetTempPathA+8]
!NOP QWORD [GetTempPathA+16]
!NOP QWORD [GetTempPathW]
!NOP QWORD [GetTempPathW+8]
!NOP QWORD [GetTempPathW+16]
!NOP QWORD [GetVolumeInformationA]
!NOP QWORD [GetVolumeInformationA+8]
!NOP QWORD [GetVolumeInformationA+16]
!NOP QWORD [GetVolumeInformationByHandleW]
!NOP QWORD [GetVolumeInformationByHandleW+8]
!NOP QWORD [GetVolumeInformationByHandleW+16]
!NOP QWORD [GetVolumeInformationW]
!NOP QWORD [GetVolumeInformationW+8]
!NOP QWORD [GetVolumeInformationW+16]
!NOP QWORD [GetVolumeNameForVolumeMountPointW]
!NOP QWORD [GetVolumeNameForVolumeMountPointW+8]
!NOP QWORD [GetVolumeNameForVolumeMountPointW+16]
!NOP QWORD [GetVolumePathNamesForVolumeNameW]
!NOP QWORD [GetVolumePathNamesForVolumeNameW+8]
!NOP QWORD [GetVolumePathNamesForVolumeNameW+16]
!NOP QWORD [GetVolumePathNameW]
!NOP QWORD [GetVolumePathNameW+8]
!NOP QWORD [GetVolumePathNameW+16]
!NOP QWORD [LocalFileTimeToFileTime]
!NOP QWORD [LocalFileTimeToFileTime+8]
!NOP QWORD [LocalFileTimeToFileTime+16]
!NOP QWORD [LockFile]
!NOP QWORD [LockFile+8]
!NOP QWORD [LockFile+16]
!NOP QWORD [LockFileEx]
!NOP QWORD [LockFileEx+8]
!NOP QWORD [LockFileEx+16]
!NOP QWORD [QueryDosDeviceW]
!NOP QWORD [QueryDosDeviceW+8]
!NOP QWORD [QueryDosDeviceW+16]
!NOP QWORD [ReadFile]
!NOP QWORD [ReadFile+8]
!NOP QWORD [ReadFile+16]
!NOP QWORD [ReadFileEx]
!NOP QWORD [ReadFileEx+8]
!NOP QWORD [ReadFileEx+16]
!NOP QWORD [ReadFileScatter]
!NOP QWORD [ReadFileScatter+8]
!NOP QWORD [ReadFileScatter+16]
!NOP QWORD [RemoveDirectoryA]
!NOP QWORD [RemoveDirectoryA+8]
!NOP QWORD [RemoveDirectoryA+16]
!NOP QWORD [RemoveDirectoryW]
!NOP QWORD [RemoveDirectoryW+8]
!NOP QWORD [RemoveDirectoryW+16]
!NOP QWORD [SetEndOfFile]
!NOP QWORD [SetEndOfFile+8]
!NOP QWORD [SetEndOfFile+16]
!NOP QWORD [SetFileApisToANSI]
!NOP QWORD [SetFileApisToANSI+8]
!NOP QWORD [SetFileApisToANSI+16]
!NOP QWORD [SetFileApisToOEM]
!NOP QWORD [SetFileApisToOEM+8]
!NOP QWORD [SetFileApisToOEM+16]
!NOP QWORD [SetFileAttributesA]
!NOP QWORD [SetFileAttributesA+8]
!NOP QWORD [SetFileAttributesA+16]
!NOP QWORD [SetFileAttributesW]
!NOP QWORD [SetFileAttributesW+8]
!NOP QWORD [SetFileAttributesW+16]
!NOP QWORD [SetFileInformationByHandle]
!NOP QWORD [SetFileInformationByHandle+8]
!NOP QWORD [SetFileInformationByHandle+16]
!NOP QWORD [SetFileIoOverlappedRange]
!NOP QWORD [SetFileIoOverlappedRange+8]
!NOP QWORD [SetFileIoOverlappedRange+16]
!NOP QWORD [SetFilePointer]
!NOP QWORD [SetFilePointer+8]
!NOP QWORD [SetFilePointer+16]
!NOP QWORD [SetFilePointerEx]
!NOP QWORD [SetFilePointerEx+8]
!NOP QWORD [SetFilePointerEx+16]
!NOP QWORD [SetFileTime]
!NOP QWORD [SetFileTime+8]
!NOP QWORD [SetFileTime+16]
!NOP QWORD [SetFileValidData]
!NOP QWORD [SetFileValidData+8]
!NOP QWORD [SetFileValidData+16]
!NOP QWORD [UnlockFile]
!NOP QWORD [UnlockFile+8]
!NOP QWORD [UnlockFile+16]
!NOP QWORD [UnlockFileEx]
!NOP QWORD [UnlockFileEx+8]
!NOP QWORD [UnlockFileEx+16]
!NOP QWORD [WriteFile]
!NOP QWORD [WriteFile+8]
!NOP QWORD [WriteFile+16]
!NOP QWORD [WriteFileEx]
!NOP QWORD [WriteFileEx+8]
!NOP QWORD [WriteFileEx+16]
!NOP QWORD [WriteFileGather]
!NOP QWORD [WriteFileGather+8]
!NOP QWORD [WriteFileGather+16]
!NOP QWORD [Rip]
!NOP QWORD [Rip]
Left(Buffer(), 6) = " CALL" And (Right(Buffer(), 18)="PB_WaitWindowEvent" Or Right(Buffer(), 19)="PB_WaitWindowEvent2")
Left(Buffer(), 6) = " CALL" And (Right(Buffer(), 8 )="PB_Delay" Or Right(Buffer(), 6)="Sleep_")

WaitWindowEvent or Delay
This API Cache codes ( NOP QWORD [API] [API+8] [API+16] NOP QWORD [Rip] [Rip] )

You Don't remove last 2 lines. CPU temp is OVER CLOCKED EXTREEEEAM BAN your PC.

I use Core i7-13700, my google chrome is improved speed.

my sample code

Code: Select all

Macro MajiorityBuild_Tunes_13
  ForEach Buffer()
    If Left(Buffer(), 6) = "  CALL" And (Right(Buffer(), 18)="PB_WaitWindowEvent" Or Right(Buffer(), 19)="PB_WaitWindowEvent2")
      Debug "MajiorityBuild_Tunes_13"
      ForEach InstructionName()
        AddElement(Buffer()) : Buffer() = "NOP QWORD ["+InstructionName()+"]"
        AddElement(Buffer()) : Buffer() = "NOP QWORD ["+InstructionName()+"+8]"
        AddElement(Buffer()) : Buffer() = "NOP QWORD ["+InstructionName()+"+16]"
      Next
      AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
      AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
    EndIf
  Next
EndMacro

Macro MajiorityBuild_Tunes_15
  ForEach Buffer()
    If Left(Buffer(), 6) = "  CALL" And (Right(Buffer(), 8)="PB_Delay" Or Right(Buffer(), 6)="Sleep_")
      Debug "MajiorityBuild_Tunes_15"
      ForEach InstructionName()
        AddElement(Buffer()) : Buffer() = "NOP QWORD ["+InstructionName()+"]"
        AddElement(Buffer()) : Buffer() = "NOP QWORD ["+InstructionName()+"+8]"
        AddElement(Buffer()) : Buffer() = "NOP QWORD ["+InstructionName()+"+16]"
      Next
      AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
      AddElement(Buffer()) : Buffer() = "NOP QWORD [Rip]"
    EndIf
  Next
EndMacro
Rinzwind
Enthusiast
Enthusiast
Posts: 690
Joined: Wed Mar 11, 2009 4:06 pm
Location: NL

Re: Fast WindowsAPI Call cached by user programs

Post by Rinzwind »

First, post runnable code examples with clear description/purpose. Second, do you know what you are saying yourself?
Keep going. The vector output of the clear cache of the CPU is tripled when you double run the PB program into the terminator.
Post Reply