📄 file.h
字号:
/* * file.h * * Copyright (C) 2006 Insigme Co., Ltd * * Authors: * - Chenzhan Hu * * This software has been developed while working on the Linux Unified Kernel * project (http://linux.insigma.com.cn) in the Insigma Reaserch Institute, * which is a subdivision of Insigma Co., Ltd (http://www.insigma.com.cn). * * The project is sponsored by Insigma Co., Ltd. * * The authors can be reached at linux@insigma.com.cn. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * Revision History: * Jan 2006 - Created. */ /* * file.h: win32 file definition * Reference to Kernel-win32 code */#ifndef _FILE_H#define _FILE_H#include <linux/module.h>#include "object.h"#include "win32.h"#ifdef CONFIG_UNIFIED_KERNEL#define FILE_OPEN 0x00000001#define FILE_CREATE 0x00000002#define FILE_OPEN_IF 0x00000003#define FILE_OVERWRITE 0x00000004#define FILE_OVERWRITE_IF 0x00000005#define FILE_FLAG_WRITE_THROUGH 0x80000000#define FILE_FLAG_OVERLAPPED 0x40000000#define FILE_FLAG_NO_BUFFERING 0x20000000#define FILE_FLAG_RANDOM_ACCESS 0x10000000#define FILE_FLAG_SEQUENTIAL_SCAN 0x08000000#define FILE_FLAG_DELETE_ON_CLOSE 0x04000000#define FILE_FLAG_BACKUP_SEMANTICS 0x02000000#define FILE_FLAG_POSIX_SEMANTICS 0x01000000#define FILE_FLAG_OPEN_REPARSE_POINT 0x00200000#define FILE_FLAG_OPEN_NO_RECALL 0x00100000#define FILE_ATTRIBUTE_READONLY 0x00000001L#define FILE_ATTRIBUTE_HIDDEN 0x00000002L#define FILE_ATTRIBUTE_SYSTEM 0x00000004L#define FILE_ATTRIBUTE_LABEL 0x00000008L /* Not in Windows API */#define FILE_ATTRIBUTE_DIRECTORY 0x00000010L#define FILE_ATTRIBUTE_ARCHIVE 0x00000020L#define FILE_ATTRIBUTE_NORMAL 0x00000080L#define FILE_ATTRIBUTE_TEMPORARY 0x00000100L#define FILE_ATTRIBUTE_ATOMIC_WRITE 0x00000200L#define FILE_ATTRIBUTE_XACTION_WRITE 0x00000400L#define FILE_ATTRIBUTE_COMPRESSED 0x00000800L#define FILE_ATTRIBUTE_OFFLINE 0x00001000L#define CREATE_NEW 1#define CREATE_ALWAYS 2#define OPEN_EXISTING 3#define OPEN_ALWAYS 4#define TRUNCATE_EXISTING 5#define GENERIC_READ 0x80000000L#define GENERIC_WRITE 0x40000000L#define GENERIC_EXECUTE 0x20000000L#define GENERIC_ALL 0x10000000L#define FILE_SHARE_READ 0x00000001#define FILE_SHARE_WRITE 0x00000002#define FILE_SHARE_DELETE 0x00000004struct file_args { IN ACCESS_MASK DesiredAccess; IN POBJECT_ATTRIBUTES ObjectAttributes; OUT PIO_STATUS_BLOCK IoStatusBlock; IN PLARGE_INTEGER AllocationSize OPTIONAL; IN ULONG FileAttributes; IN ULONG ShareAccess; IN ULONG CreateDisposition; IN ULONG CreateOptions; IN PVOID EaBuffer OPTIONAL; IN ULONG EaLength;};typedef struct win32_file_ctrl win32_file_ctrl;/* * process-access file object definition */struct win32_file { struct list_head wf_ctllist; /* file control list next */ win32_file_ctrl *wf_control; /* the file control object */ struct file *wf_file; /* the Linux file */ __u32 wf_access; /* file access mode */ __u32 wf_sharing; /* sharing mode */ __u32 wf_attrs; /* file open attributes */};extern struct win32_object_class file_objclass;/* * file-control object definition * - links together win32_file objects that use the same file */struct win32_file_ctrl { struct list_head wfc_accessors; /* who's accessing this file */ spinlock_t wfc_lock; /* govern access to list */ struct win32_object *wfc_myself; /* my own object */};extern void FileClassInit(void);NTSTATUSSTDCALLNtCreateFile( OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PLARGE_INTEGER AllocationSize OPTIONAL, IN ULONG FileAttributes, IN ULONG ShareAccess, IN ULONG CreateDisposition, IN ULONG CreateOptions, IN PVOID EaBuffer OPTIONAL, IN ULONG EaLength);NTSTATUSSTDCALLNtOpenFile( OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN ULONG ShareAccess, IN ULONG OpenOptions );NTSTATUSSTDCALLNtReadFile(IN HANDLE FileHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, OUT PVOID Buffer, IN ULONG Length, IN PLARGE_INTEGER ByteOffset OPTIONAL, /* NOT optional for asynch. operations! */ IN PULONG Key OPTIONAL);NTSTATUSSTDCALLNtWriteFile (IN HANDLE FileHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PVOID Buffer, IN ULONG Length, IN PLARGE_INTEGER ByteOffset OPTIONAL, /* NOT optional for asynch. operations! */ IN PULONG Key OPTIONAL);NTSTATUS STDCALLNtSetInformationFile(HANDLE FileHandle, PIO_STATUS_BLOCK IoStatusBlock, PVOID FileInformation, ULONG Length, FILE_INFORMATION_CLASS FileInformationClass);NTSTATUS STDCALLNtQueryInformationFile(HANDLE FileHandle, PIO_STATUS_BLOCK IoStatusBlock, PVOID FileInformation, ULONG Length, FILE_INFORMATION_CLASS FileInformationClass);NTSTATUS STDCALLNtFlushBuffersFile(IN HANDLE FileHandle, OUT PIO_STATUS_BLOCK IoStatusBlock);#endif /* CONFIG_UNIFIED_KERNEL */#endif /* _FILE_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -