|
|
|
1 |
|
/*++ BUILD Version: 0001 // Increment this if a change has global effects |
2 |
|
|
3 |
|
Copyright (c) Microsoft Corporation. All rights reserved. |
4 |
|
|
5 |
|
Module Name: |
6 |
|
|
7 |
|
ntddscsi.h |
8 |
|
|
9 |
|
Abstract: |
10 |
|
|
11 |
|
This is the include file that defines all constants and types for |
12 |
|
accessing the SCSI port adapters. |
13 |
|
|
14 |
|
--*/ |
15 |
|
|
16 |
|
|
17 |
|
// |
18 |
|
// Interface GUIDs |
19 |
|
// |
20 |
|
// need these GUIDs outside conditional includes so that user can |
21 |
|
// #include <ntddscsi.h> in precompiled header |
22 |
|
// #include <initguid.h> in a single source file |
23 |
|
// #include <ntddscsi.h> in that source file a second time to instantiate the GUIDs |
24 |
|
// |
25 |
|
#ifdef DEFINE_GUID |
26 |
|
// |
27 |
|
// Make sure FAR is defined... |
28 |
|
// |
29 |
|
#ifndef FAR |
30 |
|
#ifdef _WIN32 |
31 |
|
#define FAR |
32 |
|
#else |
33 |
|
#define FAR _far |
34 |
|
#endif |
35 |
|
#endif |
36 |
|
|
37 |
|
DEFINE_GUID(ScsiRawInterfaceGuid, 0x53f56309L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); |
38 |
|
DEFINE_GUID(WmiScsiAddressGuid, 0x53f5630fL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); |
39 |
|
#endif |
40 |
|
|
41 |
|
#ifndef _NTDDSCSIH_ |
42 |
|
#define _NTDDSCSIH_ |
43 |
|
|
44 |
|
#ifdef __cplusplus |
45 |
|
extern "C" { |
46 |
|
#endif |
47 |
|
|
48 |
|
// |
49 |
|
// Device Name - this string is the name of the device. It is the name |
50 |
|
// that should be passed to NtOpenFile when accessing the device. |
51 |
|
// |
52 |
|
// Note: For devices that support multiple units, it should be suffixed |
53 |
|
// with the Ascii representation of the unit number. |
54 |
|
// |
55 |
|
|
56 |
|
#define IOCTL_SCSI_BASE FILE_DEVICE_CONTROLLER |
57 |
|
#define FILE_DEVICE_SCSI 0x0000001b |
58 |
|
|
59 |
|
#define DD_SCSI_DEVICE_NAME "\\Device\\ScsiPort" |
60 |
|
|
61 |
|
|
62 |
|
// |
63 |
|
// NtDeviceIoControlFile IoControlCode values for this device. |
64 |
|
// |
65 |
|
// Warning: Remember that the low two bits of the code specify how the |
66 |
|
// buffers are passed to the driver! |
67 |
|
// |
68 |
|
|
69 |
|
#define IOCTL_SCSI_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) |
70 |
|
#define IOCTL_SCSI_MINIPORT CTL_CODE(IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) |
71 |
|
#define IOCTL_SCSI_GET_INQUIRY_DATA CTL_CODE(IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS) |
72 |
|
#define IOCTL_SCSI_GET_CAPABILITIES CTL_CODE(IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS) |
73 |
|
#define IOCTL_SCSI_PASS_THROUGH_DIRECT CTL_CODE(IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) |
74 |
|
#define IOCTL_SCSI_GET_ADDRESS CTL_CODE(IOCTL_SCSI_BASE, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS) |
75 |
|
#define IOCTL_SCSI_RESCAN_BUS CTL_CODE(IOCTL_SCSI_BASE, 0x0407, METHOD_BUFFERED, FILE_ANY_ACCESS) |
76 |
|
#define IOCTL_SCSI_GET_DUMP_POINTERS CTL_CODE(IOCTL_SCSI_BASE, 0x0408, METHOD_BUFFERED, FILE_ANY_ACCESS) |
77 |
|
#define IOCTL_SCSI_FREE_DUMP_POINTERS CTL_CODE(IOCTL_SCSI_BASE, 0x0409, METHOD_BUFFERED, FILE_ANY_ACCESS) |
78 |
|
#define IOCTL_IDE_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE, 0x040a, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) |
79 |
|
#define IOCTL_ATA_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE, 0x040b, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) |
80 |
|
#define IOCTL_ATA_PASS_THROUGH_DIRECT CTL_CODE(IOCTL_SCSI_BASE, 0x040c, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) |
81 |
|
#define IOCTL_ATA_MINIPORT CTL_CODE(IOCTL_SCSI_BASE, 0x040d, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) |
82 |
|
|
83 |
|
// |
466 |
|
#endif |
467 |
|
PVOID DeviceObject; |
468 |
|
} DUMP_POINTERS, *PDUMP_POINTERS; |
469 |
|
|
470 |
|
typedef struct _DUMP_POINTERS_EX { |
471 |
|
DUMP_POINTERS_VERSION Header; |
472 |
|
PVOID DumpData; |
473 |
|
PVOID CommonBufferVa; |
474 |
|
ULONG CommonBufferSize; |
475 |
|
BOOLEAN AllocateCommonBuffers; |
476 |
|
PVOID DeviceObject; |
477 |
|
PVOID DriverList; |
478 |
|
} DUMP_POINTERS_EX, *PDUMP_POINTERS_EX; |
479 |
|
|
480 |
|
typedef struct _DUMP_DRIVER { |
481 |
|
|
482 |
|
// |
483 |
|
// Dump driver list from port driver |
484 |
|
// |
485 |
|
PVOID DumpDriverList; |
486 |
|
|
487 |
|
// |
488 |
|
// Name of the driver to be loaded |
489 |
|
// |
490 |
|
WCHAR DriverName[DUMP_DRIVER_NAME_LENGTH]; |
491 |
|
|
492 |
|
// |
493 |
|
// Driver base name |
494 |
|
// |
495 |
|
WCHAR BaseName[DUMP_DRIVER_NAME_LENGTH]; |
496 |
|
|
497 |
|
} DUMP_DRIVER, *PDUMP_DRIVER; |
498 |
|
|
499 |
|
|
500 |
|
// |
501 |
|
// Define values for pass-through DataIn field. |
502 |
|
// |
503 |
|
|
504 |
|
#define SCSI_IOCTL_DATA_OUT 0 |
505 |
|
#define SCSI_IOCTL_DATA_IN 1 |
506 |
|
#define SCSI_IOCTL_DATA_UNSPECIFIED 2 |
507 |
|
|
508 |
|
#ifdef __cplusplus |
509 |
|
} |
510 |
|
#endif |
511 |
|
|
512 |
|
#endif |
513 |
|
|
514 |
|
|
|
|
|