[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