- Fix several ULONG/ULONG_PTR issues

- Add a parameter to DefaultQueryInfoBufferCheck for ULONG_PTR/SIZE_T ResultLength

svn path=/branches/ros-amd64-bringup/; revision=37435
This commit is contained in:
Timo Kreuzer
2008-11-18 03:41:21 +00:00
parent ca24ca153b
commit 7ea9dd6a28
14 changed files with 31 additions and 19 deletions
+1
View File
@@ -334,6 +334,7 @@ NtQueryEvent(IN HANDLE EventHandle,
EventInformation,
EventInformationLength,
ReturnLength,
NULL,
PreviousMode);
if(!NT_SUCCESS(Status))
{
+7 -7
View File
@@ -36,9 +36,9 @@ InterlockedPushEntrySList(IN PSLIST_HEADER ListHead,
{
Entry->Next = FirstEntry;
NextEntry = FirstEntry;
FirstEntry = (PVOID)_InterlockedCompareExchange((PLONG)Head,
(LONG)Entry,
(LONG)FirstEntry);
FirstEntry = InterlockedCompareExchangePointer((PVOID*)Head,
(PVOID)Entry,
(PVOID)FirstEntry);
} while (FirstEntry != NextEntry);
return FirstEntry;
@@ -56,9 +56,9 @@ InterlockedPopEntrySList(IN PSLIST_HEADER ListHead)
if (!FirstEntry) return NULL;
NextEntry = FirstEntry;
FirstEntry = (PVOID)_InterlockedCompareExchange((PLONG)Head,
(LONG)FirstEntry->Next,
(LONG)FirstEntry);
FirstEntry = InterlockedCompareExchangePointer((PVOID*)Head,
(PVOID)FirstEntry->Next,
(PVOID)FirstEntry);
} while (FirstEntry != NextEntry);
return FirstEntry;
@@ -68,7 +68,7 @@ PSINGLE_LIST_ENTRY
FASTCALL
ExInterlockedFlushSList(IN PSLIST_HEADER ListHead)
{
return (PVOID)_InterlockedExchange((PLONG)&ListHead->Next.Next, (LONG)NULL);
return InterlockedExchangePointer((PVOID*)&ListHead->Next.Next, NULL);
}
PSLIST_ENTRY
+1
View File
@@ -245,6 +245,7 @@ NtQueryMutant(IN HANDLE MutantHandle,
MutantInformation,
MutantInformationLength,
ResultLength,
NULL,
PreviousMode);
if(!NT_SUCCESS(Status))
{
+1
View File
@@ -237,6 +237,7 @@ NtQuerySemaphore(IN HANDLE SemaphoreHandle,
SemaphoreInformation,
SemaphoreInformationLength,
ReturnLength,
NULL,
PreviousMode);
if(!NT_SUCCESS(Status))
{
+1 -1
View File
@@ -1055,7 +1055,7 @@ QSI_DEF(SystemHandleInformation)
for (Count = 0; HandleCount > 0 ; HandleCount--)
{
Shi->Handles[i].UniqueProcessId = (USHORT)(ULONG)pr->UniqueProcessId;
Shi->Handles[i].UniqueProcessId = (USHORT)(ULONG_PTR)pr->UniqueProcessId;
Count++;
i++;
}
+1
View File
@@ -522,6 +522,7 @@ NtQueryTimer(IN HANDLE TimerHandle,
TimerInformation,
TimerInformationLength,
ReturnLength,
NULL,
PreviousMode);
if(!NT_SUCCESS(Status)) return Status;
@@ -213,6 +213,7 @@ DefaultQueryInfoBufferCheck(ULONG Class,
PVOID Buffer,
ULONG BufferLength,
PULONG ReturnLength,
PULONG_PTR ReturnLengthLong,
KPROCESSOR_MODE PreviousMode)
{
NTSTATUS Status = STATUS_SUCCESS;
@@ -249,6 +250,10 @@ DefaultQueryInfoBufferCheck(ULONG Class,
{
ProbeForWriteUlong(ReturnLength);
}
if (ReturnLengthLong != NULL)
{
ProbeForWrite(ReturnLengthLong, sizeof(ULONG_PTR), sizeof(ULONG_PTR));
}
}
_SEH_HANDLE
{
+4 -3
View File
@@ -404,6 +404,7 @@ NtQueryIoCompletion(IN HANDLE IoCompletionHandle,
IoCompletionInformation,
IoCompletionInformationLength,
ResultLength,
NULL,
PreviousMode);
if (!NT_SUCCESS(Status)) return Status;
@@ -506,11 +507,11 @@ NtRemoveIoCompletion(IN HANDLE IoCompletionHandle,
ListEntry = KeRemoveQueue(Queue, PreviousMode, Timeout);
/* If we got a timeout or user_apc back, return the status */
if (((NTSTATUS)ListEntry == STATUS_TIMEOUT) ||
((NTSTATUS)ListEntry == STATUS_USER_APC))
if (((NTSTATUS)(ULONG_PTR)ListEntry == STATUS_TIMEOUT) ||
((NTSTATUS)(ULONG_PTR)ListEntry == STATUS_USER_APC))
{
/* Set this as the status */
Status = (NTSTATUS)ListEntry;
Status = (NTSTATUS)(ULONG_PTR)ListEntry;
}
else
{
+4 -4
View File
@@ -1191,7 +1191,7 @@ IofCompleteRequest(IN PIRP Irp,
if (LastStackPtr->Control & SL_ERROR_RETURNED)
{
/* Get the error code */
ErrorCode = (NTSTATUS)LastStackPtr->Parameters.Others.Argument4;
ErrorCode = PtrToUlong(LastStackPtr->Parameters.Others.Argument4);
}
/* Get the Current Stack and skip it */
@@ -1213,7 +1213,7 @@ IofCompleteRequest(IN PIRP Irp,
/* Update the error for the current stack */
ErrorCode = Irp->IoStatus.Status;
StackPtr->Control |= SL_ERROR_RETURNED;
LastStackPtr->Parameters.Others.Argument4 = (PVOID)ErrorCode;
LastStackPtr->Parameters.Others.Argument4 = UlongToPtr(ErrorCode);
LastStackPtr->Control |= SL_ERROR_RETURNED;
}
}
@@ -1587,7 +1587,7 @@ NTAPI
IoGetRequestorProcessId(IN PIRP Irp)
{
/* Return the requestor process' id */
return (ULONG)(IoGetRequestorProcess(Irp)->UniqueProcessId);
return PtrToUlong(IoGetRequestorProcess(Irp)->UniqueProcessId);
}
/*
@@ -1759,5 +1759,5 @@ NTAPI
IoSetTopLevelIrp(IN PIRP Irp)
{
/* Set the IRP */
PsGetCurrentThread()->TopLevelIrp = (ULONG)Irp;
PsGetCurrentThread()->TopLevelIrp = (ULONG_PTR)Irp;
}
+1 -1
View File
@@ -52,7 +52,7 @@ KdpServiceDispatcher(ULONG Service,
#ifdef DBG
case TAG('R', 'o', 's', ' '): /* ROS-INTERNAL */
{
switch ((ULONG)Buffer1)
switch ((ULONG_PTR)Buffer1)
{
case DumpNonPagedPool:
MiDebugDumpNonPagedPool(FALSE);
+1 -1
View File
@@ -45,7 +45,7 @@ KdpBochsInit(PKD_DISPATCH_TABLE DispatchTable,
if (BootPhase == 0)
{
Value = READ_PORT_UCHAR(BOCHS_LOGGER_PORT);
if (Value != (ULONG)BOCHS_LOGGER_PORT)
if (Value != (ULONG_PTR)BOCHS_LOGGER_PORT)
{
KdpDebugMode.Bochs = FALSE;
return;
+2 -2
View File
@@ -657,10 +657,10 @@ KdbSymProcessSymbols(IN PANSI_STRING AnsiFileName, IN PKD_SYMBOLS_INFO SymbolInf
KdbpSymAddCachedFile(&LdrEntry->FullDllName, LdrEntry->PatchInformation);
}
DPRINT("Installed symbols: %wZ@%08x-%08x %p\n",
DPRINT("Installed symbols: %wZ@%p-%p %p\n",
&LdrEntry->BaseDllName,
LdrEntry->DllBase,
LdrEntry->SizeOfImage + (ULONG)LdrEntry->DllBase,
(PVOID)(LdrEntry->SizeOfImage + (ULONG_PTR)LdrEntry->DllBase),
LdrEntry->PatchInformation);
}
+1
View File
@@ -4242,6 +4242,7 @@ NtQuerySection(IN HANDLE SectionHandle,
sizeof(ExSectionInfoClass) / sizeof(ExSectionInfoClass[0]),
SectionInformation,
SectionInformationLength,
NULL,
ResultLength,
PreviousMode);
+1
View File
@@ -871,6 +871,7 @@ NtQueryInformationToken(IN HANDLE TokenHandle,
TokenInformation,
TokenInformationLength,
ReturnLength,
NULL,
PreviousMode);
if(!NT_SUCCESS(Status))