Reactos
at master 138 lines 3.0 kB view raw
1/* 2 * mcd.h 3 * 4 * Media changer driver interface 5 * 6 * This file is part of the w32api package. 7 * 8 * Contributors: 9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 10 * 11 * THIS SOFTWARE IS NOT COPYRIGHTED 12 * 13 * This source code is offered for use in the public domain. You may 14 * use, modify or distribute it freely. 15 * 16 * This code is distributed in the hope that it will be useful but 17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 18 * DISCLAIMED. This includes but is not limited to warranties of 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 20 * 21 */ 22 23#ifndef __MCD_H 24#define __MCD_H 25 26#include "srb.h" 27#include "scsi.h" 28#include "ntddchgr.h" 29 30#ifdef __cplusplus 31extern "C" { 32#endif 33 34#if defined(_MCD_) 35#define CHANGERAPI 36#else 37#define CHANGERAPI DECLSPEC_IMPORT 38#endif 39 40#ifdef DebugPrint 41#undef DebugPrint 42#endif 43 44#if DBG 45#define DebugPrint(x) ChangerClassDebugPrint x 46#else 47#define DebugPrint(x) 48#endif 49 50#define MAXIMUM_CHANGER_INQUIRY_DATA 252 51 52CHANGERAPI 53PVOID 54NTAPI 55ChangerClassAllocatePool( 56 IN POOL_TYPE PoolType, 57 IN ULONG NumberOfBytes); 58 59VOID 60ChangerClassDebugPrint( 61 ULONG DebugPrintLevel, 62 PCCHAR DebugMessage, 63 ...); 64 65CHANGERAPI 66PVOID 67NTAPI 68ChangerClassFreePool( 69 IN PVOID PoolToFree); 70 71CHANGERAPI 72NTSTATUS 73NTAPI 74ChangerClassSendSrbSynchronous( 75 IN PDEVICE_OBJECT DeviceObject, 76 IN PSCSI_REQUEST_BLOCK Srb, 77 IN PVOID Buffer, 78 IN ULONG BufferSize, 79 IN BOOLEAN WriteToDevice); 80 81 82typedef NTSTATUS NTAPI 83(*CHANGER_INITIALIZE)( 84 IN PDEVICE_OBJECT DeviceObject); 85 86typedef ULONG NTAPI 87(*CHANGER_EXTENSION_SIZE)( 88 VOID); 89 90typedef VOID NTAPI 91(*CHANGER_ERROR_ROUTINE)( 92 PDEVICE_OBJECT DeviceObject, 93 PSCSI_REQUEST_BLOCK Srb, 94 NTSTATUS *Status, 95 BOOLEAN *Retry); 96 97typedef NTSTATUS NTAPI 98(*CHANGER_COMMAND_ROUTINE)( 99 IN PDEVICE_OBJECT DeviceObject, 100 IN PIRP Irp); 101 102typedef NTSTATUS NTAPI 103(*CHANGER_PERFORM_DIAGNOSTICS)( 104 IN PDEVICE_OBJECT DeviceObject, 105 OUT PWMI_CHANGER_PROBLEM_DEVICE_ERROR ChangerDeviceError); 106 107typedef struct _MCD_INIT_DATA { 108 ULONG InitDataSize; 109 CHANGER_EXTENSION_SIZE ChangerAdditionalExtensionSize; 110 CHANGER_INITIALIZE ChangerInitialize; 111 CHANGER_ERROR_ROUTINE ChangerError; 112 CHANGER_PERFORM_DIAGNOSTICS ChangerPerformDiagnostics; 113 CHANGER_COMMAND_ROUTINE ChangerGetParameters; 114 CHANGER_COMMAND_ROUTINE ChangerGetStatus; 115 CHANGER_COMMAND_ROUTINE ChangerGetProductData; 116 CHANGER_COMMAND_ROUTINE ChangerSetAccess; 117 CHANGER_COMMAND_ROUTINE ChangerGetElementStatus; 118 CHANGER_COMMAND_ROUTINE ChangerInitializeElementStatus; 119 CHANGER_COMMAND_ROUTINE ChangerSetPosition; 120 CHANGER_COMMAND_ROUTINE ChangerExchangeMedium; 121 CHANGER_COMMAND_ROUTINE ChangerMoveMedium; 122 CHANGER_COMMAND_ROUTINE ChangerReinitializeUnit; 123 CHANGER_COMMAND_ROUTINE ChangerQueryVolumeTags; 124} MCD_INIT_DATA, *PMCD_INIT_DATA; 125 126CHANGERAPI 127NTSTATUS 128NTAPI 129ChangerClassInitialize( 130 IN PDRIVER_OBJECT DriverObject, 131 IN PUNICODE_STRING RegistryPath, 132 IN PMCD_INIT_DATA MCDInitData); 133 134#ifdef __cplusplus 135} 136#endif 137 138#endif /* __MCD_H */