This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/WATCOM/h/nt/ddk/mcd.h

243 lines
8.2 KiB
C

/*
* mcd.h Medium changer driver definitions
*
* =========================================================================
*
* Open Watcom Project
*
* Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
*
* This file is automatically generated. Do not edit directly.
*
* =========================================================================
*/
#ifndef _ENABLE_AUTODEPEND
#pragma read_only_file;
#endif
#include <scsi.h>
#include <ntddchgr.h>
#include <classpnp.h>
#if (NTDDI_VERSION >= 0x05010000)
#include <wmidata.h>
#include <wmistr.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* Maximum changer inquiry data */
#define MAXIMUM_CHANGER_INQUIRY_DATA 252
/* Mode page display */
#define MODE_PAGE_DISPLAY 0x22
/* Changer callbacks */
#if (NTDDI_VERSION >= 0x05010000)
typedef NTSTATUS (NTAPI *CHANGER_COMMAND_ROUTINE)( PDEVICE_OBJECT, PIRP );
typedef ULONG (NTAPI *CHANGER_EXTENSION_SIZE)( VOID );
typedef NTSTATUS (NTAPI *CHANGER_INITIALIZE)( PDEVICE_OBJECT );
typedef NTSTATUS (NTAPI *CHANGER_PERFORM_DIAGNOSTICS)( PDEVICE_OBJECT, PWMI_CHANGER_PROBLEM_DEVICE_ERROR );
typedef VOID (NTAPI *CHANGER_ERROR_ROUTINE)( PDEVICE_OBJECT, PSCSI_REQUEST_BLOCK, NTSTATUS *, BOOLEAN * );
#endif
/* Medium changer device initialization data */
#if (NTDDI_VERSION >= 0x05010000)
typedef struct _MCD_INIT_DATA {
ULONG InitDataSize;
CHANGER_EXTENSION_SIZE ChangerAdditionalExtensionSize;
CHANGER_INITIALIZE ChangerInitialize;
CHANGER_ERROR_ROUTINE ChangerError;
CHANGER_PERFORM_DIAGNOSTICS ChangerPerformDiagnostics;
CHANGER_COMMAND_ROUTINE ChangerGetParameters;
CHANGER_COMMAND_ROUTINE ChangerGetStatus;
CHANGER_COMMAND_ROUTINE ChangerGetProductData;
CHANGER_COMMAND_ROUTINE ChangerSetAccess;
CHANGER_COMMAND_ROUTINE ChangerGetElementStatus;
CHANGER_COMMAND_ROUTINE ChangerInitializeElementStatus;
CHANGER_COMMAND_ROUTINE ChangerSetPosition;
CHANGER_COMMAND_ROUTINE ChangerExchangeMedium;
CHANGER_COMMAND_ROUTINE ChangerMoveMedium;
CHANGER_COMMAND_ROUTINE ChangerReinitializeUnit;
CHANGER_COMMAND_ROUTINE ChangerQueryVolumeTags;
} MCD_INIT_DATA;
typedef MCD_INIT_DATA *PMCD_INIT_DATA;
#endif
/* Mode element address page */
typedef struct _MODE_ELEMENT_ADDRESS_PAGE {
UCHAR PageCode : 6;
UCHAR Reserved1 : 1;
UCHAR PS : 1;
UCHAR PageLength;
UCHAR MediumTransportElementAddress[2];
UCHAR NumberTransportElements[2];
UCHAR FirstStorageElementAddress[2];
UCHAR NumberStorageElements[2];
UCHAR FirstIEPortElementAddress[2];
UCHAR NumberIEPortElements[2];
UCHAR FirstDataXFerElementAddress[2];
UCHAR NumberDataXFerElements[2];
UCHAR Reserved2[2];
} MODE_ELEMENT_ADDRESS_PAGE;
typedef MODE_ELEMENT_ADDRESS_PAGE *PMODE_ELEMENT_ADDRESS_PAGE;
/* Mode transport geometry page */
typedef struct _MODE_TRANSPORT_GEOMETRY_PAGE {
UCHAR PageCode : 6;
UCHAR Reserved1 : 1;
UCHAR PS : 1;
UCHAR PageLength;
UCHAR Flip : 1;
UCHAR Reserved2 : 7;
UCHAR TransportElementNumber;
} MODE_TRANSPORT_GEOMETRY_PAGE;
typedef MODE_TRANSPORT_GEOMETRY_PAGE *PMODE_TRANSPORT_GEOMETRY_PAGE;
/* Mode device capabilities page */
typedef struct _MODE_DEVICE_CAPABILITIES_PAGE {
UCHAR PageCode : 6;
UCHAR Reserved1 : 1;
UCHAR PS : 1;
UCHAR PageLength;
UCHAR MediumTransport : 1;
UCHAR StorageLocation : 1;
UCHAR IEPort : 1;
UCHAR DataXFer : 1;
UCHAR Reserved2 : 4;
UCHAR Reserved3;
UCHAR MTtoMT : 1;
UCHAR MTtoST : 1;
UCHAR MTtoIE : 1;
UCHAR MTtoDT : 1;
UCHAR Reserved4 : 4;
UCHAR STtoMT : 1;
UCHAR STtoST : 1;
UCHAR STtoIE : 1;
UCHAR STtoDT : 1;
UCHAR Reserved5 : 4;
UCHAR IEtoMT : 1;
UCHAR IEtoST : 1;
UCHAR IEtoIE : 1;
UCHAR IEtoDT : 1;
UCHAR Reserved6 : 4;
UCHAR DTtoMT : 1;
UCHAR DTtoST : 1;
UCHAR DTtoIE : 1;
UCHAR DTtoDT : 1;
UCHAR Reserved7 : 4;
UCHAR Reserved8[4];
UCHAR XMTtoMT : 1;
UCHAR XMTtoST : 1;
UCHAR XMTtoIE : 1;
UCHAR XMTtoDT : 1;
UCHAR Reserved9 : 4;
UCHAR XSTtoMT : 1;
UCHAR XSTtoST : 1;
UCHAR XSTtoIE : 1;
UCHAR XSTtoDT : 1;
UCHAR Reserved10 : 4;
UCHAR XIEtoMT : 1;
UCHAR XIEtoST : 1;
UCHAR XIEtoIE : 1;
UCHAR XIEtoDT : 1;
UCHAR Reserved11 : 4;
UCHAR XDTtoMT : 1;
UCHAR XDTtoST : 1;
UCHAR XDTtoIE : 1;
UCHAR XDTtoDT : 1;
UCHAR Reserved12 : 4;
} MODE_DEVICE_CAPABILITIES_PAGE;
typedef MODE_DEVICE_CAPABILITIES_PAGE *PMODE_DEVICE_CAPABILITIES_PAGE;
/* Element status header */
typedef struct _ELEMENT_STATUS_HEADER {
UCHAR FirstElementAddress[2];
UCHAR NumberOfElements[2];
UCHAR Reserved1;
UCHAR ReportByteCount[3];
} ELEMENT_STATUS_HEADER;
typedef ELEMENT_STATUS_HEADER *PELEMENT_STATUS_HEADER;
/* Element status page */
typedef struct _ELEMENT_STATUS_PAGE {
UCHAR ElementType;
UCHAR Reserved1 : 6;
UCHAR AVolTag : 1;
UCHAR PVolTag : 1;
UCHAR ElementDescriptorLength[2];
UCHAR Reserved2;
UCHAR DescriptorByteCount[3];
} ELEMENT_STATUS_PAGE;
typedef ELEMENT_STATUS_PAGE *PELEMENT_STATUS_PAGE;
/* Element descriptor */
typedef struct _ELEMENT_DESCRIPTOR {
UCHAR ElementAddress[2];
UCHAR Full : 1;
UCHAR Reserved1 : 1;
UCHAR Exception : 1;
UCHAR Accessible : 1;
UCHAR Reserved2 : 4;
UCHAR Reserved3;
UCHAR AdditionalSenseCode;
UCHAR AddSenseCodeQualifier;
UCHAR Lun : 3;
UCHAR Reserved4 : 1;
UCHAR LunValid : 1;
UCHAR IdValid : 1;
UCHAR Reserved5 : 1;
UCHAR NotThisBus : 1;
UCHAR BusAddress;
UCHAR Reserved6;
UCHAR Reserved7 : 6;
UCHAR Invert : 1;
UCHAR SValid : 1;
UCHAR SourceStorageElementAddress[2];
} ELEMENT_DESCRIPTOR;
typedef ELEMENT_DESCRIPTOR *PELEMENT_DESCRIPTOR;
/* Functions in MCD.SYS */
PVOID NTAPI ChangerClassAllocatePool( POOL_TYPE, ULONG );
VOID NTAPI ChangerClassFreePool( PVOID );
#if (NTDDI_VERSION >= 0x05010000)
VOID __cdecl ChangerClassDebugPrint( ULONG, PCCHAR, ... );
NTSTATUS NTAPI ChangerClassInitialize( PDRIVER_OBJECT, PUNICODE_STRING, PMCD_INIT_DATA );
NTSTATUS NTAPI ChangerClassSendSrbSynchronous( PDEVICE_OBJECT, PSCSI_REQUEST_BLOCK, PVOID, ULONG, BOOLEAN );
#endif
/* Functions implemented by changer drivers */
ULONG NTAPI ChangerAdditionalExtensionSize( VOID );
VOID NTAPI ChangerError( PDEVICE_OBJECT, PSCSI_REQUEST_BLOCK, NTSTATUS *, BOOLEAN * );
NTSTATUS NTAPI ChangerExchangeMedium( PDEVICE_OBJECT, PIRP );
NTSTATUS NTAPI ChangerGetElementStatus( PDEVICE_OBJECT, PIRP );
NTSTATUS NTAPI ChangerGetParameters( PDEVICE_OBJECT, PIRP );
NTSTATUS NTAPI ChangerGetProductData( PDEVICE_OBJECT, PIRP );
NTSTATUS NTAPI ChangerGetStatus( PDEVICE_OBJECT, PIRP );
NTSTATUS NTAPI ChangerInitialize( PDEVICE_OBJECT );
NTSTATUS NTAPI ChangerInitializeElementStatus( PDEVICE_OBJECT, PIRP );
NTSTATUS NTAPI ChangerMoveMedium( PDEVICE_OBJECT, PIRP );
NTSTATUS NTAPI ChangerQueryVolumeTags( PDEVICE_OBJECT, PIRP );
NTSTATUS NTAPI ChangerReinitializeUnit( PDEVICE_OBJECT, PIRP );
NTSTATUS NTAPI ChangerSetAccess( PDEVICE_OBJECT, PIRP );
NTSTATUS NTAPI ChangerSetPosition( PDEVICE_OBJECT, PIRP );
#if (NTDDI_VERSION >= 0x05010000)
NTSTATUS NTAPI ChangerPerformDiagnostics( PDEVICE_OBJECT, PWMI_CHANGER_PROBLEM_DEVICE_ERROR );
#endif
/* Functions implemented as macros */
#if (NTDDI_VERSION >= 0x05010000)
#undef DebugPrint
#if DBG
#define DebugPrint( x ) ChangerClassDebugPrint x
#else
#define DebugPrint( x )
#endif
#endif
#ifdef __cplusplus
} /* extern "C" */
#endif