diff -r 000000000000 -r 76b1f169d9fe mingw-5.1.4/win32/include/ddk/mcd.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mingw-5.1.4/win32/include/ddk/mcd.h Fri Apr 03 17:16:45 2009 +0100 @@ -0,0 +1,143 @@ +/* + * mcd.h + * + * Media changer driver interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __MCD_H +#define __MCD_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include "ntddk.h" +#include "srb.h" +#include "scsi.h" +#include "ntddchgr.h" + +#if defined(_MCD_) + #define CHANGERAPI DECLSPEC_EXPORT +#else + #define CHANGERAPI DECLSPEC_IMPORT +#endif + +#ifdef DebugPrint +#undef DebugPrint +#endif + +#ifdef DBG +#define DebugPrint(x) ChangerClassDebugPrint x +#else +#define DebugPrint(x) +#endif + +#define MAXIMUM_CHANGER_INQUIRY_DATA 252 + +CHANGERAPI +PVOID +DDKAPI +ChangerClassAllocatePool( + /*IN*/ POOL_TYPE PoolType, + /*IN*/ ULONG NumberOfBytes); + +VOID +ChangerClassDebugPrint( + ULONG DebugPrintLevel, + PCCHAR DebugMessage, + ...); + +CHANGERAPI +PVOID +DDKAPI +ChangerClassFreePool( + /*IN*/ PVOID PoolToFree); + +CHANGERAPI +NTSTATUS +DDKAPI +ChangerClassSendSrbSynchronous( + /*IN*/ PDEVICE_OBJECT DeviceObject, + /*IN*/ PSCSI_REQUEST_BLOCK Srb, + /*IN*/ PVOID Buffer, + /*IN*/ ULONG BufferSize, + /*IN*/ BOOLEAN WriteToDevice); + + +typedef NTSTATUS DDKAPI +(*CHANGER_INITIALIZE)( + /*IN*/ PDEVICE_OBJECT DeviceObject); + +typedef ULONG DDKAPI +(*CHANGER_EXTENSION_SIZE)( + VOID); + +typedef VOID DDKAPI +(*CHANGER_ERROR_ROUTINE)( + PDEVICE_OBJECT DeviceObject, + PSCSI_REQUEST_BLOCK Srb, + NTSTATUS *Status, + BOOLEAN *Retry); + +typedef NTSTATUS DDKAPI +(*CHANGER_COMMAND_ROUTINE)( + /*IN*/ PDEVICE_OBJECT DeviceObject, + /*IN*/ PIRP Irp); + +typedef NTSTATUS DDKAPI +(*CHANGER_PERFORM_DIAGNOSTICS)( + /*IN*/ PDEVICE_OBJECT DeviceObject, + /*OUT*/ PWMI_CHANGER_PROBLEM_DEVICE_ERROR ChangerDeviceError); + +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, *PMCD_INIT_DATA; + +CHANGERAPI +NTSTATUS +DDKAPI +ChangerClassInitialize( + /*IN*/ PDRIVER_OBJECT DriverObject, + /*IN*/ PUNICODE_STRING RegistryPath, + /*IN*/ PMCD_INIT_DATA MCDInitData); + +#ifdef __cplusplus +} +#endif + +#endif /* __MCD_H */