mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 08:43:04 +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
2 changed files with 20 additions and 65 deletions
|
@ -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).
|
* Win32 Global/Local heap functions (GlobalXXX, LocalXXX).
|
||||||
* These functions included in Win32 for compatibility with 16 bit Windows
|
* 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);
|
DPRINT("GlobalReAlloc( 0x%lX, 0x%lX, 0x%X )\n", (ULONG)hMem, dwBytes, uFlags);
|
||||||
|
|
||||||
hnew = 0;
|
|
||||||
|
|
||||||
if (uFlags & GMEM_ZEROINIT)
|
if (uFlags & GMEM_ZEROINIT)
|
||||||
{
|
{
|
||||||
heap_flags = HEAP_ZERO_MEMORY;
|
heap_flags = HEAP_ZERO_MEMORY;
|
||||||
|
@ -546,13 +544,6 @@ GlobalReAlloc(HGLOBAL hMem,
|
||||||
{
|
{
|
||||||
/* reallocate a moveable block */
|
/* reallocate a moveable block */
|
||||||
phandle= HANDLE_TO_INTERN(hMem);
|
phandle= HANDLE_TO_INTERN(hMem);
|
||||||
#if 0
|
|
||||||
if(phandle->LockCount != 0)
|
|
||||||
{
|
|
||||||
SetLastError(ERROR_INVALID_HANDLE);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
if (0 != dwBytes)
|
if (0 != dwBytes)
|
||||||
{
|
{
|
||||||
hnew = hMem;
|
hnew = hMem;
|
||||||
|
@ -587,7 +578,6 @@ GlobalReAlloc(HGLOBAL hMem,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
hnew = hMem;
|
|
||||||
if(phandle->Pointer)
|
if(phandle->Pointer)
|
||||||
{
|
{
|
||||||
RtlFreeHeap(GetProcessHeap(), 0, phandle->Pointer - HANDLE_SIZE);
|
RtlFreeHeap(GetProcessHeap(), 0, phandle->Pointer - HANDLE_SIZE);
|
||||||
|
@ -694,7 +684,7 @@ GlobalUnlock(HGLOBAL hMem)
|
||||||
else if (GLOBAL_LOCK_MAX > phandle->LockCount)
|
else if (GLOBAL_LOCK_MAX > phandle->LockCount)
|
||||||
{
|
{
|
||||||
phandle->LockCount--;
|
phandle->LockCount--;
|
||||||
locked = (0 == phandle->LockCount) ? TRUE : FALSE;
|
locked = (0 != phandle->LockCount) ? TRUE : FALSE;
|
||||||
SetLastError(NO_ERROR);
|
SetLastError(NO_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -727,12 +717,4 @@ GlobalWire(HGLOBAL hMem)
|
||||||
return GlobalLock(hMem);
|
return GlobalLock(hMem);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
//HGLOBAL STDCALL
|
|
||||||
//GlobalDiscard(HGLOBAL hMem)
|
|
||||||
//{
|
|
||||||
// return GlobalReAlloc(hMem, 0, GMEM_MOVEABLE);
|
|
||||||
//}
|
|
||||||
/* EOF */
|
/* 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
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -33,12 +33,11 @@ CreateFileMappingA(HANDLE hFile,
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
HANDLE SectionHandle;
|
HANDLE SectionHandle;
|
||||||
LARGE_INTEGER MaximumSize;
|
LARGE_INTEGER MaximumSize;
|
||||||
|
PLARGE_INTEGER MaximumSizePointer;
|
||||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||||
ANSI_STRING AnsiName;
|
ANSI_STRING AnsiName;
|
||||||
UNICODE_STRING UnicodeName;
|
UNICODE_STRING UnicodeName;
|
||||||
PSECURITY_DESCRIPTOR SecurityDescriptor;
|
PSECURITY_DESCRIPTOR SecurityDescriptor;
|
||||||
IO_STATUS_BLOCK IoStatusBlock;
|
|
||||||
FILE_STANDARD_INFORMATION FileStandard;
|
|
||||||
|
|
||||||
if ((flProtect & (MASK_PAGE_FLAGS | MASK_SEC_FLAGS)) != flProtect)
|
if ((flProtect & (MASK_PAGE_FLAGS | MASK_SEC_FLAGS)) != flProtect)
|
||||||
{
|
{
|
||||||
|
@ -55,26 +54,16 @@ CreateFileMappingA(HANDLE hFile,
|
||||||
SecurityDescriptor = NULL;
|
SecurityDescriptor = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if((dwMaximumSizeLow==0)&&(dwMaximumSizeHigh==0))
|
if (dwMaximumSizeLow == 0 && dwMaximumSizeHigh == 0)
|
||||||
{
|
{
|
||||||
// MSDN: If dwMaximumSizeLow and dwMaximumSizeHigh are zero, the maximum size of the
|
MaximumSizePointer = NULL;
|
||||||
// file-mapping object is equal to the current size of the file identified by hFile.
|
}
|
||||||
Status = NtQueryInformationFile(hFile,
|
else
|
||||||
&IoStatusBlock,
|
{
|
||||||
&FileStandard,
|
MaximumSize.u.LowPart = dwMaximumSizeLow;
|
||||||
sizeof(FILE_STANDARD_INFORMATION),
|
MaximumSize.u.HighPart = dwMaximumSizeHigh;
|
||||||
FileStandardInformation);
|
MaximumSizePointer = &MaximumSize;
|
||||||
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;
|
|
||||||
}
|
|
||||||
RtlInitAnsiString(&AnsiName,
|
RtlInitAnsiString(&AnsiName,
|
||||||
(LPSTR)lpName);
|
(LPSTR)lpName);
|
||||||
RtlAnsiStringToUnicodeString(&UnicodeName,
|
RtlAnsiStringToUnicodeString(&UnicodeName,
|
||||||
|
@ -88,7 +77,7 @@ CreateFileMappingA(HANDLE hFile,
|
||||||
Status = NtCreateSection(&SectionHandle,
|
Status = NtCreateSection(&SectionHandle,
|
||||||
SECTION_ALL_ACCESS,
|
SECTION_ALL_ACCESS,
|
||||||
&ObjectAttributes,
|
&ObjectAttributes,
|
||||||
&MaximumSize,
|
MaximumSizePointer,
|
||||||
flProtect & MASK_PAGE_FLAGS,
|
flProtect & MASK_PAGE_FLAGS,
|
||||||
flProtect & MASK_SEC_FLAGS,
|
flProtect & MASK_SEC_FLAGS,
|
||||||
hFile==INVALID_HANDLE_VALUE ? NULL : hFile);
|
hFile==INVALID_HANDLE_VALUE ? NULL : hFile);
|
||||||
|
@ -120,8 +109,6 @@ CreateFileMappingW(HANDLE hFile,
|
||||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||||
UNICODE_STRING UnicodeName;
|
UNICODE_STRING UnicodeName;
|
||||||
PSECURITY_DESCRIPTOR SecurityDescriptor;
|
PSECURITY_DESCRIPTOR SecurityDescriptor;
|
||||||
IO_STATUS_BLOCK IoStatusBlock;
|
|
||||||
FILE_STANDARD_INFORMATION FileStandard;
|
|
||||||
|
|
||||||
if ((flProtect & (MASK_PAGE_FLAGS | MASK_SEC_FLAGS)) != flProtect)
|
if ((flProtect & (MASK_PAGE_FLAGS | MASK_SEC_FLAGS)) != flProtect)
|
||||||
{
|
{
|
||||||
|
@ -138,29 +125,15 @@ CreateFileMappingW(HANDLE hFile,
|
||||||
SecurityDescriptor = NULL;
|
SecurityDescriptor = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((dwMaximumSizeLow == 0) && (dwMaximumSizeHigh == 0))
|
if (dwMaximumSizeLow == 0 && dwMaximumSizeHigh == 0)
|
||||||
{
|
{
|
||||||
// MSDN: If dwMaximumSizeLow and dwMaximumSizeHigh are zero, the maximum size of the
|
MaximumSizePointer = NULL;
|
||||||
// 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;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MaximumSize.u.LowPart = dwMaximumSizeLow;
|
MaximumSize.u.LowPart = dwMaximumSizeLow;
|
||||||
MaximumSize.u.HighPart = dwMaximumSizeHigh;
|
MaximumSize.u.HighPart = dwMaximumSizeHigh;
|
||||||
MaximumSizePointer = &MaximumSize;
|
MaximumSizePointer = &MaximumSize;
|
||||||
}
|
}
|
||||||
RtlInitUnicodeString(&UnicodeName,
|
RtlInitUnicodeString(&UnicodeName,
|
||||||
lpName);
|
lpName);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue