ebpf-for-windows/ebpfsvc/platform.cpp

58 строки
1.5 KiB
C++

// Copyright (c) Microsoft Corporation
// SPDX-License-Identifier: MIT
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <stdint.h>
#include "ebpf_api.h"
#include "svc_common.h"
namespace Platform {
bool
DeviceIoControl(
_In_ ebpf_handle_t device_handle,
uint32_t io_control_code,
_In_reads_bytes_opt_(input_buffer_size) void* input_buffer,
uint32_t input_buffer_size,
_Out_writes_bytes_to_opt_(output_buffer_size, *count_of_bytes_returned) void* output_buffer,
uint32_t output_buffer_size,
_Out_opt_ uint32_t* count_of_bytes_returned,
_Inout_opt_ OVERLAPPED* overlapped)
{
return ::DeviceIoControl(
device_handle,
io_control_code,
input_buffer,
input_buffer_size,
output_buffer,
output_buffer_size,
(DWORD*)count_of_bytes_returned,
overlapped);
}
ebpf_handle_t
CreateFileW(
_In_z_ PCWSTR file_name,
uint32_t desired_access,
uint32_t share_mode,
_In_opt_ SECURITY_ATTRIBUTES* security_attributes,
uint32_t creation_disposition,
uint32_t flags_and_attributes,
_In_opt_ ebpf_handle_t template_file)
{
return ::CreateFileW(
file_name,
desired_access,
share_mode,
security_attributes,
creation_disposition,
flags_and_attributes,
template_file);
}
bool
CloseHandle(_In_ _Post_ptr_invalid_ ebpf_handle_t handle)
{
return ::CloseHandle(handle);
}
} // namespace Platform