Now it returns a status value.
svn path=/trunk/; revision=1975
/* OBJECT MANAGER ************************************************************/
-PVOID STDCALL ObCreateObject(PHANDLE Handle,
- ACCESS_MASK DesiredAccess,
- POBJECT_ATTRIBUTES ObjectAttributes,
- POBJECT_TYPE Type);
+NTSTATUS STDCALL ObCreateObject(PHANDLE Handle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ POBJECT_TYPE Type,
+ PVOID *Object);
VOID
FASTCALL
/* because NtCreateKey don't create tree */
DPRINT("NCK %S parent=%x\n",RemainingPath.Buffer,Object);
- key = ObCreateObject(
- KeyHandle,
- DesiredAccess,
- NULL,
- CmiKeyType
- );
-
- if (key == NULL)
- return STATUS_INSUFFICIENT_RESOURCES;
+ Status = ObCreateObject(KeyHandle,
+ DesiredAccess,
+ NULL,
+ CmiKeyType,
+ (PVOID*)&key);
+
+ if (!NT_SUCCESS(Status))
+ return(Status);
key->ParentKey = Object;
// if ( (key->ParentKey ==NULL))
// key->ParentKey = ObjectAttributes->RootDirectory;
-/* $Id: registry.c,v 1.61 2001/06/14 21:05:07 jfilby Exp $
+/* $Id: registry.c,v 1.62 2001/06/16 14:06:00 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
HANDLE RootKeyHandle;
UNICODE_STRING RootKeyName;
OBJECT_ATTRIBUTES ObjectAttributes;
- PKEY_OBJECT NewKey;
+ PKEY_OBJECT NewKey;
HANDLE KeyHandle;
/* Initialize the Key object type */
RtlInitUnicodeString(&RootKeyName, REG_ROOT_KEY_NAME);
DPRINT("Creating root\n");
InitializeObjectAttributes(&ObjectAttributes, &RootKeyName, 0, NULL, NULL);
- NewKey=ObCreateObject(&RootKeyHandle,
- STANDARD_RIGHTS_REQUIRED,
- &ObjectAttributes,
- CmiKeyType);
+ Status = ObCreateObject(&RootKeyHandle,
+ STANDARD_RIGHTS_REQUIRED,
+ &ObjectAttributes,
+ CmiKeyType,
+ (PVOID*)&NewKey);
CmiRootKey = NewKey;
ObAddEntryDirectory(NameSpaceRoot, CmiRootKey, L"Registry");
Status = ObReferenceObjectByHandle(RootKeyHandle,
RtlInitUnicodeString(&RootKeyName, REG_MACHINE_KEY_NAME);
DPRINT("Creating HKLM\n");
InitializeObjectAttributes(&ObjectAttributes, &RootKeyName, 0, NULL, NULL);
- NewKey=ObCreateObject(&KeyHandle,
- STANDARD_RIGHTS_REQUIRED,
- &ObjectAttributes,
- CmiKeyType);
+ Status=ObCreateObject(&KeyHandle,
+ STANDARD_RIGHTS_REQUIRED,
+ &ObjectAttributes,
+ CmiKeyType,
+ (PVOID*)&NewKey);
Status = CmiAddSubKey(CmiVolatileFile,
CmiRootKey,
NewKey,
RtlInitUnicodeString(&RootKeyName, REG_USERS_KEY_NAME);
DPRINT("Creating HKU\n");
InitializeObjectAttributes(&ObjectAttributes, &RootKeyName, 0, NULL, NULL);
- NewKey=ObCreateObject(&KeyHandle,
+ Status=ObCreateObject(&KeyHandle,
STANDARD_RIGHTS_REQUIRED,
- &ObjectAttributes,
- CmiKeyType);
+ &ObjectAttributes,
+ CmiKeyType,
+ (PVOID*)&NewKey);
Status = CmiAddSubKey(CmiVolatileFile,
CmiRootKey,
NewKey,
HANDLE KeyHandle;
UNICODE_STRING uKeyName;
PREGISTRY_FILE RegistryFile = NULL;
+ NTSTATUS Status;
RegistryFile = CmiCreateRegistry(FileName);
if( RegistryFile )
{
RtlInitUnicodeString(&uKeyName, FullName);
DPRINT("CCH %S ;",FullName);
InitializeObjectAttributes(&ObjectAttributes, &uKeyName, 0, NULL, NULL);
- NewKey=ObCreateObject(&KeyHandle,
- STANDARD_RIGHTS_REQUIRED,
- &ObjectAttributes,
- CmiKeyType);
+ Status=ObCreateObject(&KeyHandle,
+ STANDARD_RIGHTS_REQUIRED,
+ &ObjectAttributes,
+ CmiKeyType,
+ (PVOID*)&NewKey);
+ if (!NT_SUCCESS(Status))
+ return (Status);
NewKey->RegistryFile = RegistryFile;
NewKey->BlockOffset = RegistryFile->HeaderBlock->RootKeyBlock;
NewKey->KeyBlock = CmiGetBlock(RegistryFile,NewKey->BlockOffset,NULL);
}
/* Create new key object and put into linked list */
DPRINT("CmiObjectParse %s\n",cPath);
- FoundObject = ObCreateObject(NULL,
- STANDARD_RIGHTS_REQUIRED,
- NULL,
- CmiKeyType);
- if (FoundObject == NULL)
+ Status = ObCreateObject(NULL,
+ STANDARD_RIGHTS_REQUIRED,
+ NULL,
+ CmiKeyType,
+ (PVOID*)&FoundObject);
+ if (!NT_SUCCESS(Status))
{
- //FIXME : return the good error code
- return STATUS_UNSUCCESSFUL;
+ return(Status);
}
FoundObject->Flags = 0;
FoundObject->Name = SubKeyBlock->Name;
-/* $Id: create.c,v 1.44 2001/06/14 21:05:07 jfilby Exp $
+/* $Id: create.c,v 1.45 2001/06/16 14:07:30 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
*
*/
NTSTATUS STDCALL
-NtDeleteFile (IN POBJECT_ATTRIBUTES ObjectAttributes)
+NtDeleteFile(IN POBJECT_ATTRIBUTES ObjectAttributes)
{
UNIMPLEMENTED;
}
{
HANDLE FileHandle;
PFILE_OBJECT CreatedFileObject;
+ NTSTATUS Status;
DPRINT("IoCreateStreamFileObject(FileObject %x, DeviceObject %x)\n",
FileObject, DeviceObject);
assert_irql (PASSIVE_LEVEL);
- CreatedFileObject = ObCreateObject (&FileHandle,
- STANDARD_RIGHTS_REQUIRED,
- NULL,
- IoFileObjectType);
- if (NULL == CreatedFileObject)
+ Status = ObCreateObject (&FileHandle,
+ STANDARD_RIGHTS_REQUIRED,
+ NULL,
+ IoFileObjectType,
+ (PVOID*)&CreatedFileObject);
+ if (!NT_SUCCESS(Status))
{
DPRINT("Could not create FileObject\n");
return (NULL);
*FileHandle = 0;
- FileObject = ObCreateObject(FileHandle,
- DesiredAccess,
- ObjectAttributes,
- IoFileObjectType);
- if (FileObject == NULL)
+ Status = ObCreateObject(FileHandle,
+ DesiredAccess,
+ ObjectAttributes,
+ IoFileObjectType,
+ (PVOID*)&FileObject);
+ if (!NT_SUCCESS(Status))
{
DPRINT1("ObCreateObject() failed!\n");
- return (STATUS_UNSUCCESSFUL);
+ return (Status);
}
if (CreateOptions & FILE_SYNCHRONOUS_IO_ALERT)
{
-/* $Id: device.c,v 1.28 2001/05/05 19:13:09 chorns Exp $
+/* $Id: device.c,v 1.29 2001/06/16 14:07:30 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
PDEVICE_OBJECT CreatedDeviceObject;
OBJECT_ATTRIBUTES ObjectAttributes;
HANDLE DeviceHandle;
+ NTSTATUS Status;
assert_irql(PASSIVE_LEVEL);
if (DeviceName != NULL)
{
InitializeObjectAttributes(&ObjectAttributes,DeviceName,0,NULL,NULL);
- CreatedDeviceObject = ObCreateObject(&DeviceHandle,
- 0,
- &ObjectAttributes,
- IoDeviceObjectType);
+ Status = ObCreateObject(&DeviceHandle,
+ 0,
+ &ObjectAttributes,
+ IoDeviceObjectType,
+ (PVOID*)&CreatedDeviceObject);
}
else
{
- CreatedDeviceObject = ObCreateObject(&DeviceHandle,
- 0,
- NULL,
- IoDeviceObjectType);
+ Status = ObCreateObject(&DeviceHandle,
+ 0,
+ NULL,
+ IoDeviceObjectType,
+ (PVOID*)&CreatedDeviceObject);
}
*DeviceObject = NULL;
- if (CreatedDeviceObject == NULL)
+ if (!NT_SUCCESS(Status))
{
- return(STATUS_INSUFFICIENT_RESOURCES);
+ return(Status);
}
if (DriverObject->DeviceObject == NULL)
-/* $Id: symlink.c,v 1.20 2001/05/05 09:32:36 ekohl Exp $
+/* $Id: symlink.c,v 1.21 2001/06/16 14:07:30 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
{
OBJECT_ATTRIBUTES ObjectAttributes;
PSYMLNK_OBJECT SymbolicLink;
+ NTSTATUS Status;
assert_irql(PASSIVE_LEVEL);
NULL,
NULL
);
- SymbolicLink = ObCreateObject(
+ Status = ObCreateObject(
NULL,
SYMBOLIC_LINK_ALL_ACCESS,
& ObjectAttributes,
- IoSymbolicLinkType
+ IoSymbolicLinkType,
+ (PVOID*)&SymbolicLink
);
- if (SymbolicLink == NULL)
+ if (!NT_SUCCESS(Status))
{
- return STATUS_UNSUCCESSFUL;
+ return(Status);
}
SymbolicLink->TargetName.Length = 0;
SymbolicLink->TargetName.MaximumLength =
IN PUNICODE_STRING DeviceName)
{
PSYMLNK_OBJECT SymbolicLink;
+ NTSTATUS Status;
assert_irql(PASSIVE_LEVEL);
ObjectAttributes,
DeviceName->Buffer);
- SymbolicLink = ObCreateObject(SymbolicLinkHandle,
- DesiredAccess,
- ObjectAttributes,
- IoSymbolicLinkType);
- if (SymbolicLink == NULL)
+ Status = ObCreateObject(SymbolicLinkHandle,
+ DesiredAccess,
+ ObjectAttributes,
+ IoSymbolicLinkType,
+ (PVOID*)&SymbolicLink);
+ if (!NT_SUCCESS(Status))
{
- return STATUS_UNSUCCESSFUL;
+ return(Status);
}
SymbolicLink->TargetName.Length = 0;
-/* $Id: loader.c,v 1.82 2001/06/12 12:31:28 ekohl Exp $
+/* $Id: loader.c,v 1.83 2001/06/16 14:08:33 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
/* FORWARD DECLARATIONS ******************************************************/
PMODULE_OBJECT LdrLoadModule(PUNICODE_STRING Filename);
-PMODULE_OBJECT LdrProcessModule(PVOID ModuleLoadBase, PUNICODE_STRING ModuleName);
+NTSTATUS LdrProcessModule(PVOID ModuleLoadBase,
+ PUNICODE_STRING ModuleName,
+ PMODULE_OBJECT *ModuleObject);
PVOID LdrGetExportAddress(PMODULE_OBJECT ModuleObject, char *Name, unsigned short Hint);
static PMODULE_OBJECT LdrOpenModule(PUNICODE_STRING Filename);
static NTSTATUS LdrCreateModule(PVOID ObjectBody,
PUNICODE_STRING FullName);
/* PE Driver load support */
-static PMODULE_OBJECT LdrPEProcessModule(PVOID ModuleLoadBase, PUNICODE_STRING FileName);
+static NTSTATUS LdrPEProcessModule(PVOID ModuleLoadBase,
+ PUNICODE_STRING FileName,
+ PMODULE_OBJECT *ModuleObject);
static PVOID LdrPEGetExportAddress(PMODULE_OBJECT ModuleObject,
char *Name,
unsigned short Hint);
/* Create module object */
ModuleHandle = 0;
- ModuleObject = ObCreateObject(&ModuleHandle,
- STANDARD_RIGHTS_REQUIRED,
- &ObjectAttributes,
- IoDriverObjectType);
- assert(ModuleObject != NULL);
+ Status = ObCreateObject(&ModuleHandle,
+ STANDARD_RIGHTS_REQUIRED,
+ &ObjectAttributes,
+ IoDriverObjectType,
+ (PVOID*)&ModuleObject);
+ assert(NT_SUCCESS(Status));
InitializeListHead(&ModuleListHead);
NtClose(FileHandle);
- ModuleObject = LdrProcessModule(ModuleLoadBase, Filename);
+ Status = LdrProcessModule(ModuleLoadBase,
+ Filename,
+ &ModuleObject);
+ if (!NT_SUCCESS(Status))
+ {
+ CPRINT("Could not process module");
+ ExFreePool(ModuleLoadBase);
+ return NULL;
+ }
/* Cleanup */
ExFreePool(ModuleLoadBase);
RtlCreateUnicodeStringFromAsciiz(&ModuleName,
FileName);
- ModuleObject = LdrProcessModule(ModuleLoadBase,
- &ModuleName);
+ Status = LdrProcessModule(ModuleLoadBase,
+ &ModuleName,
+ &ModuleObject);
RtlFreeUnicodeString(&ModuleName);
if (ModuleObject == NULL)
{
return(Status);
}
-PMODULE_OBJECT
-LdrProcessModule(PVOID ModuleLoadBase, PUNICODE_STRING ModuleName)
+NTSTATUS
+LdrProcessModule(PVOID ModuleLoadBase,
+ PUNICODE_STRING ModuleName,
+ PMODULE_OBJECT *ModuleObject)
{
PIMAGE_DOS_HEADER PEDosHeader;
PEDosHeader = (PIMAGE_DOS_HEADER) ModuleLoadBase;
if (PEDosHeader->e_magic == IMAGE_DOS_MAGIC && PEDosHeader->e_lfanew != 0L)
{
- return LdrPEProcessModule(ModuleLoadBase, ModuleName);
+ return LdrPEProcessModule(ModuleLoadBase,
+ ModuleName,
+ ModuleObject);
}
CPRINT("Module wasn't PE\n");
- return 0;
+ return STATUS_UNSUCCESSFUL;
}
static PMODULE_OBJECT
/* ---------------------------------------------- PE Module support */
-PMODULE_OBJECT
-LdrPEProcessModule(PVOID ModuleLoadBase, PUNICODE_STRING FileName)
+static NTSTATUS
+LdrPEProcessModule(PVOID ModuleLoadBase,
+ PUNICODE_STRING FileName,
+ PMODULE_OBJECT *ModuleObject)
{
unsigned int DriverSize, Idx, Idx2;
ULONG RelocDelta, NumRelocs;
PRELOCATION_ENTRY RelocEntry;
PMODULE_OBJECT LibraryModuleObject;
HANDLE ModuleHandle;
- PMODULE_OBJECT ModuleObject;
+ PMODULE_OBJECT CreatedModuleObject;
PVOID *ImportAddressList;
PULONG FunctionNameList;
PCHAR pName, SymbolNameBuf;
UNICODE_STRING ModuleName;
WCHAR NameBuffer[60];
MODULE_TEXT_SECTION* ModuleTextSection;
+ NTSTATUS Status;
DPRINT("Processing PE Module at module base:%08lx\n", ModuleLoadBase);
if (PEDosHeader->e_magic != IMAGE_DOS_MAGIC)
{
CPRINT("Incorrect MZ magic: %04x\n", PEDosHeader->e_magic);
- return 0;
+ return STATUS_UNSUCCESSFUL;
}
if (PEDosHeader->e_lfanew == 0)
{
CPRINT("Invalid lfanew offset: %08x\n", PEDosHeader->e_lfanew);
- return NULL;
+ return STATUS_UNSUCCESSFUL;
}
if (*PEMagic != IMAGE_PE_MAGIC)
{
CPRINT("Incorrect PE magic: %08x\n", *PEMagic);
- return NULL;
+ return STATUS_UNSUCCESSFUL;
}
if (PEFileHeader->Machine != IMAGE_FILE_MACHINE_I386)
{
CPRINT("Incorrect Architechture: %04x\n", PEFileHeader->Machine);
- return NULL;
+ return STATUS_UNSUCCESSFUL;
}
CHECKPOINT;
if (DriverBase == 0)
{
CPRINT("Failed to allocate a virtual section for driver\n");
- return 0;
+ return STATUS_UNSUCCESSFUL;
}
CPRINT("DriverBase: %x\n", DriverBase);
CHECKPOINT;
else if (Type != 0)
{
CPRINT("Unknown relocation type %x at %x\n",Type, &Type);
- return NULL;
+ return STATUS_UNSUCCESSFUL;
}
}
TotalRelocs += RelocDir->SizeOfBlock;
else
{
CPRINT("Unresolved kernel symbol: %s\n", pName);
- return(NULL);
+ return STATUS_UNSUCCESSFUL;
}
ImportAddressList++;
FunctionNameList++;
/* Create module object */
ModuleHandle = 0;
- ModuleObject = ObCreateObject(&ModuleHandle,
- STANDARD_RIGHTS_REQUIRED,
- &ObjectAttributes,
- IoDriverObjectType);
+ Status = ObCreateObject(&ModuleHandle,
+ STANDARD_RIGHTS_REQUIRED,
+ &ObjectAttributes,
+ IoDriverObjectType,
+ (PVOID*)&CreatedModuleObject);
+ if (!NT_SUCCESS(Status))
+ {
+ return(Status);
+ }
/* Initialize ModuleObject data */
- ModuleObject->Base = DriverBase;
- ModuleObject->Flags = MODULE_FLAG_PE;
+ CreatedModuleObject->Base = DriverBase;
+ CreatedModuleObject->Flags = MODULE_FLAG_PE;
InsertTailList(&ModuleListHead,
- &ModuleObject->ListEntry);
- RtlCreateUnicodeString(&ModuleObject->FullName,
+ &CreatedModuleObject->ListEntry);
+ RtlCreateUnicodeString(&CreatedModuleObject->FullName,
FileName->Buffer);
- LdrpBuildModuleBaseName(&ModuleObject->BaseName,
- &ModuleObject->FullName);
+ LdrpBuildModuleBaseName(&CreatedModuleObject->BaseName,
+ &CreatedModuleObject->FullName);
- ModuleObject->EntryPoint = (PVOID) ((DWORD)DriverBase +
+ CreatedModuleObject->EntryPoint = (PVOID) ((DWORD)DriverBase +
PEOptionalHeader->AddressOfEntryPoint);
- ModuleObject->Length = DriverSize;
- DPRINT("entrypoint at %x\n", ModuleObject->EntryPoint);
+ CreatedModuleObject->Length = DriverSize;
+ DPRINT("EntryPoint at %x\n", CreatedModuleObject->EntryPoint);
- ModuleObject->Image.PE.FileHeader =
+ CreatedModuleObject->Image.PE.FileHeader =
(PIMAGE_FILE_HEADER) ((unsigned int) DriverBase + PEDosHeader->e_lfanew + sizeof(ULONG));
- DPRINT("FileHeader at %x\n", ModuleObject->Image.PE.FileHeader);
- ModuleObject->Image.PE.OptionalHeader =
+ DPRINT("FileHeader at %x\n", CreatedModuleObject->Image.PE.FileHeader);
+ CreatedModuleObject->Image.PE.OptionalHeader =
(PIMAGE_OPTIONAL_HEADER) ((unsigned int) DriverBase + PEDosHeader->e_lfanew + sizeof(ULONG) +
sizeof(IMAGE_FILE_HEADER));
- DPRINT("OptionalHeader at %x\n", ModuleObject->Image.PE.OptionalHeader);
- ModuleObject->Image.PE.SectionList =
+ DPRINT("OptionalHeader at %x\n", CreatedModuleObject->Image.PE.OptionalHeader);
+ CreatedModuleObject->Image.PE.SectionList =
(PIMAGE_SECTION_HEADER) ((unsigned int) DriverBase + PEDosHeader->e_lfanew + sizeof(ULONG) +
sizeof(IMAGE_FILE_HEADER) + sizeof(IMAGE_OPTIONAL_HEADER));
- DPRINT("SectionList at %x\n", ModuleObject->Image.PE.SectionList);
+ DPRINT("SectionList at %x\n", CreatedModuleObject->Image.PE.SectionList);
ModuleTextSection = ExAllocatePool(NonPagedPool,
sizeof(MODULE_TEXT_SECTION));
wcscpy(ModuleTextSection->Name, NameBuffer);
InsertTailList(&ModuleTextListHead, &ModuleTextSection->ListEntry);
- ModuleObject->TextSection = ModuleTextSection;
+ CreatedModuleObject->TextSection = ModuleTextSection;
- return ModuleObject;
+ *ModuleObject = CreatedModuleObject;
+
+ return STATUS_SUCCESS;
}
static PVOID
-/* $Id: connect.c,v 1.5 2001/03/07 16:48:43 dwelch Exp $
+/* $Id: connect.c,v 1.6 2001/06/16 14:08:57 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
/*
* Create a port to represent our side of the connection
*/
- OurPort = ObCreateObject (&OurPortHandle,
- PORT_ALL_ACCESS,
- NULL,
- ExPortType);
+ Status = ObCreateObject (&OurPortHandle,
+ PORT_ALL_ACCESS,
+ NULL,
+ ExPortType,
+ (PVOID*)&OurPort);
+ if (!NT_SUCCESS(Status))
+ {
+ DPRINT("Failed to create port object (status %x)\n", Status);
+ return (Status);
+ }
NiInitializePort(OurPort);
/*
* Create a request message
*/
if (AcceptIt == 1)
{
- OurPort = ObCreateObject (ServerPortHandle,
- PORT_ALL_ACCESS,
- NULL,
- ExPortType);
+ Status = ObCreateObject(ServerPortHandle,
+ PORT_ALL_ACCESS,
+ NULL,
+ ExPortType,
+ (PVOID*)&OurPort);
+ if (!NT_SUCCESS(Status))
+ {
+ ObDereferenceObject(NamedPort);
+ return(Status);
+ }
NiInitializePort(OurPort);
}
/*
if (AcceptIt != 1)
{
- EiReplyOrRequestPort (ConnectionRequest->Sender,
- LpcMessage,
+ EiReplyOrRequestPort (ConnectionRequest->Sender,
+ LpcMessage,
LPC_CONNECTION_REFUSED,
NamedPort);
KeSetEvent (&ConnectionRequest->Sender->Event,
*/
OurPort->OtherPort = ConnectionRequest->Sender;
OurPort->OtherPort->OtherPort = OurPort;
- EiReplyOrRequestPort (ConnectionRequest->Sender,
- LpcMessage,
+ EiReplyOrRequestPort (ConnectionRequest->Sender,
+ LpcMessage,
LPC_REPLY,
OurPort);
ExFreePool (ConnectionRequest);
- ObDereferenceObject (OurPort);
+ ObDereferenceObject (OurPort);
ObDereferenceObject (NamedPort);
return (STATUS_SUCCESS);
-/* $Id: create.c,v 1.3 2001/01/29 00:13:22 ea Exp $
+/* $Id: create.c,v 1.4 2001/06/16 14:08:57 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
MaxDataLength,
Reserved
);
- if (STATUS_SUCCESS != Status)
+ if (!NT_SUCCESS(Status))
{
return (Status);
}
/* Ask Ob to create the object */
- Port = ObCreateObject (
+ Status = ObCreateObject (
PortHandle,
PORT_ALL_ACCESS,
ObjectAttributes,
- ExPortType
+ ExPortType,
+ (PVOID*)&Port
);
- if (Port == NULL)
+ if (!NT_SUCCESS(Status))
{
- return (STATUS_UNSUCCESSFUL);
+ return (Status);
}
Status = NiInitializePort (Port);
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-/* $Id: section.c,v 1.57 2001/05/04 01:21:44 rex Exp $
+/* $Id: section.c,v 1.58 2001/06/16 14:09:21 ekohl Exp $
*
* PROJECT: ReactOS kernel
* FILE: ntoskrnl/mm/section.c
LARGE_INTEGER MaximumSize;
PSECTION_OBJECT Section;
PMM_SECTION_SEGMENT Segment;
+ NTSTATUS Status;
if (UMaximumSize == NULL)
{
/*
* Create the section
*/
- Section = ObCreateObject(SectionHandle,
- DesiredAccess,
- ObjectAttributes,
- MmSectionObjectType);
- if (Section == NULL)
+ Status = ObCreateObject(SectionHandle,
+ DesiredAccess,
+ ObjectAttributes,
+ MmSectionObjectType,
+ (PVOID*)&Section);
+ if (!NT_SUCCESS(Status))
{
- return(STATUS_UNSUCCESSFUL);
+ return(Status);
}
/*
Segment->Protection = SectionPageProtection;
Segment->Attributes = AllocationAttributes;
Segment->Length = MaximumSize.u.LowPart;
- Segment->Flags = MM_PAGEFILE_SECTION;
+ Segment->Flags = MM_PAGEFILE_SECTION;
return(STATUS_SUCCESS);
-}
-
+}
+
NTSTATUS
MmCreateDataFileSection(PHANDLE SectionHandle,
/*
* Create the section
*/
- Section = ObCreateObject(SectionHandle,
- DesiredAccess,
- ObjectAttributes,
- MmSectionObjectType);
- if (Section == NULL)
+ Status = ObCreateObject(SectionHandle,
+ DesiredAccess,
+ ObjectAttributes,
+ MmSectionObjectType,
+ (PVOID*)&Section);
+ if (!NT_SUCCESS(Status))
{
- return(STATUS_UNSUCCESSFUL);
+ return(Status);
}
/*
/*
* Create the section
*/
- Section = ObCreateObject(SectionHandle,
- DesiredAccess,
- ObjectAttributes,
- MmSectionObjectType);
- if (Section == NULL)
+ Status = ObCreateObject(SectionHandle,
+ DesiredAccess,
+ ObjectAttributes,
+ MmSectionObjectType,
+ (PVOID*)&Section);
+ if (!NT_SUCCESS(Status))
{
ExFreePool(ImageSections);
- return(STATUS_UNSUCCESSFUL);
+ return(Status);
}
/*
-/* $Id: evtpair.c,v 1.7 2001/05/27 23:03:51 ekohl Exp $
+/* $Id: evtpair.c,v 1.8 2001/06/16 14:10:08 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
IN POBJECT_ATTRIBUTES ObjectAttributes)
{
PKEVENT_PAIR EventPair;
+ NTSTATUS Status;
DPRINT("NtCreateEventPair()\n");
- EventPair = ObCreateObject(EventPairHandle,
- DesiredAccess,
- ObjectAttributes,
- ExEventPairObjectType);
+ Status = ObCreateObject(EventPairHandle,
+ DesiredAccess,
+ ObjectAttributes,
+ ExEventPairObjectType,
+ (PVOID*)&EventPair);
+ if (!NT_SUCCESS(Status))
+ {
+ return(Status);
+ }
KeInitializeEvent(&EventPair->LowEvent,
SynchronizationEvent,
FALSE);
ObjectAttributes = NULL;
}
- Event = ObCreateObject(&EventHandle,
- DesiredAccess,
- ObjectAttributes,
- ExEventObjectType);
+ Status = ObCreateObject(&EventHandle,
+ DesiredAccess,
+ ObjectAttributes,
+ ExEventObjectType,
+ (PVOID*)&Event);
+ if (!NT_SUCCESS(Status))
+ {
+ return(Status);
+ }
KeInitializeEvent(Event,
ManualReset ? NotificationEvent : SynchronizationEvent,
InitialState);
Status = MmCopyToCaller(UnsafeEventHandle, &EventHandle, sizeof(HANDLE));
if (!NT_SUCCESS(Status))
{
- ZwClose(EventHandle);
- return(Status);
+ ZwClose(EventHandle);
+ return(Status);
}
return(STATUS_SUCCESS);
}
-/* $Id: ntsem.c,v 1.11 2001/03/13 16:25:55 dwelch Exp $
+/* $Id: ntsem.c,v 1.12 2001/06/16 14:10:08 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
IN LONG MaximumCount)
{
PKSEMAPHORE Semaphore;
+ NTSTATUS Status;
- Semaphore = ObCreateObject(SemaphoreHandle,
- DesiredAccess,
- ObjectAttributes,
- ExSemaphoreType);
+ Status = ObCreateObject(SemaphoreHandle,
+ DesiredAccess,
+ ObjectAttributes,
+ ExSemaphoreType,
+ (PVOID*)&Semaphore);
+ if (!NT_SUCCESS(Status))
+ {
+ return(Status);
+ }
KeInitializeSemaphore(Semaphore,
InitialCount,
MaximumCount);
-/* $Id: nttimer.c,v 1.9 2001/03/07 16:48:44 dwelch Exp $
+/* $Id: nttimer.c,v 1.10 2001/06/16 14:10:08 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
IN TIMER_TYPE TimerType)
{
PNTTIMER Timer;
+ NTSTATUS Status;
DPRINT("NtCreateTimer()\n");
- Timer = ObCreateObject(TimerHandle,
- DesiredAccess,
- ObjectAttributes,
- ExTimerType);
+ Status = ObCreateObject(TimerHandle,
+ DesiredAccess,
+ ObjectAttributes,
+ ExTimerType,
+ (PVOID*)&Timer);
+ if (!NT_SUCCESS(Status))
+ return Status;
KeInitializeTimerEx(&Timer->Timer,
TimerType);
/*
* Create the object
*/
- Profile = ObCreateObject(&ProfileHandle,
- STANDARD_RIGHTS_ALL,
- NULL,
- ExProfileObjectType);
+ Status = ObCreateObject(&ProfileHandle,
+ STANDARD_RIGHTS_ALL,
+ NULL,
+ ExProfileObjectType,
+ (PVOID*)&Profile);
+ if (!NT_SUCCESS(Status))
+ {
+ return(Status);
+ }
/*
* Initialize it
-; $Id: ntoskrnl.def,v 1.107 2001/06/01 17:14:40 ekohl Exp $
+; $Id: ntoskrnl.def,v 1.108 2001/06/16 14:05:29 ekohl Exp $
;
; reactos/ntoskrnl/ntoskrnl.def
;
;ObCheckCreateObjectAccess@28
;ObCheckObjectAccess@20
;ObCreateObject@36
-ObCreateObject@16
+ObCreateObject@20
;ObFindHandleForObject@20
;ObGetObjectPointerCount@4
;ObGetObjectSecurity@12
-; $Id: ntoskrnl.edf,v 1.94 2001/06/01 17:14:40 ekohl Exp $
+; $Id: ntoskrnl.edf,v 1.95 2001/06/16 14:05:29 ekohl Exp $
;
; reactos/ntoskrnl/ntoskrnl.def
;
;ObCheckCreateObjectAccess=ObCheckCreateObjectAccess@28
;ObCheckObjectAccess=ObCheckObjectAccess@20
;ObCreateObject=ObCreateObject@36
-ObCreateObject=ObCreateObject@16
+ObCreateObject=ObCreateObject@20
;ObFindHandleForObject=ObFindHandleForObject@20
;ObGetObjectPointerCount=ObGetObjectPointerCount@4
;ObGetObjectSecurity=ObGetObjectSecurity@12
-/* $Id: dirobj.c,v 1.11 2001/05/04 21:44:21 ea Exp $
+/* $Id: dirobj.c,v 1.12 2001/06/16 14:10:55 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
* RETURN VALUE
* Status.
*/
-NTSTATUS STDCALL NtCreateDirectoryObject (PHANDLE DirectoryHandle,
- ACCESS_MASK DesiredAccess,
- POBJECT_ATTRIBUTES ObjectAttributes)
+NTSTATUS STDCALL
+NtCreateDirectoryObject(PHANDLE DirectoryHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes)
{
PDIRECTORY_OBJECT dir;
DirectoryHandle, DesiredAccess, ObjectAttributes,
ObjectAttributes->ObjectName);
- dir = ObCreateObject(DirectoryHandle,
- DesiredAccess,
- ObjectAttributes,
- ObDirectoryType);
- return(STATUS_SUCCESS);
+ return(ObCreateObject(DirectoryHandle,
+ DesiredAccess,
+ ObjectAttributes,
+ ObDirectoryType,
+ (PVOID*)&dir));
}
/* EOF */
-/* $Id: namespc.c,v 1.24 2001/06/12 12:32:11 ekohl Exp $
+/* $Id: namespc.c,v 1.25 2001/06/16 14:10:55 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
RtlInitUnicodeString(&ObDirectoryType->TypeName,
L"Directory");
- NameSpaceRoot = ObCreateObject(NULL,
- STANDARD_RIGHTS_REQUIRED,
- NULL,
- ObDirectoryType);
+ ObCreateObject(NULL,
+ STANDARD_RIGHTS_REQUIRED,
+ NULL,
+ ObDirectoryType,
+ (PVOID*)&NameSpaceRoot);
}
VOID ObRemoveEntry(POBJECT_HEADER Header)
-/* $Id: object.c,v 1.38 2001/06/12 17:50:27 chorns Exp $
+/* $Id: object.c,v 1.39 2001/06/16 14:10:55 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
*
* RETURN VALUE
*/
-PVOID STDCALL
+NTSTATUS STDCALL
ObCreateObject(PHANDLE Handle,
ACCESS_MASK DesiredAccess,
POBJECT_ATTRIBUTES ObjectAttributes,
- POBJECT_TYPE Type)
+ POBJECT_TYPE Type,
+ PVOID *Object)
{
PVOID Parent = NULL;
UNICODE_STRING RemainingPath;
if (!NT_SUCCESS(Status))
{
DPRINT("ObFindObject() failed! (Status 0x%x)\n", Status);
- return (NULL);
+ return(Status);
}
}
else
RtlFreeUnicodeString( &Header->Name );
RtlFreeUnicodeString( &RemainingPath );
ExFreePool( Header );
- return(NULL);
+ return(Status);
}
}
RtlFreeUnicodeString( &RemainingPath );
- return(HEADER_TO_BODY(Header));
+ *Object = HEADER_TO_BODY(Header);
+ return(STATUS_SUCCESS);
}
NTSTATUS STDCALL
-/* $Id: create.c,v 1.32 2001/03/18 19:35:13 dwelch Exp $
+/* $Id: create.c,v 1.33 2001/06/16 14:11:15 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
ObGetHandleCount(ObjectBody));
}
-NTSTATUS PsInitializeThread(HANDLE ProcessHandle,
- PETHREAD* ThreadPtr,
- PHANDLE ThreadHandle,
- ACCESS_MASK DesiredAccess,
- POBJECT_ATTRIBUTES ThreadAttributes,
- BOOLEAN First)
+NTSTATUS
+PsInitializeThread(HANDLE ProcessHandle,
+ PETHREAD* ThreadPtr,
+ PHANDLE ThreadHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ThreadAttributes,
+ BOOLEAN First)
{
PETHREAD Thread;
NTSTATUS Status;
/*
* Create and initialize thread
*/
- Thread = ObCreateObject(ThreadHandle,
+ Status = ObCreateObject(ThreadHandle,
DesiredAccess,
ThreadAttributes,
- PsThreadType);
+ PsThreadType,
+ (PVOID*)&Thread);
+ if (!NT_SUCCESS(Status))
+ {
+ return(Status);
+ }
+
DPRINT("Thread = %x\n",Thread);
PiNrThreads++;
-/* $Id: process.c,v 1.64 2001/06/12 17:50:28 chorns Exp $
+/* $Id: process.c,v 1.65 2001/06/16 14:11:15 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
PKPROCESS KProcess;
KIRQL oldIrql;
+ NTSTATUS Status;
/*
* Register the process object type
- */
+ */
PsProcessType = ExAllocatePool(NonPagedPool, sizeof(OBJECT_TYPE));
/*
* Initialize the system process
*/
- PsInitialSystemProcess = ObCreateObject(NULL,
- PROCESS_ALL_ACCESS,
- NULL,
- PsProcessType);
+ Status = ObCreateObject(NULL,
+ PROCESS_ALL_ACCESS,
+ NULL,
+ PsProcessType,
+ (PVOID*)&PsInitialSystemProcess);
+ if (!NT_SUCCESS(Status))
+ {
+ return;
+ }
+
/* System threads may run on any processor. */
PsInitialSystemProcess->Pcb.Affinity = 0xFFFFFFFF;
PsInitialSystemProcess->Pcb.BasePriority = PROCESS_PRIO_NORMAL;
UserMode,
(PVOID*)&ParentProcess,
NULL);
-
- if (Status != STATUS_SUCCESS)
+ if (!NT_SUCCESS(Status))
{
DPRINT("NtCreateProcess() = %x\n",Status);
return(Status);
}
- Process = ObCreateObject(ProcessHandle,
- DesiredAccess,
- ObjectAttributes,
- PsProcessType);
+ Status = ObCreateObject(ProcessHandle,
+ DesiredAccess,
+ ObjectAttributes,
+ PsProcessType,
+ (PVOID*)&Process);
+ if (!NT_SUCCESS(Status))
+ {
+ ObDereferenceObject(ParentProcess);
+ DPRINT("ObCreateObject() = %x\n",Status);
+ return(Status);
+ }
+
KeInitializeDispatcherHeader(&Process->Pcb.DispatcherHeader,
InternalProcessType,
sizeof(EPROCESS),
-/* $Id: winsta.c,v 1.1 2001/06/12 17:50:29 chorns Exp $
+/* $Id: winsta.c,v 1.2 2001/06/16 14:11:31 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
DPRINT("Creating window station (%wZ)\n", &WindowStationName);
- WinStaObject = (PWINSTATION_OBJECT)ObCreateObject(
+ Status = ObCreateObject(
&WinSta,
STANDARD_RIGHTS_REQUIRED,
&ObjectAttributes,
- ExWindowStationObjectType);
- if (!WinStaObject)
+ ExWindowStationObjectType,
+ (PVOID*)&WinStaObject);
+ if (!NT_SUCCESS(Status))
{
DPRINT("Failed creating window station (%wZ)\n", &WindowStationName);
SetLastNtError(STATUS_INSUFFICIENT_RESOURCES);
DPRINT("Status for open operation (0x%X)\n", Status);
- DesktopObject = (PDESKTOP_OBJECT)ObCreateObject(
+ Status = ObCreateObject(
&Desktop,
STANDARD_RIGHTS_REQUIRED,
&ObjectAttributes,
- ExDesktopObjectType);
- if (!DesktopObject)
+ ExDesktopObjectType,
+ (PVOID*)&DesktopObject);
+ if (!NT_SUCCESS(Status))
{
DPRINT("Failed creating desktop (%wZ)\n", &DesktopName);
SetLastNtError(STATUS_UNSUCCESSFUL);