MCPcopy Create free account
hub / github.com/HoShiMin/Kernel-Bridge / FilesAPI

Method FilesAPI

Kernel-Bridge/API/FilesAPI.cpp:4–52  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2#include "FilesAPI.h"
3
4FilesAPI::FilesAPI(
5 LPCWSTR FilePath,
6 CREATE_FILE_TYPE Type,
7 ACCESS_MASK AccessMask,
8 ULONG ShareAccess
9) : hFile(NULL) {
10
11 UNICODE_STRING Path;
12 RtlInitUnicodeString(&Path, FilePath);
13
14 OBJECT_ATTRIBUTES ObjectAttributes;
15 InitializeObjectAttributes(
16 &ObjectAttributes,
17 &Path,
18 OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE,
19 NULL,
20 NULL
21 );
22
23 IO_STATUS_BLOCK IoStatusBlock = {};
24 LARGE_INTEGER AllocationSize = {};
25
26 ULONG CreateDisposition = FILE_OVERWRITE;
27 switch (Type) {
28 case fCreateEmpty:
29 CreateDisposition = FILE_OVERWRITE_IF;
30 break;
31 case fOpenExisting:
32 CreateDisposition = FILE_OPEN;
33 break;
34 case fOpenOrCreate:
35 CreateDisposition = FILE_OPEN_IF;
36 break;
37 }
38
39 CreationStatus = ZwCreateFile(
40 &hFile,
41 AccessMask,
42 &ObjectAttributes,
43 &IoStatusBlock,
44 &AllocationSize,
45 FILE_ATTRIBUTE_NORMAL,
46 ShareAccess,
47 CreateDisposition,
48 FILE_NON_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT,
49 NULL,
50 0
51 );
52}
53
54NTSTATUS FilesAPI::Read(OUT PVOID Buffer, ULONG Size, OPTIONAL UINT64 Offset) const {
55 IO_STATUS_BLOCK IoStatusBlock = {};

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected