EaseFilter Demo Project
FilterAPI.h
Go to the documentation of this file.
1 //
3 // (C) Copyright 2014 EaseFilter Technologies Inc.
4 // All Rights Reserved
5 //
6 // This software is part of a licensed software product and may
7 // only be used or copied in accordance with the terms of that license.
8 //
10 
11 #ifndef __SHARE_TYPE_H__
12 #define __SHARE_TYPE_H__
13 
14 #define DOWNLOADED_BITMAP_NAME L":EASECLOUD_BITMAP"
15 #define MESSAGE_SEND_VERIFICATION_NUMBER 0xFF000001
16 #define BLOCK_SIZE 65536
17 #define MAX_FILE_NAME_LENGTH 1024
18 #define MAX_SID_LENGTH 256
19 #define MAX_EXCLUDED_PROCESS_ID 200
20 #define MAX_INCLUDED_PROCESS_ID 200
21 #define MAX_PROTECTED_PROCESS_ID 200
22 #define MAX_BLOCK_SAVEAS_PROCESS_ID 200
23 #define MAX_PATH 260
24 #define MAX_ERROR_MESSAGE_SIZE 1024
25 
26 //Default encryption IV key
27 static const UCHAR DEFAULT_IV_TAG[] = {0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff};
28 
29 
30 //-----------reparse file specified definition-------------------------------------------
31 
32 #define IO_REPARSE_TAG_EASEVAULT_HSM (0x0000003EL)
33 // {BBA65D6F-F8A0-48cc-B748-DBD5FFFCCFB1}
34 static const GUID REPARSE_GUID =
35 { 0xbba65d6f, 0xf8a0, 0x48cc, { 0xb7, 0x48, 0xdb, 0xd5, 0xff, 0xfc, 0xcf, 0xb1 } };
36 
37 #define EASETAG_KEY 0xbba65d6f
38 
39 typedef struct _EASETAG_DATA
40 {
41  ULONG EaseTagKey;
42  ULONG Flags;
44  WCHAR FileName[1];
45 
47 
48 #define AES_TAG_KEY 0xccb76e80
49 
50 //the flags for encrypted file,indicates the action to the encrypted file open I/O.
51 typedef enum _AESFlags
52 {
63 
64 }AESFlags;
65 
66 //the structure of control meta data of the encrypted file.
67 #pragma pack (push,1)
68 typedef struct _EASETAG_AES_DATA
69 {
70  ULONG EaseTagKey;
71  ULONG AESFlags;
72  ULONG IVLength;
73  UCHAR IV[16];
75  UCHAR EncryptionKey[32];
76  LONGLONG CreationTime;
77  LONGLONG ExpireTime;
78  ULONG AccessFlags;
79  LONGLONG FileSize;
94  //the data store here.
95  //IncludeProcessNames;
96  //ExcludeProcessNames;
97  //IncludeUserNames;
98  //ExcludeUserNames;
99  //AccountNames;
100  //ComputerId;
101  //UserPassword;
103 
105 #pragma pack(pop)
106 
107 #pragma pack (push,1)
108 typedef struct _EASETAG_EMBEDDED_DATA
109 {
111  LONGLONG FileSize;
112  UCHAR IV[16];
113  LONGLONG ExpireTime;
114 
116 #pragma pack(pop)
117 //---------------------------------------------------------------------------------------
118 
119 typedef enum _FilterType
120 {
129 
130 } FilterType;
131 
132 
133 #define MAX_REQUEST_TYPE 32
134 
135 //the commands of filter driver to user application.
136 typedef enum _FilterCommand
137 {
139  //restore file to the original folder
151 
153 
154 //the I/O types of the monitor or control filter can intercept.
155 typedef enum _MessageType
156 {
157 
158  PRE_CREATE = 0x00000001,
159  POST_CREATE = 0x00000002,
160  PRE_FASTIO_READ = 0x00000004,
161  POST_FASTIO_READ = 0x00000008,
162  PRE_CACHE_READ = 0x00000010,
163  POST_CACHE_READ = 0x00000020,
164  PRE_NOCACHE_READ = 0x00000040,
165  POST_NOCACHE_READ = 0x00000080,
166  PRE_PAGING_IO_READ = 0x00000100,
167  POST_PAGING_IO_READ = 0x00000200,
168  PRE_FASTIO_WRITE = 0x00000400,
169  POST_FASTIO_WRITE = 0x00000800,
170  PRE_CACHE_WRITE = 0x00001000,
171  POST_CACHE_WRITE = 0x00002000,
172  PRE_NOCACHE_WRITE = 0x00004000,
173  POST_NOCACHE_WRITE = 0x00008000,
174  PRE_PAGING_IO_WRITE = 0x00010000,
175  POST_PAGING_IO_WRITE = 0x00020000,
176  PRE_QUERY_INFORMATION = 0x00040000,
178  PRE_SET_INFORMATION = 0x00100000,
179  POST_SET_INFORMATION = 0x00200000,
180  PRE_DIRECTORY = 0x00400000,
181  POST_DIRECTORY = 0x00800000,
182  PRE_QUERY_SECURITY = 0x01000000,
183  POST_QUERY_SECURITY = 0x02000000,
184  PRE_SET_SECURITY = 0x04000000,
185  POST_SET_SECURITY = 0x08000000,
186  PRE_CLEANUP = 0x10000000,
187  POST_CLEANUP = 0x20000000,
188  PRE_CLOSE = 0x40000000,
189  POST_CLOSE = 0x80000000UL,
190 
191 }MessageType;
192 
193 //the flags of the access control to the file.
194 typedef enum _AccessFlag
195 {
196  EXCLUDE_FILTER_RULE = 0x00000000,
197  EXCLUDE_FILE_ACCESS = 0x00000001,
198  REPARSE_FILE_OPEN = 0x00000002,
200  FILE_ENCRYPTION_RULE = 0x00000008,
206  ALLOW_READ_ACCESS = 0x00000200,
207  ALLOW_WRITE_ACCESS = 0x00000400,
209  //allow to change file time and file attributes
210  ALLOW_SET_INFORMATION = 0x00001000,
211  ALLOW_FILE_RENAME = 0x00002000,
212  ALLOW_FILE_DELETE = 0x00004000,
219  ALLOW_ALL_SAVE_AS = 0x00200000,
222 
223 }AccessFlag;
224 
225 
226 typedef enum _ConnectionPortType
227 {
230 
232 
233 typedef enum _EVENT_OUTPUT_TYPE
234 {
239 
241 
242 typedef enum _EVENT_LEVEL
243 {
244  EVENT_LEVEL_NONE = 0, // Tracing is not on
245  EVENT_LEVEL_CRITICAL = 1, // Abnormal exit or termination
246  EVENT_LEVEL_ERROR = 2, // Severe errors that need logging
247  EVENT_LEVEL_WARNING = 3, // Warnings such as allocation failure
248  EVENT_LEVEL_INFORMATION = 4, // Includes non-error cases(e.g.,Entry-Exit)
249  EVENT_LEVEL_VERBOSE = 5, // Detailed traces from intermediate steps
250 
251 } EVENT_LEVEL;
252 
253 //the commands from user mode app to the filter driver.
254 typedef enum _ControlType
255 {
273 
274 } ControlType;
275 
276 // the user mode app sends the integer data to filter driver, this is the index of the integer data.
277 typedef enum _DataControlId
278 {
279  FILTER_TYPE_ID = 1, //The filter driver type.
280  EVENT_OUTPUT_TYPE_ID, //Control send the event output type.
281  EVENT_LEVEL_ID, //Control send event level.
282  EVENT_FLAGS_ID, //Control send the event modules
283  CONNECTION_TIMEOUT_ID, //Control send client connection timout in seconds.
284  BOOLEAN_CONFIG_ID, //All the boolean config data setting
285  WAIT_BLOCK_DATA_INTERVAL, //the interval time in milliseconds to wait for the block data download
286  WAIT_BLOCK_DATA_TIMEOUT, //the timeout in milliseconds to wait for the block data ready
287  DIR_CACHE_TIMEOUT, //the directory cache file list time to live in milliseconds
288  MAX_TOTAL_DIR_CACHE_SIZE, //the total size of the dir info buffer
289  DELETE_NO_ACCESS_DIR_INFO_IN_SECONDS, //delete the directory info if there are no access more than this value.
290  FILE_CHANGED_QUEUE_TTL_IN_SECONDS, //set the file changed queue time to live.
291  MAX_CHANGED_FILES_IN_QUEUE, //set the maximum files can be kept in queue.
292 
294 
295 } DataControlId;
296 
297 //the filter rule commands
298 typedef enum _FilterRuleId
299 {
324 
325 }FilterRuleId;
326 
327 //the user mode app sends the string data to the filter driver,
328 //this is the index of the string data.
329 typedef enum _StringControlId
330 {
333 
335 
337 
338 //this is the boolean data of the user mode app sending to the filter.
339 //this is the boolean configuration of the filter driver.
340 typedef enum _BooleanConfig
341 {
342  ENABLE_NO_RECALL_FLAG = 0x00000001, //for easetag, if it was true, after the reparsepoint file was opened, it won't restore data back for read and write.
343  DISABLE_FILTER_UNLOAD_FLAG = 0x00000002, //if it is true, the filter driver can't be unloaded.
344  ENABLE_SET_OFFLINE_FLAG = 0x00000004, //for virtual file, it will set offline attribute if it is true.
345  ENABLE_DEFAULT_IV_TAG = 0x00000008, //for encryption, it is true, it will use the default IV tag to encrypt the files.
346  ENABLE_ADD_CHANGED_FILE_TO_QUEUE = 0x00000010, //for file changed event, if it is enabled, it will save the file name to a persistent file, or it will send the event to service right away.
347  ENABLE_ENCRYPTION_KEY_FOR_NEW_FILE = 0x0000020, //for encryption rule, get the encryption key from user mode for the new file creation.
348  ENABLE_ENCRYPTION_KEY_AND_IV_FOR_NEW_FILE = 0x00000040, //for encryption rule, get the encryption key and IV from user mode for the new file creation.
349 
350 } BooleanConfig;
351 
352 //this is the data structure which send control message to kernel from user mode.
353 //first it needs to set the control type which shows as above enumeration.
354 //the second is the control id for integer data.
355 //the third is the integer data.
356 typedef struct _CONTROL_DATA
357 {
358  ULONG ControlType;
359  ULONG ControlId;
360  LONGLONG IntegerData;
362  WCHAR StringData1[MAX_PATH];
364  WCHAR StringData2[MAX_PATH];
365  ULONG KeyLength;
366  UCHAR Key[MAX_PATH];
367 
369 
370 //the file was changed, this is the meta data of the file information.
371 typedef struct _FILE_CHANGED_DATA
372 {
373  ULONG SizeOfEntry;
375  LONGLONG LastWriteTime;
377  WCHAR FileName[1];
378  //the whole file name path is appended here.
379 
381 
382 
383 //this is the data structure of the filter driver sending data to the user mode app.
384 typedef struct _MESSAGE_SEND_DATA
385 {
386  ULONG MessageId;
387  PVOID FileObject;
388  PVOID FsContext;
389  ULONG MessageType;
390  ULONG ProcessId;
391  ULONG ThreadId;
392  LONGLONG Offset; // read/write offset
393  ULONG Length; //read/write length
394  LONGLONG FileSize;
395  LONGLONG TransactionTime;
396  LONGLONG CreationTime;
397  LONGLONG LastAccessTime;
398  LONGLONG LastWriteTime;
400  //The disired access,share access and disposition for Create request.
402  ULONG Disposition;
403  ULONG ShareAccess;
406 
407  //For QueryInformation,SetInformation,Directory request it is information class
408  //For QuerySecurity and SetSecurity request,it is securityInformation.
409  ULONG InfoClass;
410 
411  ULONG Status;
414  ULONG SidLength;
415  UCHAR Sid[MAX_SID_LENGTH];
417  UCHAR DataBuffer[BLOCK_SIZE];
418 
420 
422 
423 //The status return to filter,instruct filter driver what action needs to be done.
424 typedef enum _FilterStatus
425 {
426  FILTER_MESSAGE_IS_DIRTY = 0x00000001, //Set this flag if the reply message need to be processed.
427  FILTER_COMPLETE_PRE_OPERATION = 0x00000002, //Set this flag if complete the pre operation.
428  FILTER_DATA_BUFFER_IS_UPDATED = 0x00000004, //Set this flag if the databuffer was updated.
429  FILTER_BLOCK_DATA_WAS_RETURNED = 0x00000008, //Set this flag if return read block databuffer to filter.
430  FILTER_CACHE_FILE_WAS_RETURNED = 0x00000010, //Set this flag if the stub file was restored.
431 
433 
434 //this is the enumeration of the file I/O events.
435 typedef enum _FileEventType
436 {
437  //kernal internal use
438  CONTEXT_WAS_REMOVED = 0x00000001,
439 
440  FILE_WAS_CREATED = 0x00000020,
441  FILE_WAS_WRITTEN = 0x00000040,
442  FILE_WAS_RENAMED = 0x00000080,
443  FILE_WAS_DELETED = 0x00000100,
444  FILE_SECURITY_CHANGED = 0x00000200,
445  FILE_INFO_CHANGED = 0x00000400,
446  FILE_WAS_READ = 0x00000800,
447 
449 
450 
451 //This is the return data structure from user mode to the filter driver.
452 typedef struct _MESSAGE_REPLY_DATA
453 {
454  ULONG MessageId;
455  ULONG MessageType;
458  union {
459  struct {
461  UCHAR DataBuffer[BLOCK_SIZE];
462  } Data;
463  struct {
465  UCHAR IV[16];
467  UCHAR EncryptionKey[1];
468  } AESData;
469  struct {
471  WCHAR UserName[1];
472  } UserInfo;
473  struct {
475  WCHAR FileName[1];
476  } FileInfo;
477 
478  }ReplyData;
479 
481 
482 
483 
484 #define STATUS_ACCESS_DENIED 0xC0000022L
485 
486 extern "C" __declspec(dllexport)
487 BOOL
488 InstallDriver();
489 
490 extern "C" __declspec(dllexport)
491 BOOL
492 UnInstallDriver();
493 
494 extern "C" __declspec(dllexport)
495 BOOL
496 SetRegistrationKey(char* key);
497 
498 typedef BOOL (__stdcall *Proto_Message_Callback)(
499  IN PMESSAGE_SEND_DATA pSendMessage,
500  IN OUT PMESSAGE_REPLY_DATA pReplyMessage);
501 
502 typedef VOID (__stdcall *Proto_Disconnect_Callback)();
503 
504 extern "C" __declspec(dllexport)
505 BOOL
506 RegisterMessageCallback(
507  ULONG ThreadCount,
510 
511 extern "C" __declspec(dllexport)
512 VOID
513 Disconnect();
514 
515 extern "C" __declspec(dllexport)
516 BOOL
517 GetLastErrorMessage(WCHAR* Buffer, PULONG BufferLength);
518 
519 extern "C" __declspec(dllexport)
520 BOOL
521 SetIntegerData(ULONG dataControlId, LONGLONG data );
522 
523 extern "C" __declspec(dllexport)
524 BOOL
525 SetStringData(ULONG stringControlId, WCHAR* stringData);
526 
527 extern "C" __declspec(dllexport)
528 BOOL
529 ResetConfigData();
530 
531 extern "C" __declspec(dllexport)
532 BOOL
533 ProtectCurrentProcess();
534 
535 extern "C" __declspec(dllexport)
536 BOOL
537 StopProtectCurrentProcess();
538 
539 extern "C" __declspec(dllexport)
540 BOOL
541 SetFilterType(ULONG FilterType);
542 
543 extern "C" __declspec(dllexport)
544 BOOL
545 SetBooleanConfig(ULONG booleanConfig);
546 
547 extern "C" __declspec(dllexport)
548 BOOL
549 SetConnectionTimeout(ULONG TimeOutInSeconds);
550 
551 extern "C" __declspec(dllexport)
552 BOOL
553 AddFilterRule(ULONG AccessFlag, WCHAR* FilterMask, WCHAR* FilterMask2 = NULL,ULONG keyLength = 0,PUCHAR key = NULL);
554 
555 extern "C" __declspec(dllexport)
556 BOOL
557 AddNewFilterRule(ULONG accessFlag, WCHAR* filterMask);
558 
559 extern "C" __declspec(dllexport)
560 BOOL
561 AddEncryptionKeyToFilterRule(WCHAR* filterMask,ULONG encryptionKeyLength,PUCHAR encryptionKey);
562 
563 extern "C" __declspec(dllexport)
564 BOOL
565 AddReparseFileMaskToFilterRule(WCHAR* filterMask, WCHAR* reparseFilterMask);
566 
567 extern "C" __declspec(dllexport)
568 BOOL
569 AddHiddenFileMaskToFilterRule(WCHAR* filterMask, WCHAR* hiddenFileFilterMask);
570 extern "C" __declspec(dllexport)
571 BOOL
572 AddExcludeFileMaskToFilterRule(WCHAR* filterMask, WCHAR* excludeFileFilterMask);
573 
574 extern "C" __declspec(dllexport)
575 BOOL
576 AddExcludeProcessIdToFilterRule(WCHAR* filterMask, ULONG excludePID);
577 
578 extern "C" __declspec(dllexport)
579 BOOL
580 AddIncludeProcessIdToFilterRule(WCHAR* filterMask, ULONG includePID);
581 
582 extern "C" __declspec(dllexport)
583 BOOL
584 RegisterEventTypeToFilterRule(WCHAR* filterMask, ULONG eventType);
585 
586 extern "C" __declspec(dllexport)
587 BOOL
588 RegisterMoinitorIOToFilterRule(WCHAR* filterMask, ULONG registerIO);
589 
590 extern "C" __declspec(dllexport)
591 BOOL
592 RegisterControlIOToFilterRule(WCHAR* filterMask, ULONG registerIO);
593 
594 extern "C" __declspec(dllexport)
595 BOOL
596 AddIncludeProcessNameToFilterRule(WCHAR* filterMask, WCHAR* processName);
597 
598 extern "C" __declspec(dllexport)
599 BOOL
600 AddExcludeProcessNameToFilterRule(WCHAR* filterMask, WCHAR* processName);
601 
602 extern "C" __declspec(dllexport)
603 BOOL
604 AddIncludeUserNameToFilterRule(WCHAR* filterMask, WCHAR* userName);
605 
606 extern "C" __declspec(dllexport)
607 BOOL
608 AddExcludeUserNameToFilterRule(WCHAR* filterMask, WCHAR* processName);
609 
610 extern "C" __declspec(dllexport)
611 BOOL
612 RemoveFilterRule(WCHAR* FilterMask);
613 
614 extern "C" __declspec(dllexport)
615 BOOL
616 AddExcludedProcessId(ULONG ProcessId);
617 
618 extern "C" __declspec(dllexport)
619 BOOL
620 RemoveExcludeProcessId(ULONG ProcessId);
621 
622 extern "C" __declspec(dllexport)
623 BOOL
624 AddIncludedProcessId(ULONG processId);
625 
626 extern "C" __declspec(dllexport)
627 BOOL
628 RemoveIncludeProcessId(ULONG processId);
629 
630 extern "C" __declspec(dllexport)
631 BOOL
632 AddProtectedProcessId(ULONG processId);
633 
634 extern "C" __declspec(dllexport)
635 BOOL
636 RemoveProtectedProcessId(ULONG processId);
637 
638 extern "C" __declspec(dllexport)
639 BOOL
640 AddBlockSaveAsProcessId(ULONG processId);
641 
642 extern "C" __declspec(dllexport)
643 BOOL
644 RemoveBlockSaveAsProcessId(ULONG processId);
645 
646 extern "C" __declspec(dllexport)
647 BOOL
648 RegisterIoRequest(ULONG RequestRegistration);
649 
650 extern "C" __declspec(dllexport)
651 BOOL
652 GetFileHandleInFilter(WCHAR* FileName,ULONG DesiredAccess,HANDLE* FileHandle);
653 
654 extern "C" __declspec(dllexport)
655 BOOL
656 CloseFileHandleInFilter(HANDLE hFile);
657 
658 extern "C" __declspec(dllexport)
659 BOOL
660 IsDriverServiceRunning();
661 
662 extern "C" __declspec(dllexport)
663 BOOL
664 OpenStubFile(
665  LPCTSTR fileName,
667  DWORD dwShareMode,
668  PHANDLE pHandle );
669 
670 extern "C" __declspec(dllexport)
671 BOOL
672 CreateFileAPI(
673  LPCTSTR fileName,
675  DWORD dwShareMode,
676  DWORD dwCreationDisposition,
677  DWORD dwFlagsAndAttributes,
678  PHANDLE pHandle );
679 
680 extern "C" __declspec(dllexport)
681 BOOL
682 CreateStubFile(
683  LPCTSTR fileName,
684  LONGLONG fileSize,
685  ULONG fileAttributes,
686  ULONG tagDataLength,
687  BYTE* tagData,
688  BOOL overwriteIfExist,
689  PHANDLE pHandle );
690 
691 extern "C" __declspec(dllexport)
692 BOOL
693 GetTagData(
694  HANDLE hFile,
695  PULONG tagDataLength,
696  BYTE* tagData);
697 
698 extern "C" __declspec(dllexport)
699 BOOL
700 RemoveTagData(
701  HANDLE hFile ,
702  BOOLEAN updateTimeStamp = FALSE);
703 
704 extern "C" __declspec(dllexport)
705 BOOL
706 AddTagData(
707  HANDLE hFile,
708  ULONG tagDataLength,
709  BYTE* tagData );
710 
711 extern "C" __declspec(dllexport)
712 BOOL
713 AddReparseTagData(
714  LPCTSTR fileName,
715  ULONG tagDataLength,
716  BYTE* tagData );
717 
718 extern "C" __declspec(dllexport)
719 BOOL
720 QueryAllocatedRanges(
721  IN HANDLE hFile,
722  IN LONGLONG queryOffset,
723  IN LONGLONG queryLength,
724  IN OUT PFILE_ALLOCATED_RANGE_BUFFER allocatedBuffer,
725  IN ULONG allocatedBufferSize,
726  OUT ULONG *returnBufferLength );
727 
728 extern "C" __declspec(dllexport)
729 BOOL
730 SetFileSize(
731  HANDLE hFile,
732  LONGLONG fileSize);
733 
734 extern "C" __declspec(dllexport)
735 BOOL
736 AESEncryptFile(
737  LPCTSTR fileName,
738  ULONG keyLength,
739  BYTE* key,
740  ULONG ivLength = 0,
741  BYTE* iv = NULL,
742  BOOLEAN addIVTag = TRUE);
743 
744 extern "C" __declspec(dllexport)
745 BOOL
746 AESDecryptFile(
747  LPCTSTR fileName,
748  ULONG keyLength,
749  BYTE* key,
750  ULONG ivLength = 0,
751  BYTE* iv = NULL);
752 
753 extern "C" __declspec(dllexport)
754 BOOL
755 AESEncryptFileToFile(
756  LPCTSTR sourceFileName,
757  LPCTSTR destFileName,
758  ULONG keyLength,
759  BYTE* key,
760  ULONG ivLength,
761  BYTE* iv,
762  BOOLEAN addIVTag );
763 
764 extern "C" __declspec(dllexport)
765 BOOL
766 AESDecryptFileToFile(
767  LPCTSTR sourceFileName,
768  LPCTSTR destFileName,
769  ULONG keyLength,
770  BYTE* key,
771  ULONG ivLength,
772  BYTE* iv);
773 
774 extern "C" __declspec(dllexport)
775 BOOL
776 GetIVTag(
777  LPCTSTR fileName,
778  PULONG ivLength,
779  BYTE* ivTag);
780 
781 extern "C" __declspec(dllexport)
782 BOOL
783 AddIVTag(
784  LPCTSTR fileName,
785  ULONG ivLength,
786  BYTE* ivTag);
787 
788 extern "C" __declspec(dllexport)
789 BOOL
790 AddIVAndExpireTimeTag(
791  LPCTSTR fileName,
792  ULONG ivLength,
793  BYTE* ivTag,
794  LONGLONG expireTime,
795  HANDLE fileHandle);
796 
797 extern "C" __declspec(dllexport)
798 BOOL
799 ProcessEncryptedFile(
800  LPCTSTR sourceFileName,
801  LPCTSTR destFileName);
802 
803 extern "C" __declspec(dllexport)
804 BOOL
805 DeleteIVTag(
806  LPCTSTR fileName);
807 
808 extern "C" __declspec(dllexport)
809 BOOL
810 AESEncryptDecryptBuffer(
811  BYTE* inputBuffer,
813  ULONG bufferLength,
814  LONGLONG offset,
815  BYTE* key,
816  ULONG keyLength,
817  BYTE* ivKey,
818  ULONG ivLength);
819 
820 extern "C" __declspec(dllexport)
821 BOOL
822 GetUniqueComputerId(
823  BYTE* buffer,
824  PULONG bufferLength );
825 
826 
827 #endif//__SHARE_TYPE_H__
WCHAR * userName
Definition: FilterAPI.h:604
LONGLONG FileSize
Definition: FilterAPI.h:394
LONGLONG FileSize
Definition: FilterAPI.h:79
ULONG DataBufferLength
Definition: FilterAPI.h:416
_ControlType
Definition: FilterAPI.h:254
enum _AESFlags AESFlags
_EVENT_LEVEL
Definition: FilterAPI.h:242
ULONG EncryptionKeyLength
Definition: FilterAPI.h:74
BYTE ULONG bufferLength
Definition: FilterAPI.h:812
DWORD DWORD PHANDLE pHandle
Definition: FilterAPI.h:666
struct _CONTROL_DATA CONTROL_DATA
#define MAX_SID_LENGTH
Definition: FilterAPI.h:18
ULONG encryptionKeyLength
Definition: FilterAPI.h:561
LONGLONG CreationTime
Definition: FilterAPI.h:396
LONGLONG TransactionTime
Definition: FilterAPI.h:395
enum _BooleanConfig BooleanConfig
ULONG PUCHAR encryptionKey
Definition: FilterAPI.h:561
_FileEventType
Definition: FilterAPI.h:435
LONGLONG LastWriteTime
Definition: FilterAPI.h:375
struct _FILE_CHANGED_DATA FILE_CHANGED_DATA
ULONG BYTE ULONG BYTE BOOLEAN addIVTag
Definition: FilterAPI.h:742
BYTE ULONG LONGLONG BYTE ULONG BYTE * ivKey
Definition: FilterAPI.h:812
LPCTSTR destFileName
Definition: FilterAPI.h:757
_FilterType
Definition: FilterAPI.h:119
DWORD DWORD DWORD dwCreationDisposition
Definition: FilterAPI.h:674
WCHAR WCHAR ULONG keyLength
Definition: FilterAPI.h:553
LONGLONG ULONG ULONG BYTE * tagData
Definition: FilterAPI.h:684
_FilterCommand
Definition: FilterAPI.h:136
BYTE ULONG LONGLONG offset
Definition: FilterAPI.h:812
IN LONGLONG IN LONGLONG IN OUT PFILE_ALLOCATED_RANGE_BUFFER allocatedBuffer
Definition: FilterAPI.h:722
enum _FilterType FilterType
struct _CONTROL_DATA * PCONTROL_DATA
#define BLOCK_SIZE
Definition: FilterAPI.h:16
#define MAX_FILE_NAME_LENGTH
Definition: FilterAPI.h:17
_EVENT_OUTPUT_TYPE
Definition: FilterAPI.h:233
ULONG LengthOfIncludeProcessNames
Definition: FilterAPI.h:80
ULONG LengthOfComputerId
Definition: FilterAPI.h:90
LONGLONG ULONG fileAttributes
Definition: FilterAPI.h:684
ULONG ControlType
Definition: FilterAPI.h:358
BYTE * outputBuffer
Definition: FilterAPI.h:812
WCHAR * processName
Definition: FilterAPI.h:596
_ConnectionPortType
Definition: FilterAPI.h:226
IN LONGLONG IN LONGLONG IN OUT PFILE_ALLOCATED_RANGE_BUFFER IN ULONG OUT ULONG * returnBufferLength
Definition: FilterAPI.h:722
struct _EASETAG_AES_DATA EASETAG_AES_DATA
ULONG excludePID
Definition: FilterAPI.h:576
enum _FileEventType * PFileEventType
#define MAX_PATH
Definition: FilterAPI.h:23
PULONG BYTE * ivTag
Definition: FilterAPI.h:778
struct _MESSAGE_REPLY_DATA * PMESSAGE_REPLY_DATA
ULONG OffsetOfComputerId
Definition: FilterAPI.h:91
VOID(__stdcall * Proto_Disconnect_Callback)()
Definition: FilterAPI.h:502
ULONG OffsetOfExcludeUserNames
Definition: FilterAPI.h:87
enum _EVENT_LEVEL EVENT_LEVEL
WCHAR FileName[1]
Definition: FilterAPI.h:44
ULONG LengthOfAccountName
Definition: FilterAPI.h:88
WCHAR * excludeFileFilterMask
Definition: FilterAPI.h:572
_BooleanConfig
Definition: FilterAPI.h:340
ULONG OffsetOfIncludeUserNames
Definition: FilterAPI.h:85
ULONG includePID
Definition: FilterAPI.h:580
WCHAR * filterMask
Definition: FilterAPI.h:557
struct _EASETAG_DATA EASETAG_DATA
ULONG FileNameLength
Definition: FilterAPI.h:43
_AESFlags
Definition: FilterAPI.h:51
enum _FilterStatus FilterStatus
DWORD dwDesiredAccess
Definition: FilterAPI.h:666
LONGLONG ULONG ULONG BYTE BOOL overwriteIfExist
Definition: FilterAPI.h:684
ULONG StringLength1
Definition: FilterAPI.h:361
enum _AccessFlag AccessFlag
ULONG OffsetOfAccountName
Definition: FilterAPI.h:89
ULONG HANDLE * FileHandle
Definition: FilterAPI.h:652
ULONG BYTE ULONG BYTE * iv
Definition: FilterAPI.h:741
PULONG BufferLength
Definition: FilterAPI.h:517
ULONG BYTE ULONG ivLength
Definition: FilterAPI.h:740
_MessageType
Definition: FilterAPI.h:155
ULONG StringLength2
Definition: FilterAPI.h:363
ULONG EncryptionKeyLength
Definition: FilterAPI.h:466
_FilterStatus
Definition: FilterAPI.h:424
ULONG LengthOfUserPassword
Definition: FilterAPI.h:92
struct _FILE_CHANGED_DATA * PFILE_CHANGED_DATA
_DataControlId
Definition: FilterAPI.h:277
_StringControlId
Definition: FilterAPI.h:329
ULONG VerificationNumber
Definition: FilterAPI.h:419
WCHAR * stringData
Definition: FilterAPI.h:525
LONGLONG ULONG ULONG tagDataLength
Definition: FilterAPI.h:684
enum _ConnectionPortType ConnectionPortType
LONGLONG LastWriteTime
Definition: FilterAPI.h:398
enum _EVENT_OUTPUT_TYPE EVENT_OUTPUT_TYPE
enum _FileEventType FileEventType
ULONG TotalSizeOfAESData
Definition: FilterAPI.h:102
ULONG ControlId
Definition: FilterAPI.h:359
struct _MESSAGE_SEND_DATA MESSAGE_SEND_DATA
struct _MESSAGE_REPLY_DATA MESSAGE_REPLY_DATA
enum _FilterCommand FilterCommand
struct _EASETAG_DATA * PEASETAG_DATA
struct _MESSAGE_SEND_DATA * PMESSAGE_SEND_DATA
ULONG eventType
Definition: FilterAPI.h:584
ULONG KeyLength
Definition: FilterAPI.h:365
enum _FilterStatus * PFilterStatus
Proto_Message_Callback Proto_Disconnect_Callback DisconnectCallback
Definition: FilterAPI.h:508
ULONG DesiredAccess
Definition: FilterAPI.h:652
IN LONGLONG IN LONGLONG queryLength
Definition: FilterAPI.h:722
_FilterRuleId
Definition: FilterAPI.h:298
WCHAR * hiddenFileFilterMask
Definition: FilterAPI.h:569
LONGLONG fileSize
Definition: FilterAPI.h:684
ULONG LengthOfIncludeUserNames
Definition: FilterAPI.h:84
struct _EASETAG_EMBEDDED_DATA EASETAG_EMBEDDED_DATA
__declspec(dllexport) BOOL InstallDriver()
enum _DataControlId DataControlId
Proto_Message_Callback MessageCallback
Definition: FilterAPI.h:508
ULONG BYTE LONGLONG HANDLE fileHandle
Definition: FilterAPI.h:792
enum _MessageType MessageType
WCHAR * FilterMask
Definition: FilterAPI.h:553
ULONG OffsetOfExcludeProcessNames
Definition: FilterAPI.h:83
enum _FilterRuleId FilterRuleId
ULONG BYTE LONGLONG expireTime
Definition: FilterAPI.h:792
ULONG OffsetOfIncludeProcessNames
Definition: FilterAPI.h:81
enum _StringControlId StringControlId
DWORD DWORD DWORD DWORD dwFlagsAndAttributes
Definition: FilterAPI.h:674
struct _EASETAG_AES_DATA * PEASETAG_AES_DATA
DWORD DWORD dwShareMode
Definition: FilterAPI.h:666
WCHAR WCHAR * FilterMask2
Definition: FilterAPI.h:553
ULONG Flags
Definition: FilterAPI.h:42
LONGLONG CreationTime
Definition: FilterAPI.h:76
ULONG LengthOfExcludeUserNames
Definition: FilterAPI.h:86
enum _ControlType ControlType
ULONG LengthOfExcludeProcessNames
Definition: FilterAPI.h:82
BOOLEAN updateTimeStamp
Definition: FilterAPI.h:702
ULONG registerIO
Definition: FilterAPI.h:588
LONGLONG LastAccessTime
Definition: FilterAPI.h:397
_AccessFlag
Definition: FilterAPI.h:194
LONGLONG ExpireTime
Definition: FilterAPI.h:77
struct _EASETAG_EMBEDDED_DATA * PEASETAG_EMBEDDED_DATA
LONGLONG data
Definition: FilterAPI.h:521
WCHAR * reparseFilterMask
Definition: FilterAPI.h:565
IN LONGLONG queryOffset
Definition: FilterAPI.h:722
LONGLONG IntegerData
Definition: FilterAPI.h:360
BOOL(__stdcall * Proto_Message_Callback)(IN PMESSAGE_SEND_DATA pSendMessage, IN OUT PMESSAGE_REPLY_DATA pReplyMessage)
Definition: FilterAPI.h:498
ULONG OffsetOfUserPassword
Definition: FilterAPI.h:93
IN LONGLONG IN LONGLONG IN OUT PFILE_ALLOCATED_RANGE_BUFFER IN ULONG allocatedBufferSize
Definition: FilterAPI.h:722
WCHAR WCHAR ULONG PUCHAR key
Definition: FilterAPI.h:553
ULONG EaseTagKey
Definition: FilterAPI.h:41

Social Network


Services Overview

Architect, implement and test file system filter drivers for a wide range of functionality. We can offer several levels of assistance to meet your specific.

Contact Us

You are welcome to contact us for salse or partnership.

Sales: sales@easefilter.com
Support: support@easefilter.com
Info: info@easefilter.com