Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi RtlTimeToTimeFields im Usermode möglich? (https://www.delphipraxis.net/104573-rtltimetotimefields-im-usermode-moeglich.html)

richard_boderich 6. Dez 2007 17:31


RtlTimeToTimeFields im Usermode möglich?
 
Hallo

Könnte mir jemand sagen, ob die Funktion "RtlTimeToTimeFields" auch im Usermodus benutzt werden kann oder nur im Kernelmode?

mfG Richard

Luckie 6. Dez 2007 19:22

Re: RtlTimeToTimeFields im Usermode möglich?
 
Noch nie von der Funktion gehört. Aber warum probierst du es nicht einfach aus?

richard_boderich 6. Dez 2007 19:26

Re: RtlTimeToTimeFields im Usermode möglich?
 
@Luckie

Das habe ich. Ich bekomme immer eine Zugriffsverletzung in Modul NTDLL.dll
Kann aber auch an fehlerhaften Argumenten liegen?

mfG Richard

SirThornberry 6. Dez 2007 19:36

Re: RtlTimeToTimeFields im Usermode möglich?
 
wie rufst du die Funktion auf?
Wenn ich mir die Funktion im msdn anschaue sehe ich keinen Grund warum sie nicht im Usermode funktionieren sollte. Allerdings würde ich es auch icht ausschließen da es wdk steht.

sirius 6. Dez 2007 20:05

Re: RtlTimeToTimeFields im Usermode möglich?
 
Delphi-Quellcode:
type TTimefield=packed record
       Year:word;
       month:word;
       day:word;
       hour:word;
       minute:word;
       second:word;
       milliseconds:word;
       weekday:word;
end;
var lib:hmodule;
    TimeToTimeField:procedure(var time:int64;var timefield:TTimeField);stdcall;
    QuerysystemTime:procedure(var time:int64);stdcall;
    systime:TSystemTime;
    timefield:TTimeField;
    time64:int64;
begin
  lib:=getmodulehandle('ntdll');
  TimeToTimeField:=getprocaddress(lib,'RtlTimeToTimeFields');
  QuerySystemTime:=getprocaddress(lib,'NtQuerySystemTime');


  //Variante 1
  Querysystemtime(time64);
  TimeToTimeField(time64,timeField);
  showmessage(inttostr(TimeField.Day)+'.'+
              inttostr(TimeField.Month)+'.'+
              inttostr(TimeField.Year)+#13#10+
              inttostr(TimeField.Hour)+':'+
              inttostr(TimeField.Minute)+':'+
              inttostr(TimeField.Second)+'.'+
              inttostr(TimeField.Milliseconds)+#13#10+
              inttostr(TimeField.Weekday));


  //Variante 2
  DateTimeToSystemTime(now,systime);
  showmessage(inttostr(systime.wDay)+'.'+
              inttostr(systime.wMonth)+'.'+
              inttostr(systime.wYear)+#13#10+
              inttostr(systime.wHour)+':'+
              inttostr(systime.wMinute)+':'+
              inttostr(systime.wSecond)+'.'+
              inttostr(systime.wMilliseconds)+#13#10+
              inttostr(systime.wDayOfWeek));
end;

richard_boderich 7. Dez 2007 17:16

Re: RtlTimeToTimeFields im Usermode möglich?
 
Liste der Anhänge anzeigen (Anzahl: 1)
@All
Also ich komme hier einfach nicht weiter. Habe mal mein Demoproject angehängt. Ich möchte die Lastwritetime eines RegistryKeys ermitteln. Die Api
funktioniert auch, wie man an dem Keynamen und der Länge sehen kann. Die Keylänge ist ja immer doppelt so groß, wie die Stringlänge, da Unicode (2 Byte -> 1 Char)
Ich hoffe jemand kann mir hier helfen, da ich nun schon fast Zwei Tage an diesem Mist sitze. Die MSDN zitiere ich mittlerweile schon im Schlaf und meine Frau mault
mich auch schon voll, weil sie mich net mehr zu Gesicht bekommt.

Es geht übrigens um diese Strucktur

KEY_BASIC_INFORMATION
The KEY_BASIC_INFORMATION structure defines a subset of the full information that is available for a registry key.

typedef struct _KEY_BASIC_INFORMATION {
LARGE_INTEGER LastWriteTime;
ULONG TitleIndex;
ULONG NameLength;
WCHAR Name[1]; // Variable-length string
} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;

mfG Richard


//Sorry falschen thread erwischt. kann gelöscht werden!

Olli 19. Dez 2007 10:44

Re: RtlTimeToTimeFields im Usermode möglich?
 
http://jedi-apilib.sourceforge.net/n...ativeList.html -> Ja, mindestens seit NT 3.51


Kleiner Tip noch. Am besten schaust du dir immer die Deklarationen in JwaNative.pas an, um deine zu überprüfen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 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