/*++ Copyright (c) 1989-1999 Microsoft Corporation Module Name: filespyLib.h Abstract: This contains internal definitions from the fileSpy library // @@BEGIN_DDKSPLIT Author: Neal Christiansen (NealCH) 27-Sep-2000 // @@END_DDKSPLIT Environment: Library used by both USER and KERNEL mode components // @@BEGIN_DDKSPLIT Revision History: Molly Brown (mollybro) 21-May-2002 Modify sample to make it support running on Windows 2000 or later if built in the latest build environment and allow it to be built in W2K and later build environments. // @@END_DDKSPLIT --*/ #ifndef __FILESPYLIB_H__ #define __FILESPYLIB_H__ #ifdef __cplusplus extern "C" { #endif // // The types FASTIO that are available for the Type field of the // RECORD_FASTIO structure. // typedef enum { CHECK_IF_POSSIBLE = 1, READ, WRITE, QUERY_BASIC_INFO, QUERY_STANDARD_INFO, LOCK, UNLOCK_SINGLE, UNLOCK_ALL, UNLOCK_ALL_BY_KEY, DEVICE_CONTROL, DETACH_DEVICE, QUERY_NETWORK_OPEN_INFO, MDL_READ, MDL_READ_COMPLETE, MDL_WRITE, MDL_WRITE_COMPLETE, READ_COMPRESSED, WRITE_COMPRESSED, MDL_READ_COMPLETE_COMPRESSED, PREPARE_MDL_WRITE, MDL_WRITE_COMPLETE_COMPRESSED, QUERY_OPEN, FASTIO_MAX_OPERATION=QUERY_OPEN } FASTIO_TYPE/*, *PFASTIO_TYPE*/; // // Size of return name buffers // #define OPERATION_NAME_BUFFER_SIZE 80 // // Function prototypes // extern VOID GetIrpName ( IN UCHAR MajorCode, IN UCHAR MinorCode, IN ULONG FsctlCode, OUT PCHAR MajorCodeName, OUT PCHAR MinorCodeName); extern VOID GetFastioName ( IN FASTIO_TYPE FastioCode, OUT PCHAR FastioName); #if WINVER >= 0x0501 /* See comment in DriverEntry */ extern VOID GetFsFilterOperationName ( IN UCHAR FsFilterOperation, OUT PCHAR FsFilterOperationName); #endif // // Service definitions // #define FILESPY_SERVICE_NAME L"FileSpy" #define FILESPY_SERVICE_ACCESS (STANDARD_RIGHTS_REQUIRED | \ SERVICE_QUERY_CONFIG | \ SERVICE_QUERY_STATUS | \ SERVICE_START) // // These are copied from NTIFS.H because we need them in user mode. // #define IRP_MJ_CREATE 0x00 #define IRP_MJ_CREATE_NAMED_PIPE 0x01 #define IRP_MJ_CLOSE 0x02 #define IRP_MJ_READ 0x03 #define IRP_MJ_WRITE 0x04 #define IRP_MJ_QUERY_INFORMATION 0x05 #define IRP_MJ_SET_INFORMATION 0x06 #define IRP_MJ_QUERY_EA 0x07 #define IRP_MJ_SET_EA 0x08 #define IRP_MJ_FLUSH_BUFFERS 0x09 #define IRP_MJ_QUERY_VOLUME_INFORMATION 0x0a #define IRP_MJ_SET_VOLUME_INFORMATION 0x0b #define IRP_MJ_DIRECTORY_CONTROL 0x0c #define IRP_MJ_FILE_SYSTEM_CONTROL 0x0d #define IRP_MJ_DEVICE_CONTROL 0x0e #define IRP_MJ_INTERNAL_DEVICE_CONTROL 0x0f #define IRP_MJ_SHUTDOWN 0x10 #define IRP_MJ_LOCK_CONTROL 0x11 #define IRP_MJ_CLEANUP 0x12 #define IRP_MJ_CREATE_MAILSLOT 0x13 #define IRP_MJ_QUERY_SECURITY 0x14 #define IRP_MJ_SET_SECURITY 0x15 #define IRP_MJ_POWER 0x16 #define IRP_MJ_SYSTEM_CONTROL 0x17 #define IRP_MJ_DEVICE_CHANGE 0x18 #define IRP_MJ_QUERY_QUOTA 0x19 #define IRP_MJ_SET_QUOTA 0x1a #define IRP_MJ_PNP 0x1b #define IRP_MJ_MAXIMUM_FUNCTION 0x1b #define IRP_MN_QUERY_DIRECTORY 0x01 #define IRP_MN_NOTIFY_CHANGE_DIRECTORY 0x02 #define IRP_MN_USER_FS_REQUEST 0x00 #define IRP_MN_MOUNT_VOLUME 0x01 #define IRP_MN_VERIFY_VOLUME 0x02 #define IRP_MN_LOAD_FILE_SYSTEM 0x03 #define IRP_MN_TRACK_LINK 0x04 #define IRP_MN_LOCK 0x01 #define IRP_MN_UNLOCK_SINGLE 0x02 #define IRP_MN_UNLOCK_ALL 0x03 #define IRP_MN_UNLOCK_ALL_BY_KEY 0x04 #define IRP_MN_NORMAL 0x00 #define IRP_MN_DPC 0x01 #define IRP_MN_MDL 0x02 #define IRP_MN_COMPLETE 0x04 #define IRP_MN_COMPRESSED 0x08 #define IRP_MN_MDL_DPC (IRP_MN_MDL | IRP_MN_DPC) #define IRP_MN_COMPLETE_MDL (IRP_MN_COMPLETE | IRP_MN_MDL) #define IRP_MN_COMPLETE_MDL_DPC (IRP_MN_COMPLETE_MDL | IRP_MN_DPC) #define IRP_MN_SCSI_CLASS 0x01 #define IRP_MN_START_DEVICE 0x00 #define IRP_MN_QUERY_REMOVE_DEVICE 0x01 #define IRP_MN_REMOVE_DEVICE 0x02 #define IRP_MN_CANCEL_REMOVE_DEVICE 0x03 #define IRP_MN_STOP_DEVICE 0x04 #define IRP_MN_QUERY_STOP_DEVICE 0x05 #define IRP_MN_CANCEL_STOP_DEVICE 0x06 #define IRP_MN_QUERY_DEVICE_RELATIONS 0x07 #define IRP_MN_QUERY_INTERFACE 0x08 #define IRP_MN_QUERY_CAPABILITIES 0x09 #define IRP_MN_QUERY_RESOURCES 0x0A #define IRP_MN_QUERY_RESOURCE_REQUIREMENTS 0x0B #define IRP_MN_QUERY_DEVICE_TEXT 0x0C #define IRP_MN_FILTER_RESOURCE_REQUIREMENTS 0x0D #define IRP_MN_READ_CONFIG 0x0F #define IRP_MN_WRITE_CONFIG 0x10 #define IRP_MN_EJECT 0x11 #define IRP_MN_SET_LOCK 0x12 #define IRP_MN_QUERY_ID 0x13 #define IRP_MN_QUERY_PNP_DEVICE_STATE 0x14 #define IRP_MN_QUERY_BUS_INFORMATION 0x15 #define IRP_MN_DEVICE_USAGE_NOTIFICATION 0x16 #define IRP_MN_SURPRISE_REMOVAL 0x17 #define IRP_MN_QUERY_LEGACY_BUS_INFORMATION 0x18 #define IRP_MN_WAIT_WAKE 0x00 #define IRP_MN_POWER_SEQUENCE 0x01 #define IRP_MN_SET_POWER 0x02 #define IRP_MN_QUERY_POWER 0x03 #define IRP_MN_QUERY_ALL_DATA 0x00 #define IRP_MN_QUERY_SINGLE_INSTANCE 0x01 #define IRP_MN_CHANGE_SINGLE_INSTANCE 0x02 #define IRP_MN_CHANGE_SINGLE_ITEM 0x03 #define IRP_MN_ENABLE_EVENTS 0x04 #define IRP_MN_DISABLE_EVENTS 0x05 #define IRP_MN_ENABLE_COLLECTION 0x06 #define IRP_MN_DISABLE_COLLECTION 0x07 #define IRP_MN_REGINFO 0x08 #define IRP_MN_EXECUTE_METHOD 0x09 // // Lists of IRP names and FASTIO names // extern PWCHAR IrpNameList[IRP_MJ_MAXIMUM_FUNCTION+1]; extern PWCHAR FastIoNameList[FASTIO_MAX_OPERATION]; #ifdef __cplusplus } #endif #endif __FILESPYLIB_H__