Naveen Neel / shedskin
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers mcd.h Source File

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 */