mirror of
https://github.com/reactos/reactos.git
synced 2025-08-04 22:36:36 +00:00
- Fix formatting of some newly added functions before starting heavy work.
svn path=/trunk/; revision=22768
This commit is contained in:
parent
fcb77c4c3d
commit
fbddf0d1ac
1 changed files with 332 additions and 425 deletions
|
@ -405,7 +405,8 @@ IoQueryFileInformation(IN PFILE_OBJECT FileObject,
|
|||
/*
|
||||
* @implemented
|
||||
*/
|
||||
NTSTATUS STDCALL
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
IoQueryVolumeInformation(IN PFILE_OBJECT FileObject,
|
||||
IN FS_INFORMATION_CLASS FsInformationClass,
|
||||
IN ULONG Length,
|
||||
|
@ -418,24 +419,16 @@ IoQueryVolumeInformation(IN PFILE_OBJECT FileObject,
|
|||
PIRP Irp;
|
||||
NTSTATUS Status;
|
||||
|
||||
ASSERT(FsInformation != NULL);
|
||||
|
||||
DPRINT("FsInformation %p\n", FsInformation);
|
||||
|
||||
Status = ObReferenceObjectByPointer(FileObject,
|
||||
FILE_READ_ATTRIBUTES,
|
||||
IoFileObjectType,
|
||||
KernelMode);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
return(Status);
|
||||
}
|
||||
if (!NT_SUCCESS(Status)) return(Status);
|
||||
|
||||
DeviceObject = FileObject->DeviceObject;
|
||||
|
||||
Irp = IoAllocateIrp(DeviceObject->StackSize,
|
||||
TRUE);
|
||||
if (Irp == NULL)
|
||||
Irp = IoAllocateIrp(DeviceObject->StackSize, TRUE);
|
||||
if (!Irp)
|
||||
{
|
||||
ObDereferenceObject(FileObject);
|
||||
return(STATUS_INSUFFICIENT_RESOURCES);
|
||||
|
@ -461,8 +454,7 @@ IoQueryVolumeInformation(IN PFILE_OBJECT FileObject,
|
|||
StackPtr->Parameters.QueryVolume.FsInformationClass =
|
||||
FsInformationClass;
|
||||
|
||||
Status = IoCallDriver(DeviceObject,
|
||||
Irp);
|
||||
Status = IoCallDriver(DeviceObject, Irp);
|
||||
if (Status == STATUS_PENDING)
|
||||
{
|
||||
KeWaitForSingleObject(&FileObject->Event,
|
||||
|
@ -472,20 +464,16 @@ IoQueryVolumeInformation(IN PFILE_OBJECT FileObject,
|
|||
NULL);
|
||||
Status = IoStatusBlock.Status;
|
||||
}
|
||||
DPRINT("Status %x\n", Status);
|
||||
|
||||
if (ReturnedLength != NULL)
|
||||
{
|
||||
*ReturnedLength = IoStatusBlock.Information;
|
||||
}
|
||||
|
||||
return(Status);
|
||||
if (ReturnedLength) *ReturnedLength = IoStatusBlock.Information;
|
||||
return Status;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
NTSTATUS STDCALL
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
IoSetInformation(IN PFILE_OBJECT FileObject,
|
||||
IN FILE_INFORMATION_CLASS FileInformationClass,
|
||||
IN ULONG Length,
|
||||
|
@ -497,31 +485,22 @@ IoSetInformation(IN PFILE_OBJECT FileObject,
|
|||
PIO_STACK_LOCATION StackPtr;
|
||||
NTSTATUS Status;
|
||||
|
||||
ASSERT(FileInformation != NULL);
|
||||
|
||||
if (FileInformationClass == FileCompletionInformation)
|
||||
{
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Status = ObReferenceObjectByPointer(FileObject,
|
||||
0, /* FIXME - depends on the information class */
|
||||
IoFileObjectType,
|
||||
KernelMode);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
return(Status);
|
||||
}
|
||||
if (!NT_SUCCESS(Status)) return(Status);
|
||||
|
||||
DPRINT("FileObject 0x%p\n", FileObject);
|
||||
|
||||
DeviceObject = FileObject->DeviceObject;
|
||||
|
||||
Irp = IoAllocateIrp(DeviceObject->StackSize,
|
||||
TRUE);
|
||||
if (Irp == NULL)
|
||||
Irp = IoAllocateIrp(DeviceObject->StackSize, TRUE);
|
||||
if (!Irp)
|
||||
{
|
||||
ObDereferenceObject(FileObject);
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
|
@ -1324,7 +1303,6 @@ NtQueryDirectoryFile(IN HANDLE FileHandle,
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
return Status;
|
||||
|
||||
Cleanup:
|
||||
|
@ -1767,7 +1745,7 @@ NtReadFileScatter(IN HANDLE FileHandle,
|
|||
IN PULONG Key OPTIONAL)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return(STATUS_NOT_IMPLEMENTED);
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -2281,7 +2259,7 @@ NtUnlockFile(IN HANDLE FileHandle,
|
|||
*/
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
NtWriteFile (IN HANDLE FileHandle,
|
||||
NtWriteFile(IN HANDLE FileHandle,
|
||||
IN HANDLE Event OPTIONAL,
|
||||
IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
|
||||
IN PVOID ApcContext OPTIONAL,
|
||||
|
@ -2322,7 +2300,7 @@ NtWriteFile (IN HANDLE FileHandle,
|
|||
DesiredAccess |= FILE_APPEND_DATA;
|
||||
|
||||
/* Validate User-Mode Buffers */
|
||||
if(PreviousMode != KernelMode)
|
||||
if (PreviousMode != KernelMode)
|
||||
{
|
||||
/* check if the handle has either FILE_WRITE_DATA or FILE_APPEND_DATA was
|
||||
granted. */
|
||||
|
@ -2498,35 +2476,14 @@ NtWriteFileGather(IN HANDLE FileHandle,
|
|||
IN PULONG Key OPTIONAL)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return(STATUS_NOT_IMPLEMENTED);
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* FUNCTION: Queries the volume information
|
||||
* ARGUMENTS:
|
||||
* FileHandle = Handle to a file object on the target volume
|
||||
* ReturnLength = DataWritten
|
||||
* FsInformation = Caller should supply storage for the information
|
||||
* structure.
|
||||
* Length = Size of the information structure
|
||||
* FsInformationClass = Index to a information structure
|
||||
*
|
||||
* FileFsVolumeInformation FILE_FS_VOLUME_INFORMATION
|
||||
* FileFsLabelInformation FILE_FS_LABEL_INFORMATION
|
||||
* FileFsSizeInformation FILE_FS_SIZE_INFORMATION
|
||||
* FileFsDeviceInformation FILE_FS_DEVICE_INFORMATION
|
||||
* FileFsAttributeInformation FILE_FS_ATTRIBUTE_INFORMATION
|
||||
* FileFsControlInformation
|
||||
* FileFsQuotaQueryInformation --
|
||||
* FileFsQuotaSetInformation --
|
||||
* FileFsMaximumInformation
|
||||
*
|
||||
* RETURNS: Status
|
||||
*
|
||||
* @implemented
|
||||
*/
|
||||
|
||||
NTSTATUS STDCALL
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
NtQueryVolumeInformationFile(IN HANDLE FileHandle,
|
||||
OUT PIO_STATUS_BLOCK IoStatusBlock,
|
||||
OUT PVOID FsInformation,
|
||||
|
@ -2539,29 +2496,20 @@ NtQueryVolumeInformationFile(IN HANDLE FileHandle,
|
|||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
PIO_STACK_LOCATION StackPtr;
|
||||
PVOID SystemBuffer;
|
||||
KPROCESSOR_MODE PreviousMode;
|
||||
|
||||
DPRINT("FsInformation %p\n", FsInformation);
|
||||
|
||||
PreviousMode = ExGetPreviousMode();
|
||||
KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
|
||||
|
||||
if (PreviousMode != KernelMode)
|
||||
{
|
||||
_SEH_TRY
|
||||
{
|
||||
if (IoStatusBlock != NULL)
|
||||
if (IoStatusBlock)
|
||||
{
|
||||
ProbeForWrite(IoStatusBlock,
|
||||
sizeof(IO_STATUS_BLOCK),
|
||||
sizeof(ULONG));
|
||||
}
|
||||
|
||||
if (Length != 0)
|
||||
{
|
||||
ProbeForWrite(FsInformation,
|
||||
Length,
|
||||
1);
|
||||
}
|
||||
if (Length) ProbeForWrite(FsInformation, Length, 1);
|
||||
}
|
||||
_SEH_HANDLE
|
||||
{
|
||||
|
@ -2574,11 +2522,6 @@ NtQueryVolumeInformationFile(IN HANDLE FileHandle,
|
|||
return Status;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ASSERT(IoStatusBlock != NULL);
|
||||
ASSERT(FsInformation != NULL);
|
||||
}
|
||||
|
||||
Status = ObReferenceObjectByHandle(FileHandle,
|
||||
0, /* FIXME - depends on the information class! */
|
||||
|
@ -2586,29 +2529,23 @@ NtQueryVolumeInformationFile(IN HANDLE FileHandle,
|
|||
PreviousMode,
|
||||
(PVOID*)&FileObject,
|
||||
NULL);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
return(Status);
|
||||
}
|
||||
if (!NT_SUCCESS(Status)) return Status;
|
||||
|
||||
DeviceObject = FileObject->DeviceObject;
|
||||
|
||||
Irp = IoAllocateIrp(DeviceObject->StackSize,
|
||||
TRUE);
|
||||
if (Irp == NULL)
|
||||
Irp = IoAllocateIrp(DeviceObject->StackSize, TRUE);
|
||||
if (!Irp)
|
||||
{
|
||||
ObDereferenceObject(FileObject);
|
||||
return(STATUS_INSUFFICIENT_RESOURCES);
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
}
|
||||
|
||||
SystemBuffer = ExAllocatePoolWithTag(NonPagedPool,
|
||||
Length,
|
||||
TAG_SYSB);
|
||||
if (SystemBuffer == NULL)
|
||||
SystemBuffer = ExAllocatePoolWithTag(NonPagedPool, Length, TAG_SYSB);
|
||||
if (!SystemBuffer)
|
||||
{
|
||||
IoFreeIrp(Irp);
|
||||
ObDereferenceObject(FileObject);
|
||||
return(STATUS_INSUFFICIENT_RESOURCES);
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
}
|
||||
|
||||
/* Trigger FileObject/Event dereferencing */
|
||||
|
@ -2632,8 +2569,7 @@ NtQueryVolumeInformationFile(IN HANDLE FileHandle,
|
|||
StackPtr->Parameters.QueryVolume.FsInformationClass =
|
||||
FsInformationClass;
|
||||
|
||||
Status = IoCallDriver(DeviceObject,
|
||||
Irp);
|
||||
Status = IoCallDriver(DeviceObject, Irp);
|
||||
if (Status == STATUS_PENDING)
|
||||
{
|
||||
KeWaitForSingleObject(&FileObject->Event,
|
||||
|
@ -2643,13 +2579,11 @@ NtQueryVolumeInformationFile(IN HANDLE FileHandle,
|
|||
NULL);
|
||||
Status = IoStatusBlock->Status;
|
||||
}
|
||||
DPRINT("Status %x\n", Status);
|
||||
|
||||
if (NT_SUCCESS(Status))
|
||||
{
|
||||
_SEH_TRY
|
||||
{
|
||||
DPRINT("Information %lu\n", IoStatusBlock->Information);
|
||||
RtlCopyMemory(FsInformation,
|
||||
SystemBuffer,
|
||||
IoStatusBlock->Information);
|
||||
|
@ -2662,14 +2596,14 @@ NtQueryVolumeInformationFile(IN HANDLE FileHandle,
|
|||
}
|
||||
|
||||
ExFreePool(SystemBuffer);
|
||||
|
||||
return(Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
NTSTATUS STDCALL
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
NtSetVolumeInformationFile(IN HANDLE FileHandle,
|
||||
OUT PIO_STATUS_BLOCK IoStatusBlock,
|
||||
IN PVOID FsInformation,
|
||||
|
@ -2679,31 +2613,23 @@ NtSetVolumeInformationFile(IN HANDLE FileHandle,
|
|||
PFILE_OBJECT FileObject;
|
||||
PDEVICE_OBJECT DeviceObject;
|
||||
PIRP Irp;
|
||||
NTSTATUS Status;
|
||||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
PIO_STACK_LOCATION StackPtr;
|
||||
PVOID SystemBuffer;
|
||||
KPROCESSOR_MODE PreviousMode;
|
||||
|
||||
PreviousMode = ExGetPreviousMode();
|
||||
KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
|
||||
|
||||
if (PreviousMode != KernelMode)
|
||||
{
|
||||
Status = STATUS_SUCCESS;
|
||||
_SEH_TRY
|
||||
{
|
||||
if (IoStatusBlock != NULL)
|
||||
if (IoStatusBlock)
|
||||
{
|
||||
ProbeForWrite(IoStatusBlock,
|
||||
sizeof(IO_STATUS_BLOCK),
|
||||
sizeof(ULONG));
|
||||
}
|
||||
|
||||
if (Length != 0)
|
||||
{
|
||||
ProbeForRead(FsInformation,
|
||||
Length,
|
||||
1);
|
||||
}
|
||||
if (Length) ProbeForRead(FsInformation, Length, 1);
|
||||
}
|
||||
_SEH_HANDLE
|
||||
{
|
||||
|
@ -2711,15 +2637,7 @@ NtSetVolumeInformationFile(IN HANDLE FileHandle,
|
|||
}
|
||||
_SEH_END;
|
||||
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
return Status;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ASSERT(IoStatusBlock != NULL);
|
||||
ASSERT(FsInformation != NULL);
|
||||
if (!NT_SUCCESS(Status)) return Status;
|
||||
}
|
||||
|
||||
Status = ObReferenceObjectByHandle(FileHandle,
|
||||
|
@ -2728,24 +2646,19 @@ NtSetVolumeInformationFile(IN HANDLE FileHandle,
|
|||
PreviousMode,
|
||||
(PVOID*)&FileObject,
|
||||
NULL);
|
||||
if (Status != STATUS_SUCCESS)
|
||||
{
|
||||
return(Status);
|
||||
}
|
||||
if (Status != STATUS_SUCCESS) return Status;
|
||||
|
||||
DeviceObject = FileObject->DeviceObject;
|
||||
|
||||
Irp = IoAllocateIrp(DeviceObject->StackSize,TRUE);
|
||||
if (Irp == NULL)
|
||||
if (!Irp)
|
||||
{
|
||||
ObDereferenceObject(FileObject);
|
||||
return(STATUS_INSUFFICIENT_RESOURCES);
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
}
|
||||
|
||||
SystemBuffer = ExAllocatePoolWithTag(NonPagedPool,
|
||||
Length,
|
||||
TAG_SYSB);
|
||||
if (SystemBuffer == NULL)
|
||||
SystemBuffer = ExAllocatePoolWithTag(NonPagedPool, Length, TAG_SYSB);
|
||||
if (!SystemBuffer)
|
||||
{
|
||||
Status = STATUS_INSUFFICIENT_RESOURCES;
|
||||
goto failfreeirp;
|
||||
|
@ -2756,9 +2669,7 @@ NtSetVolumeInformationFile(IN HANDLE FileHandle,
|
|||
_SEH_TRY
|
||||
{
|
||||
/* no need to probe again */
|
||||
RtlCopyMemory(SystemBuffer,
|
||||
FsInformation,
|
||||
Length);
|
||||
RtlCopyMemory(SystemBuffer, FsInformation, Length);
|
||||
}
|
||||
_SEH_HANDLE
|
||||
{
|
||||
|
@ -2768,8 +2679,7 @@ NtSetVolumeInformationFile(IN HANDLE FileHandle,
|
|||
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
ExFreePoolWithTag(SystemBuffer,
|
||||
TAG_SYSB);
|
||||
ExFreePoolWithTag(SystemBuffer, TAG_SYSB);
|
||||
failfreeirp:
|
||||
IoFreeIrp(Irp);
|
||||
ObDereferenceObject(FileObject);
|
||||
|
@ -2778,9 +2688,7 @@ failfreeirp:
|
|||
}
|
||||
else
|
||||
{
|
||||
RtlCopyMemory(SystemBuffer,
|
||||
FsInformation,
|
||||
Length);
|
||||
RtlCopyMemory(SystemBuffer, FsInformation, Length);
|
||||
}
|
||||
|
||||
/* Trigger FileObject/Event dereferencing */
|
||||
|
@ -2823,6 +2731,5 @@ failfreeirp:
|
|||
}
|
||||
|
||||
ExFreePool(SystemBuffer);
|
||||
|
||||
return(Status);
|
||||
return Status;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue