* fixed win64 compilation

git-svn-id: trunk@6829 -
This commit is contained in:
florian 2007-03-13 21:29:39 +00:00
parent 8aa259401c
commit 44752f5559
2 changed files with 72 additions and 27 deletions

View File

@ -3959,7 +3959,7 @@ function NtContinue(
function ZwContinue(Context: PCONTEXT; TestAlert: BOOLEAN): NTSTATUS; stdcall; {$IFNDEF RTDL}external ntdll;{$ENDIF} function ZwContinue(Context: PCONTEXT; TestAlert: BOOLEAN): NTSTATUS; stdcall; {$IFNDEF RTDL}external ntdll;{$ENDIF}
// Returns STATUS_NOT_IMPLEMENTED. Only MS knows the intention behind this. // Returns STATUS_NOT_IMPLEMENTED. Only MS knows the intention behind this.
// //
// !!!DO NOT USE!!! // !!!DO NOT USE!!!
// Compatibility: NT4, W2K // Compatibility: NT4, W2K
function NtCreateChannel( function NtCreateChannel(
@ -4523,7 +4523,7 @@ function NtIsSystemResumeAutomatic(): BOOLEAN; stdcall; {$IFNDEF RTDL}external
function ZwIsSystemResumeAutomatic(): BOOLEAN; stdcall; {$IFNDEF RTDL}external ntdll;{$ENDIF} function ZwIsSystemResumeAutomatic(): BOOLEAN; stdcall; {$IFNDEF RTDL}external ntdll;{$ENDIF}
// Returns STATUS_NOT_IMPLEMENTED. Only MS knows the intention behind this. // Returns STATUS_NOT_IMPLEMENTED. Only MS knows the intention behind this.
// //
// !!!DO NOT USE!!! // !!!DO NOT USE!!!
// Compatibility: NT4, W2K // Compatibility: NT4, W2K
function NtListenChannel( function NtListenChannel(
@ -4683,7 +4683,7 @@ function ZwNotifyChangeMultipleKeys(KeyHandle: HANDLE; Flags: ULONG; KeyObjectA
WatchSubtree: BOOLEAN; Buffer: PVOID; BufferLength: ULONG; Asynchronous: BOOLEAN): NTSTATUS; stdcall; {$IFNDEF RTDL}external ntdll;{$ENDIF} WatchSubtree: BOOLEAN; Buffer: PVOID; BufferLength: ULONG; Asynchronous: BOOLEAN): NTSTATUS; stdcall; {$IFNDEF RTDL}external ntdll;{$ENDIF}
// Returns STATUS_NOT_IMPLEMENTED. Only MS knows the intention behind this. // Returns STATUS_NOT_IMPLEMENTED. Only MS knows the intention behind this.
// //
// !!!DO NOT USE!!! // !!!DO NOT USE!!!
// Compatibility: NT4, W2K // Compatibility: NT4, W2K
function NtOpenChannel( function NtOpenChannel(
@ -5453,7 +5453,7 @@ function NtReplyWaitReplyPort(
function ZwReplyWaitReplyPort(PortHandle: HANDLE; ReplyMessage: PPORT_MESSAGE): NTSTATUS; stdcall; {$IFNDEF RTDL}external ntdll;{$ENDIF} function ZwReplyWaitReplyPort(PortHandle: HANDLE; ReplyMessage: PPORT_MESSAGE): NTSTATUS; stdcall; {$IFNDEF RTDL}external ntdll;{$ENDIF}
// Returns STATUS_NOT_IMPLEMENTED. Only MS knows the intention behind this. // Returns STATUS_NOT_IMPLEMENTED. Only MS knows the intention behind this.
// //
// !!!DO NOT USE!!! // !!!DO NOT USE!!!
// Compatibility: NT4, W2K // Compatibility: NT4, W2K
function NtReplyWaitSendChannel( function NtReplyWaitSendChannel(
@ -5569,7 +5569,7 @@ function ZwSecureConnectPort(PortHandle: PHANDLE; PortName: PUNICODE_STRING; Se
ConnectData: PVOID; ConnectDataLength: PULONG): NTSTATUS; stdcall; {$IFNDEF RTDL}external ntdll;{$ENDIF} ConnectData: PVOID; ConnectDataLength: PULONG): NTSTATUS; stdcall; {$IFNDEF RTDL}external ntdll;{$ENDIF}
// Returns STATUS_NOT_IMPLEMENTED. Only MS knows the intention behind this. // Returns STATUS_NOT_IMPLEMENTED. Only MS knows the intention behind this.
// //
// !!!DO NOT USE!!! // !!!DO NOT USE!!!
// Compatibility: NT4, W2K // Compatibility: NT4, W2K
function NtSendWaitReplyChannel( function NtSendWaitReplyChannel(
@ -5581,7 +5581,7 @@ function NtSendWaitReplyChannel(
function ZwSendWaitReplyChannel(x: PVOID; y: PVOID; z: PVOID; z2: PVOID): NTSTATUS; stdcall; {$IFNDEF RTDL}external ntdll;{$ENDIF} function ZwSendWaitReplyChannel(x: PVOID; y: PVOID; z: PVOID; z2: PVOID): NTSTATUS; stdcall; {$IFNDEF RTDL}external ntdll;{$ENDIF}
// Returns STATUS_NOT_IMPLEMENTED. Only MS knows the intention behind this. // Returns STATUS_NOT_IMPLEMENTED. Only MS knows the intention behind this.
// //
// !!!DO NOT USE!!! // !!!DO NOT USE!!!
// Compatibility: NT4, W2K // Compatibility: NT4, W2K
function NtSetContextChannel( function NtSetContextChannel(
@ -8173,26 +8173,44 @@ end;
// Own function to retrieve the process's heap handle // Own function to retrieve the process's heap handle
function NtpGetProcessHeap(): HANDLE; function NtpGetProcessHeap(): HANDLE;
asm asm
{$ifdef cpu386}
mov EAX, FS:[018h] // EAX now holds the TEB address mov EAX, FS:[018h] // EAX now holds the TEB address
mov EAX, [EAX+030h] // TEB+$30 holds the PEB address mov EAX, [EAX+030h] // TEB+$30 holds the PEB address
mov EAX, DWORD PTR [EAX+018h] // PEB+$30 holds the ProcessHeap's handle mov EAX, DWORD PTR [EAX+24] // PEB+$30 holds the ProcessHeap's handle
{$endif cpu386}
{$ifdef cpux86_64}
mov RAX, GS:[48] // EAX now holds the TEB address
mov RAX, [RAX+060h] // TEB+$30 holds the PEB address
mov RAX, DWORD PTR [RAX+48] // PEB+$30 holds the ProcessHeap's handle
{$endif cpux86_64}
end; end;
// Own function to retrieve the thread environment block (TEB) pointer // Own function to retrieve the thread environment block (TEB) pointer
function NtpCurrentTeb(): PTEB; function NtpCurrentTeb(): PTEB;
asm asm
mov EAX, FS:[018h] {$ifdef cpu386}
mov EAX, FS:[24]
{$endif cpu386}
{$ifdef cpux86_64}
mov RAX, GS:[48]
{$endif cpux86_64}
end; end;
// Own function to retrieve the process environment block (PEB) pointer // Own function to retrieve the process environment block (PEB) pointer
function RtlpGetCurrentPeb(): PPEB; function RtlpGetCurrentPeb(): PPEB;
asm asm
mov EAX, FS:[018h] {$ifdef cpu386}
mov EAX, FS:[24]
mov EAX, [EAX+030h] mov EAX, [EAX+030h]
{$endif cpu386}
{$ifdef cpux86_64}
mov RAX, GS:[24]
mov RAX, [RAX+060h]
{$endif cpux86_64}
end; end;
(* Own function to swap bytes in 16bit values (* Own function to swap bytes in 16bit values
@ -8202,6 +8220,9 @@ end;
function RtlUshortByteSwap(Source: USHORT): USHORT; function RtlUshortByteSwap(Source: USHORT): USHORT;
asm asm
{$ifdef cpux86_64}
mov CX, AX
{$endif cpux86_64}
rol AX, 08h rol AX, 08h
end; end;
@ -8212,8 +8233,10 @@ end;
function RtlUlongByteSwap(Source: ULONG): ULONG; function RtlUlongByteSwap(Source: ULONG): ULONG;
asm asm
// This is not written as mnemonics to be compatible with D4! {$ifdef cpux86_64}
db 0Fh, 0C8h // "bswap EAX" can only be executed on 486+!!! mov ECX, EAX
{$endif cpux86_64}
bswap EAX
(* (*
// Does the same but perhaps slower ... // Does the same but perhaps slower ...
// Source = $11223344 // Source = $11223344
@ -8230,12 +8253,18 @@ end;
function RtlUlonglongByteSwap(Source: ULONGLONG): ULONGLONG; function RtlUlonglongByteSwap(Source: ULONGLONG): ULONGLONG;
asm asm
{$ifdef cpu386}
mov EAX, [ESP+0Ch] // Get the high part of the ULONGLONG into EAX mov EAX, [ESP+0Ch] // Get the high part of the ULONGLONG into EAX
mov EDX, [ESP+08h] // Get the low part of the ULONGLONG into EDX mov EDX, [ESP+08h] // Get the low part of the ULONGLONG into EDX
// This is not written as mnemonics to be compatible with D4! // This is not written as mnemonics to be compatible with D4!
db 0Fh, 0C8h // "bswap EAX" can only be executed on 486+!!! db 0Fh, 0C8h // "bswap EAX" can only be executed on 486+!!!
db 0Fh, 0CAh // "bswap EDX" can only be executed on 486+!!! db 0Fh, 0CAh // "bswap EDX" can only be executed on 486+!!!
// High part returns in EDX, low part in EAX // High part returns in EDX, low part in EAX
{$endif cpu386}
{$ifdef cpux86_64}
MOV RCX,RAX
BSWAP EAX
{$endif cpux86_64}
end; end;
// Resembles the RtlValidateUnicodeString() function available from Windows XP // Resembles the RtlValidateUnicodeString() function available from Windows XP

View File

@ -959,7 +959,7 @@ type
PACCESS_MASK = ^ACCESS_MASK; PACCESS_MASK = ^ACCESS_MASK;
{$EXTERNALSYM PACCESS_MASK} {$EXTERNALSYM PACCESS_MASK}
TAccessMask = ACCESS_MASK; TAccessMask = ACCESS_MASK;
PAccessMask = PACCESS_MASK; PAccessMask = PACCESS_MASK;
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
// // // //
@ -1916,7 +1916,7 @@ type
PACCESS_ALLOWED_CALLBACK_ACE = ^ACCESS_ALLOWED_CALLBACK_ACE; PACCESS_ALLOWED_CALLBACK_ACE = ^ACCESS_ALLOWED_CALLBACK_ACE;
{$EXTERNALSYM PACCESS_ALLOWED_CALLBACK_ACE} {$EXTERNALSYM PACCESS_ALLOWED_CALLBACK_ACE}
TAccessAllowedCallBackAce = ACCESS_ALLOWED_CALLBACK_ACE; TAccessAllowedCallBackAce = ACCESS_ALLOWED_CALLBACK_ACE;
PAccessAllowedCallBackAce = PACCESS_ALLOWED_CALLBACK_ACE; PAccessAllowedCallBackAce = PACCESS_ALLOWED_CALLBACK_ACE;
_ACCESS_DENIED_CALLBACK_ACE = record _ACCESS_DENIED_CALLBACK_ACE = record
Header: ACE_HEADER; Header: ACE_HEADER;
@ -2815,7 +2815,7 @@ type
PTOKEN_ORIGIN = ^TOKEN_ORIGIN; PTOKEN_ORIGIN = ^TOKEN_ORIGIN;
{$EXTERNALSYM PTOKEN_ORIGIN} {$EXTERNALSYM PTOKEN_ORIGIN}
TTokenOrigin = TOKEN_ORIGIN; TTokenOrigin = TOKEN_ORIGIN;
PTokenOrigin = PTOKEN_ORIGIN; PTokenOrigin = PTOKEN_ORIGIN;
// //
// Security Tracking Mode // Security Tracking Mode
@ -2881,7 +2881,7 @@ type
PSECURITY_INFORMATION = ^SECURITY_INFORMATION; PSECURITY_INFORMATION = ^SECURITY_INFORMATION;
{$EXTERNALSYM PSECURITY_INFORMATION} {$EXTERNALSYM PSECURITY_INFORMATION}
TSecurityInformation = SECURITY_INFORMATION; TSecurityInformation = SECURITY_INFORMATION;
PSecurityInformation = PSECURITY_INFORMATION; PSecurityInformation = PSECURITY_INFORMATION;
const const
OWNER_SECURITY_INFORMATION = $00000001; OWNER_SECURITY_INFORMATION = $00000001;
@ -3179,7 +3179,7 @@ type
PQUOTA_LIMITS_EX = ^QUOTA_LIMITS_EX; PQUOTA_LIMITS_EX = ^QUOTA_LIMITS_EX;
{$EXTERNALSYM PQUOTA_LIMITS_EX} {$EXTERNALSYM PQUOTA_LIMITS_EX}
TQuotaLimitsEx = QUOTA_LIMITS_EX; TQuotaLimitsEx = QUOTA_LIMITS_EX;
PQuotaLimitsEx = PQUOTA_LIMITS_EX; PQuotaLimitsEx = PQUOTA_LIMITS_EX;
PIO_COUNTERS = ^IO_COUNTERS; PIO_COUNTERS = ^IO_COUNTERS;
{$EXTERNALSYM PIO_COUNTERS} {$EXTERNALSYM PIO_COUNTERS}
@ -3333,7 +3333,7 @@ type
PJOBOBJECT_JOBSET_INFORMATION = ^JOBOBJECT_JOBSET_INFORMATION; PJOBOBJECT_JOBSET_INFORMATION = ^JOBOBJECT_JOBSET_INFORMATION;
{$EXTERNALSYM PJOBOBJECT_JOBSET_INFORMATION} {$EXTERNALSYM PJOBOBJECT_JOBSET_INFORMATION}
TJobObjectSetInformation = JOBOBJECT_JOBSET_INFORMATION; TJobObjectSetInformation = JOBOBJECT_JOBSET_INFORMATION;
PJobObjectSetInformation = PJOBOBJECT_JOBSET_INFORMATION; PJobObjectSetInformation = PJOBOBJECT_JOBSET_INFORMATION;
const const
JOB_OBJECT_TERMINATE_AT_END_OF_JOB = 0; JOB_OBJECT_TERMINATE_AT_END_OF_JOB = 0;
@ -3545,7 +3545,7 @@ type
{$EXTERNALSYM SYSTEM_LOGICAL_PROCESSOR_INFORMATION} {$EXTERNALSYM SYSTEM_LOGICAL_PROCESSOR_INFORMATION}
PSYSTEM_LOGICAL_PROCESSOR_INFORMATION = ^SYSTEM_LOGICAL_PROCESSOR_INFORMATION; PSYSTEM_LOGICAL_PROCESSOR_INFORMATION = ^SYSTEM_LOGICAL_PROCESSOR_INFORMATION;
TSystemLogicalProcessorInformation = SYSTEM_LOGICAL_PROCESSOR_INFORMATION; TSystemLogicalProcessorInformation = SYSTEM_LOGICAL_PROCESSOR_INFORMATION;
PSystemLogicalProcessorInformation = PSYSTEM_LOGICAL_PROCESSOR_INFORMATION; PSystemLogicalProcessorInformation = PSYSTEM_LOGICAL_PROCESSOR_INFORMATION;
const const
PROCESSOR_INTEL_386 = 386; PROCESSOR_INTEL_386 = 386;
@ -5155,7 +5155,7 @@ type
function IMAGE_FIRST_SECTION(NtHeader: PImageNtHeaders): PImageSectionHeader; function IMAGE_FIRST_SECTION(NtHeader: PImageNtHeaders): PImageSectionHeader;
{$EXTERNALSYM IMAGE_FIRST_SECTION} {$EXTERNALSYM IMAGE_FIRST_SECTION}
const const
IMAGE_SIZEOF_SECTION_HEADER = 40; IMAGE_SIZEOF_SECTION_HEADER = 40;
{$EXTERNALSYM IMAGE_SIZEOF_SECTION_HEADER} {$EXTERNALSYM IMAGE_SIZEOF_SECTION_HEADER}
@ -7165,7 +7165,7 @@ type
PSLIST_ENTRY = PSINGLE_LIST_ENTRY; PSLIST_ENTRY = PSINGLE_LIST_ENTRY;
{$EXTERNALSYM PSLIST_ENTRY} {$EXTERNALSYM PSLIST_ENTRY}
TSListEntry = SLIST_ENTRY; TSListEntry = SLIST_ENTRY;
PSListEntry = PSLIST_ENTRY; PSListEntry = PSLIST_ENTRY;
type type
_SLIST_HEADER = record _SLIST_HEADER = record
@ -7183,7 +7183,7 @@ type
PSLIST_HEADER = ^SLIST_HEADER; PSLIST_HEADER = ^SLIST_HEADER;
{$EXTERNALSYM PSLIST_HEADER} {$EXTERNALSYM PSLIST_HEADER}
TSListHeader = SLIST_HEADER; TSListHeader = SLIST_HEADER;
PSListHeader = PSLIST_HEADER; PSListHeader = PSLIST_HEADER;
procedure RtlInitializeSListHead(ListHead: PSLIST_HEADER); stdcall; procedure RtlInitializeSListHead(ListHead: PSLIST_HEADER); stdcall;
{$EXTERNALSYM RtlInitializeSListHead} {$EXTERNALSYM RtlInitializeSListHead}
@ -7646,8 +7646,8 @@ type
// //
// Filled by verifier provider DLL // Filled by verifier provider DLL
// //
ProviderNtdllHeapFreeCallback: RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK; ProviderNtdllHeapFreeCallback: RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK;
end; end;
{$EXTERNALSYM _RTL_VERIFIER_PROVIDER_DESCRIPTOR} {$EXTERNALSYM _RTL_VERIFIER_PROVIDER_DESCRIPTOR}
@ -8996,18 +8996,34 @@ end;
function NtCurrentTeb: PNT_TIB; function NtCurrentTeb: PNT_TIB;
asm asm
MOV EAX, FS:[0] {$ifdef cpu386}
MOV EAX, FS:[24]
{$endif cpu386}
{$ifdef cpux86_64}
movq RAX, GS:[48]
{$endif cpux86_64}
end; end;
function GetFiberData: PVOID; function GetFiberData: PVOID;
asm asm
MOV EAX, FS:[$10] {$ifdef cpu386}
MOV EAX, FS:[16]
MOV EAX, [EAX] MOV EAX, [EAX]
{$endif cpu386}
{$ifdef cpux86_64}
MOV RAX, GS:[32]
MOV RAX, [RAX]
{$endif cpux86_64}
end; end;
function GetCurrentFiber: PVOID; function GetCurrentFiber: PVOID;
asm asm
MOV EAX, FS:[$10] {$ifdef cpu386}
MOV EAX, FS:[16]
{$endif cpu386}
{$ifdef cpux86_64}
MOV RAX, GS:[32]
{$endif cpux86_64}
end; end;
{$IFNDEF JWA_INCLUDEMODE} {$IFNDEF JWA_INCLUDEMODE}