PATCH: Arla Windows driver

Bo Brantén bosse at acc.umu.se
Tue Apr 21 21:00:26 CEST 2009


And the same patch with unix new lines instead of dos if it helps someone.
-------------- next part --------------
diff -uprN c:\src\arla-0.37.orig\nnpfs\winnt\inc\nnpfs_locl.h c:\src\arla-0.37\nnpfs\winnt\inc\nnpfs_locl.h
--- c:\src\arla-0.37.orig\nnpfs\winnt\inc\nnpfs_locl.h	Sun Jun 13 17:07:06 2004
+++ c:\src\arla-0.37\nnpfs\winnt\inc\nnpfs_locl.h	Tue Apr 21 20:33:34 2009
@@ -35,7 +35,6 @@
 #define _NNPFS_NNPFS_LOCL_H
 
 #include <stdio.h>
-#include <ntddk.h>
 #include <ntifs.h>
 #include <stdarg.h>
 
@@ -178,7 +177,7 @@ struct nnpfs_node {
     /* XXX pointer instead of copy? */
     nnpfs_cred      writemapper;       /* creds of the last write mmap */
 
-    ETHREAD	    *lazy_writer;
+    void	    *lazy_writer;
 } NNPFS_FCB, nnpfs_node;
 
 /*
diff -uprN c:\src\arla-0.37.orig\nnpfs\winnt\inc\nnpfs_type.h c:\src\arla-0.37\nnpfs\winnt\inc\nnpfs_type.h
--- c:\src\arla-0.37.orig\nnpfs\winnt\inc\nnpfs_type.h	Sat Sep 07 12:49:12 2002
+++ c:\src\arla-0.37\nnpfs\winnt\inc\nnpfs_type.h	Tue Apr 21 20:04:25 2009
@@ -35,7 +35,7 @@
 #ifndef __NNPFS_TYPE_H
 #define __NNPFS_TYPE_H
 
-#ifdef	_X86_
+#if defined(_X86_) || defined(_IA64_) || defined(_AMD64_)
 typedef unsigned char   u_char;
 typedef	char		int8_t;
 typedef	short		int16_t;
diff -uprN c:\src\arla-0.37.orig\nnpfs\winnt\src\makefile c:\src\arla-0.37\nnpfs\winnt\src\makefile
--- c:\src\arla-0.37.orig\nnpfs\winnt\src\makefile	Sat Sep 07 12:49:16 2002
+++ c:\src\arla-0.37\nnpfs\winnt\src\makefile	Sat Aug 16 14:40:34 2008
@@ -1,18 +1,7 @@
 #
-# $Id: makefile,v 1.4 2002/09/07 10:49:16 lha Exp $
-#
 # DO NOT EDIT THIS FILE!!!  Edit .\sources. if you want to add a new source
 # file to this component.  This file merely indirects to the real make file
 # that is shared by all the driver components of the Windows NT DDK
 #
 
-# Autoconf....
-
-!IF EXIST(C:\ntddk\bin\makefile.def)
-!INCLUDE C:\ntddk\bin\makefile.def
-!ELSE
-!INCLUDE C:\ddk\bin\makefile.def
-!ENDIF
-
-install: obj/i386/nnpfs.sys
-	copy /b obj\i386\nnpfs.sys C:\winnt\system32\drivers\nnpfs.sys
+!INCLUDE $(NTMAKEENV)\makefile.def
diff -uprN c:\src\arla-0.37.orig\nnpfs\winnt\src\nnpfs_dev.c c:\src\arla-0.37\nnpfs\winnt\src\nnpfs_dev.c
--- c:\src\arla-0.37.orig\nnpfs\winnt\src\nnpfs_dev.c	Sun Jun 13 17:07:12 2004
+++ c:\src\arla-0.37\nnpfs\winnt\src\nnpfs_dev.c	Tue Apr 21 19:59:24 2009
@@ -84,7 +84,7 @@ nnpfs_opcode_valid(char *buf, unsigned l
 			"nnpfs_opcode_valid: opcode %x, msg->size %x, len %x\n",
 			msg->opcode, msg->size, len);
 	if (msg->opcode >= NNPFS_MSG_COUNT
-	    || msg->opcode < 0
+	    || ((int32_t) msg->opcode) < 0
 	    || msg->size > NNPFS_MAX_MSG_SIZE) {
 	    nnpfs_debug(XDEBDEV, "nnpfs_opcode_valid: FALSE\n");
 	    return FALSE;
@@ -806,7 +806,7 @@ nnpfs_pioctl (nnpfs_channel *chan,
     char *path;
 
     if (args->insize > NNPFS_MSG_MAX_DATASIZE
-	|| args->insize < 0
+	|| ((int32_t) args->insize) < 0
 	||(u_int)
 	(&args->msg[args->insize + args->pathsize] - (char *)args) > inlength
 	|| args->outsize > *outlength) {
diff -uprN c:\src\arla-0.37.orig\nnpfs\winnt\src\nnpfs_fastio.c c:\src\arla-0.37\nnpfs\winnt\src\nnpfs_fastio.c
--- c:\src\arla-0.37.orig\nnpfs\winnt\src\nnpfs_fastio.c	Tue Jul 01 16:12:14 2003
+++ c:\src\arla-0.37\nnpfs\winnt\src\nnpfs_fastio.c	Tue Apr 21 20:25:53 2009
@@ -427,7 +427,7 @@ BOOLEAN
 nnpfs_lazywrite_acq(void *context, BOOLEAN waitp)
 {
     nnpfs_node *node = context;
-    ETHREAD *current_thread = PsGetCurrentThread();
+    void *current_thread = PsGetCurrentThread();
 
     nnpfs_debug(XDEBVNOPS, "nnpfs_lazywrite_acq(%X) wait %x\n",
 		node, waitp);
diff -uprN c:\src\arla-0.37.orig\nnpfs\winnt\src\nnpfs_vops.c c:\src\arla-0.37\nnpfs\winnt\src\nnpfs_vops.c
--- c:\src\arla-0.37.orig\nnpfs\winnt\src\nnpfs_vops.c	Tue Jul 01 16:21:50 2003
+++ c:\src\arla-0.37\nnpfs\winnt\src\nnpfs_vops.c	Tue Apr 21 20:41:12 2009
@@ -496,7 +496,7 @@ nnpfs_new_entry(nnpfs_node *dir,
     if (options & FILE_DIRECTORY_FILE
 	&& options & FILE_NON_DIRECTORY_FILE)
 	return STATUS_INVALID_PARAMETER;
-    if (options & (FILE_DIRECTORY_FILE | FILE_NON_DIRECTORY_FILE) == 0)
+    if ((options & (FILE_DIRECTORY_FILE | FILE_NON_DIRECTORY_FILE)) == 0)
 	return STATUS_INVALID_PARAMETER;
 	    
     if (options & FILE_DIRECTORY_FILE) {
@@ -791,7 +791,7 @@ nnpfs_path_winify(char *path) {
 	if (*p == '/')
 	    *p = '\\';
 
-    len = p - path;
+    len = ((int)(p - path));
 
     /* XXX this mapping should be in the registry */
     /* translate /afs to <nothing> */
@@ -2102,16 +2102,16 @@ nnpfs_fileinfo_all(PIRP irp, nnpfs_node 
     if (!NT_SUCCESS(status))
 	return status;
 
-    len = buflen - ((char *)position_buf - (char *)all_buf);
-    *size = (char *)position_buf - (char *)all_buf;
+    len = buflen - ((int)((char *)position_buf - (char *)all_buf));
+    *size = ((int)((char *)position_buf - (char *)all_buf));
     status = nnpfs_fileinfo_position(irp, node, position_buf, len, &local_size);
     if (!NT_SUCCESS(status))
 	return status;
 
     /* access, mode, alignment are filled in by object manager */
 
-    len = buflen - ((char *)name_buf - (char *)all_buf);
-    *size = (char *)name_buf - (char *)all_buf;
+    len = buflen - ((int)((char *)name_buf - (char *)all_buf));
+    *size = ((int)((char *)name_buf - (char *)all_buf));
     status = nnpfs_fileinfo_name(irp, node, name_buf, len, &local_size);
     *size += local_size;
     
@@ -2461,7 +2461,7 @@ long nnpfs_efilter(EXCEPTION_POINTERS *e
     ecode = e->ExceptionRecord->ExceptionCode;
     
     if ((ecode == STATUS_IN_PAGE_ERROR) && (e->ExceptionRecord->NumberParameters >= 3)) {
-	ecode = e->ExceptionRecord->ExceptionInformation[2];
+	ecode = ((NTSTATUS)e->ExceptionRecord->ExceptionInformation[2]);
     }
 
     if (!(FsRtlIsNtstatusExpected(ecode))) {
@@ -2715,14 +2715,18 @@ nnpfs_dirctl (PDEVICE_OBJECT device, PIR
     NTSTATUS			status = STATUS_SUCCESS;
     unsigned char		*buf = NULL;
     nnpfs_readdir_arg             arg;
+#ifdef _GNU_NTIFS_
     EXTENDED_IO_STACK_LOCATION	*eio_stack;
+#endif
     FILE_OBJECT			*file;
     nnpfs_ccb			*ccb = NULL;
     struct nnpfs_node		*node = NULL;
     
     io_stack = IoGetCurrentIrpStackLocation(irp);
     ASSERT(io_stack);
+#ifdef _GNU_NTIFS_
     eio_stack = (EXTENDED_IO_STACK_LOCATION *) io_stack;
+#endif
     irp->IoStatus.Information = 0;
 
     file = io_stack->FileObject;
@@ -2734,12 +2738,21 @@ nnpfs_dirctl (PDEVICE_OBJECT device, PIR
     try {
 	switch (io_stack->MinorFunction) {
 	case IRP_MN_QUERY_DIRECTORY:
+#ifdef _GNU_NTIFS_
 	    buflen = eio_stack->Parameters.QueryDirectory.Length;
 	    pattern = eio_stack->Parameters.QueryDirectory.FileName;
 	    infoclass =
 		eio_stack->Parameters.QueryDirectory.FileInformationClass;
 	    fileindex = eio_stack->Parameters.QueryDirectory.FileIndex;
 	    flags = eio_stack->Flags;
+#else
+	    buflen = io_stack->Parameters.QueryDirectory.Length;
+	    pattern = io_stack->Parameters.QueryDirectory.FileName;
+	    infoclass =
+		io_stack->Parameters.QueryDirectory.FileInformationClass;
+	    fileindex = io_stack->Parameters.QueryDirectory.FileIndex;
+	    flags = io_stack->Flags;
+#endif
 	    
 	    nnpfs_debug(XDEBVNOPS, "nnpfs_dirctl: "
 			"buflen: %d File_Info: %d flags: %x\n",
@@ -3242,10 +3255,18 @@ FSD_WRAPPER(nnpfs_fscontrol, nnpfs_fsd_f
 NTSTATUS 
 nnpfs_fscontrol (PDEVICE_OBJECT device, PIRP irp)
 { 
+#ifdef _GNU_NTIFS_
     EXTENDED_IO_STACK_LOCATION *io_stack;
+#else
+	IO_STACK_LOCATION *io_stack;
+#endif
     NTSTATUS status = STATUS_NOT_IMPLEMENTED;
 
+#ifdef _GNU_NTIFS_
     io_stack = (PEXTENDED_IO_STACK_LOCATION)IoGetCurrentIrpStackLocation(irp);
+#else
+	io_stack = IoGetCurrentIrpStackLocation(irp);
+#endif
     ASSERT(io_stack);
 
     switch (io_stack->MinorFunction) {
diff -uprN c:\src\arla-0.37.orig\nnpfs\winnt\src\sources c:\src\arla-0.37\nnpfs\winnt\src\sources
--- c:\src\arla-0.37.orig\nnpfs\winnt\src\sources	Tue Oct 29 18:54:28 2002
+++ c:\src\arla-0.37\nnpfs\winnt\src\sources	Tue Apr 21 19:51:05 2009
@@ -27,7 +27,7 @@ TARGETTYPE=DRIVER
 #
 # NOTE: The "fsdk\inc" refers to the Microsoft supplied Installable File Systems
 #       Developers Kit.
-INCLUDES=$(SRC)\inc;C:\ntddk\inc;C:\ntddk\inc\ddk;C:\ddk\inc;C:\fsdk\inc-40;$(SRC)\..\include;$(SRC)\..\..\lib\bufdir
+INCLUDES=..\inc;C:\ntddk\inc;C:\ntddk\inc\ddk;C:\ddk\inc;C:\fsdk\inc-40;..\..\include;..\..\..\lib\bufdir
 
 # The SOURCES variable is defined by the developer.  It is a list of all the
 # source files for this component.  Each source file should be on a separate


More information about the Arla-drinkers mailing list