twain3.0/3rdparty/ddk/sffprtcl.h

145 lines
2.8 KiB
C

/*++
Copyright (c) 1991 - 1993 Microsoft Corporation
Module Name:
sffprtcl.h
Abstract:
Definition for Small Form Factor disk (SFFDISK) protocol layer interface
Notes:
--*/
#ifndef _SFFPRTCL_H_
#define _SFFPRTCL_H_
DEFINE_GUID(GUID_SFF_PROTOCOL_INTERFACE_STANDARD, 0xc7ec8da0L, 0xdbe3, 0x43fd, 0xa9, 0xeb, 0x7e, 0x4c, 0x70, 0x7c, 0x35, 0xac);
#define SFF_PROTOCOL_INTERFACE_VERSION 0x0102
//
// Property types used in SFFPROT_Get/Set_Property
//
typedef enum {
SFFP_PROP_MEDIA_CAPACITY,
SFFP_PROP_PARTITION_SIZE,
SFFP_PROP_WRITE_PROTECTED,
SFFP_PROP_MEDIA_STATE,
SFFP_PROP_MEDIA_CHANGECOUNT,
SFFP_PROP_MEDIA_ID,
SFFP_PROP_PROTOCOL_GUID,
SFFP_PROP_VERIFY_STATE,
SFFP_PROP_PARTITION_START_OFFSET
} SFFPROT_PROPERTY;
//
// Media states defined for SFFP_PROP_MEDIA_STATE
//
typedef enum {
SFFMS_NO_MEDIA = 0,
SFFMS_MEDIA_PRESENT
} SFFPROT_MEDIA_STATE;
//
// Media states defined for SFFP_PROP_MEDIA_STATE
//
typedef enum {
SFFVS_VERIFY_REQUIRED = 0, // the bus interface layer has noticed the media changed
SFFVS_VERIFY_ACKNOWLEDGED // the file system has started the verify
} SFFPROT_VERIFY_STATE;
//
// types used in DeviceControl
//
typedef enum {
SFFDC_DEVICE_COMMAND,
SFFDC_DEVICE_PASSWORD
} SFFPROT_DCTYPE;
//
// Prototypes for the get/set property calls
//
typedef
NTSTATUS
(*PSFFPROT_GET_PROPERTY)(
IN PVOID Context,
IN SFFPROT_PROPERTY Property,
IN ULONG BufferLength,
OUT PVOID PropertyBuffer,
OUT PULONG ResultLength
);
typedef
NTSTATUS
(*PSFFPROT_SET_PROPERTY)(
IN PVOID Context,
IN SFFPROT_PROPERTY Property,
IN ULONG BufferLength,
IN PVOID PropertyBuffer
);
typedef
NTSTATUS
(*PSFFPROT_DEVICE_CONTROL)(
IN PVOID Context,
IN SFFPROT_DCTYPE Type,
IN PVOID Buffer,
IN ULONG Length,
OUT PULONG LengthReturned
);
typedef
NTSTATUS
(*PSFFPROT_READ)(
IN PVOID Context,
IN PMDL Mdl,
IN ULONGLONG Offset,
IN ULONG Length,
OUT PULONG LengthReturned
);
typedef
NTSTATUS
(*PSFFPROT_WRITE)(
IN PVOID Context,
IN PMDL Mdl,
IN ULONGLONG Offset,
IN ULONG Length,
OUT PULONG LengthReturned
);
//
// This typedef defines the interface structure to be returned by
// the pnp QUERY_INTERFACE call.
//
typedef struct _SFF_PROTOCOL_INTERFACE_STANDARD {
USHORT Size;
USHORT Version;
PINTERFACE_REFERENCE InterfaceReference;
PINTERFACE_DEREFERENCE InterfaceDereference;
PVOID Context;
PSFFPROT_GET_PROPERTY GetProperty;
PSFFPROT_SET_PROPERTY SetProperty;
PSFFPROT_READ Read;
PSFFPROT_WRITE Write;
PSFFPROT_DEVICE_CONTROL DeviceControl;
} SFF_PROTOCOL_INTERFACE_STANDARD, *PSFF_PROTOCOL_INTERFACE_STANDARD;
#endif // _SFFPRTCL_H_