win32 port (Kazu)


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@702 c046a42c-6fe2-441c-8c8c-71466251a162
diff --git a/vl.c b/vl.c
index 72238ef..3af8a0e 100644
--- a/vl.c
+++ b/vl.c
@@ -238,7 +238,7 @@
 int load_image(const char *filename, uint8_t *addr)
 {
     int fd, size;
-    fd = open(filename, O_RDONLY);
+    fd = open(filename, O_RDONLY | O_BINARY);
     if (fd < 0)
         return -1;
     size = lseek(fd, 0, SEEK_END);
@@ -453,7 +453,9 @@
 QEMUClock *vm_clock;
 
 static QEMUTimer *active_timers[2];
-#ifndef _WIN32
+#ifdef _WIN32
+static MMRESULT timerID;
+#else
 /* frequency of the times() clock tick */
 static int timer_freq;
 #endif
@@ -653,11 +655,11 @@
 #ifdef _WIN32
     {
         int count=0;
-        MMRESULT timerID = timeSetEvent(10,    // interval (ms)
-                                        0,     // resolution
-                                        host_alarm_handler, // function
-                                        (DWORD)&count,  // user parameter
-                                        TIME_PERIODIC | TIME_CALLBACK_FUNCTION);
+        timerID = timeSetEvent(10,    // interval (ms)
+                               0,     // resolution
+                               host_alarm_handler, // function
+                               (DWORD)&count,  // user parameter
+                               TIME_PERIODIC | TIME_CALLBACK_FUNCTION);
  	if( !timerID ) {
             perror("failed timer alarm");
             exit(1);
@@ -695,6 +697,13 @@
 #endif
 }
 
+void quit_timers(void)
+{
+#ifdef _WIN32
+    timeKillEvent(timerID);
+#endif
+}
+
 /***********************************************************/
 /* serial device */
 
@@ -2136,5 +2145,6 @@
     }
     term_init();
     main_loop();
+    quit_timers();
     return 0;
 }