384 lines
9.2 KiB
C
384 lines
9.2 KiB
C
/*++ BUILD Version: 0005 // Increment this if a change has global effects
|
|
|
|
Copyright (c) 1989-2002 Microsoft Corporation. All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
fltWinError.h
|
|
|
|
Abstract:
|
|
|
|
Constant definitions for the HRESULTS values defined by the Filter Manager.
|
|
|
|
Environment:
|
|
|
|
User mode
|
|
|
|
--*/
|
|
|
|
#ifndef _FLT_WINERROR_
|
|
#define _FLT_WINERROR_
|
|
|
|
//
|
|
// For Windows version 6.00 and later, these error codes are defined in
|
|
// winerror.h. Only use these definitions if not already defined
|
|
//
|
|
#if NTDDI_VERSION < NTDDI_VISTA
|
|
#ifndef FACILITY_USERMODE_FILTER_MANAGER
|
|
|
|
//
|
|
// HRESULT
|
|
// FILTER_HRESULT_FROM_FLT_NTSTATUS (
|
|
// IN NTSTATUS FltNtStatus
|
|
// )
|
|
//
|
|
// Macro Description:
|
|
//
|
|
// This macro does the translation from a Filter Manager defined NTSTATUS
|
|
// code to a Filter Manager Library HRESULT. The Filter Manager Library
|
|
// error code is built as follows:
|
|
//
|
|
// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
|
|
// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
|
|
// +-+-+-+-+-----------------------+-------------------------------+
|
|
// |S|R|C|R| FltMgr Facility |(Code part of FltNtStatus) |
|
|
// | | | | | | bit-wise or'd with 0x0000 |
|
|
// +-+-+-+-+-----------------------+-------------------------------+
|
|
//
|
|
// where
|
|
//
|
|
// S - Severity - 1 to indicate FAILURE
|
|
//
|
|
// R - reserved portion of the facility code, corresponds to NT's
|
|
// second severity bit.
|
|
//
|
|
// C - is the Customer code flag
|
|
//
|
|
// R - is a reserved bit
|
|
//
|
|
// Facility - FACILITY_USERMODE_FILTER_MANAGER
|
|
//
|
|
// Code - Code portion of the NTSTATUS
|
|
//
|
|
// Arguments:
|
|
//
|
|
// FltNtStatus - The NTSTATUS error code with the Filter Manager facility
|
|
// code to translate to an Filter Manager Library HRESULT.
|
|
//
|
|
// Return Value:
|
|
//
|
|
// The appropriate HRESULT.
|
|
//
|
|
|
|
#define FILTER_HRESULT_FROM_FLT_NTSTATUS(x) (ASSERT((x & 0xfff0000) == 0x001c0000),(HRESULT) (((x) & 0x8000FFFF) | (FACILITY_USERMODE_FILTER_MANAGER << 16)))
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// HRESULTs for Filter Manager defined NTSTATUS codes
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
// Values are 32 bit values laid out as follows:
|
|
//
|
|
// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
|
|
// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
|
|
// +---+-+-+-----------------------+-------------------------------+
|
|
// |Sev|C|R| Facility | Code |
|
|
// +---+-+-+-----------------------+-------------------------------+
|
|
//
|
|
// where
|
|
//
|
|
// Sev - is the severity code
|
|
//
|
|
// 00 - Success
|
|
// 01 - Informational
|
|
// 10 - Warning
|
|
// 11 - Error
|
|
//
|
|
// C - is the Customer code flag
|
|
//
|
|
// R - is a reserved bit
|
|
//
|
|
// Facility - is the facility code
|
|
//
|
|
// Code - is the facility's status code
|
|
//
|
|
//
|
|
// Define the facility codes
|
|
//
|
|
#define FACILITY_USERMODE_FILTER_MANAGER 0x1F
|
|
|
|
|
|
//
|
|
// Define the severity codes
|
|
//
|
|
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_IO_COMPLETE
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The IO was completed by a filter.
|
|
//
|
|
#define ERROR_FLT_IO_COMPLETE ((HRESULT)0x001F0001L)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_NO_HANDLER_DEFINED
|
|
//
|
|
// MessageText:
|
|
//
|
|
// A handler was not defined by the filter for this operation.
|
|
//
|
|
#define ERROR_FLT_NO_HANDLER_DEFINED ((HRESULT)0x801F0001L)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_CONTEXT_ALREADY_DEFINED
|
|
//
|
|
// MessageText:
|
|
//
|
|
// A context is already defined for this object.
|
|
//
|
|
#define ERROR_FLT_CONTEXT_ALREADY_DEFINED ((HRESULT)0x801F0002L)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST
|
|
//
|
|
// MessageText:
|
|
//
|
|
// Asynchronous requests are not valid for this operation.
|
|
//
|
|
#define ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST ((HRESULT)0x801F0003L)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_DISALLOW_FAST_IO
|
|
//
|
|
// MessageText:
|
|
//
|
|
// Disallow the Fast IO path for this operation.
|
|
//
|
|
#define ERROR_FLT_DISALLOW_FAST_IO ((HRESULT)0x801F0004L)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_INVALID_NAME_REQUEST
|
|
//
|
|
// MessageText:
|
|
//
|
|
// An invalid name request was made. The name requested cannot be retrieved at this time.
|
|
//
|
|
#define ERROR_FLT_INVALID_NAME_REQUEST ((HRESULT)0x801F0005L)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_NOT_SAFE_TO_POST_OPERATION
|
|
//
|
|
// MessageText:
|
|
//
|
|
// Posting this operation to a worker thread for further processing is not safe
|
|
// at this time because it could lead to a system deadlock.
|
|
//
|
|
#define ERROR_FLT_NOT_SAFE_TO_POST_OPERATION ((HRESULT)0x801F0006L)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_NOT_INITIALIZED
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The Filter Manager was not initialized when a filter tried to register. Make
|
|
// sure that the Filter Manager is getting loaded as a driver.
|
|
//
|
|
#define ERROR_FLT_NOT_INITIALIZED ((HRESULT)0x801F0007L)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_FILTER_NOT_READY
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The filter is not ready for attachment to volumes because it has not finished
|
|
// initializing (FltStartFiltering has not been called).
|
|
//
|
|
#define ERROR_FLT_FILTER_NOT_READY ((HRESULT)0x801F0008L)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_POST_OPERATION_CLEANUP
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The filter must cleanup any operation specific context at this time because
|
|
// it is being removed from the system before the operation is completed by
|
|
// the lower drivers.
|
|
//
|
|
#define ERROR_FLT_POST_OPERATION_CLEANUP ((HRESULT)0x801F0009L)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_INTERNAL_ERROR
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The Filter Manager had an internal error from which it cannot recover,
|
|
// therefore the operation has been failed. This is usually the result
|
|
// of a filter returning an invalid value from a pre-operation callback.
|
|
//
|
|
#define ERROR_FLT_INTERNAL_ERROR ((HRESULT)0x801F000AL)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_DELETING_OBJECT
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The object specified for this action is in the process of being
|
|
// deleted, therefore the action requested cannot be completed at
|
|
// this time.
|
|
//
|
|
#define ERROR_FLT_DELETING_OBJECT ((HRESULT)0x801F000BL)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_MUST_BE_NONPAGED_POOL
|
|
//
|
|
// MessageText:
|
|
//
|
|
// Non-paged pool must be used for this type of context.
|
|
//
|
|
#define ERROR_FLT_MUST_BE_NONPAGED_POOL ((HRESULT)0x801F000CL)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_DUPLICATE_ENTRY
|
|
//
|
|
// MessageText:
|
|
//
|
|
// A duplicate handler definition has been provided for an operation.
|
|
//
|
|
#define ERROR_FLT_DUPLICATE_ENTRY ((HRESULT)0x801F000DL)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_CBDQ_DISABLED
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The callback data queue has been disabled.
|
|
//
|
|
#define ERROR_FLT_CBDQ_DISABLED ((HRESULT)0x801F000EL)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_DO_NOT_ATTACH
|
|
//
|
|
// MessageText:
|
|
//
|
|
// Do not attach the filter to the volume at this time.
|
|
//
|
|
#define ERROR_FLT_DO_NOT_ATTACH ((HRESULT)0x801F000FL)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_DO_NOT_DETACH
|
|
//
|
|
// MessageText:
|
|
//
|
|
// Do not detach the filter from the volume at this time.
|
|
//
|
|
#define ERROR_FLT_DO_NOT_DETACH ((HRESULT)0x801F0010L)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_INSTANCE_ALTITUDE_COLLISION
|
|
//
|
|
// MessageText:
|
|
//
|
|
// An instance already exists at this altitude on the volume specified.
|
|
//
|
|
#define ERROR_FLT_INSTANCE_ALTITUDE_COLLISION ((HRESULT)0x801F0011L)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_INSTANCE_NAME_COLLISION
|
|
//
|
|
// MessageText:
|
|
//
|
|
// An instance already exists with this name on the volume specified.
|
|
//
|
|
#define ERROR_FLT_INSTANCE_NAME_COLLISION ((HRESULT)0x801F0012L)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_FILTER_NOT_FOUND
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The system could not find the filter specified.
|
|
//
|
|
#define ERROR_FLT_FILTER_NOT_FOUND ((HRESULT)0x801F0013L)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_VOLUME_NOT_FOUND
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The system could not find the volume specified.
|
|
//
|
|
#define ERROR_FLT_VOLUME_NOT_FOUND ((HRESULT)0x801F0014L)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_INSTANCE_NOT_FOUND
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The system could not find the instance specified.
|
|
//
|
|
#define ERROR_FLT_INSTANCE_NOT_FOUND ((HRESULT)0x801F0015L)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND
|
|
//
|
|
// MessageText:
|
|
//
|
|
// No registered context allocation definition was found for the given request.
|
|
//
|
|
#define ERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND ((HRESULT)0x801F0016L)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_INVALID_CONTEXT_REGISTRATION
|
|
//
|
|
// MessageText:
|
|
//
|
|
// An invalid parameter was specified during context registration.
|
|
//
|
|
#define ERROR_FLT_INVALID_CONTEXT_REGISTRATION ((HRESULT)0x801F0017L)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_NAME_CACHE_MISS
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The name requested was not found in Filter Manager's name cache and could not be retrieved from the file system.
|
|
//
|
|
#define ERROR_FLT_NAME_CACHE_MISS ((HRESULT)0x801F0018L)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_NO_DEVICE_OBJECT
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The requested device object does not exist for the given volume.
|
|
//
|
|
#define ERROR_FLT_NO_DEVICE_OBJECT ((HRESULT)0x801F0019L)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_VOLUME_ALREADY_MOUNTED
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The specified volume is already mounted.
|
|
//
|
|
#define ERROR_FLT_VOLUME_ALREADY_MOUNTED ((HRESULT)0x801F001AL)
|
|
|
|
//
|
|
// MessageId: ERROR_FLT_NO_WAITER_FOR_REPLY
|
|
//
|
|
// MessageText:
|
|
//
|
|
// No waiter is present for the filter's reply to this message.
|
|
//
|
|
#define ERROR_FLT_NO_WAITER_FOR_REPLY ((HRESULT)0x801F0020L)
|
|
|
|
#endif // !FACILITY_USERMODE_FILTER_MANAGER
|
|
#endif //NTDDIVER < WIN_LH
|
|
#endif //_FLT_WINERROR_
|
|
|