/* ======================================== Copyright Amlal El Mahrouss. File: dev.h Purpose: DDK device support. ======================================== */ #pragma once #include struct _DDK_DEVICE; #define DDK_DEVICE_NAME_LEN (255) /// @brief Kernel Device driver. typedef struct _DDK_DEVICE DDK_FINAL { char d_name[DDK_DEVICE_NAME_LEN]; // the device name. Could be /./DEVICE_NAME/ void* (*d_read)(void* arg, int len); // read from device. void (*d_write)(void* arg, int len); void (*d_wait)(void); // write to device. struct _DDK_DEVICE* (*d_open)(const char* path); // open device. void (*d_close)(struct _DDK_DEVICE* dev); // close device. void (*d_seek)(struct _DDK_DEVICE* dev, size_t off); size_t (*d_tell)(struct _DDK_DEVICE* dev); } DDK_DEVICE, *DDK_DEVICE_PTR; #define kopen kopen_dev #define kclose kclose_dev /// @brief Open a new device from path. /// @param path the device's path. DDK_EXTERN DDK_DEVICE_PTR kopen_dev(const char* path); /// @brief Close any device. /// @param device valid device. DDK_EXTERN BOOL kclose_dev(DDK_DEVICE_PTR device);