eBPF for Windows
ebpf_registry_helper.h
Go to the documentation of this file.
1 // Copyright (c) Microsoft Corporation
2 // SPDX-License-Identifier: MIT
3 
4 #pragma once
5 
6 #include "ebpf_api.h"
7 #include "ebpf_platform.h"
8 #include "platform.h"
9 
10 #define __return_type uint32_t
11 #define IS_SUCCESS(x) (x == ERROR_SUCCESS)
12 #define _SUCCESS NO_ERROR
13 
14 #define GUID_STRING_LENGTH 38 // not including the null terminator.
15 
16 #define REG_CREATE_FLAGS (KEY_WRITE | DELETE | KEY_READ)
17 #define REG_OPEN_FLAGS (DELETE | KEY_READ)
18 
19 typedef _Return_type_success_(return == 0) uint32_t ebpf_registry_result_t;
20 
21 typedef HKEY ebpf_registry_key_t;
22 
23 // Issue: #1542 - All API's should be annotated with _Must_inspect_result_
24 
25 void
27 
28 _Must_inspect_result_ ebpf_registry_result_t
31  _In_z_ const wchar_t* value_name,
32  _In_reads_(value_size) uint8_t* value,
33  size_t value_size);
34 
35 _Must_inspect_result_ ebpf_registry_result_t
36 write_registry_value_ansi_string(ebpf_registry_key_t key, _In_z_ const wchar_t* value_name, _In_z_ const char* value);
37 
38 _Must_inspect_result_ ebpf_registry_result_t
39 write_registry_value_dword(ebpf_registry_key_t key, _In_z_ const wchar_t* value_name, uint32_t value);
40 
41 _Must_inspect_result_ ebpf_registry_result_t
43  ebpf_registry_key_t root_key, _In_z_ const wchar_t* sub_key, uint32_t flags, _Out_ ebpf_registry_key_t* key);
44 
45 _Success_(return == ERROR_SUCCESS) uint32_t open_registry_key(
46  ebpf_registry_key_t root_key, _In_opt_z_ const wchar_t* sub_key, uint32_t flags, _Out_ ebpf_registry_key_t* key);
47 
48 _Must_inspect_result_ ebpf_registry_result_t
49 delete_registry_key(ebpf_registry_key_t root_key, _In_z_ const wchar_t* sub_key);
50 
51 _Must_inspect_result_ ebpf_registry_result_t
52 delete_registry_tree(ebpf_registry_key_t root_key, _In_opt_z_ const wchar_t* sub_key);
53 
54 _Must_inspect_result_ ebpf_registry_result_t
55 read_registry_value_dword(ebpf_registry_key_t key, _In_z_ const wchar_t* value_name, _Out_ uint32_t* value);
56 
57 _Must_inspect_result_ ebpf_registry_result_t
60  _In_z_ const wchar_t* value_name,
61  _Out_writes_(value_size) uint8_t* value,
62  size_t value_size);
63 
64 _Must_inspect_result_ ebpf_registry_result_t
65 convert_guid_to_string(_In_ const GUID* guid, _Out_writes_all_(string_size) wchar_t* string, size_t string_size);
66 
67 _Must_inspect_result_ ebpf_registry_result_t
68 convert_string_to_guid(_In_z_ const wchar_t* string, _Out_ GUID* guid);
69 
70 _Must_inspect_result_ ebpf_registry_result_t
72  ebpf_registry_key_t root_key, _In_z_ const char* sub_key, uint32_t flags, _Out_ ebpf_registry_key_t* key);
73 
74 _Must_inspect_result_ ebpf_registry_result_t
76  ebpf_registry_key_t key, _In_z_ const wchar_t* value_name, _Outptr_result_z_ wchar_t** value);
uint8_t GUID[16]
Definition: ebpf_windows.h:13
HANDLE ebpf_registry_key_t
Definition: ebpf_registry_helper.h:17
uint32_t ebpf_registry_result_t
Definition: ebpf_registry_helper.h:15
_Must_inspect_result_ ebpf_registry_result_t convert_string_to_guid(const wchar_t *string, GUID *guid)
_Must_inspect_result_ ebpf_registry_result_t read_registry_value_string(ebpf_registry_key_t key, const wchar_t *value_name, _Outptr_result_z_ wchar_t **value)
_Must_inspect_result_ ebpf_registry_result_t create_registry_key_ansi(ebpf_registry_key_t root_key, const char *sub_key, uint32_t flags, ebpf_registry_key_t *key)
uint32_t open_registry_key(ebpf_registry_key_t root_key, _In_opt_z_ const wchar_t *sub_key, uint32_t flags, ebpf_registry_key_t *key)
void close_registry_key(ebpf_registry_key_t key)
_Must_inspect_result_ ebpf_registry_result_t delete_registry_key(ebpf_registry_key_t root_key, const wchar_t *sub_key)
_Must_inspect_result_ ebpf_registry_result_t convert_guid_to_string(const GUID *guid, _Out_writes_all_(string_size) wchar_t *string, size_t string_size)
_Must_inspect_result_ ebpf_registry_result_t write_registry_value_dword(ebpf_registry_key_t key, const wchar_t *value_name, uint32_t value)
_Must_inspect_result_ ebpf_registry_result_t write_registry_value_ansi_string(ebpf_registry_key_t key, const wchar_t *value_name, const char *value)
_Must_inspect_result_ ebpf_registry_result_t write_registry_value_binary(ebpf_registry_key_t key, const wchar_t *value_name, _In_reads_(value_size) uint8_t *value, size_t value_size)
_Must_inspect_result_ ebpf_registry_result_t delete_registry_tree(ebpf_registry_key_t root_key, _In_opt_z_ const wchar_t *sub_key)
_Must_inspect_result_ ebpf_registry_result_t read_registry_value_dword(ebpf_registry_key_t key, const wchar_t *value_name, uint32_t *value)
_Must_inspect_result_ ebpf_registry_result_t read_registry_value_binary(ebpf_registry_key_t key, const wchar_t *value_name, _Out_writes_(value_size) uint8_t *value, size_t value_size)
_Must_inspect_result_ ebpf_registry_result_t create_registry_key(ebpf_registry_key_t root_key, const wchar_t *sub_key, uint32_t flags, ebpf_registry_key_t *key)