mirror of
https://github.com/reactos/reactos.git
synced 2024-10-20 08:01:05 +00:00
- Simplify CreateFileMapping[AW].
- Fix return value of GlobalReAlloc and GlobalUnlock. svn path=/trunk/; revision=10726
This commit is contained in:
parent
b1f6932d44
commit
f81fb98e23
|
@ -1,4 +1,4 @@
|
|||
/* $Id: global.c,v 1.26 2004/07/03 17:40:22 navaraf Exp $
|
||||
/* $Id: global.c,v 1.27 2004/08/28 22:16:27 navaraf Exp $
|
||||
*
|
||||
* Win32 Global/Local heap functions (GlobalXXX, LocalXXX).
|
||||
* These functions included in Win32 for compatibility with 16 bit Windows
|
||||
|
@ -491,8 +491,6 @@ GlobalReAlloc(HGLOBAL hMem,
|
|||
|
||||
DPRINT("GlobalReAlloc( 0x%lX, 0x%lX, 0x%X )\n", (ULONG)hMem, dwBytes, uFlags);
|
||||
|
||||
hnew = 0;
|
||||
|
||||
if (uFlags & GMEM_ZEROINIT)
|
||||
{
|
||||
heap_flags = HEAP_ZERO_MEMORY;
|
||||
|
@ -546,13 +544,6 @@ GlobalReAlloc(HGLOBAL hMem,
|
|||
{
|
||||
/* reallocate a moveable block */
|
||||
phandle= HANDLE_TO_INTERN(hMem);
|
||||
#if 0
|
||||
if(phandle->LockCount != 0)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_HANDLE);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
if (0 != dwBytes)
|
||||
{
|
||||
hnew = hMem;
|
||||
|
@ -587,7 +578,6 @@ GlobalReAlloc(HGLOBAL hMem,
|
|||
}
|
||||
else
|
||||
{
|
||||
hnew = hMem;
|
||||
if(phandle->Pointer)
|
||||
{
|
||||
RtlFreeHeap(GetProcessHeap(), 0, phandle->Pointer - HANDLE_SIZE);
|
||||
|
@ -694,7 +684,7 @@ GlobalUnlock(HGLOBAL hMem)
|
|||
else if (GLOBAL_LOCK_MAX > phandle->LockCount)
|
||||
{
|
||||
phandle->LockCount--;
|
||||
locked = (0 == phandle->LockCount) ? TRUE : FALSE;
|
||||
locked = (0 != phandle->LockCount) ? TRUE : FALSE;
|
||||
SetLastError(NO_ERROR);
|
||||
}
|
||||
}
|
||||
|
@ -727,12 +717,4 @@ GlobalWire(HGLOBAL hMem)
|
|||
return GlobalLock(hMem);
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
//HGLOBAL STDCALL
|
||||
//GlobalDiscard(HGLOBAL hMem)
|
||||
//{
|
||||
// return GlobalReAlloc(hMem, 0, GMEM_MOVEABLE);
|
||||
//}
|
||||
/* EOF */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: section.c,v 1.25 2004/05/25 20:04:14 navaraf Exp $
|
||||
/* $Id: section.c,v 1.26 2004/08/28 22:16:27 navaraf Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -33,12 +33,11 @@ CreateFileMappingA(HANDLE hFile,
|
|||
NTSTATUS Status;
|
||||
HANDLE SectionHandle;
|
||||
LARGE_INTEGER MaximumSize;
|
||||
PLARGE_INTEGER MaximumSizePointer;
|
||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||
ANSI_STRING AnsiName;
|
||||
UNICODE_STRING UnicodeName;
|
||||
PSECURITY_DESCRIPTOR SecurityDescriptor;
|
||||
IO_STATUS_BLOCK IoStatusBlock;
|
||||
FILE_STANDARD_INFORMATION FileStandard;
|
||||
|
||||
if ((flProtect & (MASK_PAGE_FLAGS | MASK_SEC_FLAGS)) != flProtect)
|
||||
{
|
||||
|
@ -55,26 +54,16 @@ CreateFileMappingA(HANDLE hFile,
|
|||
SecurityDescriptor = NULL;
|
||||
}
|
||||
|
||||
if((dwMaximumSizeLow==0)&&(dwMaximumSizeHigh==0))
|
||||
{
|
||||
// MSDN: If dwMaximumSizeLow and dwMaximumSizeHigh are zero, the maximum size of the
|
||||
// file-mapping object is equal to the current size of the file identified by hFile.
|
||||
Status = NtQueryInformationFile(hFile,
|
||||
&IoStatusBlock,
|
||||
&FileStandard,
|
||||
sizeof(FILE_STANDARD_INFORMATION),
|
||||
FileStandardInformation);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT("Status 0x%08x obtaining FileStandardInformation for source\n", Status);
|
||||
SetLastErrorByStatus(Status);
|
||||
return NULL;
|
||||
}
|
||||
MaximumSize = FileStandard.EndOfFile;
|
||||
} else {
|
||||
MaximumSize.u.LowPart = dwMaximumSizeLow;
|
||||
MaximumSize.u.HighPart = dwMaximumSizeHigh;
|
||||
}
|
||||
if (dwMaximumSizeLow == 0 && dwMaximumSizeHigh == 0)
|
||||
{
|
||||
MaximumSizePointer = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
MaximumSize.u.LowPart = dwMaximumSizeLow;
|
||||
MaximumSize.u.HighPart = dwMaximumSizeHigh;
|
||||
MaximumSizePointer = &MaximumSize;
|
||||
}
|
||||
RtlInitAnsiString(&AnsiName,
|
||||
(LPSTR)lpName);
|
||||
RtlAnsiStringToUnicodeString(&UnicodeName,
|
||||
|
@ -88,7 +77,7 @@ CreateFileMappingA(HANDLE hFile,
|
|||
Status = NtCreateSection(&SectionHandle,
|
||||
SECTION_ALL_ACCESS,
|
||||
&ObjectAttributes,
|
||||
&MaximumSize,
|
||||
MaximumSizePointer,
|
||||
flProtect & MASK_PAGE_FLAGS,
|
||||
flProtect & MASK_SEC_FLAGS,
|
||||
hFile==INVALID_HANDLE_VALUE ? NULL : hFile);
|
||||
|
@ -120,8 +109,6 @@ CreateFileMappingW(HANDLE hFile,
|
|||
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||
UNICODE_STRING UnicodeName;
|
||||
PSECURITY_DESCRIPTOR SecurityDescriptor;
|
||||
IO_STATUS_BLOCK IoStatusBlock;
|
||||
FILE_STANDARD_INFORMATION FileStandard;
|
||||
|
||||
if ((flProtect & (MASK_PAGE_FLAGS | MASK_SEC_FLAGS)) != flProtect)
|
||||
{
|
||||
|
@ -138,29 +125,15 @@ CreateFileMappingW(HANDLE hFile,
|
|||
SecurityDescriptor = NULL;
|
||||
}
|
||||
|
||||
if ((dwMaximumSizeLow == 0) && (dwMaximumSizeHigh == 0))
|
||||
if (dwMaximumSizeLow == 0 && dwMaximumSizeHigh == 0)
|
||||
{
|
||||
// MSDN: If dwMaximumSizeLow and dwMaximumSizeHigh are zero, the maximum size of the
|
||||
// file-mapping object is equal to the current size of the file identified by hFile.
|
||||
Status = NtQueryInformationFile(hFile,
|
||||
&IoStatusBlock,
|
||||
&FileStandard,
|
||||
sizeof(FILE_STANDARD_INFORMATION),
|
||||
FileStandardInformation);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT("Status 0x%08x obtaining FileStandardInformation for source\n", Status);
|
||||
SetLastErrorByStatus(Status);
|
||||
return NULL;
|
||||
}
|
||||
MaximumSize = FileStandard.EndOfFile;
|
||||
MaximumSizePointer = &MaximumSize;
|
||||
MaximumSizePointer = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
MaximumSize.u.LowPart = dwMaximumSizeLow;
|
||||
MaximumSize.u.HighPart = dwMaximumSizeHigh;
|
||||
MaximumSizePointer = &MaximumSize;
|
||||
MaximumSize.u.LowPart = dwMaximumSizeLow;
|
||||
MaximumSize.u.HighPart = dwMaximumSizeHigh;
|
||||
MaximumSizePointer = &MaximumSize;
|
||||
}
|
||||
RtlInitUnicodeString(&UnicodeName,
|
||||
lpName);
|
||||
|
|
Loading…
Reference in a new issue