summaryrefslogtreecommitdiffstats
path: root/vidix/sysdep/pci_win32.c
diff options
context:
space:
mode:
Diffstat (limited to 'vidix/sysdep/pci_win32.c')
-rw-r--r--vidix/sysdep/pci_win32.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/vidix/sysdep/pci_win32.c b/vidix/sysdep/pci_win32.c
new file mode 100644
index 0000000000..5dc1841d24
--- /dev/null
+++ b/vidix/sysdep/pci_win32.c
@@ -0,0 +1,38 @@
+/*
+ This file is based on:
+ $XFree86: xc/programs/Xserver/hw/xfree86/etc/scanpci.c,v 3.34.2.17 1998/11/10 11:55:40 dawes Exp $
+ Modified for readability by Nick Kurshev
+*/
+#include <windows.h>
+#include <ddk/ntddk.h>
+#include "../dhahelperwin/dhahelper.h"
+
+static HANDLE hDriver;
+extern int IsWinNT();
+
+
+
+
+
+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)){
+ fprintf(stderr,"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);
+}