- Fix formatting of some newly added functions before starting heavy work.

svn path=/trunk/; revision=22768
This commit is contained in:
Alex Ionescu 2006-07-02 14:26:25 +00:00
parent fcb77c4c3d
commit fbddf0d1ac

View file

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