mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-24 17:32:29 -05:00
57 lines
1.8 KiB
C
57 lines
1.8 KiB
C
/**
|
|
* @file winfsp/winfsp.h
|
|
*
|
|
* @copyright 2015 Bill Zissimopoulos
|
|
*/
|
|
|
|
#ifndef WINFSP_WINFSP_H_INCLUDED
|
|
#define WINFSP_WINFSP_H_INCLUDED
|
|
|
|
#define WIN32_NO_STATUS
|
|
#include <windows.h>
|
|
#undef WIN32_NO_STATUS
|
|
#include <winternl.h>
|
|
#include <ntstatus.h>
|
|
|
|
#if defined(WINFSP_DLL_INTERNAL)
|
|
#define FSP_API __declspec(dllexport)
|
|
#else
|
|
#define FSP_API __declspec(dllimport)
|
|
#endif
|
|
|
|
#include <winfsp/fsctl.h>
|
|
|
|
typedef struct _FSP_FILE_SYSTEM FSP_FILE_SYSTEM;
|
|
typedef NTSTATUS FSP_FILE_SYSTEM_PROCESSREQ(FSP_FILE_SYSTEM *, FSP_FSCTL_TRANSACT_REQ *);
|
|
typedef VOID FSP_FILE_SYSTEM_OPERATION(FSP_FILE_SYSTEM *, FSP_FSCTL_TRANSACT_REQ *);
|
|
typedef struct _FSP_FILE_SYSTEM
|
|
{
|
|
/* private */
|
|
UINT16 Version;
|
|
HANDLE VolumeHandle;
|
|
FSP_FILE_SYSTEM_PROCESSREQ *ProcessRequest;
|
|
/* public */
|
|
PVOID UserContext;
|
|
FSP_FILE_SYSTEM_OPERATION *Operations[FspFsctlTransactKindCount];
|
|
} FSP_FILE_SYSTEM;
|
|
|
|
FSP_API NTSTATUS FspFileSystemCreate(PWSTR DevicePath,
|
|
const FSP_FSCTL_VOLUME_PARAMS *Params, FSP_FILE_SYSTEM_PROCESSREQ *ProcessRequest,
|
|
FSP_FILE_SYSTEM **PFileSystem);
|
|
FSP_API VOID FspFileSystemDelete(FSP_FILE_SYSTEM *FileSystem);
|
|
FSP_API NTSTATUS FspFileSystemLoop(FSP_FILE_SYSTEM *FileSystem);
|
|
|
|
FSP_API NTSTATUS FspProcessRequestDirect(FSP_FILE_SYSTEM *FileSystem,
|
|
FSP_FSCTL_TRANSACT_REQ *Request);
|
|
FSP_API NTSTATUS FspProcessRequestInPool(FSP_FILE_SYSTEM *FileSystem,
|
|
FSP_FSCTL_TRANSACT_REQ *Request);
|
|
FSP_API NTSTATUS FspProduceResponse(FSP_FILE_SYSTEM *FileSystem,
|
|
FSP_FSCTL_TRANSACT_RSP *Response);
|
|
FSP_API NTSTATUS FspProduceResponseWithStatus(FSP_FILE_SYSTEM *FileSystem,
|
|
FSP_FSCTL_TRANSACT_REQ *Request, NTSTATUS Result);
|
|
|
|
FSP_API NTSTATUS FspNtStatusFromWin32(DWORD Error);
|
|
FSP_API VOID FspDebugLog(const char *format, ...);
|
|
|
|
#endif
|