home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 14 / hacker14.iso / programacao / cwin / c.exe / $INSTDIR / include / ddk / mcd.h < prev    next >
Encoding:
C/C++ Source or Header  |  2003-12-15  |  3.1 KB  |  148 lines

  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. #if __GNUC__ >=3
  27. #pragma GCC system_header
  28. #endif
  29.  
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33.  
  34. #pragma pack(push,4)
  35.  
  36. #include "ntddk.h"
  37. #include "srb.h"
  38. #include "scsi.h"
  39. #include "ntddchgr.h"
  40.  
  41. #if defined(_MCD_)
  42.   #define CHANGERAPI DECLSPEC_EXPORT
  43. #else
  44.   #define CHANGERAPI DECLSPEC_IMPORT
  45. #endif
  46.  
  47. #ifdef DebugPrint
  48. #undef DebugPrint
  49. #endif
  50.  
  51. #if DBG
  52. #define DebugPrint(x) ChangerClassDebugPrint x
  53. #else
  54. #define DebugPrint(x)
  55. #endif
  56.  
  57. #define MAXIMUM_CHANGER_INQUIRY_DATA            252
  58.  
  59. CHANGERAPI
  60. PVOID
  61. DDKAPI
  62. ChangerClassAllocatePool(
  63.   IN POOL_TYPE  PoolType,
  64.   IN ULONG  NumberOfBytes);
  65.  
  66. VOID
  67. ChangerClassDebugPrint(
  68.   ULONG  DebugPrintLevel,
  69.   PCCHAR  DebugMessage,
  70.   ...);
  71.  
  72. CHANGERAPI
  73. PVOID
  74. DDKAPI
  75. ChangerClassFreePool(
  76.   IN PVOID  PoolToFree);
  77.  
  78. CHANGERAPI
  79. NTSTATUS
  80. DDKAPI
  81. ChangerClassSendSrbSynchronous(
  82.   IN PDEVICE_OBJECT  DeviceObject,
  83.   IN PSCSI_REQUEST_BLOCK  Srb,
  84.   IN PVOID  Buffer,
  85.   IN ULONG  BufferSize,
  86.   IN BOOLEAN  WriteToDevice);
  87.  
  88.  
  89. typedef NTSTATUS DDKAPI
  90. (*CHANGER_INITIALIZE)(
  91.   IN PDEVICE_OBJECT  DeviceObject);
  92.  
  93. typedef ULONG DDKAPI
  94. (*CHANGER_EXTENSION_SIZE)(
  95.   VOID);
  96.  
  97. typedef VOID DDKAPI
  98. (*CHANGER_ERROR_ROUTINE)(
  99.   PDEVICE_OBJECT  DeviceObject,
  100.   PSCSI_REQUEST_BLOCK  Srb,
  101.   NTSTATUS  *Status,
  102.   BOOLEAN  *Retry);
  103.  
  104. typedef NTSTATUS DDKAPI
  105. (*CHANGER_COMMAND_ROUTINE)(
  106.   IN PDEVICE_OBJECT  DeviceObject,
  107.   IN PIRP  Irp);
  108.  
  109. typedef NTSTATUS DDKAPI
  110. (*CHANGER_PERFORM_DIAGNOSTICS)(
  111.   IN PDEVICE_OBJECT  DeviceObject,
  112.   OUT PWMI_CHANGER_PROBLEM_DEVICE_ERROR  ChangerDeviceError);
  113.  
  114. typedef struct _MCD_INIT_DATA {
  115.   ULONG  InitDataSize;
  116.   CHANGER_EXTENSION_SIZE  ChangerAdditionalExtensionSize;
  117.   CHANGER_INITIALIZE  ChangerInitialize;
  118.   CHANGER_ERROR_ROUTINE  ChangerError;
  119.   CHANGER_PERFORM_DIAGNOSTICS  ChangerPerformDiagnostics;
  120.   CHANGER_COMMAND_ROUTINE  ChangerGetParameters;
  121.   CHANGER_COMMAND_ROUTINE  ChangerGetStatus;
  122.   CHANGER_COMMAND_ROUTINE  ChangerGetProductData;
  123.   CHANGER_COMMAND_ROUTINE  ChangerSetAccess;
  124.   CHANGER_COMMAND_ROUTINE  ChangerGetElementStatus;
  125.   CHANGER_COMMAND_ROUTINE  ChangerInitializeElementStatus;
  126.   CHANGER_COMMAND_ROUTINE  ChangerSetPosition;
  127.   CHANGER_COMMAND_ROUTINE  ChangerExchangeMedium;
  128.   CHANGER_COMMAND_ROUTINE  ChangerMoveMedium;
  129.   CHANGER_COMMAND_ROUTINE  ChangerReinitializeUnit;
  130.   CHANGER_COMMAND_ROUTINE  ChangerQueryVolumeTags;
  131. } MCD_INIT_DATA, *PMCD_INIT_DATA;
  132.  
  133. CHANGERAPI
  134. NTSTATUS
  135. DDKAPI
  136. ChangerClassInitialize(
  137.   IN PDRIVER_OBJECT  DriverObject,
  138.   IN PUNICODE_STRING  RegistryPath,
  139.   IN PMCD_INIT_DATA  MCDInitData);
  140.  
  141. #pragma pack(pop)
  142.  
  143. #ifdef __cplusplus
  144. }
  145. #endif
  146.  
  147. #endif /* __MCD_H */
  148.