Skip to content

Commit 67ad532

Browse files
committed
Add PhSetAllocationSizeFileStream
1 parent 5e9c517 commit 67ad532

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

phlib/filestream.c

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -746,6 +746,43 @@ NTSTATUS PhUnlockFileStream(
746746
);
747747
}
748748

749+
NTSTATUS PhSetAllocationSizeFileStream(
750+
_Inout_ PPH_FILE_STREAM FileStream,
751+
_In_ PLARGE_INTEGER AllocationSize
752+
)
753+
{
754+
NTSTATUS status;
755+
IO_STATUS_BLOCK isb;
756+
FILE_END_OF_FILE_INFORMATION endOfFileInfo;
757+
FILE_ALLOCATION_INFORMATION allocationInfo;
758+
759+
memset(&endOfFileInfo, 0, sizeof(FILE_END_OF_FILE_INFORMATION));
760+
endOfFileInfo.EndOfFile.QuadPart = AllocationSize->QuadPart;
761+
762+
if (!NT_SUCCESS(status = NtSetInformationFile(
763+
FileStream->FileHandle,
764+
&isb,
765+
&endOfFileInfo,
766+
sizeof(FILE_END_OF_FILE_INFORMATION),
767+
FileEndOfFileInformation
768+
)))
769+
return status;
770+
771+
memset(&allocationInfo, 0, sizeof(FILE_ALLOCATION_INFORMATION));
772+
allocationInfo.AllocationSize.QuadPart = AllocationSize->QuadPart;
773+
774+
if (!NT_SUCCESS(status = NtSetInformationFile(
775+
FileStream->FileHandle,
776+
&isb,
777+
&allocationInfo,
778+
sizeof(FILE_ALLOCATION_INFORMATION),
779+
FileAllocationInformation
780+
)))
781+
return status;
782+
783+
return status;
784+
}
785+
749786
NTSTATUS PhWriteStringAsUtf8FileStream(
750787
_Inout_ PPH_FILE_STREAM FileStream,
751788
_In_ PPH_STRINGREF String

0 commit comments

Comments
 (0)