summaryrefslogtreecommitdiffstats
path: root/libdha/sysdep/pci_win32.c
diff options
context:
space:
mode:
Diffstat (limited to 'libdha/sysdep/pci_win32.c')
-rw-r--r--libdha/sysdep/pci_win32.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/libdha/sysdep/pci_win32.c b/libdha/sysdep/pci_win32.c
index 1c88cb13e8..a4a08077eb 100644
--- a/libdha/sysdep/pci_win32.c
+++ b/libdha/sysdep/pci_win32.c
@@ -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);
}