- Simplify CreateFileMapping[AW].

- Fix return value of GlobalReAlloc and GlobalUnlock.

svn path=/trunk/; revision=10726
This commit is contained in:
Filip Navara 2004-08-28 22:16:27 +00:00
parent b1f6932d44
commit f81fb98e23
2 changed files with 20 additions and 65 deletions

View file

@ -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 */

View file

@ -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);