AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi RtlCompressBuffer alternative gesucht!
Thema durchsuchen
Ansicht
Themen-Optionen

RtlCompressBuffer alternative gesucht!

Ein Thema von Fukiszo · begonnen am 17. Jan 2018 · letzter Beitrag vom 18. Jan 2018
Antwort Antwort
Fukiszo
(Gast)

n/a Beiträge
 
#1

RtlCompressBuffer alternative gesucht!

  Alt 17. Jan 2018, 11:28
Hallo, ich nutze in einem meiner projekte die RtlCompressBuffer funktion um, wie der name bereits vermuten lässt, etwas zu komprimieren.
Nun bin ich über die WMI CompressFile funktion gestolpert die bei NTFS dateisystem per windows daten schrumpfen lässt.

function CompressFile(const FileName:string):integer;var FSWbemLocator : OLEVariant; FWMIService : OLEVariant; FWbemObject : OLEVariant;begin; FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator'); FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', ''); FWbemObject := FWMIService.Get(Format('CIM_DataFile.Name="%s"',[StringReplace(FileName,'\','\\',[rfReplaceAll])])); Result:=FWbemObject.Compress(); aber diese funktion gilt ja nur für NTFS und eine datei als ganzes.

Jetzt frag ich mich, weil ja RtlCompressBuffer eine undokumentierte und möglicherweise nicht in jeder windows version zur verfügung stehende funktion ist, ob es eine legitime funktion gibt, die wie RtlCompressBuffer arbeitet (im speicher)
mit der man "On-The-Fly" etwas komprimieren kann damit ich ein "legitimes" produkt habe.

hier meine deklarationen mit "RtlCompressBuffer" damit ihr nachvollziehen wie ich es aufrufe:

Delphi-Quellcode:
function RtlGetCompressionWorkSpaceSize(CompressionFormatAndEngine: ULONG; CompressBufferWorkSpaceSize, CompressFragmentWorkSpaceSize : PULONG): NTSTATUS; stdcall;
function RtlCompressBuffer(CompressionFormatAndEngine:ULONG; SourceBuffer: PVOID; SourceBufferLength: ULONG; DestinationBuffer: PVOID; DestinationBufferLength: ULONG; SourceChunkSize: ULONG; pDestinationSize: PULONG; WorkspaceBuffer: PVOID):NTSTATUS; stdcall;
function RtlDeCompressBuffer(CompressionFormatAndEngine:ULONG; DestinationBuffer: PVOID; DestinationBufferLength: ULONG; SourceBuffer: PVOID; SourceBufferLength: ULONG; pDestinationSize: PULONG):NTSTATUS; stdcall;

implementation

const ntdll = 'ntdll.dll';

function RtlGetCompressionWorkSpaceSize; external ntdll name 'RtlGetCompressionWorkSpaceSize';
function RtlCompressBuffer; external ntdll name 'RtlCompressBuffer';
function RtlDeCompressBuffer; external ntdll name 'RtlDecompressBuffer';
im wesentlichen ging es mir darum eine leichte kompression zu erzielen die keinerlei Third-Party software einsetzt.
alles sollte mit windows bordmitteln per WinAPI schaffbar sein...
kompression muss weder stark noch "knackfest" sein, sie soll lediglich einen ersten blick in eine datei abfälschen.
es geht hier um geschwindigkeit und woran ich halt jetzt grad grübel, kompatibilität zu windows.

im DP hab ich bis jetzt noch nicht viel brauchbare infos dazu gefunden aber der eine oder andere hat mit sicherheit einen guten rat für mich parat, oder?

Besten Dank für's lesen und hoffentlich auch beantworten hehe

ps: nutzt nicht meine dargestellten funktionen in eurem code, sie sind bestimmt böse weshalb ich dieses Thema schrieb.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: RtlCompressBuffer alternative gesucht!

  Alt 17. Jan 2018, 11:34
Habe das hier gefunden:

https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Scheint aber erst ab Windows 8 zu funktionieren.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Fukiszo
(Gast)

n/a Beiträge
 
#3

AW: RtlCompressBuffer alternative gesucht!

  Alt 17. Jan 2018, 11:53
der link ist klasse von dir, aber wie bereits von dir vermutet nicht generell windows(NT) kompatibel,
da würd ich das eine übel gegen ein anderes tauschen.
mein produkt muss leider auch mit XP funktionieren, was es ja momentan auch macht, mich stört halt der umstand das es eine undokumentierte funktion ist die jederzeit obsolet werden könnte und mit windows update XYZ weg sein könnte.

Besten Dank!
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#4

AW: RtlCompressBuffer alternative gesucht!

  Alt 17. Jan 2018, 14:13
Wieso ist die undokumentiert?

https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.213 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: RtlCompressBuffer alternative gesucht!

  Alt 17. Jan 2018, 14:17
Und was steht dort:

Version
Available starting in Windows XP.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#6

AW: RtlCompressBuffer alternative gesucht!

  Alt 17. Jan 2018, 14:25
Und was steht dort:

Version
Available starting in Windows XP.
Ich verstehe euch heute nicht Ich glaub ich brauch mehr schlaf.

Zitat:
Jetzt frag ich mich, weil ja RtlCompressBuffer eine undokumentierte und möglicherweise nicht in jeder windows version zur verfügung stehende funktion ist
Also Funktion ist dokumentiert!

Zitat:
...mein produkt muss leider auch mit XP funktionieren...
Funktion ist in XP verfügbar.

Ist das nicht das, was Fukiszo wollte?
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz