[Mplayer-cvslog] CVS: main/libdha/sysdep libdha_win32.c, 1.2, 1.3 pci_win32.c, 1.2, 1.3

Sascha Sommer CVS syncmail at mplayerhq.hu
Tue Mar 23 11:34:26 CET 2004


CVS change done by Sascha Sommer CVS

Update of /cvsroot/mplayer/main/libdha/sysdep
In directory mail:/var2/tmp/cvs-serv32480/sysdep

Modified Files:
	libdha_win32.c pci_win32.c 
Log Message:
windows xp support

Index: libdha_win32.c
===================================================================
RCS file: /cvsroot/mplayer/main/libdha/sysdep/libdha_win32.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- libdha_win32.c	2 Oct 2003 14:48:17 -0000	1.2
+++ libdha_win32.c	23 Mar 2004 10:34:24 -0000	1.3
@@ -5,6 +5,9 @@
 */
 
 #include <windows.h>
+#include <ddk/ntddk.h>
+#include "../dhahelperwin/dhahelper.h"
+
 /*
   This is the request structure that applications use
   to request services from the MAPDEV VxD.
@@ -32,9 +35,20 @@
 #define CTL_CODE( DeviceType, Function, Method, Access ) ( \
     ((DeviceType)<<16) | ((Access)<<14) | ((Function)<<2) | (Method) )
 
+    
+int IsWinNT(){
+  OSVERSIONINFO OSVersionInfo;
+  OSVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+  GetVersionEx(&OSVersionInfo);
+  return OSVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT;
+}  
+
+static HANDLE hDriver = INVALID_HANDLE_VALUE;  
+    
+    
 /* Memory Map a piece of Real Memory */
 void *map_phys_mem(unsigned long base, unsigned long size) {
-
+  if(!IsWinNT()){
   HANDLE hDevice ;
   PVOID inBuf[1] ;		/* buffer for struct pointer to VxD */
   DWORD RetInfo[2] ;		/* buffer to receive data from VxD */
@@ -63,6 +77,26 @@
     fprintf(stderr, "Failed to map device\n") ; exit(1) ; }
 
   return (void*)req.mdr_LinearAddress ;
+  }
+  else{
+    dhahelper_t dhahelper_priv;
+    DWORD dwBytesReturned;
+    dhahelper_priv.size = size;
+    dhahelper_priv.base = base;
+    if(hDriver==INVALID_HANDLE_VALUE)hDriver = CreateFile("\\\\.\\DHAHELPER",GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
+    if (!DeviceIoControl(hDriver, IOCTL_DHAHELPER_MAPPHYSTOLIN, &dhahelper_priv,sizeof(dhahelper_t), &dhahelper_priv, sizeof(dhahelper_t),&dwBytesReturned, NULL)){
+      printf("unable to map thre requested memory region\n");
+      return NULL;
+    }
+    else return dhahelper_priv.ptr;
+  }
 }
 
-void unmap_phys_mem(void *ptr, unsigned long size) { }
+void unmap_phys_mem(void *ptr, unsigned long size) {
+  if(IsWinNT()){
+    dhahelper_t dhahelper_priv;
+    DWORD dwBytesReturned;
+    dhahelper_priv.ptr = ptr;
+    DeviceIoControl(hDriver, IOCTL_DHAHELPER_UNMAPPHYSADDR, &dhahelper_priv,sizeof(dhahelper_t), NULL, 0, &dwBytesReturned, NULL);
+  }
+}

Index: pci_win32.c
===================================================================
RCS file: /cvsroot/mplayer/main/libdha/sysdep/pci_win32.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- pci_win32.c	15 Jan 2002 15:59:53 -0000	1.2
+++ pci_win32.c	23 Mar 2004 10:34:24 -0000	1.3
@@ -4,15 +4,35 @@
    Modified for readability by Nick Kurshev
 */
 #include <windows.h>
+#include <ddk/ntddk.h>
+#include "../dhahelperwin/dhahelper.h"
+
+static HANDLE hDriver;
+extern int IsWinNT();
+
+
+
 
-/* Nothing to do for Win9x. For WinNT I have no solution */
 
 static __inline__ int enable_os_io(void)
 {
+    if(IsWinNT()){
+      DWORD dwBytesReturned;
+      hDriver = CreateFile("\\\\.\\DHAHELPER",GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
+      if(!DeviceIoControl(hDriver, IOCTL_DHAHELPER_ENABLEDIRECTIO, NULL,0, NULL, 0, &dwBytesReturned, NULL)){
+        printf("unable to enable directio please install dhahelper.sys\n");
+        return(1);       
+      }
+    }
     return(0);
 }
 
 static __inline__ int disable_os_io(void)
 {
+    if(IsWinNT()){
+      DWORD dwBytesReturned;
+      DeviceIoControl(hDriver, IOCTL_DHAHELPER_DISABLEDIRECTIO, NULL,0, NULL, 0, &dwBytesReturned, NULL);
+      CloseHandle(hDriver);
+    }
     return(0);
 }




More information about the MPlayer-cvslog mailing list