Embed:
(wiki syntax)
Show/hide line numbers
mcd.h
00001 /* 00002 * mcd.h 00003 * 00004 * Media changer driver interface 00005 * 00006 * This file is part of the w32api package. 00007 * 00008 * Contributors: 00009 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 00010 * 00011 * THIS SOFTWARE IS NOT COPYRIGHTED 00012 * 00013 * This source code is offered for use in the public domain. You may 00014 * use, modify or distribute it freely. 00015 * 00016 * This code is distributed in the hope that it will be useful but 00017 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00018 * DISCLAIMED. This includes but is not limited to warranties of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00020 * 00021 */ 00022 00023 #ifndef __MCD_H 00024 #define __MCD_H 00025 00026 #if __GNUC__ >=3 00027 #pragma GCC system_header 00028 #endif 00029 00030 #ifdef __cplusplus 00031 extern "C" { 00032 #endif 00033 00034 #include "ntddk.h" 00035 #include "srb.h" 00036 #include "scsi.h" 00037 #include "ntddchgr.h" 00038 00039 #if defined(_MCD_) 00040 #define CHANGERAPI DECLSPEC_EXPORT 00041 #else 00042 #define CHANGERAPI DECLSPEC_IMPORT 00043 #endif 00044 00045 #ifdef DebugPrint 00046 #undef DebugPrint 00047 #endif 00048 00049 #ifdef DBG 00050 #define DebugPrint(x) ChangerClassDebugPrint x 00051 #else 00052 #define DebugPrint(x) 00053 #endif 00054 00055 #define MAXIMUM_CHANGER_INQUIRY_DATA 252 00056 00057 CHANGERAPI 00058 PVOID 00059 DDKAPI 00060 ChangerClassAllocatePool( 00061 /*IN*/ POOL_TYPE PoolType, 00062 /*IN*/ ULONG NumberOfBytes); 00063 00064 VOID 00065 ChangerClassDebugPrint( 00066 ULONG DebugPrintLevel, 00067 PCCHAR DebugMessage, 00068 ...); 00069 00070 CHANGERAPI 00071 PVOID 00072 DDKAPI 00073 ChangerClassFreePool( 00074 /*IN*/ PVOID PoolToFree); 00075 00076 CHANGERAPI 00077 NTSTATUS 00078 DDKAPI 00079 ChangerClassSendSrbSynchronous( 00080 /*IN*/ PDEVICE_OBJECT DeviceObject, 00081 /*IN*/ PSCSI_REQUEST_BLOCK Srb, 00082 /*IN*/ PVOID Buffer, 00083 /*IN*/ ULONG BufferSize, 00084 /*IN*/ BOOLEAN WriteToDevice); 00085 00086 00087 typedef NTSTATUS DDKAPI 00088 (*CHANGER_INITIALIZE)( 00089 /*IN*/ PDEVICE_OBJECT DeviceObject); 00090 00091 typedef ULONG DDKAPI 00092 (*CHANGER_EXTENSION_SIZE)( 00093 VOID); 00094 00095 typedef VOID DDKAPI 00096 (*CHANGER_ERROR_ROUTINE)( 00097 PDEVICE_OBJECT DeviceObject, 00098 PSCSI_REQUEST_BLOCK Srb, 00099 NTSTATUS *Status, 00100 BOOLEAN *Retry); 00101 00102 typedef NTSTATUS DDKAPI 00103 (*CHANGER_COMMAND_ROUTINE)( 00104 /*IN*/ PDEVICE_OBJECT DeviceObject, 00105 /*IN*/ PIRP Irp); 00106 00107 typedef NTSTATUS DDKAPI 00108 (*CHANGER_PERFORM_DIAGNOSTICS)( 00109 /*IN*/ PDEVICE_OBJECT DeviceObject, 00110 /*OUT*/ PWMI_CHANGER_PROBLEM_DEVICE_ERROR ChangerDeviceError); 00111 00112 typedef struct _MCD_INIT_DATA { 00113 ULONG InitDataSize; 00114 CHANGER_EXTENSION_SIZE ChangerAdditionalExtensionSize; 00115 CHANGER_INITIALIZE ChangerInitialize; 00116 CHANGER_ERROR_ROUTINE ChangerError; 00117 CHANGER_PERFORM_DIAGNOSTICS ChangerPerformDiagnostics; 00118 CHANGER_COMMAND_ROUTINE ChangerGetParameters; 00119 CHANGER_COMMAND_ROUTINE ChangerGetStatus; 00120 CHANGER_COMMAND_ROUTINE ChangerGetProductData; 00121 CHANGER_COMMAND_ROUTINE ChangerSetAccess; 00122 CHANGER_COMMAND_ROUTINE ChangerGetElementStatus; 00123 CHANGER_COMMAND_ROUTINE ChangerInitializeElementStatus; 00124 CHANGER_COMMAND_ROUTINE ChangerSetPosition; 00125 CHANGER_COMMAND_ROUTINE ChangerExchangeMedium; 00126 CHANGER_COMMAND_ROUTINE ChangerMoveMedium; 00127 CHANGER_COMMAND_ROUTINE ChangerReinitializeUnit; 00128 CHANGER_COMMAND_ROUTINE ChangerQueryVolumeTags; 00129 } MCD_INIT_DATA, *PMCD_INIT_DATA; 00130 00131 CHANGERAPI 00132 NTSTATUS 00133 DDKAPI 00134 ChangerClassInitialize( 00135 /*IN*/ PDRIVER_OBJECT DriverObject, 00136 /*IN*/ PUNICODE_STRING RegistryPath, 00137 /*IN*/ PMCD_INIT_DATA MCDInitData); 00138 00139 #ifdef __cplusplus 00140 } 00141 #endif 00142 00143 #endif /* __MCD_H */
Generated on Tue Jul 12 2022 19:59:54 by
1.7.2