diff -ur imdisk_source/cli/sources imdisk_source_vc2005/cli/sources --- imdisk_source/cli/sources 2007-05-15 23:48:48.955315900 +0200 +++ imdisk_source_vc2005/cli/sources 2007-06-06 04:41:34.770144000 +0200 @@ -1,7 +1,14 @@ TARGETNAME=imdisk -TARGETPATH=. +TARGETPATH=..\bin TARGETTYPE=PROGRAM SOURCES=imdisk.c imdisk.rc +USE_OBJECT_ROOT=1 + +!if "$(_BUILDARCH)" == "x86" +BINDIR=..\bin\i386 +!else +BINDIR=..\bin\$(_BUILDARCH) +!endif MSC_OPTIMIZATION=/Ox /GFS- MSC_WARNING_LEVEL=/W4 /WX /wd4201 @@ -22,4 +29,5 @@ $(SDK_LIB_PATH)\user32.lib \ $(SDK_LIB_PATH)\shell32.lib \ $(SDK_LIB_PATH)\ntdll.lib \ - ..\cpl\i386\imdisk.lib + $(BINDIR)\imdisk.lib + diff -ur imdisk_source/cpl/drvio.c imdisk_source_vc2005/cpl/drvio.c --- imdisk_source/cpl/drvio.c 2007-06-14 01:11:24.358236600 +0200 +++ imdisk_source_vc2005/cpl/drvio.c 2007-06-17 18:16:15.431523200 +0200 @@ -51,7 +51,7 @@ } } -BOOL +INT_PTR CALLBACK StatusDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { @@ -167,7 +167,7 @@ WINAPI ImDiskCreateMountPoint(LPCWSTR Directory, LPCWSTR Target) { - int iSize = (wcslen(Target) + 1) << 1; + size_t iSize = (wcslen(Target) + 1) << 1; REPARSE_DATA_JUNCTION ReparseData = { 0 }; HANDLE hDir; DWORD dw; @@ -198,7 +198,7 @@ [(iSize >> 1) - 1] = L'\\'; if (!DeviceIoControl(hDir, FSCTL_SET_REPARSE_POINT, &ReparseData, - 16 + iSize + 2 + iSize + 2, NULL, 0, &dw, NULL)) + (DWORD) (16 + iSize + 2 + iSize + 2), NULL, 0, &dw, NULL)) { DWORD last_error = GetLastError(); CloseHandle(hDir); diff -ur imdisk_source/cpl/drvio.h imdisk_source_vc2005/cpl/drvio.h --- imdisk_source/cpl/drvio.h 2007-05-11 21:17:41.739208000 +0200 +++ imdisk_source_vc2005/cpl/drvio.h 2007-06-06 05:04:00.855720000 +0200 @@ -1,10 +1,10 @@ EXTERN_C VOID DoEvents(HWND hWnd); -EXTERN_C BOOL CALLBACK +EXTERN_C INT_PTR CALLBACK StatusDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); -EXTERN_C BOOL CALLBACK +EXTERN_C INT_PTR CALLBACK NewDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); EXTERN_C BOOL diff -ur imdisk_source/cpl/imdisk.cpp imdisk_source_vc2005/cpl/imdisk.cpp --- imdisk_source/cpl/imdisk.cpp 2007-06-14 01:22:57.293431700 +0200 +++ imdisk_source_vc2005/cpl/imdisk.cpp 2007-06-17 18:23:22.235236800 +0200 @@ -276,7 +276,7 @@ return true; } -BOOL +INT_PTR CALLBACK AboutDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { @@ -319,7 +319,7 @@ return FALSE; } -int +INT_PTR CDECL DisplayAboutBox(HWND hWnd, LPCWSTR Title, LPCWSTR /*Message*/, ...) { @@ -362,7 +362,7 @@ ofn.lpstrDefExt = L"iso"; } - HANDLE hDev = ImDiskOpenDeviceByNumber(lvi.lParam, GENERIC_READ); + HANDLE hDev = ImDiskOpenDeviceByNumber((DWORD) lvi.lParam, GENERIC_READ); if (hDev == INVALID_HANDLE_VALUE) { @@ -455,7 +455,7 @@ CloseHandle(hImage); } -BOOL CALLBACK +INT_PTR CALLBACK NewDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) @@ -637,7 +637,7 @@ return FALSE; } -BOOL CALLBACK +INT_PTR CALLBACK ExtendDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM /*lParam*/) { switch (uMsg) @@ -694,7 +694,7 @@ BOOL status = ImDiskExtendDevice(GetDlgItem(hWndStatus, IDC_STATUS_MSG), - lvi.lParam, + (DWORD) lvi.lParam, &extend_size); Sleep(100); @@ -725,7 +725,7 @@ return FALSE; } -BOOL CALLBACK +INT_PTR CALLBACK CPlAppletDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) @@ -891,7 +891,7 @@ if (mount_point[0] == 0) return TRUE; - if ((int) ShellExecute(hWnd, L"open", mount_point, NULL, NULL, + if ((INT_PTR) ShellExecute(hWnd, L"open", mount_point, NULL, NULL, SW_SHOWNORMAL) <= 32) MessageBox(hWnd, L"Cannot open the drive. Check that the drive is " @@ -927,7 +927,7 @@ StatusDlgProc); ImDiskRemoveDevice(GetDlgItem(hWndStatus, IDC_STATUS_MSG), - lvi.lParam, + (DWORD) lvi.lParam, lvi.pszText[0] == 0 ? NULL : lvi.pszText); Sleep(100); @@ -987,7 +987,7 @@ } ImDiskChangeFlags(GetDlgItem(hWndStatus, IDC_STATUS_MSG), - lvi.lParam, + (DWORD) lvi.lParam, lvi.pszText[0] == 0 ? NULL : lvi.pszText, flags_to_change, flags); @@ -1145,7 +1145,7 @@ case CPL_INQUIRE: { - LPCPLINFO lpcpli = (LPCPLINFO)lParam2; + LPCPLINFO lpcpli = (LPCPLINFO) (LONG_PTR) lParam2; lpcpli->idIcon = IDI_APPICON; lpcpli->idName = IDS_CPLAPPLET_TITLE; lpcpli->idInfo = IDS_CPLAPPLET_DESCRIPTION; @@ -1161,9 +1161,18 @@ } } -EXTERN_C BOOL WINAPI -DllMain(HINSTANCE hinstDLL, DWORD, LPVOID) +BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD reason, LPVOID) { - hInstance = hinstDLL; - return TRUE; + switch (reason) + { + case DLL_PROCESS_ATTACH: + hInstance = hinstDLL; + DisableThreadLibraryCalls(hinstDLL); + break; + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + case DLL_PROCESS_DETACH: + break; + } + return TRUE; } diff -ur imdisk_source/cpl/imdisk.def imdisk_source_vc2005/cpl/imdisk.def --- imdisk_source/cpl/imdisk.def 2007-06-14 01:17:25.896820400 +0200 +++ imdisk_source_vc2005/cpl/imdisk.def 2007-06-17 18:17:38.661201600 +0200 @@ -1,27 +1,27 @@ LIBRARY imdisk.cpl EXPORTS - CPlApplet=_CPlApplet@16 + CPlApplet - RunDLL_MountFile=_RunDLL_MountFile@16 - RunDLL_RemoveDevice=_RunDLL_RemoveDevice@16 - RunDLL_SaveImageFile=_RunDLL_SaveImageFile@16 + RunDLL_MountFile + RunDLL_RemoveDevice + RunDLL_SaveImageFile MsgBoxPrintF - _MsgBoxLastError@8 - _ImDiskStartService@4 - _ImDiskCreateMountPoint@8 - _ImDiskRemoveMountPoint@4 - _ImDiskOpenDeviceByName@8 - _ImDiskOpenDeviceByNumber@8 - _ImDiskOpenDeviceByMountPoint@8 - _ImDiskCheckDriverVersion@4 - _ImDiskGetVersion@8 - _ImDiskFindFreeDriveLetter@0 - _ImDiskGetDeviceList@0 - _ImDiskQueryDevice@12 - _ImDiskCreateDevice@28 - _ImDiskRemoveDevice@12 - _ImDiskChangeFlags@20 - _ImDiskExtendDevice@12 - _ImDiskSaveImageFile@16 + MsgBoxLastError + ImDiskStartService + ImDiskCreateMountPoint + ImDiskRemoveMountPoint + ImDiskOpenDeviceByName + ImDiskOpenDeviceByNumber + ImDiskOpenDeviceByMountPoint + ImDiskCheckDriverVersion + ImDiskGetVersion + ImDiskFindFreeDriveLetter + ImDiskGetDeviceList + ImDiskQueryDevice + ImDiskCreateDevice + ImDiskRemoveDevice + ImDiskChangeFlags + ImDiskExtendDevice + ImDiskSaveImageFile diff -ur imdisk_source/cpl/rundll.c imdisk_source_vc2005/cpl/rundll.c --- imdisk_source/cpl/rundll.c 2007-05-31 01:18:26.404342900 +0200 +++ imdisk_source_vc2005/cpl/rundll.c 2007-06-06 05:21:19.419100800 +0200 @@ -51,7 +51,7 @@ LPSTR lpszCmdLine, int nCmdShow) { - int file_name_length; + size_t file_name_length; LPWSTR file_name; file_name_length = strlen(lpszCmdLine) + 1; @@ -68,7 +68,7 @@ if (MultiByteToWideChar(CP_ACP, 0, lpszCmdLine, -1, - file_name, file_name_length) == 0) + file_name, (int) file_name_length) == 0) { MsgBoxLastError(hWnd, L"Invalid filename:"); return; diff -ur imdisk_source/cpl/sources imdisk_source_vc2005/cpl/sources --- imdisk_source/cpl/sources 2007-05-15 23:48:42.544255100 +0200 +++ imdisk_source_vc2005/cpl/sources 2007-06-06 04:41:22.091913600 +0200 @@ -1,14 +1,15 @@ TARGETNAME=imdisk TARGETEXT=cpl -TARGETPATH=. +TARGETPATH=..\bin TARGETTYPE=DYNLINK SOURCES=imdisk.cpp imdisk.rc drvio.c rundll.c +USE_OBJECT_ROOT=1 MSC_OPTIMIZATION=/Ox /GFS- MSC_WARNING_LEVEL=/W4 /WX /wd4201 UMTYPE=windows -DLLENTRY=DllMain@12 /subsystem:windows,4.00 +DLLENTRY=DllMain /subsystem:windows,4.00 USE_MSVCRT=1 diff -ur imdisk_source/deviotst/sources imdisk_source_vc2005/deviotst/sources --- imdisk_source/deviotst/sources 2007-03-11 18:14:23.275567900 +0100 +++ imdisk_source_vc2005/deviotst/sources 2007-06-06 04:42:03.271126400 +0200 @@ -1,7 +1,8 @@ TARGETNAME=deviotst -TARGETPATH=. +TARGETPATH=..\bin TARGETTYPE=PROGRAM SOURCES=deviotst.cpp +USE_OBJECT_ROOT=1 MSC_OPTIMIZATION=/Ox /GS- MSC_WARNING_LEVEL=/W4 /WX /wd4201 diff -ur imdisk_source/svc/sources imdisk_source_vc2005/svc/sources --- imdisk_source/svc/sources 2007-05-15 23:48:09.988090900 +0200 +++ imdisk_source_vc2005/svc/sources 2007-06-06 04:41:49.961988800 +0200 @@ -1,7 +1,8 @@ TARGETNAME=imdsksvc -TARGETPATH=. +TARGETPATH=..\bin TARGETTYPE=PROGRAM SOURCES=imdsksvc.cpp imdsksvc.rc +USE_OBJECT_ROOT=1 MSC_OPTIMIZATION=/Ox /GFS- MSC_WARNING_LEVEL=/W4 /WX /wd4201 diff -ur imdisk_source/sys/imdisk.c imdisk_source_vc2005/sys/imdisk.c --- imdisk_source/sys/imdisk.c 2007-06-14 01:33:24.256204500 +0200 +++ imdisk_source_vc2005/sys/imdisk.c 2007-06-17 18:16:15.591753600 +0200 @@ -3627,7 +3627,7 @@ IN PLARGE_INTEGER Offset) { NTSTATUS status; - ULONG LengthDone = 0; + ULONG_PTR LengthDone = 0; PAGED_CODE(); @@ -3637,7 +3637,7 @@ while (LengthDone < Length) { - ULONG RequestLength = Length - LengthDone; + ULONG_PTR RequestLength = Length - LengthDone; for (;;) { @@ -3662,7 +3662,7 @@ NULL, IoStatusBlock, InterBuffer, - RequestLength, + (ULONG) RequestLength, &RequestOffset, NULL); @@ -3719,7 +3719,7 @@ IN ULONG Length) { NTSTATUS status; - ULONG length_done = 0; + ULONG_PTR length_done = 0; KEVENT event; PIO_STACK_LOCATION io_stack; LARGE_INTEGER offset = { 0 }; @@ -3738,7 +3738,7 @@ while (length_done < Length) { - ULONG RequestLength = Length - length_done; + ULONG_PTR RequestLength = Length - length_done; do { @@ -3749,7 +3749,7 @@ irp = IoBuildSynchronousFsdRequest(MajorFunction, FileObject->DeviceObject, (PUCHAR) Buffer + length_done, - RequestLength, + (ULONG) RequestLength, &offset, &event, IoStatusBlock); @@ -3905,7 +3905,7 @@ if (connect_resp.object_ptr != 0) { ObDereferenceObject(*ProxyDevice); - *ProxyDevice = (PFILE_OBJECT)(ULONG) connect_resp.object_ptr; + *ProxyDevice = (PFILE_OBJECT)(ULONG_PTR) connect_resp.object_ptr; } KdPrint(("ImDisk Proxy Client: Got ok response IMDPROXY_CONNECT_RESP.\n")); diff -ur imdisk_source/sys/sources imdisk_source_vc2005/sys/sources --- imdisk_source/sys/sources 2007-03-11 16:16:55.657729300 +0100 +++ imdisk_source_vc2005/sys/sources 2007-06-06 04:41:26.518278400 +0200 @@ -1,8 +1,9 @@ TARGETNAME=imdisk -TARGETPATH=. +TARGETPATH=..\bin TARGETTYPE=DRIVER SOURCES=imdisk.c imdisk.rc LINKER_FLAGS=llmath.lib +USE_OBJECT_ROOT=1 MSC_OPTIMIZATION=/Ox /GFS- MSC_WARNING_LEVEL=/W4 /WX /wd4201