|
|
1.1 root 1: /* Copyright (C) 2004 TrueCrypt Team, truecrypt.org
2: This product uses components written by Paul Le Roux <[email protected]> */
3:
4: #include "TCdefs.h"
5: #include "crypto.h"
6: #include "fat.h"
7: #include "volumes.h"
8:
9: #include "apidrvr.h"
10: #include "ntdriver.h"
11: #include "ntvol.h"
12: #include "ntrawdv.h"
13:
14: #pragma warning( disable : 4127 )
15:
16: NTSTATUS
17: TCSendIRP_RawDevice (PDEVICE_OBJECT DeviceObject,
18: PEXTENSION Extension,
19: PVOID pUserBuffer,
20: ULONG uFlags,
21: UCHAR uMajorFunction,
22: PIRP Irp)
23: {
24: PIO_STACK_LOCATION irpSp;
25: PIO_STACK_LOCATION irpNextSp;
26: NTSTATUS ntStatus;
27:
28: if (uFlags); /* Remove compiler warning */
29:
30: // Dump ("Sending IRP...\n");
31:
32: irpSp = IoGetCurrentIrpStackLocation (Irp);
33: irpNextSp = IoGetNextIrpStackLocation (Irp);
34:
35: irpSp->MajorFunction = uMajorFunction;
36: irpSp->DeviceObject = DeviceObject;
37: irpSp->FileObject = Extension->pfoDeviceFile;
38:
39: /* Copy our flags down one level, this is to get the proper
40: removable-media handling */
41: irpNextSp->Flags = irpSp->Flags;
42:
43: /* Setup the lower drivers stack location */
44: irpNextSp->MajorFunction = irpSp->MajorFunction;
45: irpNextSp->MinorFunction = irpSp->MinorFunction;
46: irpNextSp->DeviceObject = irpSp->DeviceObject;
47: irpNextSp->FileObject = irpSp->FileObject;
48: /* Copy over io parameters, this is a union, so it handles
49: deviceiocontrol & read/write */
50: irpNextSp->Parameters.Read.Length = irpSp->Parameters.Read.Length;
51: irpNextSp->Parameters.Read.ByteOffset = irpSp->Parameters.Read.ByteOffset;
52: irpNextSp->Parameters.Read.Key = irpSp->Parameters.Read.Key;
53:
54: IoSetCompletionRoutine (Irp, TCCompletion, pUserBuffer, TRUE, TRUE, TRUE);
55: ntStatus = IoCallDriver (Extension->pFsdDevice, Irp);
56:
57: // Dump ("IRP Sent!\n");
58: return ntStatus;
59: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.