Put in alphabetical order, remove IopCreateDevice, and remove incorrect implementation tag for EFi functions Modified: trunk/reactos/ntoskrnl/io/device.c Modified: trunk/reactos/ntoskrnl/io/driver.c Modified: trunk/reactos/ntoskrnl/io/efi.c Modified: trunk/reactos/ntoskrnl/io/iomgr.c _____
Modified: trunk/reactos/ntoskrnl/io/device.c --- trunk/reactos/ntoskrnl/io/device.c 2005-04-17 15:09:15 UTC (rev 14649) +++ trunk/reactos/ntoskrnl/io/device.c 2005-04-17 16:26:44 UTC (rev 14650) @@ -113,22 +113,6 @@
return STATUS_SUCCESS; }
-NTSTATUS STDCALL -IopCreateDevice( - PVOID ObjectBody, - PVOID Parent, - PWSTR RemainingPath, - POBJECT_ATTRIBUTES ObjectAttributes) -{ - DPRINT("IopCreateDevice(ObjectBody %x, Parent %x, RemainingPath %S)\n", - ObjectBody, Parent, RemainingPath); - - if (RemainingPath != NULL && wcschr(RemainingPath + 1, '\') != NULL) - return STATUS_OBJECT_PATH_NOT_FOUND; - - return STATUS_SUCCESS; -} - NTSTATUS STDCALL IopGetDeviceObjectPointer(IN PUNICODE_STRING ObjectName, @@ -238,36 +222,11 @@ }
/* - * IoAttachDeviceToDeviceStack - * - * Status - * @implemented - */ -PDEVICE_OBJECT -STDCALL -IoAttachDeviceToDeviceStack(PDEVICE_OBJECT SourceDevice, - PDEVICE_OBJECT TargetDevice) -{ - NTSTATUS Status; - PDEVICE_OBJECT LocalAttach; - - /* Attach it safely */ - DPRINT("IoAttachDeviceToDeviceStack\n"); - Status = IoAttachDeviceToDeviceStackSafe(SourceDevice, - TargetDevice, - &LocalAttach); - - /* Return it */ - DPRINT("IoAttachDeviceToDeviceStack DONE: %x\n", LocalAttach); - return LocalAttach; -} -/* * IoAttachDeviceByPointer * * Status * @implemented */ - NTSTATUS STDCALL IoAttachDeviceByPointer(IN PDEVICE_OBJECT SourceDevice, @@ -288,6 +247,31 @@ }
/* + * IoAttachDeviceToDeviceStack + * + * Status + * @implemented + */ +PDEVICE_OBJECT +STDCALL +IoAttachDeviceToDeviceStack(PDEVICE_OBJECT SourceDevice, + PDEVICE_OBJECT TargetDevice) +{ + NTSTATUS Status; + PDEVICE_OBJECT LocalAttach; + + /* Attach it safely */ + DPRINT("IoAttachDeviceToDeviceStack\n"); + Status = IoAttachDeviceToDeviceStackSafe(SourceDevice, + TargetDevice, + &LocalAttach); + + /* Return it */ + DPRINT("IoAttachDeviceToDeviceStack DONE: %x\n", LocalAttach); + return LocalAttach; +} + +/* * @implemented */ NTSTATUS @@ -334,12 +318,210 @@ }
/* + * IoCreateDevice + * + * Allocates memory for and intializes a device object for use for + * a driver. + * + * Parameters + * DriverObject + * Driver object passed by IO Manager when the driver was loaded. + * + * DeviceExtensionSize + * Number of bytes for the device extension. + * + * DeviceName + * Unicode name of device. + * + * DeviceType + * Device type of the new device. + * + * DeviceCharacteristics + * Bit mask of device characteristics. + * + * Exclusive + * TRUE if only one thread can access the device at a time. + * + * DeviceObject + * On successful return this parameter is filled by pointer to + * allocated device object. + * + * Status + * @implemented + */ +NTSTATUS +STDCALL +IoCreateDevice(PDRIVER_OBJECT DriverObject, + ULONG DeviceExtensionSize, + PUNICODE_STRING DeviceName, + DEVICE_TYPE DeviceType, + ULONG DeviceCharacteristics, + BOOLEAN Exclusive, + PDEVICE_OBJECT *DeviceObject) +{ + WCHAR AutoNameBuffer[20]; + UNICODE_STRING AutoName; + PDEVICE_OBJECT CreatedDeviceObject; + PDEVOBJ_EXTENSION DeviceObjectExtension; + OBJECT_ATTRIBUTES ObjectAttributes; + NTSTATUS Status; + ULONG AlignedDeviceExtensionSize; + ULONG TotalSize; + HANDLE TempHandle; + + ASSERT_IRQL(PASSIVE_LEVEL); + DPRINT("IoCreateDevice(DriverObject %x)\n",DriverObject); + + /* Generate a name if we have to */ + if (DeviceCharacteristics & FILE_AUTOGENERATED_DEVICE_NAME) + { + swprintf(AutoNameBuffer, + L"\Device\%08lx", + InterlockedIncrementUL(&IopDeviceObjectNumber)); + RtlInitUnicodeString(&AutoName, AutoNameBuffer); + DeviceName = &AutoName; + } + + /* Initialize the Object Attributes */ + InitializeObjectAttributes(&ObjectAttributes, DeviceName, 0, NULL, NULL); + + /* Honour exclusive flag */ + ObjectAttributes.Attributes |= OBJ_EXCLUSIVE; + + /* Align the Extension Size to 8-bytes */ + AlignedDeviceExtensionSize = (DeviceExtensionSize + 7) &~ 7; + DPRINT("AlignedDeviceExtensionSize %x\n", AlignedDeviceExtensionSize); + + /* Total Size */ + TotalSize = AlignedDeviceExtensionSize + + sizeof(DEVICE_OBJECT) + sizeof(DEVOBJ_EXTENSION); + DPRINT("TotalSize %x\n", TotalSize); + + /* Create the Device Object */ + Status = ObCreateObject(KernelMode, + IoDeviceObjectType, + &ObjectAttributes, + KernelMode, + NULL, + TotalSize, + 0, + 0, + (PVOID*)&CreatedDeviceObject); + + if (!NT_SUCCESS(Status)) + { + DPRINT1("IoCreateDevice() ObCreateObject failed, status: 0x%08X\n", Status); + return Status; + } + + /* Clear the whole Object and extension so we don't null stuff manually */ + RtlZeroMemory(CreatedDeviceObject, TotalSize); + DPRINT("CreatedDeviceObject %x\n", CreatedDeviceObject); + + /* + * Setup the Type and Size. Note that we don't use the aligned size, + * because that's only padding for the DevObjExt and not part of the Object. + */ + CreatedDeviceObject->Type = IO_TYPE_DEVICE; + CreatedDeviceObject->Size = sizeof(DEVICE_OBJECT) + DeviceExtensionSize; + + /* The kernel extension is after the driver internal extension */ + DeviceObjectExtension = (PDEVOBJ_EXTENSION) + ((ULONG_PTR)(CreatedDeviceObject + 1) + + AlignedDeviceExtensionSize); + + /* Set the Type and Size. Question: why is Size 0 on Windows? */ + DPRINT("DeviceObjectExtension %x\n", DeviceObjectExtension); + DeviceObjectExtension->Type = IO_TYPE_DEVICE_OBJECT_EXTENSION; + DeviceObjectExtension->Size = 0; + + /* Link the Object and Extension */ + DeviceObjectExtension->DeviceObject = CreatedDeviceObject; + CreatedDeviceObject->DeviceObjectExtension = DeviceObjectExtension; + + /* Set Device Object Data */ + CreatedDeviceObject->DeviceType = DeviceType; + CreatedDeviceObject->Characteristics = DeviceCharacteristics; + CreatedDeviceObject->DeviceExtension = CreatedDeviceObject + 1; + CreatedDeviceObject->StackSize = 1; + CreatedDeviceObject->AlignmentRequirement = 1; /* FIXME */ + + /* Set the Flags */ + /* FIXME: After the Driver is Loaded, the flag below should be removed */ + CreatedDeviceObject->Flags = DO_DEVICE_INITIALIZING; + if (Exclusive) CreatedDeviceObject->Flags |= DO_EXCLUSIVE; + if (DeviceName) CreatedDeviceObject->Flags |= DO_DEVICE_HAS_NAME; + + /* Attach a Vpb for Disks and Tapes, and create the Device Lock */ + if (CreatedDeviceObject->DeviceType == FILE_DEVICE_DISK || + CreatedDeviceObject->DeviceType == FILE_DEVICE_VIRTUAL_DISK || + CreatedDeviceObject->DeviceType == FILE_DEVICE_CD_ROM || + CreatedDeviceObject->DeviceType == FILE_DEVICE_TAPE) + { + /* Create Vpb */ + IopAttachVpb(CreatedDeviceObject); + + /* Initialize Lock Event */ + KeInitializeEvent(&CreatedDeviceObject->DeviceLock, + SynchronizationEvent, + TRUE); + } + + /* Set the right Sector Size */ + switch (DeviceType) + { + case FILE_DEVICE_DISK_FILE_SYSTEM: + case FILE_DEVICE_DISK: + case FILE_DEVICE_VIRTUAL_DISK: + CreatedDeviceObject->SectorSize = 512; + break; + + case FILE_DEVICE_CD_ROM_FILE_SYSTEM: + CreatedDeviceObject->SectorSize = 2048; + break; + } + + /* Create the Device Queue */ + KeInitializeDeviceQueue(&CreatedDeviceObject->DeviceQueue); + + /* Insert the Object */ + Status = ObInsertObject(CreatedDeviceObject, + NULL, + FILE_READ_DATA | FILE_WRITE_DATA, + 0, + NULL, + &TempHandle); + + if (!NT_SUCCESS(Status)) + { + DPRINT1("Cannot insert Device Object into Handle Table\n"); + *DeviceObject = NULL; + return Status; + } + + /* Now do the final linking */ + ObReferenceObject(DriverObject); + CreatedDeviceObject->DriverObject = DriverObject; + CreatedDeviceObject->NextDevice = DriverObject->DeviceObject; + DriverObject->DeviceObject = CreatedDeviceObject; + + /* Close the temporary handle, but do an extra reference first so it doesn't die */ + ObReferenceObject(CreatedDeviceObject); + NtClose(TempHandle); + + /* Return to caller */ + *DeviceObject = CreatedDeviceObject; + return STATUS_SUCCESS; +} + +/* * IoDeleteDevice * * Status * @implemented */ -VOID STDCALL +VOID +STDCALL IoDeleteDevice(PDEVICE_OBJECT DeviceObject) { PDEVICE_OBJECT Previous; @@ -373,6 +555,23 @@ }
/* + * IoDetachDevice + * + * Status + * @implemented + */ +VOID +STDCALL +IoDetachDevice(PDEVICE_OBJECT TargetDevice) +{ + DPRINT("IoDetachDevice(TargetDevice %x)\n", TargetDevice); + + /* Remove the attachment */ + TargetDevice->AttachedDevice->DeviceObjectExtension->AttachedTo = NULL; + TargetDevice->AttachedDevice = NULL; +} + +/* * @implemented */ NTSTATUS @@ -430,6 +629,45 @@ }
/* + * IoGetAttachedDevice + * + * Status + * @implemented + */ +PDEVICE_OBJECT +STDCALL +IoGetAttachedDevice(PDEVICE_OBJECT DeviceObject) +{ + PDEVICE_OBJECT Current = DeviceObject; + + /* Get the last attached device */ + while (Current->AttachedDevice) + { + Current = Current->AttachedDevice; + } + + /* Return it */ + return Current; +} + +/* + * IoGetAttachedDeviceReference + * + * Status + * @implemented + */ +PDEVICE_OBJECT +STDCALL +IoGetAttachedDeviceReference(PDEVICE_OBJECT DeviceObject) +{ + PDEVICE_OBJECT Current = IoGetAttachedDevice(DeviceObject); + + /* Reference the ATtached Device */ + ObReferenceObject(Current); + return Current; +} + +/* * @implemented */ PDEVICE_OBJECT @@ -441,6 +679,27 @@ }
/* + * IoGetDeviceObjectPointer + * + * Status + * @implemented + */ +NTSTATUS +STDCALL +IoGetDeviceObjectPointer(IN PUNICODE_STRING ObjectName, + IN ACCESS_MASK DesiredAccess, + OUT PFILE_OBJECT *FileObject, + OUT PDEVICE_OBJECT *DeviceObject) +{ + /* Call the helper routine for a normal operation */ + return IopGetDeviceObjectPointer(ObjectName, + DesiredAccess, + FileObject, + DeviceObject, + 0); +} + +/* * @implemented */ NTSTATUS @@ -539,280 +798,6 @@ }
/* - * IoGetDeviceObjectPointer - * - * Status - * @implemented - */ -NTSTATUS -STDCALL -IoGetDeviceObjectPointer(IN PUNICODE_STRING ObjectName, - IN ACCESS_MASK DesiredAccess, - OUT PFILE_OBJECT *FileObject, - OUT PDEVICE_OBJECT *DeviceObject) -{ - /* Call the helper routine for a normal operation */ - return IopGetDeviceObjectPointer(ObjectName, - DesiredAccess, - FileObject, - DeviceObject, - 0); -} - -/* - * IoDetachDevice - * - * Status - * @implemented - */ -VOID -STDCALL -IoDetachDevice(PDEVICE_OBJECT TargetDevice) -{ - DPRINT("IoDetachDevice(TargetDevice %x)\n", TargetDevice); - - /* Remove the attachment */ - TargetDevice->AttachedDevice->DeviceObjectExtension->AttachedTo = NULL; - TargetDevice->AttachedDevice = NULL; -} - -/* - * IoGetAttachedDevice - * - * Status - * @implemented - */ -PDEVICE_OBJECT -STDCALL -IoGetAttachedDevice(PDEVICE_OBJECT DeviceObject) -{ - PDEVICE_OBJECT Current = DeviceObject; - - /* Get the last attached device */ - while (Current->AttachedDevice) - { - Current = Current->AttachedDevice; - } - - /* Return it */ - return Current; -} - -/* - * IoGetAttachedDeviceReference - * - * Status - * @implemented - */ -PDEVICE_OBJECT -STDCALL -IoGetAttachedDeviceReference(PDEVICE_OBJECT DeviceObject) -{ - PDEVICE_OBJECT Current = IoGetAttachedDevice(DeviceObject); - - /* Reference the ATtached Device */ - ObReferenceObject(Current); - return Current; -} - -/* - * IoCreateDevice - * - * Allocates memory for and intializes a device object for use for - * a driver. - * - * Parameters - * DriverObject - * Driver object passed by IO Manager when the driver was loaded. - * - * DeviceExtensionSize - * Number of bytes for the device extension. - * - * DeviceName - * Unicode name of device. - * - * DeviceType - * Device type of the new device. - * - * DeviceCharacteristics - * Bit mask of device characteristics. - * - * Exclusive - * TRUE if only one thread can access the device at a time. - * - * DeviceObject - * On successful return this parameter is filled by pointer to - * allocated device object. - * - * Status - * @implemented - */ -NTSTATUS -STDCALL -IoCreateDevice(PDRIVER_OBJECT DriverObject, - ULONG DeviceExtensionSize, - PUNICODE_STRING DeviceName, - DEVICE_TYPE DeviceType, - ULONG DeviceCharacteristics, - BOOLEAN Exclusive, - PDEVICE_OBJECT *DeviceObject) -{ - WCHAR AutoNameBuffer[20]; - UNICODE_STRING AutoName; - PDEVICE_OBJECT CreatedDeviceObject; - PDEVOBJ_EXTENSION DeviceObjectExtension; - OBJECT_ATTRIBUTES ObjectAttributes; - NTSTATUS Status; - ULONG AlignedDeviceExtensionSize; - ULONG TotalSize; - HANDLE TempHandle; - - ASSERT_IRQL(PASSIVE_LEVEL); - DPRINT("IoCreateDevice(DriverObject %x)\n",DriverObject); - - /* Generate a name if we have to */ - if (DeviceCharacteristics & FILE_AUTOGENERATED_DEVICE_NAME) - { - swprintf(AutoNameBuffer, - L"\Device\%08lx", - InterlockedIncrementUL(&IopDeviceObjectNumber)); - RtlInitUnicodeString(&AutoName, AutoNameBuffer); - DeviceName = &AutoName; - } - - /* Initialize the Object Attributes */ - InitializeObjectAttributes(&ObjectAttributes, DeviceName, 0, NULL, NULL); - - /* Honour exclusive flag */ - ObjectAttributes.Attributes |= OBJ_EXCLUSIVE; - - /* Align the Extension Size to 8-bytes */ - AlignedDeviceExtensionSize = (DeviceExtensionSize + 7) &~ 7; - DPRINT("AlignedDeviceExtensionSize %x\n", AlignedDeviceExtensionSize); - - /* Total Size */ - TotalSize = AlignedDeviceExtensionSize + - sizeof(DEVICE_OBJECT) + sizeof(DEVOBJ_EXTENSION); - DPRINT("TotalSize %x\n", TotalSize); - - /* Create the Device Object */ - Status = ObCreateObject(KernelMode, - IoDeviceObjectType, - &ObjectAttributes, - KernelMode, - NULL, - TotalSize, - 0, - 0, - (PVOID*)&CreatedDeviceObject); - - if (!NT_SUCCESS(Status)) - { - DPRINT1("IoCreateDevice() ObCreateObject failed, status: 0x%08X\n", Status); - return Status; - } - - /* Clear the whole Object and extension so we don't null stuff manually */ - RtlZeroMemory(CreatedDeviceObject, TotalSize); - DPRINT("CreatedDeviceObject %x\n", CreatedDeviceObject); - - /* - * Setup the Type and Size. Note that we don't use the aligned size, - * because that's only padding for the DevObjExt and not part of the Object. - */ - CreatedDeviceObject->Type = IO_TYPE_DEVICE; - CreatedDeviceObject->Size = sizeof(DEVICE_OBJECT) + DeviceExtensionSize; - - /* The kernel extension is after the driver internal extension */ - DeviceObjectExtension = (PDEVOBJ_EXTENSION) - ((ULONG_PTR)(CreatedDeviceObject + 1) + - AlignedDeviceExtensionSize); - - /* Set the Type and Size. Question: why is Size 0 on Windows? */ - DPRINT("DeviceObjectExtension %x\n", DeviceObjectExtension); - DeviceObjectExtension->Type = IO_TYPE_DEVICE_OBJECT_EXTENSION; - DeviceObjectExtension->Size = 0; - - /* Link the Object and Extension */ - DeviceObjectExtension->DeviceObject = CreatedDeviceObject; - CreatedDeviceObject->DeviceObjectExtension = DeviceObjectExtension; - - /* Set Device Object Data */ - CreatedDeviceObject->DeviceType = DeviceType; - CreatedDeviceObject->Characteristics = DeviceCharacteristics; - CreatedDeviceObject->DeviceExtension = CreatedDeviceObject + 1; - CreatedDeviceObject->StackSize = 1; - CreatedDeviceObject->AlignmentRequirement = 1; /* FIXME */ - - /* Set the Flags */ - /* FIXME: After the Driver is Loaded, the flag below should be removed */ - CreatedDeviceObject->Flags = DO_DEVICE_INITIALIZING; - if (Exclusive) CreatedDeviceObject->Flags |= DO_EXCLUSIVE; - if (DeviceName) CreatedDeviceObject->Flags |= DO_DEVICE_HAS_NAME; - - /* Attach a Vpb for Disks and Tapes, and create the Device Lock */ - if (CreatedDeviceObject->DeviceType == FILE_DEVICE_DISK || - CreatedDeviceObject->DeviceType == FILE_DEVICE_VIRTUAL_DISK || - CreatedDeviceObject->DeviceType == FILE_DEVICE_CD_ROM || - CreatedDeviceObject->DeviceType == FILE_DEVICE_TAPE) - { - /* Create Vpb */ - IopAttachVpb(CreatedDeviceObject); - - /* Initialize Lock Event */ - KeInitializeEvent(&CreatedDeviceObject->DeviceLock, - SynchronizationEvent, - TRUE); - } - - /* Set the right Sector Size */ - switch (DeviceType) - { - case FILE_DEVICE_DISK_FILE_SYSTEM: - case FILE_DEVICE_DISK: - case FILE_DEVICE_VIRTUAL_DISK: - CreatedDeviceObject->SectorSize = 512; - break; - - case FILE_DEVICE_CD_ROM_FILE_SYSTEM: - CreatedDeviceObject->SectorSize = 2048; - break; - } - - /* Create the Device Queue */ - KeInitializeDeviceQueue(&CreatedDeviceObject->DeviceQueue); - - /* Insert the Object */ - Status = ObInsertObject(CreatedDeviceObject, - NULL, - FILE_READ_DATA | FILE_WRITE_DATA, - 0, - NULL, - &TempHandle); - - if (!NT_SUCCESS(Status)) - { - DPRINT1("Cannot insert Device Object into Handle Table\n"); - *DeviceObject = NULL; - return Status; - } - - /* Now do the final linking */ - ObReferenceObject(DriverObject); - CreatedDeviceObject->DriverObject = DriverObject; - CreatedDeviceObject->NextDevice = DriverObject->DeviceObject; - DriverObject->DeviceObject = CreatedDeviceObject; - - /* Close the temporary handle, but do an extra reference first so it doesn't die */ - ObReferenceObject(CreatedDeviceObject); - NtClose(TempHandle); - - /* Return to caller */ - *DeviceObject = CreatedDeviceObject; - return STATUS_SUCCESS; -} - -/* * @unimplemented */ NTSTATUS @@ -852,7 +837,6 @@ UNIMPLEMENTED; }
- /* * @unimplemented */ _____
Modified: trunk/reactos/ntoskrnl/io/driver.c --- trunk/reactos/ntoskrnl/io/driver.c 2005-04-17 15:09:15 UTC (rev 14649) +++ trunk/reactos/ntoskrnl/io/driver.c 2005-04-17 16:26:44 UTC (rev 14650) @@ -1649,6 +1649,7 @@
PDRIVER_OBJECT DriverObject; UNICODE_STRING ServiceKeyName; HANDLE hDriver; + ULONG i;
/* First, create a unique name for the driver if we don't have one */ if (!DriverName) { @@ -1695,7 +1696,12 @@ DriverObject->DriverExtension = (PDRIVER_EXTENSION)(DriverObject + 1); DriverObject->DriverExtension->DriverObject = DriverObject; DriverObject->DriverInit = InitializationFunction; - /* FIXME: Invalidate all Major Functions b/c now they are NULL and might crash */ + + /* Invalidate all Major Functions */ + for (i = 0; i <= IRP_MJ_MAXIMUM_FUNCTION; i++) + { + DriverObject->MajorFunction[i] = IopInvalidDeviceRequest; + }
/* Set up the Service Key Name */ ServiceKeyName.Buffer = ExAllocatePool(PagedPool, LocalDriverName.Length + sizeof(WCHAR)); _____
Modified: trunk/reactos/ntoskrnl/io/efi.c --- trunk/reactos/ntoskrnl/io/efi.c 2005-04-17 15:09:15 UTC (rev 14649) +++ trunk/reactos/ntoskrnl/io/efi.c 2005-04-17 16:26:44 UTC (rev 14650) @@ -1,5 +1,4 @@
-/* $Id:$ - * +/* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/io/efi.c @@ -15,9 +14,6 @@
/* FUNCTIONS *****************************************************************/
-/* - * @unimplemented - */ NTSTATUS STDCALL NtAddBootEntry( @@ -28,9 +24,7 @@ UNIMPLEMENTED; return STATUS_NOT_IMPLEMENTED; } -/* - * @unimplemented - */ + NTSTATUS STDCALL NtDeleteBootEntry( @@ -41,9 +35,7 @@ UNIMPLEMENTED; return STATUS_NOT_IMPLEMENTED; } -/* - * @unimplemented - */ + NTSTATUS STDCALL NtEnumerateBootEntries( @@ -54,9 +46,7 @@ UNIMPLEMENTED; return STATUS_NOT_IMPLEMENTED; } -/* - * @unimplemented - */ + NTSTATUS STDCALL NtQueryBootEntryOrder( @@ -67,9 +57,7 @@ UNIMPLEMENTED; return STATUS_NOT_IMPLEMENTED; } -/* - * @unimplemented - */ + NTSTATUS STDCALL NtQueryBootOptions( @@ -80,9 +68,7 @@ UNIMPLEMENTED; return STATUS_NOT_IMPLEMENTED; } -/* - * @unimplemented - */ + NTSTATUS STDCALL NtSetBootEntryOrder( @@ -93,10 +79,7 @@ UNIMPLEMENTED; return STATUS_NOT_IMPLEMENTED; } - -/* - * @unimplemented - */ + NTSTATUS STDCALL NtSetBootOptions( @@ -106,12 +89,8 @@ { UNIMPLEMENTED; return STATUS_NOT_IMPLEMENTED; -} - - -/* - * @unimplemented - */ +} + NTSTATUS STDCALL NtTranslateFilePath( @@ -124,5 +103,4 @@ return STATUS_NOT_IMPLEMENTED; }
- /* EOF */ _____
Modified: trunk/reactos/ntoskrnl/io/iomgr.c --- trunk/reactos/ntoskrnl/io/iomgr.c 2005-04-17 15:09:15 UTC (rev 14649) +++ trunk/reactos/ntoskrnl/io/iomgr.c 2005-04-17 16:26:44 UTC (rev 14650) @@ -417,7 +417,7 @@
IoDeviceObjectType->Security = NULL; IoDeviceObjectType->QueryName = NULL; IoDeviceObjectType->OkayToClose = NULL; - IoDeviceObjectType->Create = IopCreateDevice; + IoDeviceObjectType->Create = NULL; IoDeviceObjectType->DuplicationNotify = NULL;
RtlInitUnicodeString(&IoDeviceObjectType->TypeName, L"Device");