diff --git a/base/applications/taskmgr/applpage.c b/base/applications/taskmgr/applpage.c index 0c20e810817..88c52070fa9 100644 --- a/base/applications/taskmgr/applpage.c +++ b/base/applications/taskmgr/applpage.c @@ -38,7 +38,6 @@ HWND hApplicationPageSwitchToButton; /* Application Switch To button HWND hApplicationPageNewTaskButton; /* Application New Task button */ static int nApplicationPageWidth; static int nApplicationPageHeight; -static HANDLE hApplicationPageEvent = NULL; /* When this event becomes signaled then we refresh the app list */ static BOOL bSortAscending = TRUE; DWORD WINAPI ApplicationPageRefreshThread(void *lpParameter); BOOL noApps; @@ -51,6 +50,11 @@ void ApplicationPageShowContextMenu2(void); int CALLBACK ApplicationPageCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort); int ProcGetIndexByProcessId(DWORD dwProcessId); +#ifdef RUN_APPS_PAGE +static HANDLE hApplicationThread = NULL; +static DWORD dwApplicationThread; +#endif + #if 0 void SwitchToThisWindow ( HWND hWnd, /* Handle to the window that should be activated */ @@ -92,7 +96,6 @@ ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) LV_COLUMN column; WCHAR szTemp[256]; int cx, cy; - HANDLE hRefreshThread = NULL; switch (message) { case WM_INITDIALOG: @@ -132,15 +135,16 @@ ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) UpdateApplicationListControlViewSetting(); /* Start our refresh thread */ - hRefreshThread = CreateThread(NULL, 0, ApplicationPageRefreshThread, NULL, 0, NULL); - +#ifdef RUN_APPS_PAGE + hApplicationThread = CreateThread(NULL, 0, ApplicationPageRefreshThread, NULL, 0, &dwApplicationThread); +#endif return TRUE; case WM_DESTROY: - /* Close the event handle, this will make the */ - /* refresh thread exit when the wait fails */ - CloseHandle(hApplicationPageEvent); - CloseHandle(hRefreshThread); + /* Close refresh thread */ +#ifdef RUN_APPS_PAGE + EndLocalThread(&hApplicationThread, dwApplicationThread); +#endif break; case WM_COMMAND: @@ -213,9 +217,11 @@ ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) void RefreshApplicationPage(void) { +#ifdef RUN_APPS_PAGE /* Signal the event so that our refresh thread */ /* will wake up and refresh the application page */ - SetEvent(hApplicationPageEvent); + PostThreadMessage(dwApplicationThread, WM_TIMER, 0, 0); +#endif } void UpdateApplicationListControlViewSetting(void) @@ -236,6 +242,7 @@ void UpdateApplicationListControlViewSetting(void) DWORD WINAPI ApplicationPageRefreshThread(void *lpParameter) { + MSG msg; INT i; BOOL bItemRemoved = FALSE; LV_ITEM item; @@ -243,30 +250,15 @@ DWORD WINAPI ApplicationPageRefreshThread(void *lpParameter) HIMAGELIST hImageListLarge; HIMAGELIST hImageListSmall; - /* Create the event */ - hApplicationPageEvent = CreateEventW(NULL, TRUE, TRUE, NULL); - /* If we couldn't create the event then exit the thread */ - if (!hApplicationPageEvent) - return 0; - while (1) { - DWORD dwWaitVal; - - /* Wait on the event */ - dwWaitVal = WaitForSingleObject(hApplicationPageEvent, INFINITE); - - /* If the wait failed then the event object must have been */ - /* closed and the task manager is exiting so exit this thread */ - if (dwWaitVal == WAIT_FAILED) + /* Wait for an the event or application close */ + if (GetMessage(&msg, NULL, 0, 0) <= 0) return 0; - if (dwWaitVal == WAIT_OBJECT_0) + if (msg.message == WM_TIMER) { - /* Reset our event */ - ResetEvent(hApplicationPageEvent); - /* * FIXME: * diff --git a/base/applications/taskmgr/debug.c b/base/applications/taskmgr/debug.c index fb11fc73fec..f72ba26a03d 100644 --- a/base/applications/taskmgr/debug.c +++ b/base/applications/taskmgr/debug.c @@ -1,7 +1,7 @@ /* * ReactOS Task Manager * - * debug.cpp + * debug.c * * Copyright (C) 1999 - 2001 Brian Palmer * 2005 Klemens Friedl diff --git a/base/applications/taskmgr/endproc.c b/base/applications/taskmgr/endproc.c index 3ae716f568c..be080ffbddf 100644 --- a/base/applications/taskmgr/endproc.c +++ b/base/applications/taskmgr/endproc.c @@ -1,7 +1,7 @@ /* * ReactOS Task Manager * - * endproc.cpp + * endproc.c * * Copyright (C) 1999 - 2001 Brian Palmer * 2005 Klemens Friedl diff --git a/base/applications/taskmgr/graph.c b/base/applications/taskmgr/graph.c index 6045a8f218f..b7b937e388c 100644 --- a/base/applications/taskmgr/graph.c +++ b/base/applications/taskmgr/graph.c @@ -1,7 +1,7 @@ /* * ReactOS Task Manager * - * graph.cpp + * graph.c * * Copyright (C) 1999 - 2001 Brian Palmer * diff --git a/base/applications/taskmgr/graphctl.c b/base/applications/taskmgr/graphctl.c index a1abf779e5a..5735e8b4d8d 100644 --- a/base/applications/taskmgr/graphctl.c +++ b/base/applications/taskmgr/graphctl.c @@ -1,7 +1,7 @@ /* * ReactOS Task Manager * - * GraphCtrl.cpp + * graphctl.c * * Copyright (C) 2002 Robert Dickenson * @@ -425,7 +425,7 @@ void GraphCtrl_DrawPoint(TGraphCtrl* this) * note: the m_dcPlot covers the entire client * but we only shift bitmap that is the size * of the plot rectangle - * grab the right side of the plot (exluding m_nShiftPixels on the left) + * grab the right side of the plot (excluding m_nShiftPixels on the left) * move this grabbed bitmap to the left by m_nShiftPixels */ BitBlt(this->m_dcPlot, this->m_rectPlot.left, this->m_rectPlot.top+1, diff --git a/base/applications/taskmgr/graphctl.h b/base/applications/taskmgr/graphctl.h index e924716e3e9..3a5b8388150 100644 --- a/base/applications/taskmgr/graphctl.h +++ b/base/applications/taskmgr/graphctl.h @@ -1,7 +1,7 @@ /* * ReactOS Task Manager * - * GraphCtrl.h + * graphctl.h * * Copyright (C) 2002 Robert Dickenson * diff --git a/base/applications/taskmgr/optnmenu.c b/base/applications/taskmgr/optnmenu.c index 931e00c25fc..4ba1fa60336 100644 --- a/base/applications/taskmgr/optnmenu.c +++ b/base/applications/taskmgr/optnmenu.c @@ -1,7 +1,7 @@ /* * ReactOS Task Manager * - * optnmenu.cpp + * optnmenu.c * * Copyright (C) 1999 - 2001 Brian Palmer * @@ -110,7 +110,7 @@ void TaskManager_OnOptionsShow16BitTasks(void) /* * FIXME: Currently this is useless because the - * current implemetation doesn't list the 16-bit + * current implementation doesn't list the 16-bit * processes. I believe that would require querying * each ntvdm.exe process for it's children. */ diff --git a/base/applications/taskmgr/perfdata.c b/base/applications/taskmgr/perfdata.c index a1095e5acd6..a82eb78ef1e 100644 --- a/base/applications/taskmgr/perfdata.c +++ b/base/applications/taskmgr/perfdata.c @@ -1,7 +1,7 @@ /* * ReactOS Task Manager * - * perfdata.cpp + * perfdata.c * * Copyright (C) 1999 - 2001 Brian Palmer * diff --git a/base/applications/taskmgr/perfpage.c b/base/applications/taskmgr/perfpage.c index 8ba87eb067d..872a01406f9 100644 --- a/base/applications/taskmgr/perfpage.c +++ b/base/applications/taskmgr/perfpage.c @@ -51,11 +51,14 @@ HWND hPerformancePageTotalsHandleCountEdit; /* Total Handles Edit Con HWND hPerformancePageTotalsProcessCountEdit; /* Total Processes Edit Control */ HWND hPerformancePageTotalsThreadCountEdit; /* Total Threads Edit Control */ +#ifdef RUN_PERF_PAGE +static HANDLE hPerformanceThread = NULL; +static DWORD dwPerformanceThread; +#endif static int nPerformancePageWidth; static int nPerformancePageHeight; static int lastX, lastY; -static HANDLE hPerformancePageEvent = NULL; /* When this event becomes signaled then we refresh the performance page */ DWORD WINAPI PerformancePageRefreshThread(void *lpParameter); void AdjustFrameSize(HWND hCntrl, HWND hDlg, int nXDifference, int nYDifference, int pos) @@ -94,12 +97,12 @@ void AdjustFrameSize(HWND hCntrl, HWND hDlg, int nXDifference, int nYDifference, InvalidateRect(hCntrl, NULL, TRUE); } -void AdjustControlPostion(HWND hCntrl, HWND hDlg, int nXDifference, int nYDifference) +static void AdjustControlPostion(HWND hCntrl, HWND hDlg, int nXDifference, int nYDifference) { AdjustFrameSize(hCntrl, hDlg, nXDifference, nYDifference, 0); } -void AdjustCntrlPos(int ctrl_id, HWND hDlg, int nXDifference, int nYDifference) +static void AdjustCntrlPos(int ctrl_id, HWND hDlg, int nXDifference, int nYDifference) { AdjustFrameSize(GetDlgItem(hDlg, ctrl_id), hDlg, nXDifference, nYDifference, 0); } @@ -110,9 +113,6 @@ PerformancePageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) RECT rc; int nXDifference; int nYDifference; -#ifdef RUN_PERF_PAGE - HANDLE hRefreshThread = NULL; -#endif /* HDC hdc; */ /* PAINTSTRUCT ps; */ @@ -121,7 +121,7 @@ PerformancePageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) GraphCtrl_Dispose(&PerformancePageCpuUsageHistoryGraph); GraphCtrl_Dispose(&PerformancePageMemUsageHistoryGraph); #ifdef RUN_PERF_PAGE - CloseHandle(hRefreshThread); + EndLocalThread(&hPerformanceThread, dwPerformanceThread); #endif break; @@ -192,7 +192,7 @@ PerformancePageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) GraphCtrl_SetPlotColor(&PerformancePageMemUsageHistoryGraph, 0, RGB(255, 255, 0)) ; /* Start our refresh thread */ #ifdef RUN_PERF_PAGE - hRefreshThread = CreateThread(NULL, 0, PerformancePageRefreshThread, NULL, 0, NULL); + hPerformanceThread = CreateThread(NULL, 0, PerformancePageRefreshThread, NULL, 0, &dwPerformanceThread); #endif /* @@ -303,9 +303,11 @@ PerformancePageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) void RefreshPerformancePage(void) { +#ifdef RUN_PERF_PAGE /* Signal the event so that our refresh thread */ /* will wake up and refresh the performance page */ - SetEvent(hPerformancePageEvent); + PostThreadMessage(dwPerformanceThread, WM_TIMER, 0, 0); +#endif } DWORD WINAPI PerformancePageRefreshThread(void *lpParameter) @@ -332,35 +334,21 @@ DWORD WINAPI PerformancePageRefreshThread(void *lpParameter) WCHAR Text[260]; WCHAR szMemUsage[256]; - /* Create the event */ - hPerformancePageEvent = CreateEventW(NULL, TRUE, TRUE, NULL); - - /* If we couldn't create the event then exit the thread */ - if (!hPerformancePageEvent) - return 0; + MSG msg; LoadStringW(hInst, IDS_STATUS_MEMUSAGE, szMemUsage, 256); while (1) { - DWORD dwWaitVal; - int nBarsUsed1; int nBarsUsed2; - /* Wait on the event */ - dwWaitVal = WaitForSingleObject(hPerformancePageEvent, INFINITE); - - /* If the wait failed then the event object must have been */ - /* closed and the task manager is exiting so exit this thread */ - if (dwWaitVal == WAIT_FAILED) + /* Wait for an the event or application close */ + if (GetMessage(&msg, NULL, 0, 0) <= 0) return 0; - if (dwWaitVal == WAIT_OBJECT_0) + if (msg.message == WM_TIMER) { - /* Reset our event */ - ResetEvent(hPerformancePageEvent); - /* * Update the commit charge info */ @@ -449,8 +437,6 @@ DWORD WINAPI PerformancePageRefreshThread(void *lpParameter) PhysicalMemoryAvailable = PerfDataGetPhysicalMemoryAvailableK(); nBarsUsed2 = PhysicalMemoryTotal ? ((PhysicalMemoryAvailable * 100) / PhysicalMemoryTotal) : 0; - - GraphCtrl_AppendPoint(&PerformancePageCpuUsageHistoryGraph, CpuUsage, CpuKernelUsage, 0.0, 0.0); GraphCtrl_AppendPoint(&PerformancePageMemUsageHistoryGraph, nBarsUsed1, nBarsUsed2, 0.0, 0.0); /* PerformancePageMemUsageHistoryGraph.SetRange(0.0, 100.0, 10) ; */ @@ -458,7 +444,7 @@ DWORD WINAPI PerformancePageRefreshThread(void *lpParameter) InvalidateRect(hPerformancePageCpuUsageHistoryGraph, NULL, FALSE); } } - return 0; + return 0; } void PerformancePage_OnViewShowKernelTimes(void) diff --git a/base/applications/taskmgr/procpage.c b/base/applications/taskmgr/procpage.c index 42bf5949ea7..acaa159bd04 100644 --- a/base/applications/taskmgr/procpage.c +++ b/base/applications/taskmgr/procpage.c @@ -40,7 +40,10 @@ HWND hProcessPageShowAllProcessesButton;/* Process Show All Processes checkbox * static int nProcessPageWidth; static int nProcessPageHeight; -static HANDLE hProcessPageEvent = NULL; /* When this event becomes signaled then we refresh the process list */ +#ifdef RUN_PROC_PAGE +static HANDLE hProcessThread = NULL; +static DWORD dwProcessThread; +#endif int CALLBACK ProcessPageCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort); void AddProcess(ULONG Index); @@ -104,7 +107,6 @@ ProcessPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) int nXDifference; int nYDifference; int cx, cy; - HANDLE hRefreshThread = NULL; switch (message) { case WM_INITDIALOG: @@ -139,19 +141,19 @@ ProcessPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) */ OldProcessListWndProc = (WNDPROC)(LONG_PTR) SetWindowLongPtrW(hProcessPageListCtrl, GWL_WNDPROC, (LONG_PTR)ProcessListWndProc); +#ifdef RUN_PROC_PAGE /* Start our refresh thread */ - hRefreshThread = CreateThread(NULL, 0, ProcessPageRefreshThread, NULL, 0, NULL); - + hProcessThread = CreateThread(NULL, 0, ProcessPageRefreshThread, NULL, 0, &dwProcessThread); +#endif return TRUE; case WM_DESTROY: /* Close the event handle, this will make the */ /* refresh thread exit when the wait fails */ - CloseHandle(hProcessPageEvent); - CloseHandle(hRefreshThread); - +#ifdef RUN_PROC_PAGE + EndLocalThread(&hProcessThread, dwProcessThread); +#endif SaveColumnSettings(); - break; case WM_COMMAND: @@ -194,11 +196,9 @@ ProcessPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) cy = rc.top + nYDifference; SetWindowPos(hProcessPageShowAllProcessesButton, NULL, cx, cy, 0, 0, SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSIZE|SWP_NOZORDER); InvalidateRect(hProcessPageShowAllProcessesButton, NULL, TRUE); - break; case WM_NOTIFY: - ProcessPageOnNotify(wParam, lParam); break; } @@ -372,9 +372,11 @@ void ProcessPageShowContextMenu(DWORD dwProcessId) void RefreshProcessPage(void) { +#ifdef RUN_PROC_PAGE /* Signal the event so that our refresh thread */ /* will wake up and refresh the process page */ - SetEvent(hProcessPageEvent); + PostThreadMessage(dwProcessThread, WM_TIMER, 0, 0); +#endif } DWORD WINAPI ProcessPageRefreshThread(void *lpParameter) @@ -382,34 +384,19 @@ DWORD WINAPI ProcessPageRefreshThread(void *lpParameter) ULONG OldProcessorUsage = 0; ULONG OldProcessCount = 0; WCHAR szCpuUsage[256], szProcesses[256]; - - /* Create the event */ - hProcessPageEvent = CreateEventW(NULL, TRUE, TRUE, NULL); - - /* If we couldn't create the event then exit the thread */ - if (!hProcessPageEvent) - return 0; + MSG msg; LoadStringW(hInst, IDS_STATUS_CPUUSAGE, szCpuUsage, 256); LoadStringW(hInst, IDS_STATUS_PROCESSES, szProcesses, 256); while (1) { - DWORD dwWaitVal; - - /* Wait on the event */ - dwWaitVal = WaitForSingleObject(hProcessPageEvent, INFINITE); - - /* If the wait failed then the event object must have been */ - /* closed and the task manager is exiting so exit this thread */ - if (dwWaitVal == WAIT_FAILED) + /* Wait for an the event or application close */ + if (GetMessage(&msg, NULL, 0, 0) <= 0) return 0; - if (dwWaitVal == WAIT_OBJECT_0) { + if (msg.message == WM_TIMER) { WCHAR text[260]; - /* Reset our event */ - ResetEvent(hProcessPageEvent); - UpdateProcesses(); if (IsWindowVisible(hProcessPage)) diff --git a/base/applications/taskmgr/taskmgr.c b/base/applications/taskmgr/taskmgr.c index c409f808b1f..c6d11c0e54d 100644 --- a/base/applications/taskmgr/taskmgr.c +++ b/base/applications/taskmgr/taskmgr.c @@ -1,7 +1,7 @@ /* * ReactOS Task Manager * - * TaskMgr.c : Defines the entry point for the application. + * taskmgr.c : Defines the entry point for the application. * * Copyright (C) 1999 - 2001 Brian Palmer * 2005 Klemens Friedl @@ -856,11 +856,6 @@ void TaskManager_OnViewUpdateSpeed(DWORD dwSpeed) SetUpdateSpeed(hMainWnd); } -void TaskManager_OnViewRefresh(void) -{ - PostMessageW(hMainWnd, WM_TIMER, 0, 0); -} - void TaskManager_OnTabWndSelChange(void) { int i; @@ -1012,3 +1007,27 @@ LPWSTR GetLastErrorText(LPWSTR lpszBuf, DWORD dwSize) } return lpszBuf; } + +DWORD EndLocalThread(HANDLE *hThread, DWORD dwThread) +{ + DWORD dwExitCodeThread = 0; + + if (*hThread != NULL) { + PostThreadMessage(dwThread,WM_QUIT,0,0); + for (;;) { + MSG msg; + + if (WAIT_OBJECT_0 == WaitForSingleObject(*hThread, 500)) + break; + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + } + GetExitCodeThread(*hThread, &dwExitCodeThread); + CloseHandle(*hThread); + *hThread = NULL; + } + return dwExitCodeThread; +} + diff --git a/base/applications/taskmgr/taskmgr.h b/base/applications/taskmgr/taskmgr.h index 16eaad8224a..e0a8de842d9 100644 --- a/base/applications/taskmgr/taskmgr.h +++ b/base/applications/taskmgr/taskmgr.h @@ -116,9 +116,9 @@ void TaskManager_OnEnterMenuLoop(HWND hWnd); void TaskManager_OnExitMenuLoop(HWND hWnd); void TaskManager_OnMenuSelect(HWND hWnd, UINT nItemID, UINT nFlags, HMENU hSysMenu); void TaskManager_OnViewUpdateSpeed(DWORD); -void TaskManager_OnViewRefresh(void); void TaskManager_OnTabWndSelChange(void); LPTSTR GetLastErrorText( LPTSTR lpszBuf, DWORD dwSize ); +DWORD EndLocalThread(HANDLE *hThread, DWORD dwThread); #ifdef __cplusplus } diff --git a/base/system/winlogon/winlogon.c b/base/system/winlogon/winlogon.c index f711cf38085..3329848b6ae 100644 --- a/base/system/winlogon/winlogon.c +++ b/base/system/winlogon/winlogon.c @@ -415,7 +415,7 @@ WinMain( /* Tell kernel that CurrentControlSet is good (needed * to support Last good known configuration boot) */ - NtInitializeRegistry(CM_BOOT_FLAG_ACCEPTED); + NtInitializeRegistry(CM_BOOT_FLAG_ACCEPTED | 1); /* Message loop for the SAS window */ while (GetMessageW(&Msg, WLSession->SASWindow, 0, 0)) diff --git a/dll/win32/dhcpcsvc/dhcp/adapter.c b/dll/win32/dhcpcsvc/dhcp/adapter.c index 7e22a3bd570..890972f945f 100644 --- a/dll/win32/dhcpcsvc/dhcp/adapter.c +++ b/dll/win32/dhcpcsvc/dhcp/adapter.c @@ -209,7 +209,7 @@ DWORD WINAPI AdapterDiscoveryThread(LPVOID Context) { PDHCP_ADAPTER Adapter = NULL; HANDLE AdapterStateChangedEvent = (HANDLE)Context; struct interface_info *ifi = NULL; - int i, AdapterCount = 0; + int i, AdapterCount = 0, Broadcast; /* FIXME: Kill this thread when the service is stopped */ @@ -285,6 +285,15 @@ DWORD WINAPI AdapterDiscoveryThread(LPVOID Context) { socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP ); if (DhcpSocket != INVALID_SOCKET) { + + /* Allow broadcast on this socket */ + Broadcast = 1; + setsockopt(DhcpSocket, + SOL_SOCKET, + SO_BROADCAST, + (const char *)&Broadcast, + sizeof(Broadcast)); + Adapter->ListenAddr.sin_family = AF_INET; Adapter->ListenAddr.sin_port = htons(LOCAL_PORT); Adapter->BindStatus = diff --git a/dll/win32/iphlpapi/iphlpapi_main.c b/dll/win32/iphlpapi/iphlpapi_main.c index 8508d2d416a..717fd2dee67 100644 --- a/dll/win32/iphlpapi/iphlpapi_main.c +++ b/dll/win32/iphlpapi/iphlpapi_main.c @@ -2291,6 +2291,7 @@ PIP_ADAPTER_ORDER_MAP WINAPI GetAdapterOrderMap(VOID) */ DWORD WINAPI GetAdaptersAddresses(ULONG Family,ULONG Flags,PVOID Reserved,PIP_ADAPTER_ADDRESSES pAdapterAddresses,PULONG pOutBufLen) { +#if 0 InterfaceIndexTable *indexTable; IFInfo ifInfo; int i; @@ -2477,6 +2478,15 @@ DWORD WINAPI GetAdaptersAddresses(ULONG Family,ULONG Flags,PVOID Reserved,PIP_AD free(indexTable); return NO_ERROR; +#else + if (!pOutBufLen) return ERROR_INVALID_PARAMETER; + if (!pAdapterAddresses || *pOutBufLen == 0) + return ERROR_BUFFER_OVERFLOW; + if (Reserved) return ERROR_INVALID_PARAMETER; + + FIXME(":stub\n"); + return ERROR_NO_DATA; +#endif } /* diff --git a/dll/win32/iphlpapi/iphlpapi_private.h b/dll/win32/iphlpapi/iphlpapi_private.h index fa6c1c151cd..2cb747f2a80 100644 --- a/dll/win32/iphlpapi/iphlpapi_private.h +++ b/dll/win32/iphlpapi/iphlpapi_private.h @@ -32,7 +32,7 @@ #include "wine/debug.h" //#include "ntddndis.h" -#include "ddk/tdiinfo.h" +#include "tdiinfo.h" #include "tcpioctl.h" #include "tdilib.h" diff --git a/dll/win32/kernel32/file/backup.c b/dll/win32/kernel32/file/backup.c index 0928e74a062..24c2a751233 100644 --- a/dll/win32/kernel32/file/backup.c +++ b/dll/win32/kernel32/file/backup.c @@ -11,9 +11,8 @@ /* INCLUDES *****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include /* FUNCTIONS ****************************************************************/ diff --git a/dll/win32/kernel32/file/bintype.c b/dll/win32/kernel32/file/bintype.c index 98d8f676da9..2722ba54134 100644 --- a/dll/win32/kernel32/file/bintype.c +++ b/dll/win32/kernel32/file/bintype.c @@ -13,9 +13,10 @@ /* INCLUDES *****************************************************************/ #include -#include +#define NDEBUG +#include -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +static ULONG gDebugChannel = kernel32file; /* FUNCTIONS ****************************************************************/ diff --git a/dll/win32/kernel32/file/cnotify.c b/dll/win32/kernel32/file/cnotify.c index 59f61650bfa..c7aff9c3589 100644 --- a/dll/win32/kernel32/file/cnotify.c +++ b/dll/win32/kernel32/file/cnotify.c @@ -10,9 +10,8 @@ */ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include /* * @implemented diff --git a/dll/win32/kernel32/file/copy.c b/dll/win32/kernel32/file/copy.c index 760fda441ce..4055f876342 100644 --- a/dll/win32/kernel32/file/copy.c +++ b/dll/win32/kernel32/file/copy.c @@ -13,9 +13,9 @@ /* INCLUDES ****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* FUNCTIONS ****************************************************************/ diff --git a/dll/win32/kernel32/file/create.c b/dll/win32/kernel32/file/create.c index d2fe40f33c7..894970a4c2e 100644 --- a/dll/win32/kernel32/file/create.c +++ b/dll/win32/kernel32/file/create.c @@ -15,9 +15,9 @@ /* INCLUDES *****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; #define SYMLINK_FLAG_RELATIVE 1 diff --git a/dll/win32/kernel32/file/curdir.c b/dll/win32/kernel32/file/curdir.c index 5584899f333..ee6d8553128 100644 --- a/dll/win32/kernel32/file/curdir.c +++ b/dll/win32/kernel32/file/curdir.c @@ -17,9 +17,9 @@ /* INCLUDES ******************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* GLOBAL VARIABLES **********************************************************/ diff --git a/dll/win32/kernel32/file/delete.c b/dll/win32/kernel32/file/delete.c index 4ad6a804917..333851655c8 100644 --- a/dll/win32/kernel32/file/delete.c +++ b/dll/win32/kernel32/file/delete.c @@ -12,9 +12,9 @@ /* INCLUDES ****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* FUNCTIONS ****************************************************************/ diff --git a/dll/win32/kernel32/file/deviceio.c b/dll/win32/kernel32/file/deviceio.c index b4435a9f758..a3016ed75b9 100644 --- a/dll/win32/kernel32/file/deviceio.c +++ b/dll/win32/kernel32/file/deviceio.c @@ -9,7 +9,8 @@ /* INCLUDES *******************************************************************/ #include -#include +#define NDEBUG +#include /* FUNCTIONS ******************************************************************/ diff --git a/dll/win32/kernel32/file/dir.c b/dll/win32/kernel32/file/dir.c index 913243abbe0..5d352b172b0 100644 --- a/dll/win32/kernel32/file/dir.c +++ b/dll/win32/kernel32/file/dir.c @@ -16,9 +16,9 @@ /* INCLUDES ******************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; UNICODE_STRING DllDirectory = {0, 0, NULL}; diff --git a/dll/win32/kernel32/file/dosdev.c b/dll/win32/kernel32/file/dosdev.c index 006cc76e5b3..0ac01917680 100644 --- a/dll/win32/kernel32/file/dosdev.c +++ b/dll/win32/kernel32/file/dosdev.c @@ -12,9 +12,9 @@ /* INCLUDES ******************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* FUNCTIONS *****************************************************************/ diff --git a/dll/win32/kernel32/file/file.c b/dll/win32/kernel32/file/file.c index cdbafd08839..7210147a031 100644 --- a/dll/win32/kernel32/file/file.c +++ b/dll/win32/kernel32/file/file.c @@ -13,9 +13,9 @@ /* INCLUDES *****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* GLOBALS ******************************************************************/ diff --git a/dll/win32/kernel32/file/find.c b/dll/win32/kernel32/file/find.c index df245232e0e..e2d476c10b3 100644 --- a/dll/win32/kernel32/file/find.c +++ b/dll/win32/kernel32/file/find.c @@ -12,9 +12,9 @@ /* INCLUDES *****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* TYPES ********************************************************************/ diff --git a/dll/win32/kernel32/file/hardlink.c b/dll/win32/kernel32/file/hardlink.c index 8954ebeee94..5e8e91f50b9 100644 --- a/dll/win32/kernel32/file/hardlink.c +++ b/dll/win32/kernel32/file/hardlink.c @@ -12,9 +12,9 @@ /* INCLUDES *****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* FUNCTIONS ****************************************************************/ diff --git a/dll/win32/kernel32/file/iocompl.c b/dll/win32/kernel32/file/iocompl.c index 2f332460cc7..56eef2c0ad8 100644 --- a/dll/win32/kernel32/file/iocompl.c +++ b/dll/win32/kernel32/file/iocompl.c @@ -10,14 +10,13 @@ */ #include -#include +#define NDEBUG +#include #define NANOS_TO_100NS(nanos) (((LONGLONG)(nanos)) / 100) #define MICROS_TO_100NS(micros) (((LONGLONG)(micros)) * NANOS_TO_100NS(1000)) #define MILLIS_TO_100NS(milli) (((LONGLONG)(milli)) * MICROS_TO_100NS(1000)) -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); - /* * @implemented */ diff --git a/dll/win32/kernel32/file/lfile.c b/dll/win32/kernel32/file/lfile.c index 7171c899c9a..7c1a6b9a2bb 100644 --- a/dll/win32/kernel32/file/lfile.c +++ b/dll/win32/kernel32/file/lfile.c @@ -10,9 +10,8 @@ */ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include /* * @implemented diff --git a/dll/win32/kernel32/file/lock.c b/dll/win32/kernel32/file/lock.c index 60c71338ac4..6cb386025d1 100644 --- a/dll/win32/kernel32/file/lock.c +++ b/dll/win32/kernel32/file/lock.c @@ -14,9 +14,9 @@ /* INCLUDES ****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* FUNCTIONS ****************************************************************/ diff --git a/dll/win32/kernel32/file/mailslot.c b/dll/win32/kernel32/file/mailslot.c index 629fef277e4..cbc7900b3eb 100644 --- a/dll/win32/kernel32/file/mailslot.c +++ b/dll/win32/kernel32/file/mailslot.c @@ -11,9 +11,9 @@ /* INCLUDES *****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* FUNCTIONS ****************************************************************/ diff --git a/dll/win32/kernel32/file/move.c b/dll/win32/kernel32/file/move.c index c46f006c043..cdf53527fbd 100644 --- a/dll/win32/kernel32/file/move.c +++ b/dll/win32/kernel32/file/move.c @@ -17,9 +17,9 @@ #include #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* GLOBALS *****************************************************************/ diff --git a/dll/win32/kernel32/file/npipe.c b/dll/win32/kernel32/file/npipe.c index 55aeed952fc..3896e9b2b38 100644 --- a/dll/win32/kernel32/file/npipe.c +++ b/dll/win32/kernel32/file/npipe.c @@ -10,9 +10,9 @@ /* INCLUDES *****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; //#define USING_PROPER_NPFS_WAIT_SEMANTICS diff --git a/dll/win32/kernel32/file/pipe.c b/dll/win32/kernel32/file/pipe.c index 94bc1aed1ee..a48150d5156 100644 --- a/dll/win32/kernel32/file/pipe.c +++ b/dll/win32/kernel32/file/pipe.c @@ -11,9 +11,9 @@ /* INCLUDES *****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* GLOBALS ******************************************************************/ diff --git a/dll/win32/kernel32/file/rw.c b/dll/win32/kernel32/file/rw.c index 400caf79a1b..dc89e4da8bc 100644 --- a/dll/win32/kernel32/file/rw.c +++ b/dll/win32/kernel32/file/rw.c @@ -12,9 +12,9 @@ /* INCLUDES ****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; /* FUNCTIONS ****************************************************************/ diff --git a/dll/win32/kernel32/file/tape.c b/dll/win32/kernel32/file/tape.c index fc6d4c43de0..32e274fbab2 100644 --- a/dll/win32/kernel32/file/tape.c +++ b/dll/win32/kernel32/file/tape.c @@ -12,9 +12,8 @@ /* INCLUDES *****************************************************************/ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include /* FUNCTIONS ****************************************************************/ diff --git a/dll/win32/kernel32/file/volume.c b/dll/win32/kernel32/file/volume.c index ee74d9f990d..2af3e8ed03d 100644 --- a/dll/win32/kernel32/file/volume.c +++ b/dll/win32/kernel32/file/volume.c @@ -20,9 +20,9 @@ */ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32file); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32file; #define MAX_DOS_DRIVES 26 diff --git a/dll/win32/kernel32/include/kernel32.h b/dll/win32/kernel32/include/kernel32.h index 4d3f032275b..55b1338786c 100755 --- a/dll/win32/kernel32/include/kernel32.h +++ b/dll/win32/kernel32/include/kernel32.h @@ -1,5 +1,25 @@ #pragma once +// +// Kernel32 Filter IDs +// +#define kernel32file 200 +#define kernel32ver 201 +#define actctx 202 +#define resource 203 +#define kernel32session 204 + +#define TRACE(fmt, ...) TRACE__(gDebugChannel, fmt, ##__VA_ARGS__) +#define WARN(fmt, ...) WARN__(gDebugChannel, fmt, ##__VA_ARGS__) +#define FIXME(fmt, ...) WARN__(gDebugChannel, fmt,## __VA_ARGS__) +#define ERR(fmt, ...) ERR__(gDebugChannel, fmt, ##__VA_ARGS__) + +#define debugstr_a +#define debugstr_w +#define wine_dbgstr_w +#define debugstr_guid + +#include "wine/unicode.h" #include "baseheap.h" #define BINARY_UNKNOWN (0) @@ -40,8 +60,9 @@ /* Undocumented CreateProcess flag */ #define STARTF_SHELLPRIVATE 0x400 -#define SetLastErrorByStatus(__S__) \ - ((void)SetLastError(RtlNtStatusToDosError(__S__))) +#define SetLastErrorByStatus(x) RtlSetLastWin32ErrorAndNtStatusFromNtStatus((x)) +#define GetLastError() NtCurrentTeb()->LastErrorValue +#define SetLastError(x) NtCurrentTeb()->LastErrorValue = (x) typedef struct _CODEPAGE_ENTRY { @@ -100,6 +121,7 @@ DWORD FilenameU2A_FitOrFail(LPSTR DestA, INT destLen, PUNICODE_STRING SourceU); #define HeapAlloc RtlAllocateHeap #define HeapReAlloc RtlReAllocateHeap #define HeapFree RtlFreeHeap +#define _lread (_readfun)_hread POBJECT_ATTRIBUTES WINAPI diff --git a/dll/win32/kernel32/kernel32.def b/dll/win32/kernel32/kernel32.def new file mode 100644 index 00000000000..f0130a96267 --- /dev/null +++ b/dll/win32/kernel32/kernel32.def @@ -0,0 +1,1459 @@ +#undef i386 + +@ stdcall AcquireSRWLockExclusive(ptr) ntdll.RtlAcquireSRWLockExclusive +@ stdcall AcquireSRWLockShared(ptr) ntdll.RtlAcquireSRWLockShared +@ stdcall ActivateActCtx(ptr ptr) +@ stdcall AddAtomA(str) +@ stdcall AddAtomW(wstr) +@ stdcall AddConsoleAliasA(str str str) ;check +@ stdcall AddConsoleAliasW(wstr wstr wstr) ;check +;@ stdcall -arch=x86_64 AddIntegrityLabelToBoundaryDescriptor ; Win 7 +@ stdcall AddLocalAlternateComputerNameA(str ptr) +@ stdcall AddLocalAlternateComputerNameW(wstr ptr) +@ stdcall AddRefActCtx(ptr) +;@ stdcall AddSIDToBoundaryDescriptor ; Win 7 +;@ stdcall AddSecureMemoryCacheCallback ; Win 7 +@ stdcall AddVectoredContinueHandler(long ptr) ntdll.RtlAddVectoredContinueHandler +@ stdcall AddVectoredExceptionHandler(long ptr) ntdll.RtlAddVectoredExceptionHandler +;@ stdcall AdjustCalendarDate ; Win 7 +@ stdcall AllocConsole() +@ stub AllocLSCallback ; missing in XP SP3 and 2003 R2 and Win 7 +@ stdcall AllocateUserPhysicalPages(long ptr ptr) +;@ stdcall AllocateUserPhysicalPagesNuma ; Win 7 +;@ stdcall ApplicationRecoveryFinished ; Win 7 +;@ stdcall ApplicationRecoveryInProgress ; Win 7 +@ stdcall AreFileApisANSI() +@ stdcall AssignProcessToJobObject(ptr ptr) +@ stdcall AttachConsole(long) +@ stdcall BackupRead(ptr ptr long ptr long long ptr) +@ stdcall BackupSeek(ptr long long ptr ptr ptr) +@ stdcall BackupWrite(ptr ptr long ptr long long ptr) +@ stdcall BaseCheckAppcompatCache(long long long ptr) ;check +;@ stdcall BaseCheckAppcompatCacheEx ; Win7 +@ stub BaseCheckRunApp +@ stdcall BaseCleanupAppcompatCache() ; missing in Win 7 +@ stdcall BaseCleanupAppcompatCacheSupport(ptr) +;@ stdcall BaseDllReadWriteIniFile ; Win 7 +@ stdcall BaseDumpAppcompatCache() +@ stdcall BaseFlushAppcompatCache() +;@ stdcall BaseFormatObjectAttributes ; Win 7 +;@ stdcall BaseFormatTimeOut ; Win 7 +;@ stdcall BaseGenerateAppCompatData ; Win 7 +;@ stdcall BaseGetNamedObjectDirectory ; Win 7 +@ stdcall BaseInitAppcompatCache() ; missing in Win 7 +@ stdcall BaseInitAppcompatCacheSupport() +;@ stdcall BaseIsAppcompatInfrastructureDisabled ; Win 7 +@ stdcall BaseProcessInitPostImport() ; missing in Win 7 +@ stdcall BaseQueryModuleData(str str ptr ptr ptr) ;check +;@ stdcall BaseThreadInitThunk ; Win 7 +;@ stdcall BaseSetLastNTError ; Win 7, not 64 bit +@ stdcall BaseUpdateAppcompatCache(long long long) +;@ stdcall BaseVerifyUnicodeString ; Win 7 +;@ stdcall Basep8BitStringToDynamicUnicodeString ; Win 7 +;@ stdcall BasepAllocateActivationContextActivationBlock ; Win 7 +;@ stdcall BasepAnsiStringToDynamicUnicodeString ; Win 7 +;@ stdcall BasepCheckAppCompat ; Win 7 +;@ stdcall BasepCheckBadapp ; Win 7 +@ stub BasepCheckWinSaferRestrictions +@ stub BasepDebugDump ; missing in XP SP3 and Win 7 +;@ stdcall BasepFreeActivationContextActivationBlock ; Win 7 +;@ stdcall BasepFreeAppCompatData ; Win 7 +;@ stdcall BasepMapModuleHandle ; Win 7 +@ stdcall Beep(long long) +@ stdcall BeginUpdateResourceA(str long) +@ stdcall BeginUpdateResourceW(wstr long) +@ stdcall BindIoCompletionCallback(long ptr long) +@ stdcall BuildCommDCBA(str ptr) +@ stdcall BuildCommDCBAndTimeoutsA(str ptr ptr) +@ stdcall BuildCommDCBAndTimeoutsW(wstr ptr ptr) +@ stdcall BuildCommDCBW(wstr ptr) +@ stdcall CallNamedPipeA(str ptr long ptr long ptr long) +@ stdcall CallNamedPipeW(wstr ptr long ptr long ptr long) +;@ stdcall CallbackMayRunLong ; Win 7 +@ stdcall CancelDeviceWakeupRequest(long) +@ stdcall CancelIo(long) +@ stdcall CancelIoEx(long ptr) +@ stdcall CancelSynchronousIo(long) +;@ stdcall CancelThreadpoolIo(ptr) ntdll.TpCancelAsyncIoOperation; Win 7 +@ stdcall CancelTimerQueueTimer(long long) +@ stdcall CancelWaitableTimer(long) +@ stdcall ChangeTimerQueueTimer(ptr ptr long long) +;@ stdcall CheckElevation ; Win 7 +;@ stdcall CheckElevationEnabled ; Win 7 +;@ stdcall CheckForReadOnlyResource ; Win 7 +@ stdcall CheckNameLegalDOS8Dot3A(str str long long long) +@ stdcall CheckNameLegalDOS8Dot3W(wstr str long long long) +@ stdcall CheckRemoteDebuggerPresent(long ptr) +@ stdcall ClearCommBreak(long) +@ stdcall ClearCommError(long ptr ptr) +@ stdcall CloseConsoleHandle(long) +@ stdcall CloseHandle(long) +;@ stdcall ClosePrivateNamespace ; Win 7 +@ stdcall CloseProfileUserMapping() +@ stub CloseSystemHandle ; missing in XP SP3 and Win 7 +;@ stdcall CloseThreadpool(ptr) ntdll.TpReleasePool ; Win 7 +;@ stdcall CloseThreadpoolCleanupGroup(ptr) ntdll.TpReleaseCleanupGroup ; Win 7 +;@ stdcall CloseThreadpoolCleanupGroupMembers(ptr long ptr) ntdll.TpReleaseCleanupGroupMembers ; Win 7 +;@ stdcall CloseThreadpoolIo ntdll.TpReleaseIoCompletion ; Win 7 +;@ stdcall CloseThreadpoolTimer ntdll.TpReleaseTimer ; Win 7 +;@ stdcall CloseThreadpoolWait ntdll.TpReleaseWait ; Win 7 +;@ stdcall CloseThreadpoolWork ntdll.TpReleaseWork ; Win 7 +@ stdcall CmdBatNotification(long) +@ stdcall CommConfigDialogA(str long ptr) +@ stdcall CommConfigDialogW(wstr long ptr) +;@ stdcall CompareCalendarDates ; Win 7 +@ stdcall CompareFileTime(ptr ptr) +@ stdcall CompareStringA(long long str long str long) +;@ stdcall CompareStringEx ; Win 7 +;@ stdcall CompareStringOrdinal ; Win 7 +@ stdcall CompareStringW(long long wstr long wstr long) +@ stdcall ConnectNamedPipe(long ptr) +@ stdcall ConsoleMenuControl(long long long) +@ stub ConsoleSubst ; missing in XP SP3 and Win 7 +@ stdcall ContinueDebugEvent(long long long) +;@ stdcall ConvertCalDateTimeToSystemTime ; Win 7 +@ stdcall ConvertDefaultLocale (long) +@ stdcall ConvertFiberToThread() +;@ stdcall ConvertNLSDayOfWeekToWin32DayOfWeek ; Win 7 +;@ stdcall ConvertSystemTimeToCalDateTime ; Win 7 +@ stdcall ConvertThreadToFiber(ptr) +@ stdcall ConvertThreadToFiberEx(ptr long) +;@ stdcall CopyExtendedContext ; Win 7 +@ stdcall CopyFileA(str str long) +@ stdcall CopyFileExA (str str ptr ptr ptr long) +@ stdcall CopyFileExW (wstr wstr ptr ptr ptr long) +;@ stdcall CopyFileTransactedA ; Win 7 +;@ stdcall CopyFileTransactedW ; Win 7 +@ stdcall CopyFileW(wstr wstr long) +@ stdcall CopyLZFile(long long) LZCopy +@ stdcall CreateActCtxA(ptr) +@ stdcall CreateActCtxW(ptr) +;@ stdcall CreateBoundaryDescriptorA ; Win 7 +;@ stdcall CreateBoundaryDescriptorW ; Win 7 +@ stdcall CreateConsoleScreenBuffer(long long ptr long ptr) +@ stdcall CreateDirectoryA(str ptr) +@ stdcall CreateDirectoryExA(str str ptr) +@ stdcall CreateDirectoryExW(wstr wstr ptr) +;@ stdcall CreateDirectoryTransactedA ; Win 7 +;@ stdcall CreateDirectoryTransactedW ; Win 7 +@ stdcall CreateDirectoryW(wstr ptr) +@ stdcall CreateEventA(ptr long long str) +@ stdcall CreateEventExA(ptr str long long) +@ stdcall CreateEventExW(ptr wstr long long) +@ stdcall CreateEventW(ptr long long wstr) +@ stdcall CreateFiber(long ptr ptr) +@ stdcall CreateFiberEx(long long long ptr ptr) +@ stdcall CreateFileA(str long long ptr long long long) +@ stdcall CreateFileMappingA(long ptr long long long str) +;@ stdcall CreateFileMappingNumaA ; Win 7 +;@ stdcall CreateFileMappingNumaW ; Win 7 +@ stdcall CreateFileMappingW(long ptr long long long wstr) +;@ stdcall CreateFileTransactedA ; Win 7 +;@ stdcall CreateFileTransactedW ; Win 7 +@ stdcall CreateFileW(wstr long long ptr long long long) +@ stdcall CreateHardLinkA(str str ptr) +;@ stdcall CreateHardLinkTransactedA ; Win 7 +;@ stdcall CreateHardLinkTransactedW ; Win 7 +@ stdcall CreateHardLinkW(wstr wstr ptr) +@ stdcall CreateIoCompletionPort(long long long long) +@ stdcall CreateJobObjectA(ptr str) +@ stdcall CreateJobObjectW(ptr wstr) +@ stdcall CreateJobSet(long ptr long) +@ stub CreateKernelThread ; missing in XP SP3 and Win 7 +@ stdcall CreateMailslotA(ptr long long ptr) +@ stdcall CreateMailslotW(ptr long long ptr) +@ stdcall CreateMemoryResourceNotification(long) +@ stdcall CreateMutexA(ptr long str) +@ stdcall CreateMutexExA(ptr str long long) +@ stdcall CreateMutexExW(ptr wstr long long) +@ stdcall CreateMutexW(ptr long wstr) +@ stdcall CreateNamedPipeA(str long long long long long long ptr) +@ stdcall CreateNamedPipeW(wstr long long long long long long ptr) +@ stdcall CreateNlsSecurityDescriptor(ptr long long) ; missing in Win 7 +@ stdcall CreatePipe(ptr ptr ptr long) +;@ stdcall CreatePrivateNamespaceA ; Win 7 +;@ stdcall CreatePrivateNamespaceW ; Win 7 +@ stdcall CreateProcessA(str str ptr ptr long long ptr str ptr ptr) +;@ stdcall CreateProcessAsUserW ; Win 7 +@ stdcall CreateProcessInternalA(ptr str str ptr ptr long long ptr str ptr ptr long) +@ stdcall CreateProcessInternalW(ptr wstr wstr ptr ptr long long ptr wstr ptr ptr long) +@ stdcall CreateProcessInternalWSecure() ; missing in Win 7 +@ stdcall CreateProcessW(wstr wstr ptr ptr long long ptr wstr ptr ptr) +@ stdcall CreateRemoteThread(long ptr long ptr long long ptr) +;@ stdcall CreateRemoteThreadEx api-ms-win-core-processthreads-l1-1-0.CreateRemoteThreadEx ; Win 7 +@ stdcall CreateSemaphoreA(ptr long long str) +@ stdcall CreateSemaphoreExA(ptr long long str long long) +@ stdcall CreateSemaphoreExW(ptr long long wstr long long) +@ stdcall CreateSemaphoreW(ptr long long wstr) +@ stdcall CreateSocketHandle() +@ stdcall CreateSymbolicLinkA(str str long) +;@ stdcall CreateSymbolicLinkTransactedA ; Win 7 +;@ stdcall CreateSymbolicLinkTransactedW ; Win 7 +@ stdcall CreateSymbolicLinkW(wstr wstr long) +@ stdcall CreateTapePartition(long long long long) +@ stdcall CreateThread(ptr long ptr long long ptr) +;@ stdcall CreateThreadpool ; Win 7 +;@ stdcall CreateThreadpoolCleanupGroup ; Win 7 +;@ stdcall CreateThreadpoolIo ; Win 7 +;@ stdcall CreateThreadpoolTimer ; Win 7 +;@ stdcall CreateThreadpoolWait ; Win 7 +;@ stdcall CreateThreadpoolWork ; Win 7 +@ stdcall CreateTimerQueue () +@ stdcall CreateTimerQueueTimer(ptr long ptr ptr long long long) +@ stdcall CreateToolhelp32Snapshot(long long) +;@ stdcall arch=x86_64 CreateUmsCompletionList +;@ stdcall arch=x86_64 CreateUmsThreadContext +@ stdcall CreateVirtualBuffer(long long long) ; missing in Win 7 +@ stdcall CreateWaitableTimerA(ptr long str) +@ stdcall CreateWaitableTimerExA(ptr str long long) +@ stdcall CreateWaitableTimerExW(ptr wstr long long) +@ stdcall CreateWaitableTimerW(ptr long wstr) +@ stdcall DeactivateActCtx(long ptr) +@ stdcall DebugActiveProcess(long) +@ stdcall DebugActiveProcessStop(long) +@ stdcall DebugBreak() ntdll.DbgBreakPoint +@ stdcall DebugBreakProcess(long) +@ stdcall DebugSetProcessKillOnExit(long) +@ stdcall DecodePointer(ptr) ntdll.RtlDecodePointer +@ stdcall DecodeSystemPointer(ptr) ntdll.RtlDecodeSystemPointer +@ stdcall DefineDosDeviceA(long str str) +@ stdcall DefineDosDeviceW(long wstr wstr) +@ stdcall DelayLoadFailureHook(str str) +@ stdcall DeleteAtom(long) +;@ stdcall DeleteBoundaryDescriptor ntdll.RtlDeleteBoundaryDescriptor ; Win 7 +@ stdcall DeleteCriticalSection(ptr) ntdll.RtlDeleteCriticalSection +@ stdcall DeleteFiber(ptr) +@ stdcall DeleteFileA(str) +;@ stdcall DeleteFileTransactedA ; Win 7 +;@ stdcall DeleteFileTransactedW ; Win 7 +@ stdcall DeleteFileW(wstr) +;@ stdcall DeleteProcThreadAttributeList api-ms-win-core-processthreads-l1-1-0.DeleteProcThreadAttributeList ; Win 7 +@ stdcall DeleteTimerQueue(long) +@ stdcall DeleteTimerQueueEx (long long) +@ stdcall DeleteTimerQueueTimer(long long long) +;@ stdcall -arch=x86_64 DeleteUmsCompletionList +;@ stdcall -arch=x86_64 DeleteUmsThreadContext +@ stdcall DeleteVolumeMountPointA(str) ;check +@ stdcall DeleteVolumeMountPointW(wstr) ;check +;@ stdcall -arch=x86_64 DequeueUmsCompletionListItems +@ stdcall DeviceIoControl(long long ptr long ptr long ptr ptr) +@ stdcall DisableThreadLibraryCalls(long) +;@ stdcall DisableThreadProfiling ; Win 7 +;@ stdcall DisassociateCurrentThreadFromCallback ntdll.TpDisassociateCallback ; Win 7 +@ stdcall DisconnectNamedPipe(long) +@ stdcall DnsHostnameToComputerNameA (str ptr ptr) +@ stdcall DnsHostnameToComputerNameW (wstr ptr ptr) +@ stdcall DosDateTimeToFileTime(long long ptr) +@ stdcall DosPathToSessionPathA(long str str) +@ stdcall DosPathToSessionPathW(long wstr wstr) +@ stdcall DuplicateConsoleHandle(long long long long) +@ stdcall DuplicateHandle(long long long ptr long long long) +;@ stdcall EnableThreadProfiling ; Win 7 +@ stdcall EncodePointer(ptr) ntdll.RtlEncodePointer +@ stdcall EncodeSystemPointer(ptr) ntdll.RtlEncodeSystemPointer +@ stdcall EndUpdateResourceA(long long) +@ stdcall EndUpdateResourceW(long long) +@ stdcall EnterCriticalSection(ptr) ntdll.RtlEnterCriticalSection +;@ stdcall -arch=x86_64 EnterUmsSchedulingMode +@ stdcall EnumCalendarInfoA(ptr long long long) +@ stdcall EnumCalendarInfoExA(ptr long long long) +;@ stdcall EnumCalendarInfoExEx ; Win 7 +@ stdcall EnumCalendarInfoExW(ptr long long long) +@ stdcall EnumCalendarInfoW(ptr long long long) +@ stdcall EnumDateFormatsA(ptr long long) +@ stdcall EnumDateFormatsExA(ptr long long) +;@ stdcall EnumDateFormatsExEx ; Win 7 +@ stdcall EnumDateFormatsExW(ptr long long) +@ stdcall EnumDateFormatsW(ptr long long) +@ stdcall EnumLanguageGroupLocalesA(ptr long long ptr) +@ stdcall EnumLanguageGroupLocalesW(ptr long long ptr) +@ stdcall EnumResourceLanguagesA(long str str ptr long) +;@ stdcall EnumResourceLanguagesExA ; Win 7 +;@ stdcall EnumResourceLanguagesExW ; Win 7 +@ stdcall EnumResourceLanguagesW(long wstr wstr ptr long) +@ stdcall EnumResourceNamesA(long str ptr long) +;@ stdcall EnumResourceNamesExA ; Win 7 +;@ stdcall EnumResourceNamesExW ; Win 7 +@ stdcall EnumResourceNamesW(long wstr ptr long) +@ stdcall EnumResourceTypesA(long ptr long) +;@ stdcall EnumResourceTypesExA ; Win 7 +;@ stdcall EnumResourceTypesExW ; Win 7 +@ stdcall EnumResourceTypesW(long ptr long) +@ stdcall EnumSystemCodePagesA(ptr long) +@ stdcall EnumSystemCodePagesW(ptr long) +;@ stdcall EnumSystemFirmwareTables ; Win 7 +@ stdcall EnumSystemGeoID(long long ptr) +@ stdcall EnumSystemLanguageGroupsA(ptr long ptr) +@ stdcall EnumSystemLanguageGroupsW(ptr long ptr) +@ stdcall EnumSystemLocalesA(ptr long) +;@ stdcall EnumSystemLocalesEx ; Win 7 +@ stdcall EnumSystemLocalesW(ptr long) +@ stdcall EnumTimeFormatsA(ptr long long) +;@ stdcall EnumTimeFormatsEx ; Win 7 +@ stdcall EnumTimeFormatsW(ptr long long) +@ stdcall EnumUILanguagesA(ptr long long) +@ stdcall EnumUILanguagesW(ptr long long) +@ stdcall EnumerateLocalComputerNamesA(ptr long str ptr) +@ stdcall EnumerateLocalComputerNamesW(ptr long wstr ptr) +@ stdcall EraseTape(ptr long long) +@ stdcall EscapeCommFunction(long long) +@ stdcall ExitProcess(long) ; FIXME: ntdll.RtlExitUserProcess +@ stdcall ExitThread(long) ; FIXME: ntdll.RtlExitUserThread +@ stdcall ExitVDM(long long) +@ stdcall ExpandEnvironmentStringsA(str ptr long) +@ stdcall ExpandEnvironmentStringsW(wstr ptr long) +@ stdcall ExpungeConsoleCommandHistoryA(long) +@ stdcall ExpungeConsoleCommandHistoryW(long) +@ stdcall ExtendVirtualBuffer(long long) ; missing in Win 7 +@ stdcall FatalAppExitA(long str) +@ stdcall FatalAppExitW(long wstr) +@ stdcall FatalExit(long) +@ stdcall FileTimeToDosDateTime(ptr ptr ptr) +@ stdcall FileTimeToLocalFileTime(ptr ptr) +@ stdcall FileTimeToSystemTime(ptr ptr) +@ stdcall FillConsoleOutputAttribute(long long long long ptr) +@ stdcall FillConsoleOutputCharacterA(long long long long ptr) +@ stdcall FillConsoleOutputCharacterW(long long long long ptr) +@ stdcall FindActCtxSectionGuid(long ptr long ptr ptr) +@ stdcall FindActCtxSectionStringA(long ptr long str ptr) +@ stdcall FindActCtxSectionStringW(long ptr long wstr ptr) +@ stdcall FindAtomA(str) +@ stdcall FindAtomW(wstr) +@ stdcall FindClose(long) +@ stdcall FindCloseChangeNotification(long) +@ stdcall FindFirstChangeNotificationA(str long long) +@ stdcall FindFirstChangeNotificationW(wstr long long) +@ stdcall FindFirstFileA(str ptr) +@ stdcall FindFirstFileExA(str long ptr long ptr long) +@ stdcall FindFirstFileExW(wstr long ptr long ptr long) +;@ stdcall FindFirstFileNameTransactedW ; Win 7 +;@ stdcall FindFirstFileNameW ; Win 7 +;@ stdcall FindFirstFileTransactedA ; Win 7 +;@ stdcall FindFirstFileTransactedW ; Win 7 +@ stdcall FindFirstFileW(wstr ptr) +;@ stdcall FindFirstStreamTransactedW ; Win 7 +@ stdcall FindFirstStreamW(wstr ptr ptr long) +@ stdcall FindFirstVolumeA(ptr long) +@ stdcall FindFirstVolumeMountPointA(str ptr long) +@ stdcall FindFirstVolumeMountPointW(wstr ptr long) +@ stdcall FindFirstVolumeW(ptr long) +;@ stdcall FindNLSString ; Win 7 +;@ stdcall FindNLSStringEx ; Win 7 +@ stdcall FindNextChangeNotification(long) +@ stdcall FindNextFileA(long ptr) +;@ stdcall FindNextFileNameW ; Win 7 +@ stdcall FindNextFileW(long ptr) +;@ stdcall FindNextStreamW ; Win 7 +@ stdcall FindNextVolumeA(long ptr long) +@ stdcall FindNextVolumeMountPointA(long str long) +@ stdcall FindNextVolumeMountPointW(long wstr long) +@ stdcall FindNextVolumeW(long ptr long) +@ stdcall FindResourceA(long str str) +@ stdcall FindResourceExA(long str str long) +@ stdcall FindResourceExW(long wstr wstr long) +@ stdcall FindResourceW(long wstr wstr) +;@ stdcall FindStringOrdinal ; Win 7 +@ stdcall FindVolumeClose(ptr) +@ stdcall FindVolumeMountPointClose(ptr) +;@ stdcall FlsAlloc(ptr) ; missing in XP SP3 +;@ stdcall FlsFree(long) ; missing in XP SP3 +;@ stdcall FlsGetValue(long) ; missing in XP SP3 +;@ stdcall FlsSetValue(long ptr) ; missing in XP SP3 +@ stdcall FlushConsoleInputBuffer(long) +@ stdcall FlushFileBuffers(long) +@ stdcall FlushInstructionCache(long long long) +;@ stdcall FlushProcessWriteBuffers ntdll.NtFlushProcessWriteBuffers ; Win 7 +@ stdcall FlushViewOfFile(ptr long) +@ stdcall FoldStringA(long str long ptr long) +@ stdcall FoldStringW(long wstr long ptr long) +@ stdcall FormatMessageA(long ptr long long ptr long ptr) +@ stdcall FormatMessageW(long ptr long long ptr long ptr) +@ stdcall FreeConsole() +@ stdcall FreeEnvironmentStringsA(ptr) +@ stdcall FreeEnvironmentStringsW(ptr) +@ stdcall FreeLibrary(long) +@ stdcall FreeLibraryAndExitThread(long long) +;@ stdcall FreeLibraryWhenCallbackReturns ntdll.TpCallbackUnloadDllOnCompletion ; Win 7 +@ stdcall FreeResource(long) +@ stdcall FreeUserPhysicalPages(long long long) +@ stdcall FreeVirtualBuffer(ptr) ; missing in Win 7 +@ stdcall GenerateConsoleCtrlEvent(long long) +@ stdcall GetACP() +;@ stdcall GetActiveProcessorCount ; Win 7 +;@ stdcall GetActiveProcessorGroupCount ; Win 7 +;@ stdcall GetApplicationRecoveryCallback ; Win 7 +;@ stdcall GetApplicationRestartSettings ; Win 7 +@ stdcall GetAtomNameA(long ptr long) +@ stdcall GetAtomNameW(long ptr long) +@ stdcall GetBinaryType(str ptr) GetBinaryTypeA +@ stdcall GetBinaryTypeA(str ptr) +@ stdcall GetBinaryTypeW(wstr ptr) +@ stdcall GetCPFileNameFromRegistry(long wstr long) ;check missing in Win 7 +@ stdcall GetCPInfo(long ptr) +@ stdcall GetCPInfoExA(long long ptr) +@ stdcall GetCPInfoExW(long long ptr) +;@ stdcall GetCalendarDateFormat ; Win 7 +;@ stdcall GetCalendarDateFormatEx ; Win 7 +;@ stdcall GetCalendarDaysInMonth ; Win 7 +;@ stdcall GetCalendarDifferenceInDays ; Win 7 +@ stdcall GetCalendarInfoA(long long long ptr long ptr) +;@ stdcall GetCalendarInfoEx ; Win 7 +@ stdcall GetCalendarInfoW(long long long ptr long ptr) +;@ stdcall GetCalendarMonthsInYear ; Win 7 +;@ stdcall GetCalendarSupportedDateRange ; Win 7 +;@ stdcall GetCalendarWeekNumber ; Win 7 +@ stdcall GetComPlusPackageInstallStatus() +@ stdcall GetCommConfig(long ptr long) +@ stdcall GetCommMask(long ptr) +@ stdcall GetCommModemStatus(long ptr) +@ stdcall GetCommProperties(long ptr) +@ stdcall GetCommState(long ptr) +@ stdcall GetCommTimeouts(long ptr) +@ stdcall GetCommandLineA() +@ stdcall GetCommandLineW() +@ stdcall GetCompressedFileSizeA(long ptr) +;@ stdcall GetCompressedFileSizeTransactedA ; Win 7 +;@ stdcall GetCompressedFileSizeTransactedW ; Win 7 +@ stdcall GetCompressedFileSizeW(long ptr) +@ stdcall GetComputerNameA(ptr ptr) +@ stdcall GetComputerNameExA(long ptr ptr) +@ stdcall GetComputerNameExW(long ptr ptr) +@ stdcall GetComputerNameW(ptr ptr) +@ stdcall GetConsoleAliasA(str str long str) +@ stdcall GetConsoleAliasExesA(str long) +@ stdcall GetConsoleAliasExesLengthA() +@ stdcall GetConsoleAliasExesLengthW() +@ stdcall GetConsoleAliasExesW(wstr long) +@ stdcall GetConsoleAliasW(wstr ptr long wstr) +@ stdcall GetConsoleAliasesA(str long str) +@ stdcall GetConsoleAliasesLengthA(str) +@ stdcall GetConsoleAliasesLengthW(wstr) +@ stdcall GetConsoleAliasesW(wstr long wstr) +@ stdcall GetConsoleCP() +@ stdcall GetConsoleCharType(long long ptr) +@ stdcall GetConsoleCommandHistoryA(long long long) +@ stdcall GetConsoleCommandHistoryLengthA(long) +@ stdcall GetConsoleCommandHistoryLengthW(long) +@ stdcall GetConsoleCommandHistoryW(long long long) +@ stdcall GetConsoleCursorInfo(long ptr) +@ stdcall GetConsoleCursorMode(long ptr ptr) +@ stdcall GetConsoleDisplayMode(ptr) +@ stdcall GetConsoleFontInfo(long long long ptr) +@ stdcall GetConsoleFontSize(long long) +@ stdcall GetConsoleHardwareState(long long ptr) +@ stdcall GetConsoleHistoryInfo(ptr) +@ stdcall GetConsoleInputExeNameA(long ptr) +@ stdcall GetConsoleInputExeNameW(long ptr) +@ stdcall GetConsoleInputWaitHandle() +@ stdcall GetConsoleKeyboardLayoutNameA(ptr) +@ stdcall GetConsoleKeyboardLayoutNameW(ptr) +@ stdcall GetConsoleMode(long ptr) +@ stdcall GetConsoleNlsMode(long ptr) +;@ stdcall GetConsoleOriginalTitleA ; Win 7 +;@ stdcall GetConsoleOriginalTitleW ; Win 7 +@ stdcall GetConsoleOutputCP() +@ stdcall GetConsoleProcessList(ptr long) ; missing in XP SP3 +@ stdcall GetConsoleScreenBufferInfo(long ptr) +;@ stdcall GetConsoleScreenBufferInfoEx ; Win 7 +@ stdcall GetConsoleSelectionInfo(ptr) +@ stdcall GetConsoleTitleA(ptr long) +@ stdcall GetConsoleTitleW(ptr long) +@ stdcall GetConsoleWindow() +@ stdcall GetCurrencyFormatA(long long str ptr str long) +;@ stdcall GetCurrencyFormatEx ; Win 7 +@ stdcall GetCurrencyFormatW(long long str ptr str long) +@ stdcall GetCurrentActCtx(ptr) +@ stdcall GetCurrentConsoleFont(long long ptr) +;@ stdcall GetCurrentConsoleFontEx ; Win 7 +@ stdcall GetCurrentDirectoryA(long ptr) +@ stdcall GetCurrentDirectoryW(long ptr) +@ stdcall GetCurrentProcess() +@ stdcall GetCurrentProcessId() +@ stdcall GetCurrentProcessorNumber() ntdll.RtlGetCurrentProcessorNumber +;@ stdcall GetCurrentProcessorNumberEx ntdll.RtlGetCurrentProcessorNumberEx ; Win 7 +@ stdcall GetCurrentThread() +@ stdcall GetCurrentThreadId() +;@ stdcall GetCurrentUmsThread +@ stdcall GetDateFormatA(long long ptr str ptr long) +;@ stdcall GetDateFormatEx ; Win 7 +@ stdcall GetDateFormatW(long long ptr wstr ptr long) +@ stub GetDaylightFlag ; missing in XP SP3 and Win 7 +@ stdcall GetDefaultCommConfigA(str ptr long) +@ stdcall GetDefaultCommConfigW(wstr ptr long) +@ stdcall GetDefaultSortkeySize(ptr) ; missing in Win 7 +@ stdcall GetDevicePowerState(long ptr) +@ stdcall GetDiskFreeSpaceA(str ptr ptr ptr ptr) +@ stdcall GetDiskFreeSpaceExA (str ptr ptr ptr) +@ stdcall GetDiskFreeSpaceExW (wstr ptr ptr ptr) +@ stdcall GetDiskFreeSpaceW(wstr ptr ptr ptr ptr) +@ stdcall GetDllDirectoryA(long ptr) +@ stdcall GetDllDirectoryW(long ptr) +@ stdcall GetDriveTypeA(str) +@ stdcall GetDriveTypeW(wstr) +;@ stdcall GetDurationFormat ; Win 7 +;@ stdcall GetDurationFormatEx ; Win 7 +;@ stdcall GetDynamicTimeZoneInformation ; Win 7 +;@ stdcall GetEnabledExtendedFeatures api-ms-win-core-xstate-l1-1-0.RtlGetEnabledExtendedFeatures ; Win 7 +@ stdcall GetEnvironmentStrings() +@ stdcall GetEnvironmentStringsA() GetEnvironmentStrings +@ stdcall GetEnvironmentStringsW() +@ stdcall GetEnvironmentVariableA(str ptr long) +@ stdcall GetEnvironmentVariableW(wstr ptr long) +;@ stdcall GetEraNameCountedString ; Win 7 +@ stdcall GetErrorMode() +@ stdcall GetExitCodeProcess(long ptr) +@ stdcall GetExitCodeThread(long ptr) +@ stdcall GetExpandedNameA(str ptr) +@ stdcall GetExpandedNameW(wstr ptr) +;@ stdcall GetExtendedContextLength ; Win 7 +;@ stdcall GetExtendedFeaturesMask api-ms-win-core-xstate-l1-1-0.RtlGetExtendedFeaturesMask ; Win 7 +@ stdcall GetFileAttributesA(str) +@ stdcall GetFileAttributesByHandle(long ptr long) ; missing in Win 7 +@ stdcall GetFileAttributesExA(str long ptr) +@ stdcall GetFileAttributesExW(wstr long ptr) +;@ stdcall GetFileAttributesTransactedA ; Win 7 +;@ stdcall GetFileAttributesTransactedW ; Win 7 +@ stdcall GetFileAttributesW(wstr) +@ stdcall GetFileBandwidthReservation(long ptr ptr ptr ptr ptr) +@ stdcall GetFileInformationByHandle(long ptr) +;@ stdcall GetFileInformationByHandleEx ; Win 7 +;@ stdcall GetFileMUIInfo ; Win 7 +;@ stdcall GetFileMUIPath ; Win 7 +@ stdcall GetFileSize(long ptr) +@ stdcall GetFileSizeEx(long ptr) +@ stdcall GetFileTime(long ptr ptr ptr) +@ stdcall GetFileType(long) +@ stdcall GetFinalPathNameByHandleA(long str long long) +@ stdcall GetFinalPathNameByHandleW(long wstr long long) +@ stdcall GetFirmwareEnvironmentVariableA(str str ptr long) +@ stdcall GetFirmwareEnvironmentVariableW(wstr wstr ptr long) +@ stdcall GetFullPathNameA(str long ptr ptr) +;@ stdcall GetFullPathNameTransactedA ; Win 7 +;@ stdcall GetFullPathNameTransactedW ; Win 7 +@ stdcall GetFullPathNameW(wstr long ptr ptr) +@ stdcall GetGeoInfoA(long long ptr long long) +@ stdcall GetGeoInfoW(long long ptr long long) +@ stdcall GetHandleContext(long) ; missing on x64 +@ stdcall GetHandleInformation(long ptr) +@ stub GetSCallbackTarget ; missing in XP SP3 and Win 7 +@ stub GetSCallbackTemplate ; missing in XP SP3 and Win 7 +@ stdcall GetLargePageMinimum() +@ stdcall GetLargestConsoleWindowSize(long) +@ stdcall GetLastError() ntdll.RtlGetLastWin32Error +@ stdcall GetLinguistLangSize(ptr) ; missing in Win 7 +@ stdcall GetLocalTime(ptr) +@ stdcall GetLocaleInfoA(long long ptr long) +@ stdcall GetLocaleInfoEx(wstr long wstr long) ; Vista+ +@ stdcall GetLocaleInfoW(long long ptr long) +@ stdcall GetLogicalDriveStringsA(long ptr) +@ stdcall GetLogicalDriveStringsW(long ptr) +@ stdcall GetLogicalDrives() +@ stdcall GetLogicalProcessorInformation(ptr ptr) +;@ stdcall GetLogicalProcessorInformationEx api-ms-win-core-sysinfo-l1-1-0.GetLogicalProcessorInformationEx ; Win 7 +@ stdcall GetLongPathNameA (str long long) +;@ stdcall GetLongPathNameTransactedA ; Win 7 +;@ stdcall GetLongPathNameTransactedW ; Win 7 +@ stdcall GetLongPathNameW (wstr long long) +@ stdcall GetMailslotInfo(long ptr ptr ptr ptr) +;@ stdcall GetMaximumProcessorCount ; Win 7 +;@ stdcall GetMaximumProcessorGroupCount ; Win 7 +@ stdcall GetModuleFileNameA(long ptr long) +@ stdcall GetModuleFileNameW(long ptr long) +@ stdcall GetModuleHandleA(str) +@ stdcall GetModuleHandleExA(long ptr ptr) +@ stdcall GetModuleHandleExW(long ptr ptr) +@ stdcall GetModuleHandleW(wstr) +;@ stdcall GetNLSVersion ; Win 7 +;@ stdcall GetNLSVersionEx ; Win 7 +;@ stdcall GetNamedPipeAttribute ; Win 7 +;@ stdcall GetNamedPipeClientComputerNameA ; Win 7 +;@ stdcall GetNamedPipeClientComputerNameW ; Win 7 +;@ stdcall GetNamedPipeClientProcessId ; Win 7 +;@ stdcall GetNamedPipeClientSessionId ; Win 7 +@ stdcall GetNamedPipeHandleStateA(long ptr ptr ptr ptr str long) +@ stdcall GetNamedPipeHandleStateW(long ptr ptr ptr ptr wstr long) +@ stdcall GetNamedPipeInfo(long ptr ptr ptr ptr) +;@ stdcall GetNamedPipeServerProcessId ; Win 7 +;@ stdcall GetNamedPipeServerSessionId ; Win 7 +@ stdcall GetNativeSystemInfo(ptr) +;@ stdcall -arch=x86_64 GetNextUmsListItem +@ stdcall GetNextVDMCommand(long) +@ stdcall GetNlsSectionName(long long double str str double) ; missing in Win 7 +@ stdcall GetNumaAvailableMemory(ptr double ptr) ; missing in Win 7 +@ stdcall GetNumaAvailableMemoryNode(double ptr) +;@ stdcall GetNumaAvailableMemoryNodeEx ; Win 7 +@ stdcall GetNumaHighestNodeNumber(ptr) +;@ stdcall GetNumaNodeNumberFromHandle ; Win 7 +@ stdcall GetNumaNodeProcessorMask(double ptr) +;@ stdcall GetNumaNodeProcessorMaskEx ; Win 7 +@ stdcall GetNumaProcessorMap(ptr double ptr) ; missing in Win 7 +@ stdcall GetNumaProcessorNode(double ptr) +;@ stdcall GetNumaProcessorNodeEx ; Win 7 +;@ stdcall GetNumaProximityNode ; Win 7 +;@ stdcall GetNumaProximityNodeEx ; Win 7 +@ stdcall GetNumberFormatA(long long str ptr ptr long) +;@ stdcall GetNumberFormatEx ; Win 7 +@ stdcall GetNumberFormatW(long long wstr ptr ptr long) +@ stdcall GetNumberOfConsoleFonts() +@ stdcall GetNumberOfConsoleInputEvents(long ptr) +@ stdcall GetNumberOfConsoleMouseButtons(ptr) +@ stdcall GetOEMCP() +@ stdcall GetOverlappedResult(long ptr ptr long) +;@ stdcall GetPhysicallyInstalledSystemMemory ; Win 7 +@ stdcall GetPriorityClass(long) +@ stdcall GetPrivateProfileIntA(str str long str) +@ stdcall GetPrivateProfileIntW(wstr wstr long wstr) +@ stdcall GetPrivateProfileSectionA(str ptr long str) +@ stdcall GetPrivateProfileSectionNamesA(ptr long str) +@ stdcall GetPrivateProfileSectionNamesW(ptr long wstr) +@ stdcall GetPrivateProfileSectionW(wstr ptr long wstr) +@ stdcall GetPrivateProfileStringA(str str str ptr long str) +@ stdcall GetPrivateProfileStringW(wstr wstr wstr ptr long wstr) +@ stdcall GetPrivateProfileStructA (str str ptr long str) +@ stdcall GetPrivateProfileStructW(wstr wstr ptr long wstr) +@ stdcall GetProcAddress(long str) +@ stdcall GetProcessAffinityMask(long ptr ptr) +@ stdcall GetProcessFlags(long) +;@ stdcall GetProcessDEPPolicy ; Win 7 +;@ stdcall GetProcessGroupAffinity ; Win 7 +@ stdcall GetProcessHandleCount(long ptr) +@ stdcall GetProcessHeap() +@ stdcall GetProcessHeaps(long ptr) +@ stdcall GetProcessId(long) +;@ stdcall GetProcessIdOfThread ; Win 7 +@ stdcall GetProcessIoCounters(long ptr) +;@ stdcall GetProcessPreferredUILanguages ; Win 7 +@ stdcall GetProcessPriorityBoost(long ptr) +@ stdcall GetProcessShutdownParameters(ptr ptr) +@ stdcall GetProcessTimes(long ptr ptr ptr ptr) +@ stdcall GetProcessVersion(long) +@ stdcall GetProcessWorkingSetSize(long ptr ptr) +;@ stdcall GetProcessWorkingSetSizeEx ; Win 7 +;@ stdcall GetProcessorSystemCycleTime ; Win 7 +@ stdcall GetProductInfo(long long long long ptr) +@ stub GetProductName +@ stdcall GetProfileIntA(str str long) +@ stdcall GetProfileIntW(wstr wstr long) +@ stdcall GetProfileSectionA(str ptr long) +@ stdcall GetProfileSectionW(wstr ptr long) +@ stdcall GetProfileStringA(str str str ptr long) +@ stdcall GetProfileStringW(wstr wstr wstr ptr long) +@ stdcall GetQueuedCompletionStatus(long ptr ptr ptr long) +;@ stdcall GetQueuedCompletionStatusEx ; Win 7 +@ stub GetLSCallbackTarget ; missing in XP SP3 and Win 7 +@ stub GetLSCallbackTemplate ; missing in XP SP3 and Win 7 +@ stdcall GetShortPathNameA(str ptr long) +@ stdcall GetShortPathNameW(wstr ptr long) +@ stdcall GetStartupInfoA(ptr) +@ stdcall GetStartupInfoW(ptr) +@ stdcall GetStdHandle(long) +;@ stdcall GetStringScripts ; Win 7 +@ stdcall GetStringTypeA(long long str long ptr) +@ stdcall GetStringTypeExA(long long str long ptr) +@ stdcall GetStringTypeExW(long long wstr long ptr) +@ stdcall GetStringTypeW(long wstr long ptr) +;@ stdcall GetSystemDEPPolicy ; Win 7 +@ stdcall GetSystemDefaultLCID() +@ stdcall GetSystemDefaultLangID() +;@ stdcall GetSystemDefaultLocaleName ; Win 7 +@ stdcall GetSystemDefaultUILanguage() +@ stdcall GetSystemDirectoryA(ptr long) +@ stdcall GetSystemDirectoryW(ptr long) +;@ stdcall GetSystemFileCacheSize ; Win 7 +;@ stdcall GetSystemFirmwareTable ; Win 7 +@ stdcall GetSystemInfo(ptr) +@ stdcall GetSystemPowerStatus(ptr) +;@ stdcall GetSystemPreferredUILanguages ; Win 7 +@ stdcall GetSystemRegistryQuota(ptr ptr) +@ stdcall GetSystemTime(ptr) +@ stdcall GetSystemTimeAdjustment(ptr ptr ptr) +@ stdcall GetSystemTimeAsFileTime(ptr) +@ stdcall GetSystemTimes(ptr ptr ptr) +@ stdcall GetSystemWindowsDirectoryA(ptr long) +@ stdcall GetSystemWindowsDirectoryW(ptr long) +@ stdcall GetSystemWow64DirectoryA(ptr long) +@ stdcall GetSystemWow64DirectoryW(ptr long) +@ stdcall GetTapeParameters(ptr long ptr ptr) +@ stdcall GetTapePosition(ptr long ptr ptr ptr) +@ stdcall GetTapeStatus(ptr) +@ stdcall GetTempFileNameA(str str long ptr) +@ stdcall GetTempFileNameW(wstr wstr long ptr) +@ stdcall GetTempPathA(long ptr) +@ stdcall GetTempPathW(long ptr) +@ stdcall GetThreadContext(long ptr) +@ stdcall GetThreadErrorMode() +;@ stdcall GetThreadGroupAffinity ; Win 7 +@ stdcall GetThreadIOPendingFlag(long ptr) +@ stdcall GetThreadId(ptr) +;@ stdcall GetThreadIdealProcessorEx ; Win 7 +@ stdcall GetThreadLocale() +;@ stdcall GetThreadPreferredUILanguages ; Win 7 +@ stdcall GetThreadPriority(long) +@ stdcall GetThreadPriorityBoost(long ptr) +@ stdcall GetThreadSelectorEntry(long long ptr) +@ stdcall GetThreadTimes(long ptr ptr ptr ptr) +;@ stdcall GetThreadUILanguage ; Win 7 +@ stdcall GetTickCount() +@ stdcall -ret64 GetTickCount64() +@ stdcall GetTimeFormatA(long long ptr str ptr long) +;@ stdcall GetTimeFormatEx ; Win 7 +@ stdcall GetTimeFormatW(long long ptr wstr ptr long) +@ stdcall GetTimeZoneInformation(ptr) +;@ stdcall GetTimeZoneInformationForYear ; Win 7 +;@ stdcall GetUILanguageInfo ; Win 7 +;@ stdcall -arch=x86_64 GetUmsCompletionListEvent +@ stdcall GetUserDefaultLCID() +@ stdcall GetUserDefaultLangID() +;@ stdcall GetUserDefaultLocaleName ; Win 7 +@ stdcall GetUserDefaultUILanguage() +@ stdcall GetUserGeoID(long) +;@ stdcall GetUserPreferredUILanguages ; Win 7 +@ stdcall GetVDMCurrentDirectories(long long) +@ stdcall GetVersion() +@ stdcall GetVersionExA(ptr) +@ stdcall GetVersionExW(ptr) +@ stdcall GetVolumeInformationA(str ptr long ptr ptr ptr ptr long) +;@ stdcall GetVolumeInformationByHandleW ; Win 7 +@ stdcall GetVolumeInformationW(wstr ptr long ptr ptr ptr ptr long) +@ stdcall GetVolumeNameForVolumeMountPointA(str ptr long) +@ stdcall GetVolumeNameForVolumeMountPointW(wstr ptr long) +@ stdcall GetVolumePathNameA(str ptr long) +@ stdcall GetVolumePathNameW(wstr ptr long) +@ stdcall GetVolumePathNamesForVolumeNameA(str str long ptr) +@ stdcall GetVolumePathNamesForVolumeNameW(wstr wstr long ptr) +@ stdcall GetWindowsDirectoryA(ptr long) +@ stdcall GetWindowsDirectoryW(ptr long) +@ stdcall GetWriteWatch(long ptr long ptr ptr ptr) +@ stdcall GlobalAddAtomA(str) +@ stdcall GlobalAddAtomW(wstr) +@ stdcall GlobalAlloc(long long) +@ stdcall GlobalCompact(long) +@ stdcall GlobalDeleteAtom(long) +@ stdcall GlobalFindAtomA(str) +@ stdcall GlobalFindAtomW(wstr) +@ stdcall GlobalFix(long) +@ stdcall GlobalFlags(long) +@ stdcall GlobalFree(long) +@ stdcall GlobalGetAtomNameA(long ptr long) +@ stdcall GlobalGetAtomNameW(long ptr long) +@ stdcall GlobalHandle(ptr) +@ stdcall GlobalLock(long) +@ stdcall GlobalMemoryStatus(ptr) +@ stdcall GlobalMemoryStatusEx(ptr) +@ stdcall GlobalReAlloc(long long long) +@ stdcall GlobalSize(long) +@ stdcall GlobalUnWire(long) +@ stdcall GlobalUnfix(long) +@ stdcall GlobalUnlock(long) +@ stdcall GlobalWire(long) +@ stdcall Heap32First(ptr long long) +@ stdcall Heap32ListFirst(long ptr) +@ stdcall Heap32ListNext(long ptr) +@ stdcall Heap32Next(ptr) +@ stdcall HeapAlloc(long long long) ntdll.RtlAllocateHeap +@ stdcall HeapCompact(long long) +@ stdcall HeapCreate(long long long) +@ stdcall HeapCreateTagsW(long long wstr wstr) ; missing in Win 7 +@ stdcall HeapDestroy(long) +@ stdcall HeapExtend(long long ptr long) ; missing in Win 7 +@ stdcall HeapFree(long long long) ntdll.RtlFreeHeap +@ stdcall HeapLock(long) +@ stdcall HeapQueryInformation(long long ptr long ptr) +@ stdcall HeapQueryTagW(long long long long ptr) ; missing in Win 7 +@ stdcall HeapReAlloc(long long ptr long) ntdll.RtlReAllocateHeap +@ stub HeapSetFlags ; missing in XP SP3 and Win 7 +@ stdcall HeapSetInformation(ptr long ptr long) +@ stdcall HeapSize(long long ptr) ntdll.RtlSizeHeap +@ stdcall HeapSummary(long long ptr) +@ stdcall HeapUnlock(long) +@ stdcall HeapUsage(long long long long ptr) ; missing in Win 7 +@ stdcall HeapValidate(long long ptr) +@ stdcall HeapWalk(long ptr) +;@ stdcall IdnToAscii ; Win 7 +;@ stdcall IdnToNameprepUnicode ; Win 7 +;@ stdcall IdnToUnicode ; Win 7 +@ stdcall InitAtomTable(long) +;@ stdcall InitOnceBeginInitialize ; Win 7 +;@ stdcall InitOnceComplete ; Win 7 +;@ stdcall InitOnceExecuteOnce ; Win 7 +;@ stdcall InitOnceInitialize ntdll.RtlRunOnceInitialize ; Win 7 +;@ stdcall InitializeConditionVariable ntdll.RtlInitializeConditionVariable ; Win 7 +@ stdcall InitializeCriticalSection(ptr) ; FIXME: ntdll.RtlInitializeCriticalSection +@ stdcall InitializeCriticalSectionAndSpinCount(ptr long) +@ stdcall InitializeCriticalSectionEx(ptr long long) +;@ stdcall InitializeExtendedContext ; Win 7 +;@ stdcall InitializeProcThreadAttributeList api-ms-win-core-processthreads-l1-1-0.InitializeProcThreadAttributeList ; Win 7 +@ stdcall InitializeSListHead(ptr) ntdll.RtlInitializeSListHead +@ stdcall InitializeSRWLock(ptr) ntdll.RtlInitializeSRWLock +@ stdcall -arch=i386 InterlockedCompareExchange (ptr long long) +@ stdcall -arch=i386 -ret64 InterlockedCompareExchange64(ptr double double) ntdll.RtlInterlockedCompareExchange64 +@ stdcall -arch=i386 InterlockedDecrement(ptr) +@ stdcall -arch=i386 InterlockedExchange(ptr long) +@ stdcall -arch=i386 InterlockedExchangeAdd (ptr long ) +@ stdcall InterlockedFlushSList(ptr) ntdll.RtlInterlockedFlushSList +@ stdcall -arch=i386 InterlockedIncrement(ptr) +@ stdcall InterlockedPopEntrySList(ptr) ntdll.RtlInterlockedPopEntrySList +@ stdcall InterlockedPushEntrySList(ptr ptr) ntdll.RtlInterlockedPushEntrySList +;@ stdcall InterlockedPushListSList ntdll.RtlInterlockedPushListSList ; Win 7 +@ stdcall InvalidateConsoleDIBits(long long) +@ stub InvalidateNSCache ; missing in XP SP3 and Win 7 +@ stdcall IsBadCodePtr(ptr) +@ stdcall IsBadHugeReadPtr(ptr long) +@ stdcall IsBadHugeWritePtr(ptr long) +@ stdcall IsBadReadPtr(ptr long) +@ stdcall IsBadStringPtrA(ptr long) +@ stdcall IsBadStringPtrW(ptr long) +@ stdcall IsBadWritePtr(ptr long) +;@ stdcall IsCalendarLeapDay ; Win 7 +;@ stdcall IsCalendarLeapMonth ; Win 7 +;@ stdcall IsCalendarLeapYear ; Win 7 +@ stdcall IsDBCSLeadByte(long) +@ stdcall IsDBCSLeadByteEx(long long) +@ stdcall IsDebuggerPresent() +;@ stdcall IsNLSDefinedString ; Win 7 +;@ stdcall IsNormalizedString ; Win 7 +@ stdcall IsProcessInJob(long long ptr) +@ stdcall IsProcessorFeaturePresent(long) +@ stdcall IsSystemResumeAutomatic() +@ stdcall IsThreadAFiber() +;@ stdcall IsThreadAFiber ; Win 7 +;@ stdcall IsThreadpoolTimerSet ntdll.TpIsTimerSet ; Win 7 +;@ stdcall IsTimeZoneRedirectionEnabled ; Win 7 +;@ stdcall IsValidCalDateTime ; Win 7 +@ stdcall IsValidCodePage(long) +@ stdcall IsValidLanguageGroup(long long) +@ stdcall IsValidLocale(long long) +;@ stdcall IsValidLocaleName ; Win 7 +@ stdcall IsValidUILanguage(long) ; missing in Win 7 +@ stdcall IsWow64Process(ptr ptr) +;@ stdcall K32EmptyWorkingSet ; Win 7 +;@ stdcall K32EnumDeviceDrivers ; Win 7 +;@ stdcall K32EnumPageFilesA ; Win 7 +;@ stdcall K32EnumPageFilesW ; Win 7 +;@ stdcall K32EnumProcessModules ; Win 7 +;@ stdcall K32EnumProcessModulesEx ; Win 7 +;@ stdcall K32EnumProcesses ; Win 7 +;@ stdcall K32GetDeviceDriverBaseNameA ; Win 7 +;@ stdcall K32GetDeviceDriverBaseNameW ; Win 7 +;@ stdcall K32GetDeviceDriverFileNameA ; Win 7 +;@ stdcall K32GetDeviceDriverFileNameW ; Win 7 +;@ stdcall K32GetMappedFileNameA ; Win 7 +;@ stdcall K32GetMappedFileNameW ; Win 7 +;@ stdcall K32GetModuleBaseNameA ; Win 7 +;@ stdcall K32GetModuleBaseNameW ; Win 7 +;@ stdcall K32GetModuleFileNameExA ; Win 7 +;@ stdcall K32GetModuleFileNameExW ; Win 7 +;@ stdcall K32GetModuleInformation ; Win 7 +;@ stdcall K32GetPerformanceInfo ; Win 7 +;@ stdcall K32GetProcessImageFileNameA ; Win 7 +;@ stdcall K32GetProcessImageFileNameW ; Win 7 +;@ stdcall K32GetProcessMemoryInfo ; Win 7 +;@ stdcall K32GetWsChanges ; Win 7 +;@ stdcall K32GetWsChangesEx ; Win 7 +;@ stdcall K32InitializeProcessForWsWatch ; Win 7 +;@ stdcall K32QueryWorkingSet ; Win 7 +;@ stdcall K32QueryWorkingSetEx ; Win 7 +@ stdcall LCIDToLocaleName(long wstr long long) ; needed for wine gecko; missing in XP SP3 +@ stdcall LCMapStringA(long long str long ptr long) +;@ stdcall LCMapStringEx ; Win 7 +@ stdcall LCMapStringW(long long wstr long ptr long) +@ stdcall LZClose(long) +;@ stdcall LZCloseFile ; Win 7 +@ stdcall LZCopy(long long) +;@ stdcall LZCreateFileW ; Win 7 +@ stdcall LZDone() +@ stdcall LZInit(long) +@ stdcall LZOpenFileA(str ptr long) +@ stdcall LZOpenFileW(wstr ptr long) +@ stdcall LZRead(long str long) +@ stdcall LZSeek(long long long) +@ stdcall LZStart() +@ stdcall LeaveCriticalSection(ptr) ntdll.RtlLeaveCriticalSection +;@ stdcall LeaveCriticalSectionWhenCallbackReturns ntdll.TpCallbackLeaveCriticalSectionOnCompletion ; Win 7 +;@ stdcall LoadAppInitDlls ; Win 7 +@ stdcall LoadLibraryA(str) +@ stdcall LoadLibraryExA( str long long) +@ stdcall LoadLibraryExW(wstr long long) +@ stdcall LoadLibraryW(wstr) +@ stdcall LoadModule(str ptr) +@ stdcall LoadResource(long long) +;@ stdcall LoadStringBaseExW ; Win 7 +;@ stdcall LoadStringBaseW ; Win 7 +@ stdcall LocalAlloc(long long) +@ stdcall LocalCompact(long) +@ stdcall LocalFileTimeToFileTime(ptr ptr) +@ stdcall LocalFlags(long) +@ stdcall LocalFree(long) +@ stdcall LocalHandle(ptr) +@ stdcall LocalLock(long) +@ stdcall LocalReAlloc(long long long) +@ stdcall LocalShrink(long long) +@ stdcall LocalSize(long) +@ stdcall LocalUnlock(long) +;@ stub LocaleNameToLCID ; missing in XP SP3 +;@ stdcall LocateExtendedFeature api-ms-win-core-xstate-l1-1-0.RtlLocateExtendedFeature ; Win 7 +;@ stdcall LocateLegacyContext api-ms-win-core-xstate-l1-1-0.RtlLocateLegacyContext ; Win 7 +@ stdcall LockFile(long long long long long) +@ stdcall LockFileEx(long long long long long ptr) +@ stdcall LockResource(long) +@ stdcall MakeCriticalSectionGlobal(ptr) + +@ stdcall MapUserPhysicalPages(ptr long ptr) +@ stdcall MapUserPhysicalPagesScatter(ptr long ptr) +@ stdcall MapViewOfFile(long long long long long) +@ stdcall MapViewOfFileEx(long long long long long ptr) +;@ stdcall MapViewOfFileExNuma ; Win 7 +@ stdcall Module32First(long ptr) +@ stdcall Module32FirstW(long ptr) +@ stdcall Module32Next(long ptr) +@ stdcall Module32NextW(long ptr) +@ stdcall MoveFileA(str str) +@ stdcall MoveFileExA(str str long) +@ stdcall MoveFileExW(wstr wstr long) +;@ stdcall MoveFileTransactedA ; Win 7 +;@ stdcall MoveFileTransactedW ; Win 7 +@ stdcall MoveFileW(wstr wstr) +@ stdcall MoveFileWithProgressA(str str ptr ptr long) +@ stdcall MoveFileWithProgressW(wstr wstr ptr ptr long) +@ stdcall MulDiv(long long long) +@ stdcall MultiByteToWideChar(long long str long ptr long) +@ stdcall NeedCurrentDirectoryForExePathA(str) +@ stdcall NeedCurrentDirectoryForExePathW(wstr) +;@ stdcall NlsCheckPolicy ; Win 7 +@ stdcall NlsConvertIntegerToString(double double double wstr double) ; missing in Win 7 +;@ stdcall NlsEventDataDescCreate ; Win 7 +@ stdcall NlsGetCacheUpdateCount() +@ stub NlsResetProcessLocale ; missing in XP SP3 and Win 7 +;@ stdcall NlsUpdateLocale ; Win 7 +;@ stdcall NlsUpdateSystemLocale ; Win 7 +;@ stdcall NlsWriteEtwEvent ; Win 7 +;@ stdcall NormalizeString ; Win 7 +;@ stdcall NotifyMountMgr ; Win 7 +@ stub NotifyNLSUserCache ; missing in XP SP3 and win 7 +;@ stdcall NotifyUILanguageChange ; Win 7 +@ stdcall NumaVirtualQueryNode(long long long long) ; missing in win 7 +@ stdcall OpenConsoleW(wstr long long long) +@ stdcall OpenDataFile(long long) ; missing in Win 7 +@ stdcall OpenEventA(long long str) +@ stdcall OpenEventW(long long wstr) +@ stdcall OpenFile(str ptr long) +;@ stdcall OpenFileById ; Win 7 +@ stdcall OpenFileMappingA(long long str) +@ stdcall OpenFileMappingW(long long wstr) +@ stdcall OpenJobObjectA(long long str) +@ stdcall OpenJobObjectW(long long wstr) +@ stdcall OpenMutexA(long long str) +@ stdcall OpenMutexW(long long wstr) +;@ stdcall OpenPrivateNamespaceA ; Win 7 +;@ stdcall OpenPrivateNamespaceW ; Win 7 +@ stdcall OpenProcess(long long long) +;@ stdcall OpenProcessToken api-ms-win-core-processthreads-l1-1-0.OpenProcessToken ; Win 7 +@ stdcall OpenProfileUserMapping() +@ stdcall OpenSemaphoreA(long long str) +@ stdcall OpenSemaphoreW(long long wstr) +@ stdcall OpenThread(long long long) +;@ stdcall OpenThreadToken api-ms-win-core-processthreads-l1-1-0.OpenThreadToken ; win 7 +@ stdcall OpenWaitableTimerA(long long str) +@ stdcall OpenWaitableTimerW(long long wstr) +@ stdcall OutputDebugStringA(str) +@ stdcall OutputDebugStringW(wstr) +@ stdcall PeekConsoleInputA(ptr ptr long ptr) +@ stdcall PeekConsoleInputW(ptr ptr long ptr) +@ stdcall PeekNamedPipe(long ptr long ptr ptr ptr) +@ stdcall PostQueuedCompletionStatus(long long ptr ptr) +;@ stdcall PowerClearRequest ; Win 7 +;@ stdcall PowerCreateRequest ; Win 7 +;@ stdcall PowerSetRequest ; Win 7 +@ stdcall PrepareTape(ptr long long) +@ stdcall PrivCopyFileExW(wstr wstr ptr ptr long long) +@ stdcall PrivMoveFileIdentityW(long long long) +@ stdcall Process32First (ptr ptr) +@ stdcall Process32FirstW (ptr ptr) +@ stdcall Process32Next (ptr ptr) +@ stdcall Process32NextW (ptr ptr) +@ stdcall ProcessIdToSessionId(long ptr) +@ stdcall PulseEvent(long) +@ stdcall PurgeComm(long long) +;@ stdcall QueryActCtxSettingsW ; Win 7 +;@ stdcall QueryActCtxW(long ptr ptr long ptr long ptr) +@ stdcall QueryActCtxW(long ptr ptr long ptr long ptr) +@ stdcall QueryDepthSList(ptr) ntdll.RtlQueryDepthSList +@ stdcall QueryDosDeviceA(str ptr long) +@ stdcall QueryDosDeviceW(wstr ptr long) +@ stdcall QueryFullProcessImageNameA(ptr long str ptr) ; Vista and later +@ stdcall QueryFullProcessImageNameW(ptr long wstr ptr) ; Vista and later +;@ stdcall QueryIdleProcessorCycleTime ; Win 7 +;@ stdcall QueryIdleProcessorCycleTimeEx ; Win 7 +@ stdcall QueryInformationJobObject(long long ptr long ptr) +@ stdcall QueryMemoryResourceNotification(ptr ptr) +@ stub QueryNumberOfEventLogRecords ; missing in XP SP3 and Win 7 +@ stub QueryOldestEventLogRecord ; missing in XP SP3 and Win 7 +@ stdcall QueryPerformanceCounter(ptr) +@ stdcall QueryPerformanceFrequency(ptr) +;@ stdcall QueryProcessAffinityUpdateMode ; Win 7 +;@ stdcall QueryProcessCycleTime ; Win 7 +;@ stdcall QueryThreadCycleTime ; Win 7 +;@ stdcall QueryThreadProfiling ; Win 7 +;@ stdcall QueryThreadpoolStackInformation ; Win 7 +;@ stdcall -arch=x86_64 QueryUmsThreadInformation +;@ stdcall QueryUnbiasedInterruptTime ; Win 7 +@ stdcall QueryWin31IniFilesMappedToRegistry(long long long long) ; missing in Win 7 +@ stdcall QueueUserAPC(ptr long long) +@ stdcall QueueUserWorkItem(ptr ptr long) +@ stdcall RaiseException(long long long ptr) +;@ stdcall RaiseFailFastException ; Win 7 +@ stub ReOpenFile ;@ stdcall ReOpenFile(ptr long long long) +@ stdcall ReadConsoleA(long ptr long ptr ptr) +@ stdcall ReadConsoleInputA(long ptr long ptr) +@ stdcall ReadConsoleInputExA(long ptr long ptr long) +@ stdcall ReadConsoleInputExW(long ptr long ptr long) +@ stdcall ReadConsoleInputW(long ptr long ptr) +@ stdcall ReadConsoleOutputA(long ptr long long ptr) +@ stdcall ReadConsoleOutputAttribute(long ptr long long ptr) +@ stdcall ReadConsoleOutputCharacterA(long ptr long long ptr) +@ stdcall ReadConsoleOutputCharacterW(long ptr long long ptr) +@ stdcall ReadConsoleOutputW(long ptr long long ptr) +@ stdcall ReadConsoleW(long ptr long ptr ptr) +@ stdcall ReadDirectoryChangesW(long ptr long long long ptr ptr ptr) +@ stdcall ReadFile(long ptr long ptr ptr) +@ stdcall ReadFileEx(long ptr long ptr ptr) +@ stdcall ReadFileScatter(long ptr long ptr ptr) +@ stdcall ReadProcessMemory(long ptr ptr long ptr) +;@ stdcall ReadThreadProfilingData ; Win 7 +;@ stdcall RegCloseKey ; Win 7 +;@ stdcall RegCreateKeyExA ; Win 7 +;@ stdcall RegCreateKeyExW ; Win 7 +;@ stdcall RegDeleteKeyExA ; Win 7 +;@ stdcall RegDeleteKeyExW ; Win 7 +;@ stdcall RegDeleteTreeA ; Win 7 +;@ stdcall RegDeleteTreeW ; Win 7 +;@ stdcall RegDeleteValueA ; Win 7 +;@ stdcall RegDeleteValueW ; Win 7 +;@ stdcall RegDisablePredefinedCacheEx ; Win 7 +;@ stdcall RegEnumKeyExA ; Win 7 +;@ stdcall RegEnumKeyExW ; Win 7 +;@ stdcall RegEnumValueA ; Win 7 +;@ stdcall RegEnumValueW ; Win 7 +;@ stdcall RegFlushKey ; Win 7 +;@ stdcall RegGetKeySecurity ; Win 7 +;@ stdcall RegGetValueA ; Win 7 +;@ stdcall RegGetValueW ; Win 7 +;@ stdcall RegKrnGetGlobalState ; Win 7 +;@ stdcall RegKrnInitialize ; Win 7 +;@ stdcall RegLoadKeyA ; Win 7 +;@ stdcall RegLoadKeyW ; Win 7 +;@ stdcall RegLoadMUIStringA ; Win 7 +;@ stdcall RegLoadMUIStringW ; Win 7 +;@ stdcall RegNotifyChangeKeyValue ; Win 7 +;@ stdcall RegOpenCurrentUser ; Win 7 +;@ stdcall RegOpenKeyExA ; Win 7 +;@ stdcall RegOpenKeyExW ; Win 7 +;@ stdcall RegOpenUserClassesRoot ; Win 7 +;@ stdcall RegQueryInfoKeyA ; Win 7 +;@ stdcall RegQueryInfoKeyW ; Win 7 +;@ stdcall RegQueryValueExA ; Win 7 +;@ stdcall RegQueryValueExW ; Win 7 +;@ stdcall RegRestoreKeyA ; Win 7 +;@ stdcall RegRestoreKeyW ; Win 7 +;@ stdcall RegSaveKeyExA ; Win 7 +;@ stdcall RegSaveKeyExW ; Win 7 +;@ stdcall RegSetKeySecurity ; Win 7 +;@ stdcall RegSetValueExA ; Win 7 +;@ stdcall RegSetValueExW ; Win 7 +;@ stdcall RegUnLoadKeyA ; Win 7 +;@ stdcall RegUnLoadKeyW ; Win 7 +;@ stdcall RegisterApplicationRecoveryCallback ; Win 7 +@ stdcall RegisterApplicationRestart(wstr long) +@ stdcall RegisterConsoleIME(ptr ptr) +@ stdcall RegisterConsoleOS2(long) +@ stdcall RegisterConsoleVDM(long long long long long long long long long long long) +;@ stub RegisterServiceProcess ; missing in XP SP3 and Win 7 +@ stub RegisterSysMsgHandler ; missing in XP SP3 and win 7 +@ stdcall RegisterWaitForInputIdle(ptr) +@ stdcall RegisterWaitForSingleObject(ptr long ptr ptr long long) +@ stdcall RegisterWaitForSingleObjectEx(long ptr ptr long long) +@ stdcall RegisterWowBaseHandlers(long) +@ stdcall RegisterWowExec(long) +@ stdcall ReinitializeCriticalSection(ptr) +@ stdcall ReleaseActCtx(ptr) +@ stdcall ReleaseMutex(long) +;@ stdcall ReleaseMutexWhenCallbackReturns ntdll.TpCallbackReleaseMutexOnCompletion ; Win 7 +@ stdcall ReleaseSRWLockExclusive(ptr) ntdll.RtlReleaseSRWLockExclusive +@ stdcall ReleaseSRWLockShared(ptr) ntdll.RtlReleaseSRWLockShared +@ stdcall ReleaseSemaphore(long long ptr) +;@ stdcall ReleaseSemaphoreWhenCallbackReturns ntdll.TpCallbackReleaseSemaphoreOnCompletion ; Win 7 +@ stdcall RemoveDirectoryA(str) +;@ stdcall RemoveDirectoryTransactedA ; Win 7 +;@ stdcall RemoveDirectoryTransactedW ; Win 7 +@ stdcall RemoveDirectoryW(wstr) +@ stdcall RemoveLocalAlternateComputerNameA(str long) +@ stdcall RemoveLocalAlternateComputerNameW(wstr long) +;@ stdcall RemoveSecureMemoryCacheCallback ; Win 7 +@ stdcall RemoveVectoredContinueHandler(ptr) ntdll.RtlRemoveVectoredContinueHandler +@ stdcall RemoveVectoredExceptionHandler(ptr) ntdll.RtlRemoveVectoredExceptionHandler +@ stdcall ReplaceFile(wstr wstr wstr long ptr ptr) ReplaceFileW +@ stdcall ReplaceFileA(str str str long ptr ptr) +@ stdcall ReplaceFileW(wstr wstr wstr long ptr ptr) +;@ stdcall ReplacePartitionUnit ; Win 7 +@ stdcall RequestDeviceWakeup(long) +@ stdcall RequestWakeupLatency(long) +@ stdcall ResetEvent(long) +@ stdcall ResetWriteWatch(ptr long) +;@ stdcall ResolveLocaleName ; Win 7 +@ stdcall RestoreLastError(long) ntdll.RtlRestoreLastWin32Error +@ stdcall ResumeThread(long) +@ cdecl -arch=x86_64 RtlAddFunctionTable(ptr long long) ntdll.RtlAddFunctionTable +@ stdcall -register RtlCaptureContext(ptr) ntdll.RtlCaptureContext +@ stdcall RtlCaptureStackBackTrace(long long ptr ptr) ntdll.RtlCaptureStackBackTrace +@ stdcall -arch=x86_64 RtlCompareMemory(ptr ptr ptr) +@ stdcall -arch=x86_64 RtlCopyMemory(ptr ptr ptr) +@ stdcall -arch=x86_64 RtlDeleteFunctionTable(ptr) +@ stdcall RtlFillMemory(ptr long long) ntdll.RtlFillMemory +@ stdcall -arch=x86_64 RtlInstallFunctionTableCallback(double double long ptr ptr ptr) +@ stdcall -arch=x86_64 RtlLookupFunctionEntry(ptr ptr ptr) ntdll.RtlLookupFunctionEntry +@ stdcall RtlMoveMemory(ptr ptr long) ntdll.RtlMoveMemory +@ stdcall -arch=x86_64 RtlPcToFileHeader(ptr ptr) ntdll.RtlPcToFileHeader +@ stdcall -arch=x86_64 RtlRaiseException(ptr) ntdll.RtlRaiseException +@ stdcall -arch=x86_64 RtlRestoreContext(ptr ptr) ntdll.RtlRestoreContext +@ stdcall RtlUnwind(ptr ptr ptr long) ntdll.RtlUnwind +@ stdcall -arch=x86_64 RtlUnwindEx(ptr ptr ptr ptr ptr ptr) ntdll.RtlUnwindEx +@ stdcall -arch=x86_64 RtlVirtualUnwind(ptr ptr ptr long) ntdll.RtlVirtualUnwind +@ stdcall RtlZeroMemory(ptr long) ntdll.RtlZeroMemory +@ stdcall ScrollConsoleScreenBufferA(long ptr ptr ptr ptr) +@ stdcall ScrollConsoleScreenBufferW(long ptr ptr ptr ptr) +@ stdcall SearchPathA(str str str long ptr ptr) +@ stdcall SearchPathW(wstr wstr wstr long ptr ptr) +@ stdcall SetCPGlobal(long) ; missing in Win 7 +@ stdcall SetCalendarInfoA(long long long str) +@ stdcall SetCalendarInfoW(long long long wstr) +@ stdcall SetClientTimeZoneInformation(ptr) +@ stdcall SetComPlusPackageInstallStatus(ptr) +@ stdcall SetCommBreak(long) +@ stdcall SetCommConfig(long ptr long) +@ stdcall SetCommMask(long ptr) +@ stdcall SetCommState(long ptr) +@ stdcall SetCommTimeouts(long ptr) +@ stdcall SetComputerNameA(str) +@ stdcall SetComputerNameExA(long str) +@ stdcall SetComputerNameExW(long wstr) +@ stdcall SetComputerNameW(wstr) +@ stdcall SetConsoleActiveScreenBuffer(long) +@ stdcall SetConsoleCP(long) +@ stdcall SetConsoleCommandHistoryMode(long) ; missing in win 7 +@ stdcall SetConsoleCtrlHandler(ptr long) +@ stdcall SetConsoleCursor(long long) +@ stdcall SetConsoleCursorInfo(long ptr) +@ stdcall SetConsoleCursorMode(long long long) +@ stdcall SetConsoleCursorPosition(long long) +@ stdcall SetConsoleDisplayMode(long long ptr) +@ stdcall SetConsoleFont(long long) +@ stdcall SetConsoleHardwareState(long long long) +@ stdcall SetConsoleHistoryInfo(ptr) +@ stdcall SetConsoleIcon(ptr) +@ stdcall SetConsoleInputExeNameA(ptr) +@ stdcall SetConsoleInputExeNameW(ptr) +@ stdcall SetConsoleKeyShortcuts(long long long long) +@ stdcall SetConsoleLocalEUDC(long long long long) +@ stdcall SetConsoleMaximumWindowSize(long long) +@ stdcall SetConsoleMenuClose(long) +@ stdcall SetConsoleMode(long long) +@ stdcall SetConsoleNlsMode(long long) +@ stdcall SetConsoleNumberOfCommandsA(long long) +@ stdcall SetConsoleNumberOfCommandsW(long long) +@ stdcall SetConsoleOS2OemFormat(long) +@ stdcall SetConsoleOutputCP(long) +@ stdcall SetConsolePalette(long long long) +;@ stdcall SetConsoleScreenBufferInfoEx ; Win 7 +@ stdcall SetConsoleScreenBufferSize(long long) +@ stdcall SetConsoleTextAttribute(long long) +@ stdcall SetConsoleTitleA(str) +@ stdcall SetConsoleTitleW(wstr) +@ stdcall SetConsoleWindowInfo(long long ptr) +@ stdcall SetCriticalSectionSpinCount(ptr long) ntdll.RtlSetCriticalSectionSpinCount +;@ stdcall SetCurrentConsoleFontEx ; Win 7 +@ stdcall SetCurrentDirectoryA(str) +@ stdcall SetCurrentDirectoryW(wstr) +@ stub SetDaylightFlag ; missing in XP SP3 and Win 7 +@ stdcall SetDefaultCommConfigA(str ptr long) +@ stdcall SetDefaultCommConfigW(wstr ptr long) +@ stdcall SetDllDirectoryA(str) +@ stdcall SetDllDirectoryW(wstr) +;@ stdcall SetDynamicTimeZoneInformation ; Win 7 +@ stdcall SetEndOfFile(long) +;@ stdcall SetEnvironmentStringsA ; Win 7 +;@ stdcall SetEnvironmentStringsW ; Win 7 +@ stdcall SetEnvironmentVariableA(str str) +@ stdcall SetEnvironmentVariableW(wstr wstr) +@ stdcall SetErrorMode(long) +@ stdcall SetEvent(long) +;@ stdcall SetEventWhenCallbackReturns ntdll.TpCallbackSetEventOnCompletion ; Win 7 +;@ stdcall SetExtendedFeaturesMask api-ms-win-core-xstate-l1-1-0.RtlSetExtendedFeaturesMask ; Win 7 +@ stdcall SetFileApisToANSI() +@ stdcall SetFileApisToOEM() +@ stdcall SetFileAttributesA(str long) +;@ stdcall SetFileAttributesTransactedA ; Win 7 +;@ stdcall SetFileAttributesTransactedW ; Win 7 +@ stdcall SetFileAttributesW(wstr long) +;@ stdcall SetFileBandwidthReservation ; Win 7 +;@ stdcall SetFileCompletionNotificationModes ; Win 7 +;@ stdcall SetFileInformationByHandle ; Win 7 +;@ stdcall SetFileIoOverlappedRange ; Win 7 +@ stdcall SetFilePointer(long long ptr long) +@ stdcall SetFilePointerEx(long double ptr long) +@ stdcall SetFileShortNameA(long str) +@ stdcall SetFileShortNameW(long wstr) +@ stdcall SetFileTime(long ptr ptr ptr) +@ stdcall SetFileValidData(long double) +@ stdcall SetFirmwareEnvironmentVariableA(str str ptr long) +@ stdcall SetFirmwareEnvironmentVariableW(wstr wstr ptr long) +@ stdcall SetHandleContext(long long) ; missing in Win 7 x64 +@ stdcall SetHandleCount(long) +@ stdcall SetHandleInformation(long long long) +@ stdcall SetInformationJobObject(long long ptr long) +@ stub SetLastConsoleEventActive ; missing in XP SP3 +@ stdcall SetLastError(long) ntdll.RtlSetLastWin32Error +@ stub SetLocalPrimaryComputerNameA ; missing in XP SP3 +@ stub SetLocalPrimaryComputerNameW ; missing in XP SP3 +@ stdcall SetLocalTime(ptr) +@ stdcall SetLocaleInfoA(long long str) +@ stdcall SetLocaleInfoW(long long wstr) +@ stdcall SetMailslotInfo(long long) +@ stdcall SetMessageWaitingIndicator(long double) +;@ stdcall SetNamedPipeAttribute ; Win 7 +@ stdcall SetNamedPipeHandleState(long ptr ptr ptr) +@ stdcall SetPriorityClass(long long) +@ stdcall SetProcessAffinityMask(long long) +;@ stdcall SetProcessAffinityUpdateMode ; Win 7 +;@ stdcall SetProcessDEPPolicy ; Win 7 +;@ stdcall SetProcessPreferredUILanguages ; Win 7 +@ stdcall SetProcessPriorityBoost(long long) +@ stdcall SetProcessShutdownParameters(long long) +@ stdcall SetProcessWorkingSetSize(long long long) +;@ stdcall SetProcessWorkingSetSizeEx ; Win 7 +;@ stdcall SetSearchPathMode ; Win 7 +@ stdcall SetStdHandle(long long) +;@ stdcall SetStdHandleEx ; Win 7 +;@ stdcall SetSystemFileCacheSize ; Win 7 +@ stdcall SetSystemPowerState(long long) +@ stdcall SetSystemTime(ptr) +@ stdcall SetSystemTimeAdjustment(long long) +@ stdcall SetTapeParameters(ptr long ptr) +@ stdcall SetTapePosition(ptr long long long long long) +@ stdcall SetTermsrvAppInstallMode(long) +@ stdcall SetThreadAffinityMask(long long) +@ stdcall SetThreadContext(long ptr) +@ stdcall SetThreadErrorMode(long ptr) +@ stdcall SetThreadExecutionState(long) +;@ stdcall SetThreadGroupAffinity ; Win 7 +@ stdcall SetThreadIdealProcessor(long long) +;@ stdcall SetThreadIdealProcessorEx ; Win 7 +@ stdcall SetThreadLocale(long) +;@ stdcall SetThreadPreferredUILanguages ; Win 7 +@ stdcall SetThreadPriority(long long) +@ stdcall SetThreadPriorityBoost(long long) +;@ stdcall SetThreadStackGuarantee ; Win 7 +;@ stdcall SetThreadToken api-ms-win-core-processthreads-l1-1-0.SetThreadToken ; Win 7 +@ stdcall SetThreadUILanguage(long) +;@ stdcall SetThreadpoolStackInformation ; Win 7 +;@ stdcall SetThreadpoolThreadMaximum ntdll.TpSetPoolMaxThreads ; Win 7 +;@ stdcall SetThreadpoolThreadMinimum ; Win 7 +;@ stdcall SetThreadpoolTimer ntdll.TpSetTimer ; Win 7 +;@ stdcall SetThreadpoolWait ntdll.TpSetWait ; Win 7 +@ stdcall SetTimeZoneInformation(ptr) +@ stdcall SetTimerQueueTimer(long ptr ptr long long long) +;@ stdcall -arch?x86_64 SetUmsThreadInformation +@ stdcall SetUnhandledExceptionFilter(ptr) +@ stdcall SetUserGeoID(long) +@ stdcall SetVDMCurrentDirectories(long long) +@ stdcall SetVolumeLabelA(str str) +@ stdcall SetVolumeLabelW(wstr wstr) +@ stdcall SetVolumeMountPointA(str str) +@ stdcall SetVolumeMountPointW(wstr wstr) +@ stdcall SetWaitableTimer(long ptr long ptr ptr long) +;@ stdcall SetWaitableTimerEx api-ms-win-core-threadpool-l1-1-0.SetWaitableTimerEx ; Win 7 +@ stdcall SetupComm(long long long) +@ stdcall ShowConsoleCursor(long long) +@ stdcall SignalObjectAndWait(long long long long) +@ stdcall SizeofResource(long long) +@ stdcall Sleep(long) +;@ stdcall SleepConditionVariableCS ; Win 7 +;@ stdcall SleepConditionVariableSRW ; Win 7 +@ stdcall SleepEx(long long) +;@ stdcall SortCloseHandle ; Win 7 +;@ stdcall SortGetHandle ; Win 7 +;@ stdcall StartThreadpoolIo ntdll.TpStartAsyncIoOperation ; Win 7 +;@ stdcall SubmitThreadpoolWork ntdll.TpPostWork ; Win 7 +@ stdcall SuspendThread(long) +@ stdcall SwitchToFiber(ptr) +@ stdcall SwitchToThread() +@ stdcall SystemTimeToFileTime(ptr ptr) +@ stdcall SystemTimeToTzSpecificLocalTime (ptr ptr ptr) +@ stdcall TerminateJobObject(long long) +@ stdcall TerminateProcess(long long) +@ stdcall TerminateThread(long long) +@ stdcall TermsrvAppInstallMode() +@ stdcall Thread32First(long ptr) +@ stdcall Thread32Next(long ptr) +@ stdcall TlsAlloc() +@ stub TlsAllocInternal ; missing in XP SP3 and Win 7 +@ stdcall TlsFree(long) +@ stub TlsFreeInternal ; missing in XP SP3 and Win 7 +@ stdcall TlsGetValue(long) +@ stdcall TlsSetValue(long ptr) +@ stdcall Toolhelp32ReadProcessMemory(long ptr ptr long ptr) +@ stdcall TransactNamedPipe(long ptr long ptr long ptr ptr) +@ stdcall TransmitCommChar(long long) +@ stdcall TrimVirtualBuffer(ptr) ; missing in Win 7 +;@ stdcall TryAcquireSRWLockExclusive ntdll.RtlTryAcquireSRWLockExclusive ; Win 7 +;@ stdcall TryAcquireSRWLockShared ntdll.RtlTryAcquireSRWLockShared ; Win 7 +@ stdcall TryEnterCriticalSection(ptr) ntdll.RtlTryEnterCriticalSection +;@ stdcall TrySubmitThreadpoolCallback ; Win 7 +@ stdcall TzSpecificLocalTimeToSystemTime(ptr ptr ptr) +@ stdcall UTRegister(long str str str ptr ptr ptr) +@ stdcall UTUnRegister(long) +;@ stdcall -arch=x86_64 UmsThreadYield +@ stdcall UnhandledExceptionFilter(ptr) +@ stdcall UninitializeCriticalSection(ptr) +@ stdcall UnlockFile(long long long long long) +@ stdcall UnlockFileEx(long long long long ptr) +@ stdcall UnmapViewOfFile(ptr) +;@ stdcall UnregisterApplicationRecoveryCallback ; Win 7 +;@ stdcall UnregisterApplicationRestart ; Win 7 +@ stdcall UnregisterConsoleIME() +@ stdcall UnregisterWait(long) +@ stdcall UnregisterWaitEx(long long) +;@ stdcall UpdateCalendarDayOfWeek ; Win 7 +;@ stdcall UpdateProcThreadAttribute api-ms-win-core-processthreads-l1-1-0.UpdateProcThreadAttribute ; Win 7 +@ stdcall UpdateResourceA(long str str long ptr long) +@ stdcall UpdateResourceW(long wstr wstr long ptr long) +@ stdcall VDMConsoleOperation(long long) +@ stdcall VDMOperationStarted(long) +@ stub ValidateCType ; missing in XP SP3 and Win 7 +@ stub ValidateLocale ; missing in XP SP3 and Win 7 +@ stdcall VerLanguageNameA(long str long) +@ stdcall VerLanguageNameW(long wstr long) +@ stdcall -ret64 VerSetConditionMask(long long long long) ntdll.VerSetConditionMask +@ stdcall VerifyConsoleIoHandle(long) +;@ stdcall VerifyScripts ; Win 7 +@ stdcall VerifyVersionInfoA(long long double) +@ stdcall VerifyVersionInfoW(long long double) +@ stdcall VirtualAlloc(ptr long long long) +@ stdcall VirtualAllocEx(long ptr long long long) +;@ stdcall VirtualAllocExNuma ; Win 7 +@ stdcall VirtualBufferExceptionHandler(long long long) ; missing in Win 7 +@ stdcall VirtualFree(ptr long long) +@ stdcall VirtualFreeEx(long ptr long long) +@ stdcall VirtualLock(ptr long) +@ stdcall VirtualProtect(ptr long long ptr) +@ stdcall VirtualProtectEx(long ptr long long ptr) +@ stdcall VirtualQuery(ptr ptr long) +@ stdcall VirtualQueryEx(long ptr ptr long) +@ stdcall VirtualUnlock(ptr long) +;@ stdcall WTSGetActiveConsoleSessionId ; Win 7 +@ stdcall WaitCommEvent(long ptr ptr) +@ stdcall WaitForDebugEvent(ptr long) +@ stdcall WaitForMultipleObjects(long ptr long long) +@ stdcall WaitForMultipleObjectsEx(long ptr long long long) +@ stdcall WaitForSingleObject(long long) +@ stdcall WaitForSingleObjectEx(long long long) +;@ stdcall WaitForThreadpoolIoCallbacks ntdll.TpWaitForIoCompletion ; Win 7 +;@ stdcall WaitForThreadpoolTimerCallbacks ntdll.TpWaitForTimer ; Win 7 +;@ stdcall WaitForThreadpoolWaitCallbacks ntdll.TpWaitForWait ; Win 7 +;@ stdcall WaitForThreadpoolWorkCallbacks ntdll.TpWaitForWork ; Win 7 +@ stdcall WaitNamedPipeA (str long) +@ stdcall WaitNamedPipeW (wstr long) +@ stdcall WakeAllConditionVariable(ptr) ntdll.RtlWakeAllConditionVariable +@ stdcall WakeConditionVariable(ptr) ntdll.RtlWakeConditionVariable +;@ stdcall WerGetFlags ; Win 7 +;@ stdcall WerRegisterFile ; Win 7 +;@ stdcall WerRegisterMemoryBlock ; Win 7 +;@ stdcall WerRegisterRuntimeExceptionModule ; Win 7 +;@ stdcall WerSetFlags ; Win 7 +;@ stdcall WerUnregisterFile ; Win 7 +;@ stdcall WerUnregisterMemoryBlock ; Win 7 +;@ stdcall WerUnregisterRuntimeExceptionModule ; Win 7 +;@ stdcall WerpCleanupMessageMapping ; Win 7 +;@ stdcall WerpInitiateRemoteRecovery ; Win 7 +;@ stdcall WerpNotifyLoadStringResource ; Win 7 +;@ stdcall WerpNotifyLoadStringResourceEx ; Win 7 +;@ stdcall WerpNotifyUseStringResource ; Win 7 +;@ stdcall WerpStringLookup ; Win 7 +@ stdcall WideCharToMultiByte(long long wstr long ptr long ptr ptr) +@ stdcall WinExec(str long) +@ stdcall Wow64DisableWow64FsRedirection(ptr) +@ stdcall Wow64EnableWow64FsRedirection(long) +;@ stdcall Wow64GetThreadContext ; Win 7 +;@ stdcall Wow64GetThreadSelectorEntry ; Win 7 +@ stdcall Wow64RevertWow64FsRedirection(ptr) +;@ stdcall Wow64SetThreadContext ; Win 7 +;@ stdcall Wow64SuspendThread ; Win 7 +@ stdcall WriteConsoleA(long ptr long ptr ptr) +@ stdcall WriteConsoleInputA(long ptr long ptr) +@ stdcall WriteConsoleInputVDMA(long long long long) +@ stdcall WriteConsoleInputVDMW(long long long long) +@ stdcall WriteConsoleInputW(long ptr long ptr) +@ stdcall WriteConsoleOutputA(long ptr long long ptr) +@ stdcall WriteConsoleOutputAttribute(long ptr long long ptr) +@ stdcall WriteConsoleOutputCharacterA(long ptr long long ptr) +@ stdcall WriteConsoleOutputCharacterW(long ptr long long ptr) +@ stdcall WriteConsoleOutputW(long ptr long long ptr) +@ stdcall WriteConsoleW(long ptr long ptr ptr) +@ stdcall WriteFile(long ptr long ptr ptr) +@ stdcall WriteFileEx(long ptr long ptr ptr) +@ stdcall WriteFileGather(long ptr long ptr ptr) +@ stdcall WritePrivateProfileSectionA(str str str) +@ stdcall WritePrivateProfileSectionW(wstr wstr wstr) +@ stdcall WritePrivateProfileStringA(str str str str) +@ stdcall WritePrivateProfileStringW(wstr wstr wstr wstr) +@ stdcall WritePrivateProfileStructA (str str ptr long str) +@ stdcall WritePrivateProfileStructW(wstr wstr ptr long wstr) +@ stdcall WriteProcessMemory(long ptr ptr long ptr) +@ stdcall WriteProfileSectionA(str str) +@ stdcall WriteProfileSectionW(str str) +@ stdcall WriteProfileStringA(str str str) +@ stdcall WriteProfileStringW(wstr wstr wstr) +@ stdcall WriteTapemark(ptr long long long) +@ stdcall WTSGetActiveConsoleSessionId() ; missing in win 7 +@ stdcall ZombifyActCtx(ptr) +;@ stdcall -arch=x86_64 __C_specific_handler ntdll.__C_specific_handler +;@ stdcall -arch=x86_64 __chkstk ntdll.__chkstk +;@ stdcall -arch=x86_64 __misaligned_access ntdll.__misaligned_access +@ stub _DebugOut ; missing in XP SP3 and Win 7 +@ stub _DebugPrintf ; missing in XP SP3 and Win 7 +@ stdcall _hread(long ptr long) +@ stdcall _hwrite(long ptr long) +@ stdcall _lclose(long) +@ stdcall _lcreat(str long) +@ stdcall _llseek(long long long) +;@ stdcall -arch=x86_64 _local_unwind ntdll._local_unwind; Win 7 +@ stdcall _lopen(str long) +@ stdcall _lread(long ptr long) _hread +@ stdcall _lwrite(long ptr long) _hwrite +@ stub dprintf ; missing in XP SP3 and Win 7 +@ stdcall lstrcat(str str) lstrcatA +@ stdcall lstrcatA(str str) +@ stdcall lstrcatW(wstr wstr) +@ stdcall lstrcmp(str str) lstrcmpA +@ stdcall lstrcmpA(str str) +@ stdcall lstrcmpW(wstr wstr) +@ stdcall lstrcmpi(str str) lstrcmpiA +@ stdcall lstrcmpiA(str str) +@ stdcall lstrcmpiW(wstr wstr) +@ stdcall lstrcpy(ptr str) lstrcpyA +@ stdcall lstrcpyA(ptr str) +@ stdcall lstrcpyW(ptr wstr) +@ stdcall lstrcpyn(ptr str long) lstrcpynA +@ stdcall lstrcpynA(ptr str long) +@ stdcall lstrcpynW(ptr wstr long) +@ stdcall lstrlen(str) lstrlenA +@ stdcall lstrlenA(str) +@ stdcall lstrlenW(wstr) +;@ stdcall -arch=x86_64 uaw_lstrcmpW ; Win 7 +;@ stdcall -arch=x86_64 uaw_lstrcmpiW ; Win 7 +;@ stdcall -arch=x86_64 uaw_lstrlenW ; Win 7 +;@ stdcall -arch=x86_64 uaw_wcschr ; Win 7 +;@ stdcall -arch=x86_64 uaw_wcscpy ; Win 7 +;@ stdcall -arch=x86_64 uaw_wcsicmp ; Win 7 +;@ stdcall -arch=x86_64 uaw_wcslen ; Win 7 +;@ stdcall -arch=x86_64 uaw_wcsrchr ; Win 7 + diff --git a/dll/win32/kernel32/kernel32.pspec b/dll/win32/kernel32/kernel32.pspec index f0130a96267..dad314bc74d 100644 --- a/dll/win32/kernel32/kernel32.pspec +++ b/dll/win32/kernel32/kernel32.pspec @@ -578,16 +578,16 @@ @ stdcall GetNativeSystemInfo(ptr) ;@ stdcall -arch=x86_64 GetNextUmsListItem @ stdcall GetNextVDMCommand(long) -@ stdcall GetNlsSectionName(long long double str str double) ; missing in Win 7 -@ stdcall GetNumaAvailableMemory(ptr double ptr) ; missing in Win 7 -@ stdcall GetNumaAvailableMemoryNode(double ptr) +@ stdcall GetNlsSectionName(long long long str str long) ; missing in Win 7 +@ stdcall GetNumaAvailableMemory(ptr long ptr) ; missing in Win 7 +@ stdcall GetNumaAvailableMemoryNode(long ptr) ;@ stdcall GetNumaAvailableMemoryNodeEx ; Win 7 @ stdcall GetNumaHighestNodeNumber(ptr) ;@ stdcall GetNumaNodeNumberFromHandle ; Win 7 -@ stdcall GetNumaNodeProcessorMask(double ptr) +@ stdcall GetNumaNodeProcessorMask(long ptr) ;@ stdcall GetNumaNodeProcessorMaskEx ; Win 7 -@ stdcall GetNumaProcessorMap(ptr double ptr) ; missing in Win 7 -@ stdcall GetNumaProcessorNode(double ptr) +@ stdcall GetNumaProcessorMap(ptr long ptr) ; missing in Win 7 +@ stdcall GetNumaProcessorNode(long ptr) ;@ stdcall GetNumaProcessorNodeEx ; Win 7 ;@ stdcall GetNumaProximityNode ; Win 7 ;@ stdcall GetNumaProximityNodeEx ; Win 7 @@ -613,7 +613,7 @@ @ stdcall GetPrivateProfileStructW(wstr wstr ptr long wstr) @ stdcall GetProcAddress(long str) @ stdcall GetProcessAffinityMask(long ptr ptr) -@ stdcall GetProcessFlags(long) +//@ stdcall GetProcessFlags(long) ;@ stdcall GetProcessDEPPolicy ; Win 7 ;@ stdcall GetProcessGroupAffinity ; Win 7 @ stdcall GetProcessHandleCount(long ptr) @@ -630,7 +630,7 @@ @ stdcall GetProcessWorkingSetSize(long ptr ptr) ;@ stdcall GetProcessWorkingSetSizeEx ; Win 7 ;@ stdcall GetProcessorSystemCycleTime ; Win 7 -@ stdcall GetProductInfo(long long long long ptr) +;@ stdcall GetProductInfo(long long long long ptr) ; Win 7 @ stub GetProductName @ stdcall GetProfileIntA(str str long) @ stdcall GetProfileIntW(wstr wstr long) @@ -681,7 +681,7 @@ @ stdcall GetTempPathA(long ptr) @ stdcall GetTempPathW(long ptr) @ stdcall GetThreadContext(long ptr) -@ stdcall GetThreadErrorMode() +;@ stdcall GetThreadErrorMode() ; Win 7 ;@ stdcall GetThreadGroupAffinity ; Win 7 @ stdcall GetThreadIOPendingFlag(long ptr) @ stdcall GetThreadId(ptr) @@ -896,8 +896,7 @@ @ stdcall LockFile(long long long long long) @ stdcall LockFileEx(long long long long long ptr) @ stdcall LockResource(long) -@ stdcall MakeCriticalSectionGlobal(ptr) - +;@ stdcall MakeCriticalSectionGlobal(ptr) // ??? @ stdcall MapUserPhysicalPages(ptr long ptr) @ stdcall MapUserPhysicalPagesScatter(ptr long ptr) @ stdcall MapViewOfFile(long long long long long) @@ -920,7 +919,7 @@ @ stdcall NeedCurrentDirectoryForExePathA(str) @ stdcall NeedCurrentDirectoryForExePathW(wstr) ;@ stdcall NlsCheckPolicy ; Win 7 -@ stdcall NlsConvertIntegerToString(double double double wstr double) ; missing in Win 7 +@ stdcall NlsConvertIntegerToString(long long long wstr long) ; missing in Win 7 ;@ stdcall NlsEventDataDescCreate ; Win 7 @ stdcall NlsGetCacheUpdateCount() @ stub NlsResetProcessLocale ; missing in XP SP3 and Win 7 @@ -1074,7 +1073,7 @@ @ stdcall RegisterWaitForSingleObjectEx(long ptr ptr long long) @ stdcall RegisterWowBaseHandlers(long) @ stdcall RegisterWowExec(long) -@ stdcall ReinitializeCriticalSection(ptr) +;@ stdcall ReinitializeCriticalSection(ptr) ; ??? @ stdcall ReleaseActCtx(ptr) @ stdcall ReleaseMutex(long) ;@ stdcall ReleaseMutexWhenCallbackReturns ntdll.TpCallbackReleaseMutexOnCompletion ; Win 7 @@ -1218,7 +1217,7 @@ @ stdcall SetLocaleInfoA(long long str) @ stdcall SetLocaleInfoW(long long wstr) @ stdcall SetMailslotInfo(long long) -@ stdcall SetMessageWaitingIndicator(long double) +@ stdcall SetMessageWaitingIndicator(ptr long) ;@ stdcall SetNamedPipeAttribute ; Win 7 @ stdcall SetNamedPipeHandleState(long ptr ptr ptr) @ stdcall SetPriorityClass(long long) @@ -1242,7 +1241,7 @@ @ stdcall SetTermsrvAppInstallMode(long) @ stdcall SetThreadAffinityMask(long long) @ stdcall SetThreadContext(long ptr) -@ stdcall SetThreadErrorMode(long ptr) +;@ stdcall SetThreadErrorMode(long ptr) ; Win 7 @ stdcall SetThreadExecutionState(long) ;@ stdcall SetThreadGroupAffinity ; Win 7 @ stdcall SetThreadIdealProcessor(long long) @@ -1313,7 +1312,7 @@ @ stdcall UTUnRegister(long) ;@ stdcall -arch=x86_64 UmsThreadYield @ stdcall UnhandledExceptionFilter(ptr) -@ stdcall UninitializeCriticalSection(ptr) +;@ stdcall UninitializeCriticalSection(ptr) ; ??? @ stdcall UnlockFile(long long long long long) @ stdcall UnlockFileEx(long long long long ptr) @ stdcall UnmapViewOfFile(ptr) diff --git a/dll/win32/kernel32/kernel32.rbuild b/dll/win32/kernel32/kernel32.rbuild index d72472ec693..47a79fc91b5 100644 --- a/dll/win32/kernel32/kernel32.rbuild +++ b/dll/win32/kernel32/kernel32.rbuild @@ -6,7 +6,6 @@ . include include/reactos/subsys - wine pseh normalize ntdll diff --git a/dll/win32/kernel32/misc/actctx.c b/dll/win32/kernel32/misc/actctx.c index 5710a8f8581..2cf99fef463 100644 --- a/dll/win32/kernel32/misc/actctx.c +++ b/dll/win32/kernel32/misc/actctx.c @@ -13,10 +13,9 @@ /* synched with wine 1.1.26 */ #include - -#include "wine/debug.h" - -WINE_DEFAULT_DEBUG_CHANNEL(actctx); +#define NDEBUG +#include +static ULONG gDebugChannel = actctx; #define ACTCTX_FAKE_HANDLE ((HANDLE) 0xf00baa) diff --git a/dll/win32/kernel32/misc/console.c b/dll/win32/kernel32/misc/console.c index d1e8a97038e..b608367b1c5 100644 --- a/dll/win32/kernel32/misc/console.c +++ b/dll/win32/kernel32/misc/console.c @@ -1371,20 +1371,6 @@ SetConsolePalette(DWORD Unknown0, return FALSE; } - -/* - * @unimplemented (Undocumented) - */ -BOOL -WINAPI -SetLastConsoleEventActive(VOID) -{ - DPRINT1("SetLastConsoleEventActive() UNIMPLEMENTED!\n"); - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return FALSE; -} - - /* * @unimplemented (Undocumented) */ diff --git a/dll/win32/kernel32/misc/format_msg.c b/dll/win32/kernel32/misc/format_msg.c index 228ba4da518..122cac57f6e 100644 --- a/dll/win32/kernel32/misc/format_msg.c +++ b/dll/win32/kernel32/misc/format_msg.c @@ -20,12 +20,9 @@ */ #include - - -#include "wine/unicode.h" -#include "wine/debug.h" - -WINE_DEFAULT_DEBUG_CHANNEL(resource); +#define NDEBUG +#include +static ULONG gDebugChannel = resource; struct format_args { diff --git a/dll/win32/kernel32/misc/lcformat.c b/dll/win32/kernel32/misc/lcformat.c index 1813a5c7ba2..132452bb845 100644 --- a/dll/win32/kernel32/misc/lcformat.c +++ b/dll/win32/kernel32/misc/lcformat.c @@ -30,12 +30,9 @@ */ #include - -#include "wine/config.h" -#include "wine/unicode.h" -#include - -WINE_DEFAULT_DEBUG_CHANNEL(nls); +#define NDEBUG +#include +static ULONG gDebugChannel = resource; #define DATE_DATEVARSONLY 0x0100 /* only date stuff: yMdg */ #define TIME_TIMEVARSONLY 0x0200 /* only time stuff: hHmst */ @@ -1047,8 +1044,10 @@ INT WINAPI GetNumberFormatW(LCID lcid, DWORD dwFlags, TRACE("(0x%04x,0x%08x,%s,%p,%p,%d)\n", lcid, dwFlags, debugstr_w(lpszValue), lpFormat, lpNumberStr, cchOut); + lcid = ConvertDefaultLocale(lcid); + if (!lpszValue || cchOut < 0 || (cchOut > 0 && !lpNumberStr) || - !IsValidLocale(lcid, 0) || + !IsValidLocale(lcid, LCID_INSTALLED) || (lpFormat && (dwFlags || !lpFormat->lpDecimalSep || !lpFormat->lpThousandSep))) { goto error; @@ -1418,8 +1417,10 @@ INT WINAPI GetCurrencyFormatW(LCID lcid, DWORD dwFlags, TRACE("(0x%04x,0x%08x,%s,%p,%p,%d)\n", lcid, dwFlags, debugstr_w(lpszValue), lpFormat, lpCurrencyStr, cchOut); + lcid = ConvertDefaultLocale(lcid); + if (!lpszValue || cchOut < 0 || (cchOut > 0 && !lpCurrencyStr) || - !IsValidLocale(lcid, 0) || + !IsValidLocale(lcid, LCID_INSTALLED) || (lpFormat && (dwFlags || !lpFormat->lpDecimalSep || !lpFormat->lpThousandSep || !lpFormat->lpCurrencySymbol || lpFormat->NegativeOrder > 15 || lpFormat->PositiveOrder > 3))) diff --git a/dll/win32/kernel32/misc/profile.c b/dll/win32/kernel32/misc/profile.c index e327029f378..57805aa11dd 100644 --- a/dll/win32/kernel32/misc/profile.c +++ b/dll/win32/kernel32/misc/profile.c @@ -84,25 +84,6 @@ static RTL_CRITICAL_SECTION PROFILE_CritSect = { &critsect_debug, -1, 0, 0, 0, 0 static const char hex[16] = "0123456789ABCDEF"; -static __inline WCHAR *memchrW( const WCHAR *ptr, WCHAR ch, size_t n ) -{ - const WCHAR *end; - for (end = ptr + n; ptr < end; ptr++) - if (*ptr == ch) - return (WCHAR *)(ULONG_PTR)ptr; - return NULL; -} - -static __inline WCHAR *memrchrW( const WCHAR *ptr, WCHAR ch, size_t n ) -{ - const WCHAR *end; - WCHAR *ret = NULL; - for (end = ptr + n; ptr < end; ptr++) - if (*ptr == ch) - ret = (WCHAR *)(ULONG_PTR)ptr; - return ret; -} - /*********************************************************************** * PROFILE_CopyEntry * diff --git a/dll/win32/kernel32/misc/stubs.c b/dll/win32/kernel32/misc/stubs.c index c852f34d1f9..030f07c30d6 100644 --- a/dll/win32/kernel32/misc/stubs.c +++ b/dll/win32/kernel32/misc/stubs.c @@ -958,17 +958,6 @@ SetThreadStackGuarantee(IN OUT PULONG StackSizeInBytes) return FALSE; } -HANDLE -WINAPI -ReOpenFile(IN HANDLE hOriginalFile, - IN DWORD dwDesiredAccess, - IN DWORD dwShareMode, - IN DWORD dwFlags) -{ - STUB; - return INVALID_HANDLE_VALUE; -} - BOOL WINAPI SetProcessWorkingSetSizeEx(IN HANDLE hProcess, @@ -1259,3 +1248,134 @@ UnregisterConsoleIME(VOID) STUB; return FALSE; } + +/* + * @unimplemented + */ +BOOL +WINAPI +BaseCheckRunApp(IN DWORD Unknown1, + IN DWORD Unknown2, + IN DWORD Unknown3, + IN DWORD Unknown4, + IN DWORD Unknown5, + IN DWORD Unknown6, + IN DWORD Unknown7, + IN DWORD Unknown8, + IN DWORD Unknown9, + IN DWORD Unknown10) +{ + STUB; + return FALSE; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +BasepCheckWinSaferRestrictions(IN DWORD Unknown1, + IN DWORD Unknown2, + IN DWORD Unknown3, + IN DWORD Unknown4, + IN DWORD Unknown5, + IN DWORD Unknown6) +{ + STUB; + return FALSE; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +NumaVirtualQueryNode(IN DWORD Unknown1, + IN DWORD Unknown2, + IN DWORD Unknown3, + IN DWORD Unknown4) +{ + STUB; + return FALSE; +} + +/* + * @unimplemented + */ +HANDLE +WINAPI +ReOpenFile(IN HANDLE hOriginalFile, + IN DWORD dwDesiredAccess, + IN DWORD dwShareMode, + IN DWORD dwFlags) +{ + STUB; + return INVALID_HANDLE_VALUE; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +SetLastConsoleEventActive(VOID) +{ + STUB; + return FALSE; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +SetConsoleCommandHistoryMode(IN DWORD dwMode) +{ + STUB; + return FALSE; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +SetLocalPrimaryComputerNameA(IN DWORD Unknown1, + IN DWORD Unknown2) +{ + STUB; + return FALSE; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +SetLocalPrimaryComputerNameW(IN DWORD Unknown1, + IN DWORD Unknown2) +{ + STUB; + return FALSE; +} + +/* + * @unimplemented + */ +VOID +WINAPI +SetTermsrvAppInstallMode(IN BOOL bInstallMode) +{ + STUB; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +TermsrvAppInstallMode(VOID) +{ + STUB; + return FALSE; +} diff --git a/dll/win32/kernel32/misc/version.c b/dll/win32/kernel32/misc/version.c index cba61e387f3..bb9288e930f 100644 --- a/dll/win32/kernel32/misc/version.c +++ b/dll/win32/kernel32/misc/version.c @@ -9,10 +9,9 @@ #include #include - -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32Ver); +#define NDEBUG +#include +static ULONG gDebugChannel = kernel32ver; #define UNICODIZE1(x) L##x #define UNICODIZE(x) UNICODIZE1(x) diff --git a/dll/win32/kernel32/process/session.c b/dll/win32/kernel32/process/session.c index 5df4c984a3a..3c61ebec7a6 100644 --- a/dll/win32/kernel32/process/session.c +++ b/dll/win32/kernel32/process/session.c @@ -9,9 +9,9 @@ * 2001-12-07 created */ #include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(kernel32session); +#define NDEBUG +#include +//static ULONG gDebugChannel = kernel32session; not actually used DWORD ActiveConsoleSessionId = 0; diff --git a/dll/win32/msafd/misc/dllmain.c b/dll/win32/msafd/misc/dllmain.c index a5e33ae088d..5714213cd5a 100644 --- a/dll/win32/msafd/misc/dllmain.c +++ b/dll/win32/msafd/misc/dllmain.c @@ -1910,6 +1910,7 @@ WSPIoctl(IN SOCKET Handle, OUT LPINT lpErrno) { PSOCKET_INFORMATION Socket = NULL; + BOOLEAN NeedsCompletion; /* Get the Socket Structure associate to this Socket*/ Socket = GetSocketStructure(Handle); @@ -1918,6 +1919,8 @@ WSPIoctl(IN SOCKET Handle, *lpErrno = WSAENOTSOCK; return SOCKET_ERROR; } + + *lpcbBytesReturned = 0; switch( dwIoControlCode ) { @@ -1928,17 +1931,44 @@ WSPIoctl(IN SOCKET Handle, return SOCKET_ERROR; } Socket->SharedData.NonBlocking = *((PULONG)lpvInBuffer) ? 1 : 0; - return SetSocketInformation(Socket, AFD_INFO_BLOCKING_MODE, (PULONG)lpvInBuffer, NULL); + *lpErrno = SetSocketInformation(Socket, AFD_INFO_BLOCKING_MODE, (PULONG)lpvInBuffer, NULL); + if (*lpErrno != NO_ERROR) + return SOCKET_ERROR; + else + return NO_ERROR; case FIONREAD: if( cbOutBuffer < sizeof(INT) || IS_INTRESOURCE(lpvOutBuffer) ) { *lpErrno = WSAEFAULT; return SOCKET_ERROR; } - return GetSocketInformation(Socket, AFD_INFO_RECEIVE_CONTENT_SIZE, (PULONG)lpvOutBuffer, NULL); + *lpErrno = GetSocketInformation(Socket, AFD_INFO_RECEIVE_CONTENT_SIZE, (PULONG)lpvOutBuffer, NULL); + if (*lpErrno != NO_ERROR) + return SOCKET_ERROR; + else + { + *lpcbBytesReturned = sizeof(ULONG); + return NO_ERROR; + } default: - *lpErrno = WSAEINVAL; - return SOCKET_ERROR; + *lpErrno = Socket->HelperData->WSHIoctl(Socket->HelperContext, + Handle, + Socket->TdiAddressHandle, + Socket->TdiConnectionHandle, + dwIoControlCode, + lpvInBuffer, + cbInBuffer, + lpvOutBuffer, + cbOutBuffer, + lpcbBytesReturned, + lpOverlapped, + lpCompletionRoutine, + (LPBOOL)&NeedsCompletion); + + if (*lpErrno != NO_ERROR) + return SOCKET_ERROR; + else + return NO_ERROR; } } diff --git a/dll/win32/msvcrt/msvcrt.spec b/dll/win32/msvcrt/msvcrt.spec index 2c7ed3f9894..14f71694065 100644 --- a/dll/win32/msvcrt/msvcrt.spec +++ b/dll/win32/msvcrt/msvcrt.spec @@ -126,9 +126,9 @@ @ cdecl __RTDynamicCast(ptr long ptr ptr long) MSVCRT___RTDynamicCast @ cdecl __RTtypeid(ptr) MSVCRT___RTtypeid @ cdecl __STRINGTOLD(ptr ptr str long) -# @ cdecl ___lc_codepage_func() +@ cdecl ___lc_codepage_func() # @ cdecl ___lc_collate_cp_func() -# @ cdecl ___lc_handle_func() +@ cdecl ___lc_handle_func() # @ cdecl ___mb_cur_max_func() MSVCRT___mb_cur_max_func @ cdecl ___setlc_active_func() @ cdecl ___unguarded_readlc_active_add_func() @@ -151,10 +151,10 @@ @ cdecl __isascii(long) __isascii @ cdecl __iscsym(long) __iscsym @ cdecl __iscsymf(long) __iscsymf -@ extern __lc_codepage __lc_codepage +@ extern __lc_codepage MSVCRT___lc_codepage @ stub __lc_collate -@ extern __lc_collate_cp __lc_collate_cp -@ extern __lc_handle __lc_handle +@ extern __lc_collate_cp MSVCRT___lc_collate_cp +@ extern __lc_handle MSVCRT___lc_handle @ cdecl __lconv_init() # stub __libm_sse2_acos # stub __libm_sse2_acosf diff --git a/dll/win32/shell32/iconcache.c b/dll/win32/shell32/iconcache.c index 41883acff50..a57c33e52c6 100644 --- a/dll/win32/shell32/iconcache.c +++ b/dll/win32/shell32/iconcache.c @@ -175,37 +175,16 @@ static HICON SIC_OverlayShortcutImage(HICON SourceIcon, BOOL large) if (! BitBlt(TargetDC, 0, 0, SourceBitmapInfo.bmWidth, SourceBitmapInfo.bmHeight, SourceDC, 0, 0, SRCCOPY)) goto fail; - /* Check if we can use alpha blending */ - if (ShortcutBitmapInfo.bmBitsPixel == 32) - { - /* Use alpha blending to make sure the target alpha channel stays valid */ - if (NULL == SelectObject(ShortcutDC, ShortcutIconInfo.hbmColor)) goto fail; - if (!GdiAlphaBlend(TargetDC, 0, SourceBitmapInfo.bmHeight - ShortcutBitmapInfo.bmHeight, - ShortcutBitmapInfo.bmWidth, ShortcutBitmapInfo.bmHeight, - ShortcutDC, 0, 0, ShortcutBitmapInfo.bmWidth, ShortcutBitmapInfo.bmHeight, - (BLENDFUNCTION){AC_SRC_OVER, 0, 255, AC_SRC_ALPHA})) goto fail; - } - else - { - /* Copy the source xor bitmap to the target and clear out part of it by using - the shortcut mask */ - if (! BitBlt(TargetDC, 0, SourceBitmapInfo.bmHeight - ShortcutBitmapInfo.bmHeight, - ShortcutBitmapInfo.bmWidth, ShortcutBitmapInfo.bmHeight, - ShortcutDC, 0, 0, SRCAND)) - { - goto fail; - } - - if (NULL == SelectObject(ShortcutDC, ShortcutIconInfo.hbmColor)) goto fail; - - /* Now put in the shortcut xor mask */ - if (! BitBlt(TargetDC, 0, SourceBitmapInfo.bmHeight - ShortcutBitmapInfo.bmHeight, - ShortcutBitmapInfo.bmWidth, ShortcutBitmapInfo.bmHeight, - ShortcutDC, 0, 0, SRCINVERT)) - { - goto fail; - } - } + /* Copy the source xor bitmap to the target and clear out part of it by using + the shortcut mask */ + if (NULL == SelectObject(ShortcutDC, ShortcutIconInfo.hbmColor)) goto fail; + if (!MaskBlt(TargetDC, 0, SourceBitmapInfo.bmHeight - ShortcutBitmapInfo.bmHeight, + ShortcutBitmapInfo.bmWidth, ShortcutBitmapInfo.bmHeight, + ShortcutDC, 0, 0, ShortcutIconInfo.hbmMask, 0, 0, + MAKEROP4(SRCCOPY, 0xAA0000))) + { + goto fail; + } /* Clean up, we're not goto'ing to 'fail' after this so we can be lazy and not set handles to NULL */ diff --git a/dll/win32/shlwapi/string.c b/dll/win32/shlwapi/string.c index 6102f3c928c..1609c3812b1 100644 --- a/dll/win32/shlwapi/string.c +++ b/dll/win32/shlwapi/string.c @@ -91,7 +91,7 @@ static void FillNumberFmt(NUMBERFMTW *fmt, LPWSTR decimal_buffer, int decimal_bu * Format an integer according to the current locale * * RETURNS - * The number of bytes written on success or 0 on failure + * The number of characters written on success or 0 on failure */ static int FormatInt(LONGLONG qdwValue, LPWSTR pszBuf, int cchBuf) { @@ -124,7 +124,7 @@ static int FormatInt(LONGLONG qdwValue, LPWSTR pszBuf, int cchBuf) * after the decimal point * * RETURNS - * The number of bytes written on success or 0 on failure + * The number of characters written on success or 0 on failure */ static int FormatDouble(double value, int decimals, LPWSTR pszBuf, int cchBuf) { diff --git a/dll/win32/ws2_32/misc/dllmain.c b/dll/win32/ws2_32/misc/dllmain.c index b71f80ebc0d..6eeb37efcac 100644 --- a/dll/win32/ws2_32/misc/dllmain.c +++ b/dll/win32/ws2_32/misc/dllmain.c @@ -459,7 +459,7 @@ select(IN INT nfds, DereferenceProviderByPointer(Provider); - if (Errno != NO_ERROR) + if (Count == SOCKET_ERROR) { WSASetLastError(Errno); return SOCKET_ERROR; @@ -586,13 +586,15 @@ ioctlsocket(IN SOCKET s, IN LONG cmd, IN OUT ULONG FAR* argp) { + ULONG tmp; + return WSAIoctl(s, cmd, argp, sizeof(ULONG), argp, sizeof(ULONG), - argp, + &tmp, 0, 0); } @@ -642,7 +644,7 @@ WSAAccept(IN SOCKET s, if (Socket == INVALID_SOCKET) WSASetLastError(Errno); - if ( addr ) + if ( addr && addrlen ) { #if DBG LPSOCKADDR_IN sa = (LPSOCKADDR_IN)addr; diff --git a/drivers/bus/pcix/device.c b/drivers/bus/pcix/device.c index 05d307dc57f..4dbd16bcfdc 100644 --- a/drivers/bus/pcix/device.c +++ b/drivers/bus/pcix/device.c @@ -20,32 +20,238 @@ VOID NTAPI Device_SaveCurrentSettings(IN PPCI_CONFIGURATOR_CONTEXT Context) { - UNIMPLEMENTED; - while (TRUE); + PPCI_COMMON_HEADER PciData; + PIO_RESOURCE_DESCRIPTOR IoDescriptor; + PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor; + PPCI_FUNCTION_RESOURCES Resources; + PULONG BarArray; + ULONG Bar, BarMask, i; + + /* Get variables from context */ + PciData = Context->Current; + Resources = Context->PdoExtension->Resources; + + /* Loop all the PCI BARs */ + BarArray = PciData->u.type0.BaseAddresses; + for (i = 0; i <= PCI_TYPE0_ADDRESSES; i++) + { + /* Get the resource descriptor and limit descriptor for this BAR */ + CmDescriptor = &Resources->Current[i]; + IoDescriptor = &Resources->Limit[i]; + + /* Build the resource descriptor based on the limit descriptor */ + CmDescriptor->Type = IoDescriptor->Type; + if (CmDescriptor->Type == CmResourceTypeNull) continue; + CmDescriptor->Flags = IoDescriptor->Flags; + CmDescriptor->ShareDisposition = IoDescriptor->ShareDisposition; + CmDescriptor->u.Generic.Start.HighPart = 0; + CmDescriptor->u.Generic.Length = IoDescriptor->u.Generic.Length; + + /* Read the actual BAR value */ + Bar = BarArray[i]; + + /* Check which BAR is being processed now */ + if (i != PCI_TYPE0_ADDRESSES) + { + /* Check if this is an I/O BAR */ + if (Bar & PCI_ADDRESS_IO_SPACE) + { + /* Use the right mask to get the I/O port base address */ + ASSERT(CmDescriptor->Type == CmResourceTypePort); + BarMask = PCI_ADDRESS_IO_ADDRESS_MASK; + } + else + { + /* It's a RAM BAR, use the right mask to get the base address */ + ASSERT(CmDescriptor->Type == CmResourceTypeMemory); + BarMask = PCI_ADDRESS_MEMORY_ADDRESS_MASK; + + /* Check if it's a 64-bit BAR */ + if ((Bar & PCI_ADDRESS_MEMORY_TYPE_MASK) == PCI_TYPE_64BIT) + { + /* The next BAR value is actually the high 32-bits */ + CmDescriptor->u.Memory.Start.HighPart = BarArray[i + 1]; + } + else if ((Bar & PCI_ADDRESS_MEMORY_TYPE_MASK) == PCI_TYPE_20BIT) + { + /* Legacy BAR, don't read more than 20 bits of the address */ + BarMask = 0xFFFF0; + } + } + } + else + { + /* Actually a ROM BAR, so read the correct register */ + Bar = PciData->u.type0.ROMBaseAddress; + + /* Apply the correct mask for ROM BARs */ + BarMask = PCI_ADDRESS_ROM_ADDRESS_MASK; + + /* Make sure it's enabled */ + if (!(Bar & PCI_ROMADDRESS_ENABLED)) + { + /* If it isn't, then a descriptor won't be built for it */ + CmDescriptor->Type = CmResourceTypeNull; + continue; + } + } + + /* Now we have the right mask, read the actual address from the BAR */ + Bar &= BarMask; + CmDescriptor->u.Memory.Start.LowPart = Bar; + + /* And check for invalid BAR addresses */ + if (!(CmDescriptor->u.Memory.Start.HighPart | Bar)) + { + /* Skip these descriptors */ + CmDescriptor->Type = CmResourceTypeNull; + DPRINT1("Invalid BAR\n"); + } + } + + /* Also save the sub-IDs that came directly from the PCI header */ + Context->PdoExtension->SubsystemVendorId = PciData->u.type0.SubVendorID; + Context->PdoExtension->SubsystemId = PciData->u.type0.SubSystemID; } VOID NTAPI Device_SaveLimits(IN PPCI_CONFIGURATOR_CONTEXT Context) { - UNIMPLEMENTED; - while (TRUE); + PPCI_COMMON_HEADER Current, PciData; + PPCI_PDO_EXTENSION PdoExtension; + PULONG BarArray; + PIO_RESOURCE_DESCRIPTOR Limit; + ULONG i; + + /* Get pointers from the context */ + PdoExtension = Context->PdoExtension; + Current = Context->Current; + PciData = Context->PciData; + + /* And get the array of bARs */ + BarArray = PciData->u.type0.BaseAddresses; + + /* First, check for IDE controllers that are not in native mode */ + if ((PdoExtension->BaseClass == PCI_CLASS_MASS_STORAGE_CTLR) && + (PdoExtension->SubClass == PCI_SUBCLASS_MSC_IDE_CTLR) && + (PdoExtension->ProgIf & 5) != 5) + { + /* They should not be using any non-legacy resources */ + BarArray[0] = 0; + BarArray[1] = 0; + BarArray[2] = 0; + BarArray[3] = 0; + } + else if ((PdoExtension->VendorId == 0x5333) && + ((PdoExtension->DeviceId == 0x88F0) || + (PdoExtension->DeviceId == 0x8880))) + { + /* + * The problem is caused by the S3 Vision 968/868 video controller which + * is used on the Diamond Stealth 64 Video 3000 series, Number Nine 9FX + * motion 771, and other popular video cards, all containing a memory bug. + * The 968/868 claims to require 32 MB of memory, but it actually decodes + * 64 MB of memory. + */ + for (i = 0; i < PCI_TYPE0_ADDRESSES; i++) + { + /* Find its 32MB RAM BAR */ + if (BarArray[i] == 0xFE000000) + { + /* Increase it to 64MB to make sure nobody touches the buffer */ + BarArray[i] = 0xFC000000; + DPRINT1("PCI - Adjusted broken S3 requirement from 32MB to 64MB\n"); + } + } + } + + /* Check for Cirrus Logic GD5430/5440 cards */ + if ((PdoExtension->VendorId == 0x1013) && (PdoExtension->DeviceId == 0xA0)) + { + /* Check for the I/O port requirement */ + if (BarArray[1] == 0xFC01) + { + /* Check for completely bogus BAR */ + if (Current->u.type0.BaseAddresses[1] == 1) + { + /* Ignore it */ + BarArray[1] = 0; + DPRINT1("PCI - Ignored Cirrus GD54xx broken IO requirement (400 ports)\n"); + } + else + { + /* Otherwise, this BAR seems okay */ + DPRINT1("PCI - Cirrus GD54xx 400 port IO requirement has a valid setting (%08x)\n", + Current->u.type0.BaseAddresses[1]); + } + } + else if (BarArray[1]) + { + /* Strange, the I/O BAR was not found as expected (or at all) */ + DPRINT1("PCI - Warning Cirrus Adapter 101300a0 has unexpected resource requirement (%08x)\n", + BarArray[1]); + } + } + + /* Finally, process all the limit descriptors */ + Limit = PdoExtension->Resources->Limit; + for (i = 0; i < PCI_TYPE0_ADDRESSES; i++) + { + /* And build them based on the BARs */ + if (PciCreateIoDescriptorFromBarLimit(&Limit[i], &BarArray[i], FALSE)) + { + /* This function returns TRUE if the BAR was 64-bit, handle this */ + ASSERT((i + 1) < PCI_TYPE0_ADDRESSES); + i++; + (&Limit[i])->Type == CmResourceTypeNull; + } + } + + /* Create the last descriptor based on the ROM address */ + PciCreateIoDescriptorFromBarLimit(&Limit[i], + &PciData->u.type0.ROMBaseAddress, + TRUE); } VOID NTAPI Device_MassageHeaderForLimitsDetermination(IN PPCI_CONFIGURATOR_CONTEXT Context) { - UNIMPLEMENTED; - while (TRUE); + PPCI_COMMON_HEADER PciData; + PPCI_PDO_EXTENSION PdoExtension; + PULONG BarArray; + ULONG i = 0; + + /* Get pointers from context data */ + PdoExtension = Context->PdoExtension; + PciData = Context->PciData; + + /* Get the array of BARs */ + BarArray = PciData->u.type0.BaseAddresses; + + /* Check for IDE controllers that are not in native mode */ + if ((PdoExtension->BaseClass == PCI_CLASS_MASS_STORAGE_CTLR) && + (PdoExtension->SubClass == PCI_SUBCLASS_MSC_IDE_CTLR) && + (PdoExtension->ProgIf & 5) != 5) + { + /* These controllers only use legacy resources */ + i = 4; + } + + /* Set all the bits on, which will allow us to recover the limit data */ + for (i = 0; i < PCI_TYPE0_ADDRESSES; i++) BarArray[i] = 0xFFFFFFFF; + + /* Do the same for the PCI ROM BAR */ + PciData->u.type0.ROMBaseAddress = PCI_ADDRESS_ROM_ADDRESS_MASK; } VOID NTAPI Device_RestoreCurrent(IN PPCI_CONFIGURATOR_CONTEXT Context) { - UNIMPLEMENTED; - while (TRUE); + /* Nothing to do for devices */ + return; } VOID @@ -54,6 +260,7 @@ Device_GetAdditionalResourceDescriptors(IN PPCI_CONFIGURATOR_CONTEXT Context, IN PPCI_COMMON_HEADER PciData, IN PIO_RESOURCE_DESCRIPTOR IoDescriptor) { + /* Not yet implemented */ UNIMPLEMENTED; while (TRUE); } @@ -62,6 +269,7 @@ VOID NTAPI Device_ResetDevice(IN PPCI_CONFIGURATOR_CONTEXT Context) { + /* Not yet implemented */ UNIMPLEMENTED; while (TRUE); } @@ -70,6 +278,7 @@ VOID NTAPI Device_ChangeResourceSettings(IN PPCI_CONFIGURATOR_CONTEXT Context) { + /* Not yet implemented */ UNIMPLEMENTED; while (TRUE); } diff --git a/drivers/bus/pcix/enum.c b/drivers/bus/pcix/enum.c index dc771f2fb53..a4d53dd9fec 100644 --- a/drivers/bus/pcix/enum.c +++ b/drivers/bus/pcix/enum.c @@ -32,7 +32,7 @@ PCI_CONFIGURATOR PciConfigurators[] = PPBridge_SaveCurrentSettings, PPBridge_ChangeResourceSettings, PPBridge_GetAdditionalResourceDescriptors, - PPBridge_ResetDevice + PPBridge_ResetDevice }, { Cardbus_MassageHeaderForLimitsDetermination, @@ -44,7 +44,7 @@ PCI_CONFIGURATOR PciConfigurators[] = Cardbus_ResetDevice } }; - + /* FUNCTIONS ******************************************************************/ /* @@ -715,10 +715,10 @@ PciWriteLimitsAndRestoreCurrent(IN PVOID Reserved, /* Write the limit discovery header */ PciWriteDeviceConfig(PdoExtension, PciData, 0, PCI_COMMON_HDR_LENGTH); - + /* Now read what the device indicated the limits are */ PciReadDeviceConfig(PdoExtension, PciData, 0, PCI_COMMON_HDR_LENGTH); - + /* Then write back the original configuration header */ PciWriteDeviceConfig(PdoExtension, Current, 0, PCI_COMMON_HDR_LENGTH); @@ -735,7 +735,7 @@ PciWriteLimitsAndRestoreCurrent(IN PVOID Reserved, /* Copy back the original status that was saved as well */ Current->Status = Context->Status; - + /* Call the configurator to restore any other data that might've changed */ Context->Configurator->RestoreCurrent(Context); } @@ -917,6 +917,62 @@ PciGetFunctionLimits(IN PPCI_PDO_EXTENSION PdoExtension, return Status; } +VOID +NTAPI +PciProcessBus(IN PPCI_FDO_EXTENSION DeviceExtension) +{ + PPCI_PDO_EXTENSION PdoExtension; + PDEVICE_OBJECT PhysicalDeviceObject; + PAGED_CODE(); + + /* Get the PDO Extension */ + PhysicalDeviceObject = DeviceExtension->PhysicalDeviceObject; + PdoExtension = (PPCI_PDO_EXTENSION)PhysicalDeviceObject->DeviceExtension; + + /* Cheeck if this is the root bus */ + if (!PCI_IS_ROOT_FDO(DeviceExtension)) + { + /* Not really handling this year */ + UNIMPLEMENTED; + while (TRUE); + + /* Check for PCI bridges with the ISA bit set, or required */ + if ((PdoExtension) && + (PciClassifyDeviceType(PdoExtension) == PciTypePciBridge) && + ((PdoExtension->Dependent.type1.IsaBitRequired) || + (PdoExtension->Dependent.type1.IsaBitSet))) + { + /* We'll need to do some legacy support */ + UNIMPLEMENTED; + while (TRUE); + } + } + else + { + /* Scan all of the root bus' children bridges */ + for (PdoExtension = DeviceExtension->ChildBridgePdoList; + PdoExtension; + PdoExtension = PdoExtension->NextBridge) + { + /* Find any that have the VGA decode bit on */ + if (PdoExtension->Dependent.type1.VgaBitSet) + { + /* Again, some more legacy support we'll have to do */ + UNIMPLEMENTED; + while (TRUE); + } + } + } + + /* Check for ACPI systems where the OS assigns bus numbers */ + if (PciAssignBusNumbers) + { + /* Not yet supported */ + UNIMPLEMENTED; + while (TRUE); + } +} + NTSTATUS NTAPI PciScanBus(IN PPCI_FDO_EXTENSION DeviceExtension) @@ -1363,7 +1419,8 @@ PciScanBus(IN PPCI_FDO_EXTENSION DeviceExtension) } } - /* Enumeration is completed */ + /* Enumeration completed, do a final pass now that all devices are found */ + if (ProcessFlag) PciProcessBus(DeviceExtension); return STATUS_SUCCESS; } diff --git a/drivers/bus/pcix/pci.h b/drivers/bus/pcix/pci.h index 306265f03aa..93a5f140276 100644 --- a/drivers/bus/pcix/pci.h +++ b/drivers/bus/pcix/pci.h @@ -102,6 +102,18 @@ typedef enum _PCI_SIGNATURE PciInterface_Location = 'icP?' } PCI_SIGNATURE, *PPCI_SIGNATURE; +// +// Driver-handled PCI Device Types +// +typedef enum _PCI_DEVICE_TYPES +{ + PciTypeInvalid, + PciTypeHostBridge, + PciTypePciBridge, + PciTypeCardbusBridge, + PciTypeDevice +} PCI_DEVICE_TYPES; + // // Device Extension Logic States // @@ -1064,6 +1076,12 @@ PciCanDisableDecodes( IN BOOLEAN ForPowerDown ); +PCI_DEVICE_TYPES +NTAPI +PciClassifyDeviceType( + IN PPCI_PDO_EXTENSION PdoExtension +); + ULONG_PTR NTAPI PciExecuteCriticalSystemRoutine( @@ -1607,6 +1625,7 @@ extern PCI_INTERFACE TranslatorInterfaceInterrupt; extern PDRIVER_OBJECT PciDriverObject; extern PWATCHDOG_TABLE WdTable; extern PPCI_HACK_ENTRY PciHackTable; +extern BOOLEAN PciAssignBusNumbers; extern BOOLEAN PciEnableNativeModeATA; /* Exported by NTOS, should this go in the NDK? */ diff --git a/drivers/bus/pcix/utils.c b/drivers/bus/pcix/utils.c index 94f411b900d..f450a261a74 100644 --- a/drivers/bus/pcix/utils.c +++ b/drivers/bus/pcix/utils.c @@ -1041,6 +1041,24 @@ PciCanDisableDecodes(IN PPCI_PDO_EXTENSION DeviceExtension, return !(HackFlags & PCI_HACK_NO_PM_CAPS); } +PCI_DEVICE_TYPES +NTAPI +PciClassifyDeviceType(IN PPCI_PDO_EXTENSION PdoExtension) +{ + ASSERT(PdoExtension->ExtensionType == PciPdoExtensionType); + + /* Differenriate between devices and bridges */ + if (PdoExtension->BaseClass != PCI_CLASS_BRIDGE_DEV) return PciTypeDevice; + + /* The PCI Bus driver handles only CardBus and PCI bridges (plus host) */ + if (PdoExtension->SubClass == PCI_SUBCLASS_BR_HOST) return PciTypeHostBridge; + if (PdoExtension->SubClass == PCI_SUBCLASS_BR_PCI_TO_PCI) return PciTypePciBridge; + if (PdoExtension->SubClass == PCI_SUBCLASS_BR_CARDBUS) return PciTypeCardbusBridge; + + /* Any other kind of bridge is treated like a device */ + return PciTypeDevice; +} + ULONG_PTR NTAPI PciExecuteCriticalSystemRoutine(IN ULONG_PTR IpiContext) diff --git a/drivers/filesystems/cdfs/fsctl.c b/drivers/filesystems/cdfs/fsctl.c index 95db2eae124..dd0e065a055 100644 --- a/drivers/filesystems/cdfs/fsctl.c +++ b/drivers/filesystems/cdfs/fsctl.c @@ -73,7 +73,7 @@ CdfsGetPVDData(PUCHAR Buffer, /* Extract the volume label */ pc = Pvd->VolumeId; pw = CdInfo->VolumeLabel; - for (i = 0; i < MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR); i++) + for (i = 0; i < (MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)) - 1; i++) { *pw++ = (WCHAR)*pc++; } diff --git a/drivers/filesystems/cdfs/misc.c b/drivers/filesystems/cdfs/misc.c index 4e7128b981a..d1f618a7334 100644 --- a/drivers/filesystems/cdfs/misc.c +++ b/drivers/filesystems/cdfs/misc.c @@ -95,6 +95,46 @@ CdfsFileFlagsToAttributes(PFCB Fcb, ((Fcb->Entry.FileFlags & FILE_FLAG_READONLY) ? FILE_ATTRIBUTE_READONLY : 0); } +BOOLEAN +CdfsIsNameLegalDOS8Dot3(IN UNICODE_STRING FileName + ) +{ + ULONG i; + STRING DbcsName; + CHAR DbcsNameBuffer[12]; + + /* 8dot3 filename is max 12 length */ + if (FileName.Length / sizeof(WCHAR) > 12) + { + return FALSE; + } + + for (i = 0; i < FileName.Length / sizeof(WCHAR) ; i++) + { + /* Don't allow spaces in FileName */ + if (FileName.Buffer[i] == L' ') + return FALSE; + } + + /* If FileName is finishing with a dot, remove it */ + if (FileName.Buffer[FileName.Length / sizeof(WCHAR) - 1] == '.') + { + FileName.Length -= sizeof(WCHAR); + } + + /* Finally, convert the string to call the FsRtl function */ + DbcsName.MaximumLength = 12; + DbcsName.Buffer = DbcsNameBuffer; + if (!NT_SUCCESS(RtlUnicodeStringToCountedOemString(&DbcsName, + &FileName, + FALSE ))) + { + + return FALSE; + } + return FsRtlIsFatDbcsLegal(DbcsName, FALSE, FALSE, FALSE); +} + VOID CdfsShortNameCacheGet (PFCB DirectoryFcb, @@ -102,7 +142,6 @@ CdfsShortNameCacheGet PUNICODE_STRING LongName, PUNICODE_STRING ShortName) { - BOOLEAN HasSpaces; PLIST_ENTRY Entry; PCDFS_SHORT_NAME ShortNameEntry; GENERATE_NAME_CONTEXT Context = { 0 }; @@ -132,8 +171,7 @@ CdfsShortNameCacheGet } /* Cache miss */ - if ((RtlIsNameLegalDOS8Dot3(LongName, NULL, &HasSpaces) == FALSE) || - (HasSpaces == TRUE)) + if (!CdfsIsNameLegalDOS8Dot3(*LongName)) { RtlGenerate8dot3Name(LongName, FALSE, &Context, ShortName); } diff --git a/drivers/filesystems/fastfat/create.c b/drivers/filesystems/fastfat/create.c index 07b6dc074d3..f643104c947 100644 --- a/drivers/filesystems/fastfat/create.c +++ b/drivers/filesystems/fastfat/create.c @@ -466,7 +466,7 @@ VfatCreateFile ( PDEVICE_OBJECT DeviceObject, PIRP Irp ) /* This a open operation for the volume itself */ if (FileObject->FileName.Length == 0 && - FileObject->RelatedFileObject == NULL) + (FileObject->RelatedFileObject == NULL || FileObject->RelatedFileObject->FsContext2 != NULL)) { if (RequestedDisposition == FILE_CREATE || RequestedDisposition == FILE_OVERWRITE_IF || @@ -474,10 +474,13 @@ VfatCreateFile ( PDEVICE_OBJECT DeviceObject, PIRP Irp ) { return(STATUS_ACCESS_DENIED); } +#if 0 + /* In spite of what is shown in WDK, it seems that Windows FAT driver doesn't perform that test */ if (RequestedOptions & FILE_DIRECTORY_FILE) { return(STATUS_NOT_A_DIRECTORY); } +#endif pFcb = DeviceExt->VolumeFcb; pCcb = ExAllocateFromNPagedLookasideList(&VfatGlobalData->CcbLookasideList); if (pCcb == NULL) diff --git a/drivers/filesystems/fastfat_new/cleanup.c b/drivers/filesystems/fastfat_new/cleanup.c index dac825fa9ea..dbc1f1b3d96 100644 --- a/drivers/filesystems/fastfat_new/cleanup.c +++ b/drivers/filesystems/fastfat_new/cleanup.c @@ -13,13 +13,430 @@ /* FUNCTIONS ****************************************************************/ +/* Last handle to a file object is closed */ +NTSTATUS +NTAPI +FatiCleanup(PFAT_IRP_CONTEXT IrpContext, PIRP Irp) +{ + PIO_STACK_LOCATION IrpSp; + PFILE_OBJECT FileObject; + TYPE_OF_OPEN TypeOfOpen; + PSHARE_ACCESS ShareAccess; + BOOLEAN SendUnlockNotification = FALSE; + PLARGE_INTEGER TruncateSize = NULL; + //LARGE_INTEGER LocalTruncateSize; + BOOLEAN AcquiredVcb = FALSE, AcquiredFcb = FALSE; + NTSTATUS Status; + PVCB Vcb; + PFCB Fcb; + PCCB Ccb; + + IrpSp = IoGetCurrentIrpStackLocation( Irp ); + + DPRINT("FatiCleanup\n"); + DPRINT("\tIrp = %p\n", Irp); + DPRINT("\t->FileObject = %p\n", IrpSp->FileObject); + + FileObject = IrpSp->FileObject; + TypeOfOpen = FatDecodeFileObject(FileObject, &Vcb, &Fcb, &Ccb); + + if (TypeOfOpen == UnopenedFileObject) + { + DPRINT1("Unopened File Object\n"); + + FatCompleteRequest(IrpContext, Irp, STATUS_SUCCESS); + return STATUS_SUCCESS; + } + + if (FlagOn( FileObject->Flags, FO_CLEANUP_COMPLETE )) + { + /* Just flush the file */ + + if (FlagOn(Vcb->State, VCB_STATE_FLAG_DEFERRED_FLUSH) && + FlagOn(FileObject->Flags, FO_FILE_MODIFIED) && + !FlagOn(Vcb->State, VCB_STATE_FLAG_WRITE_PROTECTED) && + (TypeOfOpen == UserFileOpen)) + { + //Status = FatFlushFile(IrpContext, Fcb, Flush); + //if (!NT_SUCCESS(Status)) FatNormalizeAndRaiseStatus(IrpContext, Status); + UNIMPLEMENTED; + } + + FatCompleteRequest(IrpContext, Irp, STATUS_SUCCESS); + return STATUS_SUCCESS; + } + + if (TypeOfOpen == UserFileOpen || + TypeOfOpen == UserDirectoryOpen) + { + ASSERT(Fcb != NULL); + + (VOID)FatAcquireExclusiveFcb(IrpContext, Fcb); + + AcquiredFcb = TRUE; + + /* Set FCB flags according to DELETE_ON_CLOSE */ + if (FlagOn(Ccb->Flags, CCB_DELETE_ON_CLOSE)) + { + ASSERT(FatNodeType(Fcb) != FAT_NTC_ROOT_DCB); + + SetFlag(Fcb->State, FCB_STATE_DELETE_ON_CLOSE); + + /* Issue a notification */ + if (TypeOfOpen == UserDirectoryOpen) + { + FsRtlNotifyFullChangeDirectory(Vcb->NotifySync, + &Vcb->NotifyList, + FileObject->FsContext, + NULL, + FALSE, + FALSE, + 0, + NULL, + NULL, + NULL); + } + } + + /* If file should be deleted, acquire locks */ + if ((Fcb->UncleanCount == 1) && + FlagOn(Fcb->State, FCB_STATE_DELETE_ON_CLOSE) && + (Fcb->Condition != FcbBad) && + !FlagOn(Vcb->State, VCB_STATE_FLAG_WRITE_PROTECTED)) + { + FatReleaseFcb(IrpContext, Fcb); + AcquiredFcb = FALSE; + + (VOID)FatAcquireExclusiveVcb(IrpContext, Vcb); + AcquiredVcb = TRUE; + + (VOID)FatAcquireExclusiveFcb(IrpContext, Fcb); + AcquiredFcb = TRUE; + } + } + + /* Acquire VCB lock if it was a volume open */ + if (TypeOfOpen == UserVolumeOpen) + { + (VOID)FatAcquireExclusiveVcb(IrpContext, Vcb); + AcquiredVcb = TRUE; + } + + /* Cleanup all notifications */ + if (TypeOfOpen == UserDirectoryOpen) + { + FsRtlNotifyCleanup(Vcb->NotifySync, + &Vcb->NotifyList, + Ccb); + } + + if (Fcb) + { + //TODO: FatVerifyFcb + } + + switch (TypeOfOpen) + { + case DirectoryFile: + case VirtualVolumeFile: + DPRINT1("Cleanup VirtualVolumeFile/DirectoryFile\n"); + ShareAccess = NULL; + break; + + case UserVolumeOpen: + DPRINT("Cleanup UserVolumeOpen\n"); + + if (FlagOn(Ccb->Flags, CCB_COMPLETE_DISMOUNT)) + { + FatCheckForDismount( IrpContext, Vcb, TRUE ); + } else if (FileObject->WriteAccess && + FlagOn(FileObject->Flags, FO_FILE_MODIFIED)) + { + UNIMPLEMENTED; + } + + /* Release the volume and send notification */ + if (FlagOn(Vcb->State, VCB_STATE_FLAG_LOCKED) && + (Vcb->FileObjectWithVcbLocked == FileObject)) + { + UNIMPLEMENTED; + SendUnlockNotification = TRUE; + } + + ShareAccess = &Vcb->ShareAccess; + break; + + case EaFile: + DPRINT1("Cleanup EaFileObject\n"); + ShareAccess = NULL; + break; + + case UserDirectoryOpen: + DPRINT("Cleanup UserDirectoryOpen\n"); + + ShareAccess = &Fcb->ShareAccess; + + /* Should it be a delayed close? */ + if ((Fcb->UncleanCount == 1) && + (Fcb->OpenCount == 1) && + (Fcb->Dcb.DirectoryFileOpenCount == 0) && + !FlagOn(Fcb->State, FCB_STATE_DELETE_ON_CLOSE) && + Fcb->Condition == FcbGood) + { + /* Yes, a delayed one */ + SetFlag(Fcb->State, FCB_STATE_DELAY_CLOSE); + } + + if (VcbGood == Vcb->Condition) + { + //FatUpdateDirentFromFcb( IrpContext, FileObject, Fcb, Ccb ); + //TODO: Actually update dirent + } + + if ((Fcb->UncleanCount == 1) && + (FatNodeType(Fcb) == FAT_NTC_DCB) && + (FlagOn(Fcb->State, FCB_STATE_DELETE_ON_CLOSE)) && + (Fcb->Condition != FcbBad) && + !FlagOn(Vcb->State, VCB_STATE_FLAG_WRITE_PROTECTED)) + { + UNIMPLEMENTED; + } + + /* Decrement unclean counter */ + ASSERT(Fcb->UncleanCount != 0); + Fcb->UncleanCount--; + break; + + case UserFileOpen: + DPRINT("Cleanup UserFileOpen\n"); + + ShareAccess = &Fcb->ShareAccess; + + /* Should it be a delayed close? */ + if ((FileObject->SectionObjectPointer->DataSectionObject == NULL) && + (FileObject->SectionObjectPointer->ImageSectionObject == NULL) && + (Fcb->UncleanCount == 1) && + (Fcb->OpenCount == 1) && + !FlagOn(Fcb->State, FCB_STATE_DELETE_ON_CLOSE) && + Fcb->Condition == FcbGood) + { + /* Yes, a delayed one */ + SetFlag(Fcb->State, FCB_STATE_DELAY_CLOSE); + } + + /* Unlock all file locks */ + FsRtlFastUnlockAll(&Fcb->Fcb.Lock, + FileObject, + IoGetRequestorProcess(Irp), + NULL); + + if (Vcb->Condition == VcbGood) + { + if (Fcb->Condition != FcbBad) + { + //FatUpdateDirentFromFcb( IrpContext, FileObject, Fcb, Ccb ); + // TODO: Update on-disk structures + } + + if (Fcb->UncleanCount == 1 && + Fcb->Condition != FcbBad) + { + //DELETE_CONTEXT DeleteContext; + + /* Should this file be deleted on close? */ + if (FlagOn(Fcb->State, FCB_STATE_DELETE_ON_CLOSE) && + !FlagOn(Vcb->State, VCB_STATE_FLAG_WRITE_PROTECTED)) + { + UNIMPLEMENTED; + } + else + { + if (!FlagOn(Fcb->State, FCB_STATE_PAGEFILE) && + (Fcb->Header.ValidDataLength.LowPart < Fcb->Header.FileSize.LowPart)) + { +#if 0 + ULONG ValidDataLength; + + ValidDataLength = Fcb->Header.ValidDataLength.LowPart; + + if (ValidDataLength < Fcb->ValidDataToDisk) { + ValidDataLength = Fcb->ValidDataToDisk; + } + + if (ValidDataLength < Fcb->Header.FileSize.LowPart) + { + FatZeroData( IrpContext, + Vcb, + FileObject, + ValidDataLength, + Fcb->Header.FileSize.LowPart - + ValidDataLength ); + + Fcb->ValidDataToDisk = + Fcb->Header.ValidDataLength.LowPart = + Fcb->Header.FileSize.LowPart; + + if (CcIsFileCached(FileObject)) + { + CcSetFileSizes(FileObject, (PCC_FILE_SIZES)&Fcb->Header.AllocationSize); + } + } +#endif + DPRINT1("Zeroing out data is not implemented\n"); + } + } + + /* Should the file be truncated on close? */ + if (FlagOn(Fcb->State, FCB_STATE_TRUNCATE_ON_CLOSE)) + { + if (Vcb->Condition == VcbGood) + { + // TODO: Actually truncate the file allocation + UNIMPLEMENTED; + } + + /* Remove truncation flag */ + Fcb->State &= ~FCB_STATE_TRUNCATE_ON_CLOSE; + } + + /* Check again if it should be deleted */ + if (FlagOn(Fcb->State, FCB_STATE_DELETE_ON_CLOSE) && + Fcb->Header.AllocationSize.LowPart == 0) + { + FatNotifyReportChange(IrpContext, + Vcb, + Fcb, + FILE_NOTIFY_CHANGE_FILE_NAME, + FILE_ACTION_REMOVED); + } + + /* Remove the entry from the splay table if the file was deleted */ + if (FlagOn(Fcb->State, FCB_STATE_DELETE_ON_CLOSE)) + { + FatRemoveNames(IrpContext, Fcb); + } + } + } + + ASSERT(Fcb->UncleanCount != 0); + Fcb->UncleanCount--; + if (!FlagOn(FileObject->Flags, FO_CACHE_SUPPORTED)) + { + ASSERT(Fcb->NonCachedUncleanCount != 0); + Fcb->NonCachedUncleanCount--; + } + + if (FlagOn(FileObject->Flags, FO_CACHE_SUPPORTED) && + (Fcb->NonCachedUncleanCount != 0) && + (Fcb->NonCachedUncleanCount == Fcb->UncleanCount) && + (Fcb->SectionObjectPointers.DataSectionObject != NULL)) + { + CcFlushCache(&Fcb->SectionObjectPointers, NULL, 0, NULL); + + /* Acquire and release PagingIo to get in sync with lazy writer */ + ExAcquireResourceExclusiveLite(Fcb->Header.PagingIoResource, TRUE); + ExReleaseResourceLite(Fcb->Header.PagingIoResource); + + CcPurgeCacheSection(&Fcb->SectionObjectPointers, + NULL, + 0, + FALSE); + } + + if (Fcb->Condition == FcbBad) + { + //TruncateSize = &FatLargeZero; + UNIMPLEMENTED; + } + + /* Cleanup the cache map */ + CcUninitializeCacheMap(FileObject, TruncateSize, NULL); + break; + + default: + KeBugCheckEx(FAT_FILE_SYSTEM, __LINE__, (ULONG_PTR)TypeOfOpen, 0, 0); + } + + /* Cleanup the share access */ + + if (ShareAccess) + { + DPRINT("Cleaning up the share access\n"); + IoRemoveShareAccess(FileObject, ShareAccess); + } + + if (TypeOfOpen == UserFileOpen) + { + /* Update oplocks */ + FsRtlCheckOplock(&Fcb->Fcb.Oplock, + Irp, + IrpContext, + NULL, + NULL); + + Fcb->Header.IsFastIoPossible = FatIsFastIoPossible(Fcb); + } + + /* Set the FO_CLEANUP_COMPLETE flag */ + SetFlag(FileObject->Flags, FO_CLEANUP_COMPLETE); + + Status = STATUS_SUCCESS; + + // TODO: Unpin repinned BCBs + //FatUnpinRepinnedBcbs(IrpContext); + + /* Flush the volume if necessary */ + if (FlagOn(Vcb->State, VCB_STATE_FLAG_DEFERRED_FLUSH) && + !FlagOn(Vcb->State, VCB_STATE_FLAG_WRITE_PROTECTED)) + { + UNIMPLEMENTED; + } + + /* Cleanup */ + if (AcquiredFcb) FatReleaseFcb(IrpContext, Fcb); + if (AcquiredVcb) FatReleaseVcb(IrpContext, Vcb); + + /* Send volume notification */ + if (SendUnlockNotification) + FsRtlNotifyVolumeEvent(FileObject, FSRTL_VOLUME_UNLOCK); + + return Status; +} + NTSTATUS NTAPI FatCleanup(PDEVICE_OBJECT DeviceObject, PIRP Irp) { - DPRINT1("FatCleanup(DeviceObject %p, Irp %p)\n", DeviceObject, Irp); + PFAT_IRP_CONTEXT IrpContext; + NTSTATUS Status; - return STATUS_NOT_IMPLEMENTED; + DPRINT("FatCleanup(DeviceObject %p, Irp %p)\n", DeviceObject, Irp); + + /* FatCleanup works only with a volume device object */ + if (DeviceObject == FatGlobalData.DiskDeviceObject) + { + /* Complete the request and return success */ + Irp->IoStatus.Status = STATUS_SUCCESS; + Irp->IoStatus.Information = FILE_OPENED; + + IoCompleteRequest(Irp, IO_DISK_INCREMENT); + + return STATUS_SUCCESS; + } + + /* Enter FsRtl critical region */ + FsRtlEnterFileSystem(); + + /* Build an irp context */ + IrpContext = FatBuildIrpContext(Irp, TRUE); + + /* Call internal function */ + Status = FatiCleanup(IrpContext, Irp); + + /* Leave FsRtl critical region */ + FsRtlExitFileSystem(); + + return Status; } /* EOF */ diff --git a/drivers/filesystems/fastfat_new/close.c b/drivers/filesystems/fastfat_new/close.c index 69346982f9c..69ccf3c8c43 100644 --- a/drivers/filesystems/fastfat_new/close.c +++ b/drivers/filesystems/fastfat_new/close.c @@ -11,15 +11,641 @@ #define NDEBUG #include "fastfat.h" +VOID NTAPI +FatQueueClose(IN PCLOSE_CONTEXT CloseContext, + IN BOOLEAN DelayClose); + +PCLOSE_CONTEXT NTAPI +FatRemoveClose(PVCB Vcb OPTIONAL, + PVCB LastVcbHint OPTIONAL); + +const ULONG FatMaxDelayedCloseCount = 16; + /* FUNCTIONS ****************************************************************/ +NTSTATUS +NTAPI +FatiCommonClose(IN PVCB Vcb, + IN PFCB Fcb, + IN PCCB Ccb, + IN TYPE_OF_OPEN TypeOfOpen, + IN BOOLEAN Wait, + OUT PBOOLEAN VcbDeleted) +{ + NTSTATUS Status; + PFCB ParentDcb; + BOOLEAN RecursiveClose, VcbDeletedLv = FALSE; + FAT_IRP_CONTEXT IrpContext; + + if (VcbDeleted) *VcbDeleted = FALSE; + + if (TypeOfOpen == UnopenedFileObject) + { + DPRINT1("Closing unopened file object\n"); + Status = STATUS_SUCCESS; + return Status; + } + + RtlZeroMemory(&IrpContext, sizeof(FAT_IRP_CONTEXT)); + + IrpContext.NodeTypeCode = FAT_NTC_IRP_CONTEXT; + IrpContext.NodeByteSize = sizeof(IrpContext); + IrpContext.MajorFunction = IRP_MJ_CLOSE; + + if (Wait) SetFlag(IrpContext.Flags, IRPCONTEXT_CANWAIT); + + if (!ExAcquireResourceExclusiveLite(&Vcb->Resource, Wait)) return STATUS_PENDING; + + if (Vcb->State & VCB_STATE_FLAG_CLOSE_IN_PROGRESS) + { + RecursiveClose = TRUE; + } + else + { + SetFlag(Vcb->State, VCB_STATE_FLAG_CLOSE_IN_PROGRESS); + RecursiveClose = FALSE; + + Vcb->OpenFileCount++; + } + + /* Update on-disk structures */ + switch (TypeOfOpen) + { + case VirtualVolumeFile: + DPRINT1("Close VirtualVolumeFile\n"); + + InterlockedDecrement((PLONG)&(Vcb->InternalOpenCount)); + InterlockedDecrement((PLONG)&(Vcb->ResidualOpenCount)); + + Status = STATUS_SUCCESS; + goto close_done; + break; + + case UserVolumeOpen: + DPRINT1("Close UserVolumeOpen\n"); + + Vcb->DirectAccessOpenCount--; + Vcb->OpenFileCount--; + if (FlagOn(Ccb->Flags, CCB_READ_ONLY)) Vcb->ReadOnlyCount--; + + FatDeleteCcb(&IrpContext, Ccb); + + Status = STATUS_SUCCESS; + goto close_done; + break; + + case EaFile: + UNIMPLEMENTED; + break; + + case DirectoryFile: + DPRINT1("Close DirectoryFile\n"); + + InterlockedDecrement((PLONG)&(Fcb->Dcb.DirectoryFileOpenCount)); + InterlockedDecrement((PLONG)&(Vcb->InternalOpenCount)); + + if (FatNodeType(Fcb) == FAT_NTC_ROOT_DCB) + { + InterlockedDecrement((PLONG)&(Vcb->ResidualOpenCount)); + } + + if (RecursiveClose) + { + Status = STATUS_SUCCESS; + goto close_done; + } + else + { + break; + } + + case UserDirectoryOpen: + case UserFileOpen: + DPRINT("Close UserFileOpen/UserDirectoryOpen\n"); + + if ((FatNodeType(Fcb) == FAT_NTC_DCB) && + IsListEmpty(&Fcb->Dcb.ParentDcbList) && + (Fcb->OpenCount == 1) && + (Fcb->Dcb.DirectoryFile != NULL)) + { + PFILE_OBJECT DirectoryFileObject = Fcb->Dcb.DirectoryFile; + + DPRINT1("Uninitialize the stream file object\n"); + + CcUninitializeCacheMap(DirectoryFileObject, NULL, NULL); + + Fcb->Dcb.DirectoryFile = NULL; + ObDereferenceObject(DirectoryFileObject); + } + + Fcb->OpenCount--; + Vcb->OpenFileCount--; + if (FlagOn(Ccb->Flags, CCB_READ_ONLY)) Vcb->ReadOnlyCount --; + + FatDeleteCcb(&IrpContext, Ccb); + break; + + default: + KeBugCheckEx(FAT_FILE_SYSTEM, __LINE__, (ULONG_PTR)TypeOfOpen, 0, 0); + } + + /* Update in-memory structures */ + if (((FatNodeType(Fcb) == FAT_NTC_FCB) && + (Fcb->OpenCount == 0)) + || + ((FatNodeType(Fcb) == FAT_NTC_DCB) && + (IsListEmpty(&Fcb->Dcb.ParentDcbList)) && + (Fcb->OpenCount == 0) && + (Fcb->Dcb.DirectoryFileOpenCount == 0))) + { + ParentDcb = Fcb->ParentFcb; + + SetFlag(Vcb->State, VCB_STATE_FLAG_DELETED_FCB); + + FatDeleteFcb(&IrpContext, Fcb); + + while ((FatNodeType(ParentDcb) == FAT_NTC_DCB) && + IsListEmpty(&ParentDcb->Dcb.ParentDcbList) && + (ParentDcb->OpenCount == 0) && + (ParentDcb->Dcb.DirectoryFile != NULL)) + { + PFILE_OBJECT DirectoryFileObject; + + DirectoryFileObject = ParentDcb->Dcb.DirectoryFile; + + DPRINT1("Uninitialize parent Stream Cache Map\n"); + + CcUninitializeCacheMap(DirectoryFileObject, NULL, NULL); + + ParentDcb->Dcb.DirectoryFile = NULL; + + ObDereferenceObject(DirectoryFileObject); + + if (ParentDcb->Dcb.DirectoryFileOpenCount == 0) + { + PFCB CurrentDcb; + + CurrentDcb = ParentDcb; + ParentDcb = CurrentDcb->ParentFcb; + + SetFlag(Vcb->State, VCB_STATE_FLAG_DELETED_FCB); + + FatDeleteFcb(&IrpContext, CurrentDcb); + } + else + { + break; + } + } + } + + Status = STATUS_SUCCESS; + +close_done: + /* Closing is done, check if VCB could be closed too */ + if (!RecursiveClose) + { + /* One open left - yes, VCB can go away */ + if (Vcb->OpenFileCount == 1 && + !FlagOn(Vcb->State, VCB_STATE_FLAG_DISMOUNT_IN_PROGRESS) + && VcbDeleted) + { + FatReleaseVcb(&IrpContext, Vcb ); + + SetFlag(IrpContext.Flags, IRPCONTEXT_CANWAIT); + + FatAcquireExclusiveGlobal(&IrpContext); + + FatAcquireExclusiveVcb(&IrpContext, Vcb); + + Vcb->OpenFileCount--; + + VcbDeletedLv = FatCheckForDismount(&IrpContext, Vcb, FALSE); + + FatReleaseGlobal(&IrpContext); + + if (VcbDeleted) *VcbDeleted = VcbDeletedLv; + } + else + { + /* Remove extra referenec */ + Vcb->OpenFileCount --; + } + + /* Clear recursion flag if necessary */ + if (!VcbDeletedLv) + { + ClearFlag(Vcb->State, VCB_STATE_FLAG_CLOSE_IN_PROGRESS); + } + } + + /* Release VCB if it wasn't deleted */ + if (!VcbDeletedLv) + FatReleaseVcb(&IrpContext, Vcb); + + return Status; +} + +NTSTATUS +NTAPI +FatiClose(IN PFAT_IRP_CONTEXT IrpContext, + IN PIRP Irp) +{ + PIO_STACK_LOCATION IrpSp; + TYPE_OF_OPEN TypeOfOpen; + PVCB Vcb; + PFCB Fcb; + PCCB Ccb; + BOOLEAN TopLevel, Wait, VcbDeleted = FALSE, DelayedClose = FALSE; + NTSTATUS Status = STATUS_SUCCESS; + PCLOSE_CONTEXT CloseContext = NULL; + + TopLevel = FatIsTopLevelIrp(Irp); + + /* Get current IRP stack location */ + IrpSp = IoGetCurrentIrpStackLocation(Irp); + + /* Decode incoming file object */ + TypeOfOpen = FatDecodeFileObject(IrpSp->FileObject, &Vcb, &Fcb, &Ccb); + + /* Set CCB read only flag */ + if (Ccb && IsFileObjectReadOnly(IrpSp->FileObject)) + SetFlag(Ccb->Flags, CCB_READ_ONLY); + + /* It's possible to wait only if we are top level or not a system process */ + Wait = TopLevel && (PsGetCurrentProcess() != FatGlobalData.SystemProcess); + + /* Determine if it's a delayed close, by flags first */ + if ((TypeOfOpen == UserFileOpen || TypeOfOpen == UserDirectoryOpen) && + (Fcb->State & FCB_STATE_DELAY_CLOSE) && + !FatGlobalData.ShutdownStarted) + { + DelayedClose = TRUE; + } + + /* If close is not delayed, try to perform the close operation */ + if (!DelayedClose) + Status = FatiCommonClose(Vcb, Fcb, Ccb, TypeOfOpen, Wait, &VcbDeleted); + + /* We have to delay close if either it's defined by a flag or it was not possible + to perform it synchronously */ + if (DelayedClose || Status == STATUS_PENDING) + { + DPRINT1("Queuing a pending close, Vcb %p, Fcb %p, Ccb %p\n", Vcb, Fcb, Ccb); + + /* Check if a close context should be allocated */ + if (TypeOfOpen == VirtualVolumeFile) + { + ASSERT(Vcb->CloseContext != NULL); + CloseContext = Vcb->CloseContext; + Vcb->CloseContext = NULL; + CloseContext->Free = TRUE; + } + else if (TypeOfOpen == DirectoryFile || + TypeOfOpen == EaFile) + { + UNIMPLEMENTED; + //CloseContext = FatAllocateCloseContext(Vcb); + //ASSERT(CloseContext != NULL); + CloseContext->Free = TRUE; + } + else + { + //TODO: FatDeallocateCcbStrings( Ccb ); + + /* Set CloseContext to a buffer inside Ccb */ + CloseContext = &Ccb->CloseContext; + CloseContext->Free = FALSE; + SetFlag(Ccb->Flags, CCB_CLOSE_CONTEXT); + } + + /* Save all info in the close context */ + CloseContext->Vcb = Vcb; + CloseContext->Fcb = Fcb; + CloseContext->TypeOfOpen = TypeOfOpen; + + /* Queue the close */ + FatQueueClose(CloseContext, (BOOLEAN)(Fcb && FlagOn(Fcb->State, FCB_STATE_DELAY_CLOSE))); + } + else + { + /* Close finished right away */ + if (TypeOfOpen == VirtualVolumeFile || + TypeOfOpen == DirectoryFile || + TypeOfOpen == EaFile) + { + if (TypeOfOpen == VirtualVolumeFile) + { + /* Free close context for the not deleted VCB */ + if (!VcbDeleted) + { + CloseContext = Vcb->CloseContext; + Vcb->CloseContext = NULL; + + ASSERT(CloseContext != NULL); + } + } + else + { + //CloseContext = FatAllocateCloseContext(Vcb); + DPRINT1("TODO: Allocate close context!\n"); + ASSERT(CloseContext != NULL); + } + + /* Free close context */ + if (CloseContext) ExFreePool(CloseContext); + } + } + + /* Complete the request */ + FatCompleteRequest(NULL, Irp, Status); + + /* Reset the top level IRP if necessary */ + if (TopLevel) IoSetTopLevelIrp(NULL); + + return Status; +} + NTSTATUS NTAPI FatClose(PDEVICE_OBJECT DeviceObject, PIRP Irp) { - DPRINT1("FatClose(DeviceObject %p, Irp %p)\n", DeviceObject, Irp); + PFAT_IRP_CONTEXT IrpContext; + NTSTATUS Status; - return STATUS_NOT_IMPLEMENTED; + DPRINT("FatClose(DeviceObject %p, Irp %p)\n", DeviceObject, Irp); + + /* FatClose works only with a volume device object */ + if (DeviceObject == FatGlobalData.DiskDeviceObject) + { + /* Complete the request and return success */ + Irp->IoStatus.Status = STATUS_SUCCESS; + Irp->IoStatus.Information = FILE_OPENED; + + IoCompleteRequest(Irp, IO_DISK_INCREMENT); + + return STATUS_SUCCESS; + } + + /* Enter FsRtl critical region */ + FsRtlEnterFileSystem(); + + /* Build an irp context */ + IrpContext = FatBuildIrpContext(Irp, TRUE); + + /* Call internal function */ + Status = FatiClose(IrpContext, Irp); + + /* Leave FsRtl critical region */ + FsRtlExitFileSystem(); + + return Status; +} + +VOID +NTAPI +FatPendingClose(IN PVCB Vcb OPTIONAL) +{ + PCLOSE_CONTEXT CloseContext; + PVCB CurrentVcb = NULL; + PVCB LastVcb = NULL; + BOOLEAN FreeContext; + ULONG Loops = 0; + + /* Do the top-level IRP trick */ + if (!Vcb) IoSetTopLevelIrp((PIRP)FSRTL_FSP_TOP_LEVEL_IRP); + + while ((CloseContext = FatRemoveClose(Vcb, LastVcb))) + { + if (!Vcb) + { + if (!FatGlobalData.ShutdownStarted) + { + if (CloseContext->Vcb != CurrentVcb) + { + Loops = 0; + + /* Release previous VCB */ + if (CurrentVcb) + ExReleaseResourceLite(&CurrentVcb->Resource); + + /* Lock the new VCB */ + CurrentVcb = CloseContext->Vcb; + (VOID)ExAcquireResourceExclusiveLite(&CurrentVcb->Resource, TRUE); + } + else + { + /* Try to lock */ + if (++Loops >= 20) + { + if (ExGetSharedWaiterCount(&CurrentVcb->Resource) + + ExGetExclusiveWaiterCount(&CurrentVcb->Resource)) + { + ExReleaseResourceLite(&CurrentVcb->Resource); + (VOID)ExAcquireResourceExclusiveLite(&CurrentVcb->Resource, TRUE); + } + + Loops = 0; + } + } + + /* Check open count */ + if (CurrentVcb->OpenFileCount <= 1) + { + ExReleaseResourceLite(&CurrentVcb->Resource); + CurrentVcb = NULL; + } + } + else if (CurrentVcb) + { + ExReleaseResourceLite(&CurrentVcb->Resource); + CurrentVcb = NULL; + } + } + + LastVcb = CurrentVcb; + + /* Remember if we should free the context */ + FreeContext = CloseContext->Free; + + FatiCommonClose(CloseContext->Vcb, + CloseContext->Fcb, + (FreeContext ? NULL : CONTAINING_RECORD(CloseContext, CCB, CloseContext)), + CloseContext->TypeOfOpen, + TRUE, + NULL); + + /* Free context if necessary */ + if (FreeContext) ExFreePool(CloseContext); + } + + /* Release VCB if necessary */ + if (CurrentVcb) ExReleaseResourceLite(&CurrentVcb->Resource); + + /* Reset top level IRP */ + if (!Vcb) IoSetTopLevelIrp( NULL ); +} + +VOID +NTAPI +FatCloseWorker(IN PDEVICE_OBJECT DeviceObject, + IN PVOID Context) +{ + FsRtlEnterFileSystem(); + + FatPendingClose((PVCB)Context); + + FsRtlExitFileSystem(); +} + +VOID +NTAPI +FatQueueClose(IN PCLOSE_CONTEXT CloseContext, + IN BOOLEAN DelayClose) +{ + BOOLEAN RunWorker = FALSE; + + /* Acquire the close lists mutex */ + ExAcquireFastMutexUnsafe(&FatCloseQueueMutex); + + /* Add it to the desired list */ + if (DelayClose) + { + InsertTailList(&FatGlobalData.DelayedCloseList, + &CloseContext->GlobalLinks); + InsertTailList(&CloseContext->Vcb->DelayedCloseList, + &CloseContext->VcbLinks); + + FatGlobalData.DelayedCloseCount++; + + if (FatGlobalData.DelayedCloseCount > FatMaxDelayedCloseCount && + !FatGlobalData.AsyncCloseActive) + { + FatGlobalData.AsyncCloseActive = TRUE; + RunWorker = TRUE; + } + } + else + { + InsertTailList(&FatGlobalData.AsyncCloseList, + &CloseContext->GlobalLinks); + InsertTailList(&CloseContext->Vcb->AsyncCloseList, + &CloseContext->VcbLinks); + + FatGlobalData.AsyncCloseCount++; + + if (!FatGlobalData.AsyncCloseActive) + { + FatGlobalData.AsyncCloseActive = TRUE; + RunWorker = TRUE; + } + } + + /* Release the close lists mutex */ + ExReleaseFastMutexUnsafe(&FatCloseQueueMutex); + + if (RunWorker) + IoQueueWorkItem(FatGlobalData.FatCloseItem, FatCloseWorker, CriticalWorkQueue, NULL); +} + +PCLOSE_CONTEXT +NTAPI +FatRemoveClose(PVCB Vcb OPTIONAL, + PVCB LastVcbHint OPTIONAL) +{ + PLIST_ENTRY Entry; + PCLOSE_CONTEXT CloseContext; + BOOLEAN IsWorker = FALSE; + + /* Acquire the close lists mutex */ + ExAcquireFastMutexUnsafe(&FatCloseQueueMutex); + + if (!Vcb) IsWorker = TRUE; + + if (Vcb == NULL && LastVcbHint != NULL) + { + // TODO: A very special case of overflowing the queue + UNIMPLEMENTED; + } + + /* Usual processing from a worker thread */ + if (!Vcb) + { +TryToCloseAgain: + + /* Is there anything in the async close list */ + if (!IsListEmpty(&FatGlobalData.AsyncCloseList)) + { + Entry = RemoveHeadList(&FatGlobalData.AsyncCloseList); + FatGlobalData.AsyncCloseCount--; + + CloseContext = CONTAINING_RECORD(Entry, + CLOSE_CONTEXT, + GlobalLinks); + + RemoveEntryList(&CloseContext->VcbLinks); + } else if (!IsListEmpty(&FatGlobalData.DelayedCloseList) && + (FatGlobalData.DelayedCloseCount > FatMaxDelayedCloseCount/2 || + FatGlobalData.ShutdownStarted)) + { + /* In case of a shutdown or when delayed queue is filled at half - perform closing */ + Entry = RemoveHeadList(&FatGlobalData.DelayedCloseList); + FatGlobalData.DelayedCloseCount--; + + CloseContext = CONTAINING_RECORD(Entry, + CLOSE_CONTEXT, + GlobalLinks); + RemoveEntryList(&CloseContext->VcbLinks); + } + else + { + /* Nothing to close */ + CloseContext = NULL; + if (IsWorker) FatGlobalData.AsyncCloseActive = FALSE; + } + } + else + { + if (!IsListEmpty(&Vcb->AsyncCloseList)) + { + /* Is there anything in the async close list */ + Entry = RemoveHeadList(&Vcb->AsyncCloseList); + FatGlobalData.AsyncCloseCount--; + + CloseContext = CONTAINING_RECORD(Entry, + CLOSE_CONTEXT, + VcbLinks); + + RemoveEntryList(&CloseContext->GlobalLinks); + } + else if (!IsListEmpty(&Vcb->DelayedCloseList)) + { + /* Process delayed close list */ + Entry = RemoveHeadList(&Vcb->DelayedCloseList); + FatGlobalData.DelayedCloseCount--; + + CloseContext = CONTAINING_RECORD(Entry, + CLOSE_CONTEXT, + VcbLinks); + + RemoveEntryList(&CloseContext->GlobalLinks); + } + else if (LastVcbHint) + { + /* Try again */ + goto TryToCloseAgain; + } + else + { + /* Nothing to close */ + CloseContext = NULL; + } + } + + /* Release the close lists mutex */ + ExReleaseFastMutexUnsafe(&FatCloseQueueMutex); + + return CloseContext; } /* EOF */ diff --git a/drivers/filesystems/fastfat_new/create.c b/drivers/filesystems/fastfat_new/create.c index db9a794538e..ce8cc90522d 100644 --- a/drivers/filesystems/fastfat_new/create.c +++ b/drivers/filesystems/fastfat_new/create.c @@ -72,7 +72,9 @@ FatiOpenRootDcb(IN PFAT_IRP_CONTEXT IrpContext, /* Increment counters */ Dcb->OpenCount++; + Dcb->UncleanCount++; Vcb->OpenFileCount++; + if (IsFileObjectReadOnly(FileObject)) Vcb->ReadOnlyCount++; /* Set success statuses */ Iosb.Status = STATUS_SUCCESS; @@ -186,7 +188,7 @@ FatiOverwriteFile(PFAT_IRP_CONTEXT IrpContext, CcSetFileSizes(FileObject, (PCC_FILE_SIZES)&Fcb->Header.AllocationSize); // TODO: Actually truncate the file - DPRINT1("TODO: Actually truncate the file with a fullfat handle %x\n", Fcb->FatHandle); + DPRINT1("TODO: Actually truncate file '%wZ' with a fullfat handle %x\n", &Fcb->FullFileName, Fcb->FatHandle); /* Release the paging resource */ ExReleaseResourceLite(Fcb->Header.PagingIoResource); @@ -288,6 +290,12 @@ FatiOpenExistingDir(IN PFAT_IRP_CONTEXT IrpContext, Fcb, FatCreateCcb()); + /* Increase counters */ + Fcb->UncleanCount++; + Fcb->OpenCount++; + Vcb->OpenFileCount++; + if (IsFileObjectReadOnly(FileObject)) Vcb->ReadOnlyCount++; + Iosb.Status = STATUS_SUCCESS; Iosb.Information = FILE_OPENED; @@ -319,6 +327,7 @@ FatiOpenExistingFile(IN PFAT_IRP_CONTEXT IrpContext, PFCB Fcb; NTSTATUS Status; FF_FILE *FileHandle; + FF_ERROR FfError; /* Check for create file option and fail */ if (CreateDisposition == FILE_CREATE) @@ -341,20 +350,22 @@ FatiOpenExistingFile(IN PFAT_IRP_CONTEXT IrpContext, } /* Open the file with FullFAT */ - FileHandle = FF_Open(Vcb->Ioman, AnsiName.Buffer, FF_MODE_READ, NULL); + FileHandle = FF_Open(Vcb->Ioman, AnsiName.Buffer, FF_MODE_READ, &FfError); if (!FileHandle) { + DPRINT1("Failed to open file '%s', error %ld\n", AnsiName.Buffer, FfError); Iosb.Status = STATUS_OBJECT_NAME_NOT_FOUND; // FIXME: A shortcut for now return Iosb; } + DPRINT1("Succeeded opening file '%s'\n", AnsiName.Buffer); /* Create a new FCB for this file */ Fcb = FatCreateFcb(IrpContext, Vcb, ParentDcb, FileHandle); // TODO: Check if overwrite is needed - // This is usual file open branch, without overwriting! + // TODO: This is usual file open branch, without overwriting! /* Set context and section object pointers */ FatSetFileObject(FileObject, UserFileOpen, @@ -365,6 +376,13 @@ FatiOpenExistingFile(IN PFAT_IRP_CONTEXT IrpContext, Iosb.Status = STATUS_SUCCESS; Iosb.Information = FILE_OPENED; + + /* Increase counters */ + Fcb->UncleanCount++; + Fcb->OpenCount++; + if (FlagOn(FileObject->Flags, FO_NO_INTERMEDIATE_BUFFERING)) Fcb->NonCachedUncleanCount++; + if (IsFileObjectReadOnly(FileObject)) Vcb->ReadOnlyCount++; + return Iosb; } @@ -397,7 +415,7 @@ FatiOpenVolume(IN PFAT_IRP_CONTEXT IrpContext, // and opened handles count is not 0 //if (!FlagOn(ShareAccess, FILE_SHARE_READ) - DPRINT1("Exclusive voume open\n"); + DPRINT1("Exclusive volume open\n"); // TODO: Flush the volume VolumeFlushed = TRUE; @@ -450,6 +468,7 @@ FatiOpenVolume(IN PFAT_IRP_CONTEXT IrpContext, /* Increase direct open count */ Vcb->DirectOpenCount++; Vcb->OpenFileCount++; + if (IsFileObjectReadOnly(FileObject)) Vcb->ReadOnlyCount++; /* Set no buffering flag */ FileObject->Flags |= FO_NO_INTERMEDIATE_BUFFERING; @@ -720,7 +739,7 @@ FatiCreate(IN PFAT_IRP_CONTEXT IrpContext, /* Set parent DCB */ ParentDcb = RelatedDcb; - DPRINT1("Opening file '%wZ' relatively to '%wZ'\n", &FileName, &ParentDcb->FullFileName); + DPRINT("Opening file '%wZ' relatively to '%wZ'\n", &FileName, &ParentDcb->FullFileName); } else { @@ -1137,6 +1156,12 @@ FatiCreate(IN PFAT_IRP_CONTEXT IrpContext, DeleteOnClose, OpenedAsDos); + /* In case of success set cache supported flag */ + if (NT_SUCCESS(Iosb.Status) && !NoIntermediateBuffering) + { + SetFlag(FileObject->Flags, FO_CACHE_SUPPORTED); + } + Irp->IoStatus.Information = Iosb.Information; /* Unlock VCB */ diff --git a/drivers/filesystems/fastfat_new/dir.c b/drivers/filesystems/fastfat_new/dir.c index ca04e84c191..991971545bf 100644 --- a/drivers/filesystems/fastfat_new/dir.c +++ b/drivers/filesystems/fastfat_new/dir.c @@ -82,9 +82,6 @@ FatCreateRootDcb(IN PFAT_IRP_CONTEXT IrpContext, ExInitializeFastMutex(&Dcb->HeaderMutex); FsRtlSetupAdvancedHeader(&Dcb->Header, &Dcb->HeaderMutex); - /* Initialize MCB */ - FsRtlInitializeLargeMcb(&Dcb->Mcb, NonPagedPool); - /* Set up first cluster field depending on FAT type */ if (TRUE/*FatIsFat32(Vcb)*/) { @@ -114,13 +111,6 @@ FatCreateRootDcb(IN PFAT_IRP_CONTEXT IrpContext, #endif UNIMPLEMENTED; } - - /* Initialize free dirent bitmap */ - RtlInitializeBitMap(&Dcb->Dcb.FreeBitmap, NULL, 0); - - /* Fill the dirent bitmap */ - DPRINT1("Filling the free dirent bitmap is missing\n"); - //FatCheckFreeDirentBitmap( IrpContext, Dcb ); } PFCB @@ -191,9 +181,98 @@ FatiOpenExistingDcb(IN PFAT_IRP_CONTEXT IrpContext, IN BOOLEAN DeleteOnClose) { IO_STATUS_BLOCK Iosb = {{0}}; + PCCB Ccb; - Iosb.Status = STATUS_NOT_IMPLEMENTED; - UNIMPLEMENTED; + /* Exclusively lock this FCB */ + FatAcquireExclusiveFcb(IrpContext, Dcb); + + /* Check if it's a delete-on-close of a root DCB */ + if (FatNodeType(Dcb) == FAT_NTC_ROOT_DCB && DeleteOnClose) + { + Iosb.Status = STATUS_CANNOT_DELETE; + + /* Release the lock and return */ + FatReleaseFcb(IrpContext, Dcb); + return Iosb; + } + + /*if (NoEaKnowledge && NodeType(Dcb) != FAT_NTC_ROOT_DCB && + !FatIsFat32(Vcb)) + { + UNIMPLEMENTED; + }*/ + + /* Check the create disposition and desired access */ + if ((CreateDisposition != FILE_OPEN) && + (CreateDisposition != FILE_OPEN_IF)) + { + Iosb.Status = STATUS_OBJECT_NAME_COLLISION; + + /* Release the lock and return */ + FatReleaseFcb(IrpContext, Dcb); + return Iosb; + } + +#if 0 + if (!FatCheckFileAccess(IrpContext, + Dcb->DirentFatFlags, + DesiredAccess)) + { + Iosb.Status = STATUS_ACCESS_DENIED; + try_return( Iosb ); + } +#endif + + /* If it's already opened - check share access */ + if (Dcb->OpenCount > 0) + { + Iosb.Status = IoCheckShareAccess(*DesiredAccess, + ShareAccess, + FileObject, + &Dcb->ShareAccess, + TRUE); + + if (!NT_SUCCESS(Iosb.Status)) + { + /* Release the lock and return */ + FatReleaseFcb(IrpContext, Dcb); + return Iosb; + } + } + else + { + IoSetShareAccess(*DesiredAccess, + ShareAccess, + FileObject, + &Dcb->ShareAccess); + } + + /* Set the file object */ + Ccb = FatCreateCcb(IrpContext); + FatSetFileObject(FileObject, + UserDirectoryOpen, + Dcb, + Ccb); + + /* Increase counters */ + Dcb->UncleanCount++; + Dcb->OpenCount++; + Vcb->OpenFileCount++; + if (IsFileObjectReadOnly(FileObject)) Vcb->ReadOnlyCount++; + + /* Set delete on close */ + if (DeleteOnClose) + SetFlag(Ccb->Flags, CCB_DELETE_ON_CLOSE); + + /* Clear delay close flag */ + ClearFlag(Dcb->State, FCB_STATE_DELAY_CLOSE); + + /* That's it */ + Iosb.Status = STATUS_SUCCESS; + Iosb.Information = FILE_OPENED; + + /* Release the lock */ + FatReleaseFcb(IrpContext, Dcb); return Iosb; } diff --git a/drivers/filesystems/fastfat_new/fastfat.c b/drivers/filesystems/fastfat_new/fastfat.c index 64736afc797..c469437b152 100644 --- a/drivers/filesystems/fastfat_new/fastfat.c +++ b/drivers/filesystems/fastfat_new/fastfat.c @@ -14,6 +14,7 @@ /* GLOBALS ******************************************************************/ FAT_GLOBAL_DATA FatGlobalData; +FAST_MUTEX FatCloseQueueMutex; /* FUNCTIONS ****************************************************************/ @@ -42,6 +43,7 @@ DriverEntry(PDRIVER_OBJECT DriverObject, RtlZeroMemory(&FatGlobalData, sizeof(FAT_GLOBAL_DATA)); FatGlobalData.DriverObject = DriverObject; FatGlobalData.DiskDeviceObject = DeviceObject; + FatGlobalData.SystemProcess = PsGetCurrentProcess(); /* Fill major function handlers */ DriverObject->MajorFunction[IRP_MJ_CLOSE] = FatClose; @@ -108,6 +110,12 @@ DriverEntry(PDRIVER_OBJECT DriverObject, /* Initialize synchronization resource for the global data */ ExInitializeResourceLite(&FatGlobalData.Resource); + /* Initialize queued close stuff */ + InitializeListHead(&FatGlobalData.AsyncCloseList); + InitializeListHead(&FatGlobalData.DelayedCloseList); + FatGlobalData.FatCloseItem = IoAllocateWorkItem(DeviceObject); + ExInitializeFastMutex(&FatCloseQueueMutex); + /* Initialize global VCB list */ InitializeListHead(&FatGlobalData.VcbListHead); @@ -317,7 +325,7 @@ FatDecodeFileObject(IN PFILE_OBJECT FileObject, TypeOfOpen = (*Ccb == NULL ? DirectoryFile : UserDirectoryOpen); - DPRINT1("Referencing a directory: %wZ\n", &(*FcbOrDcb)->FullFileName); + DPRINT("Referencing a directory: %wZ\n", &(*FcbOrDcb)->FullFileName); break; /* File */ @@ -510,4 +518,45 @@ FatMapUserBuffer(PIRP Irp) return MmGetSystemAddressForMdlSafe(Irp->MdlAddress, NormalPagePriority); } +BOOLEAN +NTAPI +FatIsTopLevelIrp(IN PIRP Irp) +{ + if (!IoGetTopLevelIrp()) + { + IoSetTopLevelIrp(Irp); + return TRUE; + } + + return FALSE; +} + +VOID +NTAPI +FatNotifyReportChange(IN PFAT_IRP_CONTEXT IrpContext, + IN PVCB Vcb, + IN PFCB Fcb, + IN ULONG Filter, + IN ULONG Action) +{ + if (Fcb->FullFileName.Buffer == NULL) + FatSetFullFileNameInFcb(IrpContext, Fcb); + + ASSERT(Fcb->FullFileName.Length != 0 ); + ASSERT(Fcb->FileNameLength != 0 ); + ASSERT(Fcb->FullFileName.Length > Fcb->FileNameLength ); + ASSERT(Fcb->FullFileName.Buffer[(Fcb->FullFileName.Length - Fcb->FileNameLength)/sizeof(WCHAR) - 1] == L'\\' ); + + FsRtlNotifyFullReportChange(Vcb->NotifySync, + &Vcb->NotifyList, + (PSTRING)&Fcb->FullFileName, + (USHORT)(Fcb->FullFileName.Length - + Fcb->FileNameLength), + NULL, + NULL, + Filter, + Action, + NULL); +} + /* EOF */ diff --git a/drivers/filesystems/fastfat_new/fastfat.h b/drivers/filesystems/fastfat_new/fastfat.h index a227a91f0ea..fbbf272c413 100644 --- a/drivers/filesystems/fastfat_new/fastfat.h +++ b/drivers/filesystems/fastfat_new/fastfat.h @@ -16,6 +16,7 @@ #define TAG_FCB 'BCFV' #define TAG_IRP 'PRIV' #define TAG_VFAT 'TAFV' +#define TAG_FSD_CLOSE_CONTEXT 'CLCV' /* Global resource acquire/release */ @@ -36,6 +37,34 @@ ExReleaseResourceLite(&(FatGlobalData.Resource)); \ } +#define FatIsFastIoPossible(FCB) ((BOOLEAN) \ + (((FCB)->Condition != FcbGood || !FsRtlOplockIsFastIoPossible(&(FCB)->Fcb.Oplock)) ? \ + FastIoIsNotPossible \ + : \ + (!FsRtlAreThereCurrentFileLocks(&(FCB)->Fcb.Lock) && \ + ((FCB)->OutstandingAsyncWrites == 0) && \ + !FlagOn((FCB)->Vcb->State, VCB_STATE_FLAG_WRITE_PROTECTED) ? \ + FastIoIsPossible \ + : \ + FastIoIsQuestionable \ + ) \ + ) \ +) + +#define IsFileObjectReadOnly(FO) (!((FO)->WriteAccess | (FO)->DeleteAccess)) +#define IsFileDeleted(FCB) (FlagOn((FCB)->State, FCB_STATE_DELETE_ON_CLOSE) && ((FCB)->UncleanCount == 0)) + +BOOLEAN +FORCEINLINE +FatIsIoRangeValid(IN LARGE_INTEGER Start, IN ULONG Length) +{ + /* Check if it's more than 32bits, or if the length causes 32bit overflow. + FAT-specific! */ + + return !(Start.HighPart || Start.LowPart + Length < Start.LowPart); +} + + NTSYSAPI NTSTATUS NTAPI @@ -67,6 +96,12 @@ FatReadStreamFile(PVCB Vcb, PBCB *Bcb, PVOID *Buffer); +BOOLEAN +NTAPI +FatCheckForDismount(IN PFAT_IRP_CONTEXT IrpContext, + PVCB Vcb, + IN BOOLEAN Force); + /* ----------------------------------------------------------- dir.c */ NTSTATUS NTAPI @@ -149,6 +184,8 @@ FatNoopRelease(IN PVOID Context); /* --------------------------------------------------------- fastfat.c */ +extern FAST_MUTEX FatCloseQueueMutex; + PFAT_IRP_CONTEXT NTAPI FatBuildIrpContext(PIRP Irp, BOOLEAN CanWait); @@ -205,6 +242,16 @@ FatSetFileObject(PFILE_OBJECT FileObject, PVOID FASTCALL FatMapUserBuffer(PIRP Irp); +BOOLEAN NTAPI +FatIsTopLevelIrp(IN PIRP Irp); + +VOID NTAPI +FatNotifyReportChange(IN PFAT_IRP_CONTEXT IrpContext, + IN PVCB Vcb, + IN PFCB Fcb, + IN ULONG Filter, + IN ULONG Action); + /* --------------------------------------------------------- fullfat.c */ FF_T_SINT32 @@ -284,6 +331,10 @@ FatCreateFcb( IN PFCB ParentDcb, IN FF_FILE *FileHandle); +VOID NTAPI +FatDeleteFcb(IN PFAT_IRP_CONTEXT IrpContext, + IN PFCB Fcb); + IO_STATUS_BLOCK NTAPI FatiOpenExistingFcb(IN PFAT_IRP_CONTEXT IrpContext, IN PFILE_OBJECT FileObject, @@ -319,6 +370,10 @@ FatRemoveNames(IN PFAT_IRP_CONTEXT IrpContext, PCCB NTAPI FatCreateCcb(); +VOID NTAPI +FatDeleteCcb(IN PFAT_IRP_CONTEXT IrpContext, + IN PCCB Ccb); + VOID NTAPI FatSetFullNameInFcb(PFCB Fcb, PUNICODE_STRING Name); diff --git a/drivers/filesystems/fastfat_new/fat.c b/drivers/filesystems/fastfat_new/fat.c index 06b601c48e8..a6ac9fa9995 100644 --- a/drivers/filesystems/fastfat_new/fat.c +++ b/drivers/filesystems/fastfat_new/fat.c @@ -163,6 +163,10 @@ FatInitializeVcb(IN PFAT_IRP_CONTEXT IrpContext, /* Initialize VCB's resource */ ExInitializeResourceLite(&Vcb->Resource); + /* Initialize close queue lists */ + InitializeListHead(&Vcb->AsyncCloseList); + InitializeListHead(&Vcb->DelayedCloseList); + /* Initialize CC */ CcInitializeCacheMap(Vcb->StreamFileObject, (PCC_FILE_SIZES)&Vcb->Header.AllocationSize, @@ -201,6 +205,10 @@ FatInitializeVcb(IN PFAT_IRP_CONTEXT IrpContext, goto FatInitializeVcbCleanup; } + /* Increase internal / residual open counter */ + InterlockedIncrement((PLONG)&(Vcb->InternalOpenCount)); + InterlockedIncrement((PLONG)&(Vcb->ResidualOpenCount)); + /* Set up notifications */ FsRtlNotifyInitializeSync(&Vcb->NotifySync); InitializeListHead(&Vcb->NotifyList); @@ -239,6 +247,9 @@ FatUninitializeVcb(IN PVCB Vcb) Vcb->StreamFileObject = NULL; } + /* Free ContextClose if it's not freed up already */ + if (Vcb->CloseContext) ExFreePool(Vcb->CloseContext); + /* Free notifications stuff */ FsRtlNotifyUninitializeSync(&Vcb->NotifySync); diff --git a/drivers/filesystems/fastfat_new/fatstruc.h b/drivers/filesystems/fastfat_new/fatstruc.h index dff04c59ec7..2ca2f54b8da 100644 --- a/drivers/filesystems/fastfat_new/fatstruc.h +++ b/drivers/filesystems/fastfat_new/fatstruc.h @@ -14,15 +14,17 @@ typedef FAT_NODE_TYPE *PFAT_NODE_TYPE; #define FatNodeType(Ptr) (*((PFAT_NODE_TYPE)(Ptr))) /* Node type codes */ -#define FAT_NTC_VCB (CSHORT) '00VF' -#define FAT_NTC_FCB (CSHORT) 'CF' -#define FAT_NTC_DCB (CSHORT) 'DF' -#define FAT_NTC_ROOT_DCB (CSHORT) 'RFD' -#define FAT_NTC_CCB (CSHORT) 'BCC' +#define FAT_NTC_VCB (CSHORT) '00VF' +#define FAT_NTC_FCB (CSHORT) 'CF' +#define FAT_NTC_DCB (CSHORT) 'DF' +#define FAT_NTC_ROOT_DCB (CSHORT) 'RFD' +#define FAT_NTC_CCB (CSHORT) 'BCC' +#define FAT_NTC_IRP_CONTEXT (CSHORT) 'PRI' typedef struct _FAT_GLOBAL_DATA { ERESOURCE Resource; + PEPROCESS SystemProcess; PDRIVER_OBJECT DriverObject; PDEVICE_OBJECT DiskDeviceObject; LIST_ENTRY VcbListHead; @@ -33,9 +35,20 @@ typedef struct _FAT_GLOBAL_DATA CACHE_MANAGER_CALLBACKS CacheMgrCallbacks; CACHE_MANAGER_CALLBACKS CacheMgrNoopCallbacks; BOOLEAN Win31FileSystem; + BOOLEAN ShutdownStarted; /* Jan 1, 1980 System Time */ LARGE_INTEGER DefaultFileTime; + /* Queued close */ + ULONG AsyncCloseCount; + ULONG DelayedCloseCount; + LIST_ENTRY AsyncCloseList; + LIST_ENTRY DelayedCloseList; + PIO_WORKITEM FatCloseItem; + + /* Various flags */ + BOOLEAN AsyncCloseActive; + /* FullFAT integration */ FF_IOMAN *Ioman; FF_ERROR FF_Error; @@ -82,6 +95,10 @@ typedef struct _FAT_PAGE_CONTEXT typedef struct _FAT_IRP_CONTEXT { + /* Type and size of this record (must be FAT_NTC_IRP_CONTEXT) */ + FAT_NODE_TYPE NodeTypeCode; + CSHORT NodeByteSize; + PIRP Irp; PDEVICE_OBJECT DeviceObject; UCHAR MajorFunction; @@ -132,10 +149,15 @@ typedef struct _FAT_METHODS { PFAT_SETFAT_VALUE_RUN_ROUTINE SetValueRun; } FAT_METHODS, *PFAT_METHODS; -#define VCB_STATE_FLAG_LOCKED 0x01 -#define VCB_STATE_FLAG_DIRTY 0x02 -#define VCB_STATE_MOUNTED_DIRTY 0x04 -#define VCB_STATE_CREATE_IN_PROGRESS 0x08 +#define VCB_STATE_FLAG_LOCKED 0x001 +#define VCB_STATE_FLAG_DIRTY 0x002 +#define VCB_STATE_MOUNTED_DIRTY 0x004 +#define VCB_STATE_CREATE_IN_PROGRESS 0x008 +#define VCB_STATE_FLAG_CLOSE_IN_PROGRESS 0x010 +#define VCB_STATE_FLAG_DELETED_FCB 0x020 +#define VCB_STATE_FLAG_DISMOUNT_IN_PROGRESS 0x040 +#define VCB_STATE_FLAG_DEFERRED_FLUSH 0x080 +#define VCB_STATE_FLAG_WRITE_PROTECTED 0x100 typedef enum _VCB_CONDITION { @@ -158,10 +180,13 @@ typedef struct _VCB ULONG State; VCB_CONDITION Condition; ERESOURCE Resource; + struct _CLOSE_CONTEXT *CloseContext; + LIST_ENTRY AsyncCloseList; + LIST_ENTRY DelayedCloseList; /* Direct volume access */ - ULONG DirectOpenCount; SHARE_ACCESS ShareAccess; + PFILE_OBJECT FileObjectWithVcbLocked; /* Notifications support */ PNOTIFY_SYNC NotifySync; @@ -186,8 +211,13 @@ typedef struct _VCB struct _FCB *RootDcb; /* Counters */ - ULONG MediaChangeCount; + ULONG DirectOpenCount; ULONG OpenFileCount; + ULONG ReadOnlyCount; + ULONG InternalOpenCount; + ULONG ResidualOpenCount; + ULONG DirectAccessOpenCount; + ULONG MediaChangeCount; /* FullFAT integration */ FF_IOMAN *Ioman; @@ -221,6 +251,18 @@ typedef struct _VOLUME_DEVICE_OBJECT VCB Vcb; /* Must be the last entry! */ }; } VOLUME_DEVICE_OBJECT, *PVOLUME_DEVICE_OBJECT; + +typedef enum _TYPE_OF_OPEN +{ + UnopenedFileObject, + UserFileOpen, + UserDirectoryOpen, + UserVolumeOpen, + VirtualVolumeFile, + DirectoryFile, + EaFile +} TYPE_OF_OPEN; + // // Short name always exists in FAT // @@ -252,6 +294,7 @@ typedef enum _FCB_CONDITION #define FCB_STATE_PAGEFILE 0x04 #define FCB_STATE_DELAY_CLOSE 0x08 #define FCB_STATE_TRUNCATE_ON_CLOSE 0x10 +#define FCB_STATE_DELETE_ON_CLOSE 0x20 typedef struct _FCB { @@ -281,8 +324,6 @@ typedef struct _FCB FCB_CONDITION Condition; /* Share access */ SHARE_ACCESS ShareAccess; - /* Mcb mapping Vbo->Lbo */ - LARGE_MCB Mcb; ULONG FirstCluster; /* Links into FCB Tree */ FCB_NAME_LINK ShortName; @@ -307,6 +348,8 @@ typedef struct _FCB PKEVENT OutstandingAsyncEvent; /* Counters */ ULONG OpenCount; + ULONG UncleanCount; + ULONG NonCachedUncleanCount; union { struct @@ -318,12 +361,11 @@ typedef struct _FCB struct { - /* A list of all FCBs/DCBs opened under this DCB */ - LIST_ENTRY ParentDcbList; + LIST_ENTRY ParentDcbList; /* A list of all FCBs/DCBs opened under this DCB */ + ULONG DirectoryFileOpenCount; /* Sector-based access to the dir */ + PFILE_OBJECT DirectoryFile; /* Directory data stream (just handy to have it). */ - PFILE_OBJECT StreamFileObject; - /* Bitmap to search for free dirents. */ - RTL_BITMAP FreeBitmap; + //PFILE_OBJECT StreamFileObject; /* Names */ PRTL_SPLAY_LINKS SplayLinksAnsi; PRTL_SPLAY_LINKS SplayLinksUnicode; @@ -368,6 +410,17 @@ typedef struct _FAT_FIND_DIRENT_CONTEXT BOOLEAN Valid8dot3Name; } FAT_FIND_DIRENT_CONTEXT, *PFAT_FIND_DIRENT_CONTEXT; +typedef struct _CLOSE_CONTEXT +{ + LIST_ENTRY GlobalLinks; + LIST_ENTRY VcbLinks; + + PVCB Vcb; + PFCB Fcb; + TYPE_OF_OPEN TypeOfOpen; + BOOLEAN Free; +} CLOSE_CONTEXT, *PCLOSE_CONTEXT; + typedef struct _CCB { CSHORT NodeTypeCode; @@ -377,19 +430,9 @@ typedef struct _CCB ULONG Entry; UNICODE_STRING SearchPattern; UCHAR Flags; + CLOSE_CONTEXT CloseContext; } CCB, *PCCB; -typedef enum _TYPE_OF_OPEN -{ - UnopenedFileObject, - UserFileOpen, - UserDirectoryOpen, - UserVolumeOpen, - VirtualVolumeFile, - DirectoryFile, - EaFile -} TYPE_OF_OPEN; - typedef enum _FILE_TIME_INDEX { FileCreationTime = 0, @@ -401,5 +444,10 @@ typedef enum _FILE_TIME_INDEX #define CCB_SEARCH_RETURN_SINGLE_ENTRY 0x01 #define CCB_SEARCH_PATTERN_LEGAL_8DOT3 0x02 #define CCB_SEARCH_PATTERN_HAS_WILD_CARD 0x04 -#define CCB_DASD_IO 0x10 +#define CCB_DASD_IO 0x08 +#define CCB_READ_ONLY 0x10 +#define CCB_DELETE_ON_CLOSE 0x20 +#define CCB_COMPLETE_DISMOUNT 0x40 +#define CCB_CLOSE_CONTEXT 0x80 + extern FAT_GLOBAL_DATA FatGlobalData; diff --git a/drivers/filesystems/fastfat_new/fcb.c b/drivers/filesystems/fastfat_new/fcb.c index cb02d53bb16..eeb12dd8c17 100644 --- a/drivers/filesystems/fastfat_new/fcb.c +++ b/drivers/filesystems/fastfat_new/fcb.c @@ -149,12 +149,74 @@ FatCreateFcb(IN PFAT_IRP_CONTEXT IrpContext, Fcb->Header.ValidDataLength.LowPart = FileHandle->Filesize; Fcb->FatHandle = FileHandle; + /* Initialize locks */ + FsRtlInitializeFileLock(&Fcb->Fcb.Lock, NULL, NULL); + FsRtlInitializeOplock(&Fcb->Fcb.Oplock); + /* Set names */ FatSetFcbNames(IrpContext, Fcb); return Fcb; } +VOID +NTAPI +FatDeleteFcb(IN PFAT_IRP_CONTEXT IrpContext, + IN PFCB Fcb) +{ + DPRINT("FatDeleteFcb %p\n", Fcb); + + if (Fcb->OpenCount != 0) + { + DPRINT1("Trying to delete FCB with OpenCount %d\n", Fcb->OpenCount); + ASSERT(FALSE); + } + + if ((Fcb->Header.NodeTypeCode == FAT_NTC_DCB) || + (Fcb->Header.NodeTypeCode == FAT_NTC_ROOT_DCB)) + { + /* Make sure it's a valid deletion */ + ASSERT(Fcb->Dcb.DirectoryFileOpenCount == 0); + ASSERT(IsListEmpty(&Fcb->Dcb.ParentDcbList)); + ASSERT(Fcb->Dcb.DirectoryFile == NULL); + } + else + { + /* Free locks */ + FsRtlUninitializeFileLock(&Fcb->Fcb.Lock); + FsRtlUninitializeOplock(&Fcb->Fcb.Oplock); + } + + /* Release any possible filter contexts */ + FsRtlTeardownPerStreamContexts(&Fcb->Header); + + /* Remove from parents queue */ + if (Fcb->Header.NodeTypeCode != FAT_NTC_ROOT_DCB) + { + RemoveEntryList(&(Fcb->ParentDcbLinks)); + } + + /* Free FullFAT handle */ + if (Fcb->FatHandle) FF_Close(Fcb->FatHandle); + + /* Remove from the splay table */ + if (FlagOn(Fcb->State, FCB_STATE_HAS_NAMES)) + FatRemoveNames(IrpContext, Fcb); + + /* Free file name buffers */ + if (Fcb->Header.NodeTypeCode != FAT_NTC_ROOT_DCB) + { + if (Fcb->FullFileName.Buffer) + ExFreePool(Fcb->FullFileName.Buffer); + } + + if (Fcb->ExactCaseLongName.Buffer) + ExFreePool(Fcb->ExactCaseLongName.Buffer); + + /* Free this FCB, finally */ + ExFreePool(Fcb); +} + PCCB NTAPI FatCreateCcb() @@ -172,6 +234,17 @@ FatCreateCcb() return Ccb; } +VOID +NTAPI +FatDeleteCcb(IN PFAT_IRP_CONTEXT IrpContext, + IN PCCB Ccb) +{ + // TODO: Deallocate CCB strings, if any + + /* Free the CCB */ + ExFreePool(Ccb); +} + IO_STATUS_BLOCK NTAPI FatiOpenExistingFcb(IN PFAT_IRP_CONTEXT IrpContext, @@ -443,8 +516,11 @@ SuccComplete: ClearFlag(Fcb->State, FCB_STATE_DELAY_CLOSE); /* Increase counters */ + Fcb->UncleanCount++; Fcb->OpenCount++; Vcb->OpenFileCount++; + if (IsFileObjectReadOnly(FileObject)) Vcb->ReadOnlyCount++; + if (FlagOn(FileObject->Flags, FO_NO_INTERMEDIATE_BUFFERING)) Fcb->NonCachedUncleanCount++; // TODO: Handle DeleteOnClose and OpenedAsDos by storing those flags in CCB } diff --git a/drivers/filesystems/fastfat_new/finfo.c b/drivers/filesystems/fastfat_new/finfo.c index d162abaa132..7e958348787 100644 --- a/drivers/filesystems/fastfat_new/finfo.c +++ b/drivers/filesystems/fastfat_new/finfo.c @@ -263,11 +263,7 @@ FatQueryInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp) FsRtlEnterFileSystem(); /* Set Top Level IRP if not set */ - if (IoGetTopLevelIrp() == NULL) - { - IoSetTopLevelIrp(Irp); - TopLevel = TRUE; - } + TopLevel = FatIsTopLevelIrp(Irp); /* Build an irp context */ IrpContext = FatBuildIrpContext(Irp, CanWait); @@ -284,12 +280,394 @@ FatQueryInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp) return Status; } +NTSTATUS +NTAPI +FatSetEndOfFileInfo(IN PFAT_IRP_CONTEXT IrpContext, + IN PIRP Irp, + IN PFILE_OBJECT FileObject, + IN PVCB Vcb, + IN PFCB Fcb) +{ + PFILE_END_OF_FILE_INFORMATION Buffer; + ULONG NewFileSize; + ULONG InitialFileSize; + ULONG InitialValidDataLength; + //ULONG InitialValidDataToDisk; + BOOLEAN CacheMapInitialized = FALSE; + BOOLEAN ResourceAcquired = FALSE; + NTSTATUS Status; + + Buffer = Irp->AssociatedIrp.SystemBuffer; + + if (FatNodeType(Fcb) != FAT_NTC_FCB) + { + /* Trying to change size of a dir */ + Status = STATUS_INVALID_DEVICE_REQUEST; + return Status; + } + + /* Validate new size */ + if (!FatIsIoRangeValid(Buffer->EndOfFile, 0)) + { + Status = STATUS_DISK_FULL; + return Status; + } + + NewFileSize = Buffer->EndOfFile.LowPart; + + /* Lookup allocation size if needed */ + if (Fcb->Header.AllocationSize.QuadPart == (LONGLONG)-1) + UNIMPLEMENTED;//FatLookupFileAllocationSize(IrpContext, Fcb); + + /* Cache the file if there is a data section */ + if (FileObject->SectionObjectPointer->DataSectionObject && + (FileObject->SectionObjectPointer->SharedCacheMap == NULL) && + !FlagOn(Irp->Flags, IRP_PAGING_IO)) + { + if (FlagOn(FileObject->Flags, FO_CLEANUP_COMPLETE)) + { + /* This is a really weird condition */ + UNIMPLEMENTED; + //Raise(STATUS_FILE_CLOSED); + } + + /* Initialize the cache map */ + CcInitializeCacheMap(FileObject, + (PCC_FILE_SIZES)&Fcb->Header.AllocationSize, + FALSE, + &FatGlobalData.CacheMgrCallbacks, + Fcb); + + CacheMapInitialized = TRUE; + } + + /* Lazy write case */ + if (IoGetCurrentIrpStackLocation(Irp)->Parameters.SetFile.AdvanceOnly) + { + if (!IsFileDeleted(Fcb) && + (Fcb->Condition == FcbGood)) + { + /* Clamp the new file size */ + if (NewFileSize >= Fcb->Header.FileSize.LowPart) + NewFileSize = Fcb->Header.FileSize.LowPart; + + ASSERT(NewFileSize <= Fcb->Header.AllocationSize.LowPart); + + /* Never reduce the file size here! */ + + // TODO: Actually change file size + DPRINT1("Actually changing file size is missing\n"); + + /* Notify about file size change */ + FatNotifyReportChange(IrpContext, + Vcb, + Fcb, + FILE_NOTIFY_CHANGE_SIZE, + FILE_ACTION_MODIFIED); + } + else + { + DPRINT1("Cannot set size on deleted file\n"); + } + + Status = STATUS_SUCCESS; + return Status; + } + + if ( NewFileSize > Fcb->Header.AllocationSize.LowPart ) + { + // TODO: Increase file size + DPRINT1("Actually changing file size is missing\n"); + } + + if (Fcb->Header.FileSize.LowPart != NewFileSize) + { + if (NewFileSize < Fcb->Header.FileSize.LowPart) + { + if (!MmCanFileBeTruncated(FileObject->SectionObjectPointer, + &Buffer->EndOfFile)) + { + Status = STATUS_USER_MAPPED_FILE; + + /* Free up resources if necessary */ + if (CacheMapInitialized) + CcUninitializeCacheMap(FileObject, NULL, NULL); + + return Status; + } + + ResourceAcquired = ExAcquireResourceExclusiveLite(Fcb->Header.PagingIoResource, TRUE); + } + + /* Set new file sizes */ + InitialFileSize = Fcb->Header.FileSize.LowPart; + InitialValidDataLength = Fcb->Header.ValidDataLength.LowPart; + //InitialValidDataToDisk = Fcb->ValidDataToDisk; + + Fcb->Header.FileSize.LowPart = NewFileSize; + + /* Adjust valid data length if new size is less than that */ + if (Fcb->Header.ValidDataLength.LowPart > NewFileSize) + Fcb->Header.ValidDataLength.LowPart = NewFileSize; + + //if (Fcb->ValidDataToDisk > NewFileSize) + // Fcb->ValidDataToDisk = NewFileSize; + + DPRINT1("New file size is 0x%08lx\n", NewFileSize); + + /* Update cache mapping */ + CcSetFileSizes(FileObject, + (PCC_FILE_SIZES)&Fcb->Header.AllocationSize); + + /* Notify about size change */ + FatNotifyReportChange(IrpContext, + Vcb, + Fcb, + FILE_NOTIFY_CHANGE_SIZE, + FILE_ACTION_MODIFIED); + + /* Set truncate on close flag */ + SetFlag(Fcb->State, FCB_STATE_TRUNCATE_ON_CLOSE); + } + + /* Set modified flag */ + FileObject->Flags |= FO_FILE_MODIFIED; + + /* Free up resources if necessary */ + if (CacheMapInitialized) + CcUninitializeCacheMap(FileObject, NULL, NULL); + + if (ResourceAcquired) + ExReleaseResourceLite(Fcb->Header.PagingIoResource); + + return STATUS_SUCCESS; +} + +NTSTATUS +NTAPI +FatiSetInformation(IN PFAT_IRP_CONTEXT IrpContext, + IN PIRP Irp) +{ + PFILE_OBJECT FileObject; + PIO_STACK_LOCATION IrpSp; + FILE_INFORMATION_CLASS InfoClass; + TYPE_OF_OPEN TypeOfOpen; + PVCB Vcb; + PFCB Fcb; + PCCB Ccb; + LONG Length; + PVOID Buffer; + NTSTATUS Status = STATUS_SUCCESS; + BOOLEAN VcbAcquired = FALSE, FcbAcquired = FALSE; + + /* Get IRP stack location */ + IrpSp = IoGetCurrentIrpStackLocation(Irp); + + /* Get the file object */ + FileObject = IrpSp->FileObject; + + /* Copy variables to something with shorter names */ + InfoClass = IrpSp->Parameters.SetFile.FileInformationClass; + Length = IrpSp->Parameters.SetFile.Length; + Buffer = Irp->AssociatedIrp.SystemBuffer; + + DPRINT("FatiSetInformation\n", 0); + DPRINT("\tIrp = %08lx\n", Irp); + DPRINT("\tLength = %08lx\n", Length); + DPRINT("\tFileInformationClass = %08lx\n", InfoClass); + DPRINT("\tFileObject = %08lx\n", IrpSp->Parameters.SetFile.FileObject); + DPRINT("\tBuffer = %08lx\n", Buffer); + + TypeOfOpen = FatDecodeFileObject(FileObject, &Vcb, &Fcb, &Ccb); + + DPRINT("Vcb %p, Fcb %p, Ccb %p, open type %d\n", Vcb, Fcb, Ccb, TypeOfOpen); + + switch (TypeOfOpen) + { + case UserVolumeOpen: + Status = STATUS_INVALID_PARAMETER; + /* Complete request and return status */ + FatCompleteRequest(IrpContext, Irp, Status); + return Status; + case UserFileOpen: + /* Check oplocks */ + if (!FlagOn(Fcb->State, FCB_STATE_PAGEFILE) && + ((InfoClass == FileEndOfFileInformation) || + (InfoClass == FileAllocationInformation))) + { + Status = FsRtlCheckOplock(&Fcb->Fcb.Oplock, + Irp, + IrpContext, + NULL, + NULL); + + if (Status != STATUS_SUCCESS) + { + /* Complete request and return status */ + FatCompleteRequest(IrpContext, Irp, Status); + return Status; + } + + /* Update Fast IO flag */ + Fcb->Header.IsFastIoPossible = FatIsFastIoPossible(Fcb); + } + break; + + case UserDirectoryOpen: + break; + + default: + Status = STATUS_INVALID_PARAMETER; + /* Complete request and return status */ + FatCompleteRequest(IrpContext, Irp, Status); + return Status; + } + + /* If it's a root DCB - fail */ + if (FatNodeType(Fcb) == FAT_NTC_ROOT_DCB) + { + if (InfoClass == FileDispositionInformation) + Status = STATUS_CANNOT_DELETE; + else + Status = STATUS_INVALID_PARAMETER; + + /* Complete request and return status */ + FatCompleteRequest(IrpContext, Irp, Status); + return Status; + } + + /* Acquire the volume lock if needed */ + if (InfoClass == FileDispositionInformation || + InfoClass == FileRenameInformation) + { + if (!FatAcquireExclusiveVcb(IrpContext, Vcb)) + { + UNIMPLEMENTED; + } + + VcbAcquired = TRUE; + } + + /* Acquire FCB lock */ + if (!FlagOn(Fcb->State, FCB_STATE_PAGEFILE)) + { + if (!FatAcquireExclusiveFcb(IrpContext, Fcb)) + { + UNIMPLEMENTED; + } + + FcbAcquired = TRUE; + } + + // TODO: VerifyFcb + + switch (InfoClass) + { + case FileBasicInformation: + //Status = FatSetBasicInfo(IrpContext, Irp, Fcb, Ccb); + DPRINT1("FileBasicInformation\n"); + break; + + case FileDispositionInformation: + if (FlagOn(Vcb->State, VCB_STATE_FLAG_DEFERRED_FLUSH) && + !FlagOn(IrpContext->Flags, IRPCONTEXT_CANWAIT)) + { + UNIMPLEMENTED; + } + else + { + //Status = FatSetDispositionInfo(IrpContext, Irp, FileObject, Fcb); + DPRINT1("FileDispositionInformation\n"); + } + + break; + + case FileRenameInformation: + if (!FlagOn(IrpContext->Flags, IRPCONTEXT_CANWAIT)) + { + UNIMPLEMENTED; + } + else + { + //Status = FatSetRenameInfo(IrpContext, Irp, Vcb, Fcb, Ccb); + DPRINT1("FileRenameInformation\n"); + + /* NOTE: Request must not be completed here! + That's why Irp/IrpContext are set to NULL */ + if (Status == STATUS_PENDING) + { + Irp = NULL; + IrpContext = NULL; + } + } + break; + + case FilePositionInformation: + //Status = FatSetPositionInfo(IrpContext, Irp, FileObject); + DPRINT1("FilePositionInformation\n"); + break; + + case FileLinkInformation: + Status = STATUS_INVALID_DEVICE_REQUEST; + break; + + case FileAllocationInformation: + //Status = FatSetAllocationInfo(IrpContext, Irp, Fcb, FileObject); + DPRINT1("FileAllocationInformation\n"); + break; + + case FileEndOfFileInformation: + Status = FatSetEndOfFileInfo(IrpContext, Irp, FileObject, Vcb, Fcb); + break; + + default: + Status = STATUS_INVALID_PARAMETER; + } + + /* Release locks */ + if (FcbAcquired) FatReleaseFcb(IrpContext, Fcb); + if (VcbAcquired) FatReleaseVcb(IrpContext, Vcb); + + /* Complete request and return status */ + FatCompleteRequest(IrpContext, Irp, Status); + return Status; +} + NTSTATUS NTAPI FatSetInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp) { - DPRINT1("FatSetInformation()\n"); - return STATUS_NOT_IMPLEMENTED; + NTSTATUS Status; + BOOLEAN TopLevel, CanWait; + PFAT_IRP_CONTEXT IrpContext; + + CanWait = TRUE; + TopLevel = FALSE; + Status = STATUS_INVALID_DEVICE_REQUEST; + + /* Get CanWait flag */ + if (IoGetCurrentIrpStackLocation(Irp)->FileObject != NULL) + CanWait = IoIsOperationSynchronous(Irp); + + /* Enter FsRtl critical region */ + FsRtlEnterFileSystem(); + + /* Set Top Level IRP if not set */ + TopLevel = FatIsTopLevelIrp(Irp); + + /* Build an irp context */ + IrpContext = FatBuildIrpContext(Irp, CanWait); + + /* Perform the actual read */ + Status = FatiSetInformation(IrpContext, Irp); + + /* Restore top level Irp */ + if (TopLevel) IoSetTopLevelIrp(NULL); + + /* Leave FsRtl critical region */ + FsRtlExitFileSystem(); + + return Status; } /* EOF */ diff --git a/drivers/filesystems/fastfat_new/fsctl.c b/drivers/filesystems/fastfat_new/fsctl.c index 2953836cc45..540b417b8d8 100644 --- a/drivers/filesystems/fastfat_new/fsctl.c +++ b/drivers/filesystems/fastfat_new/fsctl.c @@ -13,13 +13,181 @@ /* FUNCTIONS ****************************************************************/ +NTSTATUS +NTAPI +FatOplockRequest(IN PFAT_IRP_CONTEXT IrpContext, + IN PIRP Irp) +{ + NTSTATUS Status; + DPRINT1("Oplock request!\n"); + + Status = STATUS_INVALID_DEVICE_REQUEST; + FatCompleteRequest(IrpContext, Irp, Status); + + return Status; +} + +NTSTATUS +NTAPI +FatMarkVolumeDirty(IN PFAT_IRP_CONTEXT IrpContext, + IN PIRP Irp) +{ + NTSTATUS Status; + DPRINT1("Marking volume as dirty\n"); + + Status = STATUS_SUCCESS; + FatCompleteRequest(IrpContext, Irp, Status); + + return Status; +} + NTSTATUS NTAPI FatUserFsCtrl(PFAT_IRP_CONTEXT IrpContext, PIRP Irp) { - DPRINT1("FatUserFsCtrl()\n"); - FatCompleteRequest(IrpContext, Irp, STATUS_INVALID_DEVICE_REQUEST); - return STATUS_INVALID_DEVICE_REQUEST; + PIO_STACK_LOCATION IrpSp; + NTSTATUS Status; + ULONG Code; + + /* Get current IRP stack location */ + IrpSp = IoGetCurrentIrpStackLocation(Irp); + + Code = IrpSp->Parameters.FileSystemControl.FsControlCode; + + /* Set the wait flag */ + if (Irp->RequestorMode != KernelMode && + (Code & 3) == METHOD_NEITHER) + { + SetFlag(IrpContext->Flags, IRPCONTEXT_CANWAIT); + } + + /* Branch according to the code */ + switch (Code) + { + case FSCTL_REQUEST_OPLOCK_LEVEL_1: + case FSCTL_REQUEST_OPLOCK_LEVEL_2: + case FSCTL_REQUEST_BATCH_OPLOCK: + case FSCTL_OPLOCK_BREAK_ACKNOWLEDGE: + case FSCTL_OPBATCH_ACK_CLOSE_PENDING: + case FSCTL_OPLOCK_BREAK_NOTIFY: + case FSCTL_OPLOCK_BREAK_ACK_NO_2: + case FSCTL_REQUEST_FILTER_OPLOCK : + Status = FatOplockRequest(IrpContext, Irp); + break; + + case FSCTL_LOCK_VOLUME: + //Status = FatLockVolume( IrpContext, Irp ); + DPRINT1("FSCTL_LOCK_VOLUME\n"); + Status = STATUS_INVALID_DEVICE_REQUEST; + FatCompleteRequest(IrpContext, Irp, Status); + break; + + case FSCTL_UNLOCK_VOLUME: + //Status = FatUnlockVolume( IrpContext, Irp ); + DPRINT1("FSCTL_UNLOCK_VOLUME\n"); + Status = STATUS_INVALID_DEVICE_REQUEST; + FatCompleteRequest(IrpContext, Irp, Status); + break; + + case FSCTL_DISMOUNT_VOLUME: + //Status = FatDismountVolume( IrpContext, Irp ); + DPRINT1("FSCTL_DISMOUNT_VOLUME\n"); + Status = STATUS_INVALID_DEVICE_REQUEST; + FatCompleteRequest(IrpContext, Irp, Status); + break; + + case FSCTL_MARK_VOLUME_DIRTY: + Status = FatMarkVolumeDirty(IrpContext, Irp); + break; + + case FSCTL_IS_VOLUME_DIRTY: + //Status = FatIsVolumeDirty( IrpContext, Irp ); + DPRINT1("FSCTL_IS_VOLUME_DIRTY\n"); + Status = STATUS_INVALID_DEVICE_REQUEST; + FatCompleteRequest(IrpContext, Irp, Status); + break; + + case FSCTL_IS_VOLUME_MOUNTED: + //Status = FatIsVolumeMounted( IrpContext, Irp ); + DPRINT1("FSCTL_IS_VOLUME_MOUNTED\n"); + Status = STATUS_INVALID_DEVICE_REQUEST; + FatCompleteRequest(IrpContext, Irp, Status); + break; + + case FSCTL_IS_PATHNAME_VALID: + //Status = FatIsPathnameValid( IrpContext, Irp ); + DPRINT1("FSCTL_IS_PATHNAME_VALID\n"); + Status = STATUS_INVALID_DEVICE_REQUEST; + FatCompleteRequest(IrpContext, Irp, Status); + break; + + case FSCTL_QUERY_RETRIEVAL_POINTERS: + //Status = FatQueryRetrievalPointers( IrpContext, Irp ); + DPRINT1("FSCTL_QUERY_RETRIEVAL_POINTERS\n"); + Status = STATUS_INVALID_DEVICE_REQUEST; + FatCompleteRequest(IrpContext, Irp, Status); + break; + + case FSCTL_QUERY_FAT_BPB: + //Status = FatQueryBpb( IrpContext, Irp ); + DPRINT1("FSCTL_QUERY_FAT_BPB\n"); + Status = STATUS_INVALID_DEVICE_REQUEST; + FatCompleteRequest(IrpContext, Irp, Status); + break; + + case FSCTL_FILESYSTEM_GET_STATISTICS: + //Status = FatGetStatistics( IrpContext, Irp ); + DPRINT1("FSCTL_FILESYSTEM_GET_STATISTICS\n"); + Status = STATUS_INVALID_DEVICE_REQUEST; + FatCompleteRequest(IrpContext, Irp, Status); + break; + + case FSCTL_GET_VOLUME_BITMAP: + //Status = FatGetVolumeBitmap( IrpContext, Irp ); + DPRINT1("FSCTL_GET_VOLUME_BITMAP\n"); + Status = STATUS_INVALID_DEVICE_REQUEST; + FatCompleteRequest(IrpContext, Irp, Status); + break; + + case FSCTL_GET_RETRIEVAL_POINTERS: + //Status = FatGetRetrievalPointers( IrpContext, Irp ); + DPRINT1("FSCTL_GET_RETRIEVAL_POINTERS\n"); + Status = STATUS_INVALID_DEVICE_REQUEST; + FatCompleteRequest(IrpContext, Irp, Status); + break; + + case FSCTL_MOVE_FILE: + //Status = FatMoveFile( IrpContext, Irp ); + DPRINT1("FSCTL_MOVE_FILE\n"); + Status = STATUS_INVALID_DEVICE_REQUEST; + FatCompleteRequest(IrpContext, Irp, Status); + break; + + case FSCTL_ALLOW_EXTENDED_DASD_IO: + //Status = FatAllowExtendedDasdIo( IrpContext, Irp ); + DPRINT1("FSCTL_ALLOW_EXTENDED_DASD_IO\n"); + Status = STATUS_INVALID_DEVICE_REQUEST; + FatCompleteRequest(IrpContext, Irp, Status); + break; + + default: + DPRINT("FatUserFsCtrl(), unhandled fs control code 0x%x\n", Code); + Status = STATUS_INVALID_DEVICE_REQUEST; + FatCompleteRequest(IrpContext, Irp, Status); + } + + //(((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method)) + + // 9c040 + // 1 1 0 0 0 + // 6 4 8 4 0 + // 10011100000001000000 + // DT = 1001 = 9 + // Access = 11 = 3 + // Function = 10000 = 16 + // Method = 0 + + return Status; } NTSTATUS diff --git a/drivers/filesystems/fastfat_new/lock.c b/drivers/filesystems/fastfat_new/lock.c index a081c4b29dd..509aa50b81c 100644 --- a/drivers/filesystems/fastfat_new/lock.c +++ b/drivers/filesystems/fastfat_new/lock.c @@ -13,12 +13,98 @@ /* FUNCTIONS ****************************************************************/ +NTSTATUS +NTAPI +FatiLockControl(PFAT_IRP_CONTEXT IrpContext, PIRP Irp) +{ + PIO_STACK_LOCATION IrpSp; + TYPE_OF_OPEN TypeOfOpen; + PVCB Vcb; + PFCB Fcb; + PCCB Ccb; + NTSTATUS Status; + + /* Get IRP stack location */ + IrpSp = IoGetCurrentIrpStackLocation(Irp); + + /* Determine type of open */ + TypeOfOpen = FatDecodeFileObject(IrpSp->FileObject, &Vcb, &Fcb, &Ccb); + + /* Only user file open is allowed */ + if (TypeOfOpen != UserFileOpen) + { + FatCompleteRequest(IrpContext, Irp, STATUS_INVALID_PARAMETER); + return STATUS_INVALID_PARAMETER; + } + + /* Acquire shared FCB lock */ + if (!FatAcquireSharedFcb(IrpContext, Fcb)) + { + UNIMPLEMENTED; + //Status = FatFsdPostRequest(IrpContext, Irp); + Status = STATUS_NOT_IMPLEMENTED; + return Status; + } + + /* Check oplock state */ + Status = FsRtlCheckOplock(&Fcb->Fcb.Oplock, + Irp, + IrpContext, + FatOplockComplete, + NULL); + + if (Status != STATUS_SUCCESS) + { + /* Release FCB lock */ + FatReleaseFcb(IrpContext, Fcb); + + return Status; + } + + /* Process the lock */ + Status = FsRtlProcessFileLock(&Fcb->Fcb.Lock, Irp, NULL); + + /* Update Fast I/O state */ + Fcb->Header.IsFastIoPossible = FatIsFastIoPossible(Fcb); + + /* Complete the request */ + FatCompleteRequest(IrpContext, NULL, 0); + + /* Release FCB lock */ + FatReleaseFcb(IrpContext, Fcb); + + return Status; +} + NTSTATUS NTAPI FatLockControl(PDEVICE_OBJECT DeviceObject, PIRP Irp) { + PFAT_IRP_CONTEXT IrpContext; + NTSTATUS Status; + BOOLEAN TopLevel; + DPRINT1("FatLockControl()\n"); - return STATUS_NOT_IMPLEMENTED; + + /* Enter FsRtl critical region */ + FsRtlEnterFileSystem(); + + /* Set Top Level IRP if not set */ + TopLevel = FatIsTopLevelIrp(Irp); + + /* Build an irp context */ + IrpContext = FatBuildIrpContext(Irp, IoIsOperationSynchronous(Irp)); + + /* Call internal function */ + Status = FatiLockControl(IrpContext, Irp); + + /* Reset Top Level IRP */ + if (TopLevel) IoSetTopLevelIrp(NULL); + + /* Leave FsRtl critical region */ + FsRtlExitFileSystem(); + + return Status; } VOID diff --git a/drivers/filesystems/fastfat_new/rw.c b/drivers/filesystems/fastfat_new/rw.c index a4b887b0c38..cdaea2b52a3 100644 --- a/drivers/filesystems/fastfat_new/rw.c +++ b/drivers/filesystems/fastfat_new/rw.c @@ -91,11 +91,7 @@ FatRead(PDEVICE_OBJECT DeviceObject, PIRP Irp) if (DeviceObject != FatGlobalData.DiskDeviceObject) { /* Set Top Level IRP if not set */ - if (IoGetTopLevelIrp() == NULL) - { - IoSetTopLevelIrp(Irp); - TopLevel = TRUE; - } + TopLevel = FatIsTopLevelIrp(Irp); /* Build an irp context */ IrpContext = FatBuildIrpContext(Irp, CanWait); diff --git a/drivers/filesystems/fastfat_new/volume.c b/drivers/filesystems/fastfat_new/volume.c index 49a67b0a450..a6a30abed38 100644 --- a/drivers/filesystems/fastfat_new/volume.c +++ b/drivers/filesystems/fastfat_new/volume.c @@ -8,7 +8,7 @@ /* INCLUDES *****************************************************************/ -//#define NDEBUG +#define NDEBUG #include "fastfat.h" /* FUNCTIONS ****************************************************************/ @@ -77,12 +77,31 @@ FatiQueryFsSizeInfo(PVCB Vcb, Buffer->SectorsPerAllocationUnit = Vcb->Bpb.SectorsPerCluster; Buffer->BytesPerSector = Vcb->Bpb.BytesPerSector; - DPRINT1("Total %d, free %d, SPC %d, BPS %d\n", Partition->FreeClusterCount, - Partition->NumClusters, Vcb->Bpb.SectorsPerCluster, Vcb->Bpb.BytesPerSector); + DPRINT1("Total %d, free %d, SPC %d, BPS %d\n", Partition->NumClusters, + Partition->FreeClusterCount, Vcb->Bpb.SectorsPerCluster, Vcb->Bpb.BytesPerSector); return Status; } +NTSTATUS +NTAPI +FatiQueryFsDeviceInfo(PVCB Vcb, + PFILE_FS_DEVICE_INFORMATION Buffer, + PLONG Length) +{ + /* Deduct the minimum written length */ + *Length -= sizeof(FILE_FS_DEVICE_INFORMATION); + + /* Zero it */ + RtlZeroMemory(Buffer, sizeof(FILE_FS_DEVICE_INFORMATION)); + + /* Set values */ + Buffer->DeviceType = FILE_DEVICE_DISK; + Buffer->Characteristics = Vcb->TargetDeviceObject->Characteristics; + + return STATUS_SUCCESS; +} + NTSTATUS NTAPI FatiQueryVolumeInfo(PFAT_IRP_CONTEXT IrpContext, PIRP Irp) @@ -135,13 +154,28 @@ FatiQueryVolumeInfo(PFAT_IRP_CONTEXT IrpContext, PIRP Irp) /* Call FsVolumeInfo handler */ Status = FatiQueryFsVolumeInfo(Vcb, Buffer, &Length); break; + case FileFsSizeInformation: /* Call FsVolumeInfo handler */ Status = FatiQueryFsSizeInfo(Vcb, Buffer, &Length); break; - default: - DPRINT1("Volume information class %d is not supported!\n", InfoClass); + + case FileFsDeviceInformation: + Status = FatiQueryFsDeviceInfo(Vcb, Buffer, &Length); + break; + + case FileFsAttributeInformation: UNIMPLEMENTED; + //Status = FatiQueryFsAttributeInfo(IrpContext, Vcb, Buffer, &Length); + break; + + case FileFsFullSizeInformation: + UNIMPLEMENTED; + //Status = FatiQueryFsFullSizeInfo(IrpContext, Vcb, Buffer, &Length); + break; + + default: + Status = STATUS_INVALID_PARAMETER; } /* Set IoStatus.Information to amount of filled bytes */ @@ -175,11 +209,7 @@ FatQueryVolumeInfo(PDEVICE_OBJECT DeviceObject, PIRP Irp) FsRtlEnterFileSystem(); /* Set Top Level IRP if not set */ - if (IoGetTopLevelIrp() == NULL) - { - IoSetTopLevelIrp(Irp); - TopLevel = TRUE; - } + TopLevel = FatIsTopLevelIrp(Irp); /* Build an irp context */ IrpContext = FatBuildIrpContext(Irp, CanWait); @@ -228,4 +258,14 @@ FatReadStreamFile(PVCB Vcb, } } +BOOLEAN +NTAPI +FatCheckForDismount(IN PFAT_IRP_CONTEXT IrpContext, + PVCB Vcb, + IN BOOLEAN Force) +{ + /* We never allow deletion of a volume for now */ + return FALSE; +} + /* EOF */ diff --git a/drivers/network/ndis/include/miniport.h b/drivers/network/ndis/include/miniport.h index 7dd615db1bf..ad4de2a81e3 100644 --- a/drivers/network/ndis/include/miniport.h +++ b/drivers/network/ndis/include/miniport.h @@ -27,7 +27,7 @@ typedef struct _NDIS_M_DRIVER_BLOCK { PDRIVER_OBJECT DriverObject; /* Driver object of miniport */ LIST_ENTRY DeviceList; /* Adapters created by miniport */ PUNICODE_STRING RegistryPath; /* SCM Registry key */ -#if !defined(_MSC_VER) && defined(__NDIS_H) +#if !defined(_MSC_VER) && defined(_NDIS_) } NDIS_M_DRIVER_BLOCK_COMPATIBILITY_HACK_DONT_USE; #else } NDIS_M_DRIVER_BLOCK, *PNDIS_M_DRIVER_BLOCK; diff --git a/include/ddk/acpiioct.h b/include/ddk/acpiioct.h index d4d550feae1..eeeb6e8eacc 100644 --- a/include/ddk/acpiioct.h +++ b/include/ddk/acpiioct.h @@ -35,7 +35,7 @@ extern "C" { typedef struct _ACPI_EVAL_INPUT_BUFFER { ULONG Signature; - union { + _ANONYMOUS_UNION union { UCHAR MethodName[4]; ULONG MethodNameAsUlong; } DUMMYUNIONNAME; @@ -43,7 +43,7 @@ typedef struct _ACPI_EVAL_INPUT_BUFFER { typedef struct _ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER { ULONG Signature; - union { + _ANONYMOUS_UNION union { UCHAR MethodName[4]; ULONG MethodNameAsUlong; } DUMMYUNIONNAME; @@ -52,7 +52,7 @@ typedef struct _ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER { typedef struct _ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING { ULONG Signature; - union { + _ANONYMOUS_UNION union { UCHAR MethodName[4]; ULONG MethodNameAsUlong; } DUMMYUNIONNAME; @@ -63,7 +63,7 @@ typedef struct _ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING { typedef struct _ACPI_METHOD_ARGUMENT { USHORT Type; USHORT DataLength; - union { + _ANONYMOUS_UNION union { ULONG Argument; UCHAR Data[ANYSIZE_ARRAY]; } DUMMYUNIONNAME; @@ -72,7 +72,7 @@ typedef ACPI_METHOD_ARGUMENT UNALIGNED *PACPI_METHOD_ARGUMENT; typedef struct _ACPI_EVAL_INPUT_BUFFER_COMPLEX { ULONG Signature; - union { + _ANONYMOUS_UNION union { UCHAR MethodName[4]; ULONG MethodNameAsUlong; } DUMMYUNIONNAME; @@ -142,47 +142,47 @@ typedef struct _ACPI_ENUM_CHILDREN_OUTPUT_BUFFER { typedef ACPI_ENUM_CHILDREN_OUTPUT_BUFFER UNALIGNED *PACPI_ENUM_CHILDREN_OUTPUT_BUFFER; #define ACPI_METHOD_ARGUMENT_LENGTH( DataLength ) \ - (FIELD_OFFSET(ACPI_METHOD_ARGUMENT, Data) + max(sizeof(ULONG), DataLength)) + (FIELD_OFFSET(ACPI_METHOD_ARGUMENT, Data) + max(sizeof(ULONG), DataLength)) #define ACPI_METHOD_ARGUMENT_LENGTH_FROM_ARGUMENT( Argument ) \ - (ACPI_METHOD_ARGUMENT_LENGTH(((PACPI_METHOD_ARGUMENT)Argument)->DataLength)) + (ACPI_METHOD_ARGUMENT_LENGTH(((PACPI_METHOD_ARGUMENT)Argument)->DataLength)) #define ACPI_METHOD_NEXT_ARGUMENT( Argument ) \ - (PACPI_METHOD_ARGUMENT) ( (PUCHAR) Argument + \ - ACPI_METHOD_ARGUMENT_LENGTH_FROM_ARGUMENT( Argument ) ) + (PACPI_METHOD_ARGUMENT) ( (PUCHAR) Argument + \ + ACPI_METHOD_ARGUMENT_LENGTH_FROM_ARGUMENT( Argument ) ) #define ACPI_METHOD_SET_ARGUMENT_INTEGER( MethodArgument, IntData ) \ - { MethodArgument->Type = ACPI_METHOD_ARGUMENT_INTEGER; \ - MethodArgument->DataLength = sizeof(ULONG); \ - MethodArgument->Argument = IntData; } + { MethodArgument->Type = ACPI_METHOD_ARGUMENT_INTEGER; \ + MethodArgument->DataLength = sizeof(ULONG); \ + MethodArgument->Argument = IntData; } #define ACPI_METHOD_SET_ARGUMENT_STRING( Argument, StrData ) \ - { Argument->Type = ACPI_METHOD_ARGUMENT_STRING; \ - Argument->DataLength = strlen((PCHAR)StrData) + sizeof(UCHAR); \ - RtlCopyMemory(&Argument->Data[0],(PUCHAR)StrData,Argument->DataLength); } + { Argument->Type = ACPI_METHOD_ARGUMENT_STRING; \ + Argument->DataLength = strlen((PCHAR)StrData) + sizeof(UCHAR); \ + RtlCopyMemory(&Argument->Data[0],(PUCHAR)StrData,Argument->DataLength); } #define ACPI_METHOD_SET_ARGUMENT_BUFFER( Argument, BuffData, BuffLength ) \ - { Argument->Type = ACPI_METHOD_ARGUMENT_BUFFER; \ - Argument->DataLength = BuffLength; \ - RtlCopyMemory(&Argument->Data[0],(PUCHAR)BuffData,Argument->DataLength); } + { Argument->Type = ACPI_METHOD_ARGUMENT_BUFFER; \ + Argument->DataLength = BuffLength; \ + RtlCopyMemory(&Argument->Data[0],(PUCHAR)BuffData,Argument->DataLength); } -#define ACPI_ENUM_CHILD_LENGTH_FROM_CHILD( Child ) \ - ( (2* sizeof (ULONG)) + Child->NameLength ) +#define ACPI_ENUM_CHILD_LENGTH_FROM_CHILD( Child ) \ + ( (2* sizeof (ULONG)) + Child->NameLength ) -#define ACPI_ENUM_CHILD_NEXT( Child ) \ - (PACPI_ENUM_CHILD) ( (PUCHAR) Child + \ - ACPI_ENUM_CHILD_LENGTH_FROM_CHILD( Child ) ) +#define ACPI_ENUM_CHILD_NEXT( Child ) \ + (PACPI_ENUM_CHILD) ( (PUCHAR) Child + \ + ACPI_ENUM_CHILD_LENGTH_FROM_CHILD( Child ) ) -#define IOCTL_ACPI_ASYNC_EVAL_METHOD CTL_CODE(FILE_DEVICE_ACPI, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) -#define IOCTL_ACPI_EVAL_METHOD CTL_CODE(FILE_DEVICE_ACPI, 1, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) -#define IOCTL_ACPI_ACQUIRE_GLOBAL_LOCK CTL_CODE(FILE_DEVICE_ACPI, 4, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) -#define IOCTL_ACPI_RELEASE_GLOBAL_LOCK CTL_CODE(FILE_DEVICE_ACPI, 5, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_ACPI_ASYNC_EVAL_METHOD CTL_CODE(FILE_DEVICE_ACPI, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_ACPI_EVAL_METHOD CTL_CODE(FILE_DEVICE_ACPI, 1, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_ACPI_ACQUIRE_GLOBAL_LOCK CTL_CODE(FILE_DEVICE_ACPI, 4, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_ACPI_RELEASE_GLOBAL_LOCK CTL_CODE(FILE_DEVICE_ACPI, 5, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) #if (NTDDI_VERSION >= NTDDI_VISTA) -#define IOCTL_ACPI_EVAL_METHOD_EX CTL_CODE(FILE_DEVICE_ACPI, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) -#define IOCTL_ACPI_ASYNC_EVAL_METHOD_EX CTL_CODE(FILE_DEVICE_ACPI, 7, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) -#define IOCTL_ACPI_ENUM_CHILDREN CTL_CODE(FILE_DEVICE_ACPI, 8, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_ACPI_EVAL_METHOD_EX CTL_CODE(FILE_DEVICE_ACPI, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_ACPI_ASYNC_EVAL_METHOD_EX CTL_CODE(FILE_DEVICE_ACPI, 7, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_ACPI_ENUM_CHILDREN CTL_CODE(FILE_DEVICE_ACPI, 8, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) #endif #ifdef __cplusplus diff --git a/include/ddk/bdasup.h b/include/ddk/bdasup.h index 373ccdbdcbf..51964113d77 100644 --- a/include/ddk/bdasup.h +++ b/include/ddk/bdasup.h @@ -6,15 +6,6 @@ extern "C" { #endif -/* Helper macro to enable gcc's extension. */ -#ifndef __GNU_EXTENSION -#ifdef __GNUC__ -#define __GNU_EXTENSION __extension__ -#else -#define __GNU_EXTENSION -#endif -#endif - #define STDMETHODCALLTYPE __stdcall #ifndef _WDMDDK_ diff --git a/include/ddk/d3dhal.h b/include/ddk/d3dhal.h index d4ecc2ca4e9..81f8d11e42e 100644 --- a/include/ddk/d3dhal.h +++ b/include/ddk/d3dhal.h @@ -22,15 +22,6 @@ #ifndef _D3DHAL_H_ #define _D3DHAL_H_ -/* Helper macro to enable gcc's extension. */ -#ifndef __GNU_EXTENSION -#ifdef __GNUC__ -#define __GNU_EXTENSION __extension__ -#else -#define __GNU_EXTENSION -#endif -#endif - #ifdef __cplusplus extern "C" { #endif @@ -61,31 +52,31 @@ typedef struct _DDRAWI_DDRAWSURFACE_LCL FAR *LPDDRAWI_DDRAWSURFACE_LCL; * device info structures */ typedef struct _D3DDeviceDesc_V1 { - DWORD dwSize; - DWORD dwFlags; - D3DCOLORMODEL dcmColorModel; - DWORD dwDevCaps; - D3DTRANSFORMCAPS dtcTransformCaps; - BOOL bClipping; - D3DLIGHTINGCAPS dlcLightingCaps; - D3DPRIMCAPS dpcLineCaps; - D3DPRIMCAPS dpcTriCaps; - DWORD dwDeviceRenderBitDepth; - DWORD dwDeviceZBufferBitDepth; - DWORD dwMaxBufferSize; - DWORD dwMaxVertexCount; -} D3DDEVICEDESC_V1,*LPD3DDEVICEDESC_V1; + DWORD dwSize; + DWORD dwFlags; + D3DCOLORMODEL dcmColorModel; + DWORD dwDevCaps; + D3DTRANSFORMCAPS dtcTransformCaps; + BOOL bClipping; + D3DLIGHTINGCAPS dlcLightingCaps; + D3DPRIMCAPS dpcLineCaps; + D3DPRIMCAPS dpcTriCaps; + DWORD dwDeviceRenderBitDepth; + DWORD dwDeviceZBufferBitDepth; + DWORD dwMaxBufferSize; + DWORD dwMaxVertexCount; +} D3DDEVICEDESC_V1, *LPD3DDEVICEDESC_V1; /* this is to allow keeping the bulk of our OpenGL code out of x11drv */ #define D3DDD_WINE_OPENGL_DEVICE 0x00008000 typedef struct _D3DHAL_GLOBALDRIVERDATA { - DWORD dwSize; - D3DDEVICEDESC_V1 hwCaps; - DWORD dwNumVertices; - DWORD dwNumClipVertices; - DWORD dwNumTextureFormats; - LPDDSURFACEDESC lpTextureFormats; + DWORD dwSize; + D3DDEVICEDESC_V1 hwCaps; + DWORD dwNumVertices; + DWORD dwNumClipVertices; + DWORD dwNumTextureFormats; + LPDDSURFACEDESC lpTextureFormats; } D3DHAL_GLOBALDRIVERDATA; #ifndef D3DHAL_GLOBALDRIVERDATA_DEFINED @@ -94,103 +85,103 @@ typedef D3DHAL_GLOBALDRIVERDATA *LPD3DHAL_GLOBALDRIVERDATA; #endif typedef struct _D3DHAL_D3DEXTENDEDCAPS { - DWORD dwSize; + DWORD dwSize; /* DirectX 5 */ - DWORD dwMinTextureWidth, dwMaxTextureWidth; - DWORD dwMinTextureHeight, dwMaxTextureHeight; - DWORD dwMinStippleWidth, dwMaxStippleWidth; - DWORD dwMinStippleHeight, dwMaxStippleHeight; + DWORD dwMinTextureWidth, dwMaxTextureWidth; + DWORD dwMinTextureHeight, dwMaxTextureHeight; + DWORD dwMinStippleWidth, dwMaxStippleWidth; + DWORD dwMinStippleHeight, dwMaxStippleHeight; /* DirectX 6 */ - DWORD dwMaxTextureRepeat; - DWORD dwMaxTextureAspectRatio; - DWORD dwMaxAnisotropy; - D3DVALUE dvGuardBandLeft; - D3DVALUE dvGuardBandTop; - D3DVALUE dvGuardBandRight; - D3DVALUE dvGuardBandBottom; - D3DVALUE dvExtentsAdjust; - DWORD dwStencilCaps; - DWORD dwFVFCaps; - DWORD dwTextureOpCaps; - WORD wMaxTextureBlendStages; - WORD wMaxSimultaneousTextures; + DWORD dwMaxTextureRepeat; + DWORD dwMaxTextureAspectRatio; + DWORD dwMaxAnisotropy; + D3DVALUE dvGuardBandLeft; + D3DVALUE dvGuardBandTop; + D3DVALUE dvGuardBandRight; + D3DVALUE dvGuardBandBottom; + D3DVALUE dvExtentsAdjust; + DWORD dwStencilCaps; + DWORD dwFVFCaps; + DWORD dwTextureOpCaps; + WORD wMaxTextureBlendStages; + WORD wMaxSimultaneousTextures; /* DirectX 7 */ - DWORD dwMaxActiveLights; - D3DVALUE dvMaxVertexW; - WORD wMaxUserClipPlanes; - WORD wMaxVertexBlendMatrices; - DWORD dwVertexProcessingCaps; - DWORD dwReserved1; - DWORD dwReserved2; - DWORD dwReserved3; - DWORD dwReserved4; -} D3DHAL_D3DEXTENDEDCAPS,*LPD3DHAL_D3DEXTENDEDCAPS; + DWORD dwMaxActiveLights; + D3DVALUE dvMaxVertexW; + WORD wMaxUserClipPlanes; + WORD wMaxVertexBlendMatrices; + DWORD dwVertexProcessingCaps; + DWORD dwReserved1; + DWORD dwReserved2; + DWORD dwReserved3; + DWORD dwReserved4; +} D3DHAL_D3DEXTENDEDCAPS, *LPD3DHAL_D3DEXTENDEDCAPS; /***************************************************************************** * d3d->driver callbacks */ -typedef struct _D3DHAL_CONTEXTCREATEDATA *LPD3DHAL_CONTEXTCREATEDATA; -typedef struct _D3DHAL_CONTEXTDESTROYDATA *LPD3DHAL_CONTEXTDESTROYDATA; -typedef struct _D3DHAL_CONTEXTDESTROYALLDATA *LPD3DHAL_CONTEXTDESTROYALLDATA; -typedef struct _D3DHAL_SCENECAPTUREDATA *LPD3DHAL_SCENECAPTUREDATA; -typedef struct _D3DHAL_RENDERSTATEDATA *LPD3DHAL_RENDERSTATEDATA; -typedef struct _D3DHAL_RENDERPRIMITIVEDATA *LPD3DHAL_RENDERPRIMITIVEDATA; -typedef struct _D3DHAL_TEXTURECREATEDATA *LPD3DHAL_TEXTURECREATEDATA; -typedef struct _D3DHAL_TEXTUREDESTROYDATA *LPD3DHAL_TEXTUREDESTROYDATA; -typedef struct _D3DHAL_TEXTURESWAPDATA *LPD3DHAL_TEXTURESWAPDATA; -typedef struct _D3DHAL_TEXTUREGETSURFDATA *LPD3DHAL_TEXTUREGETSURFDATA; -typedef struct _D3DHAL_GETSTATEDATA *LPD3DHAL_GETSTATEDATA; +typedef struct _D3DHAL_CONTEXTCREATEDATA *LPD3DHAL_CONTEXTCREATEDATA; +typedef struct _D3DHAL_CONTEXTDESTROYDATA *LPD3DHAL_CONTEXTDESTROYDATA; +typedef struct _D3DHAL_CONTEXTDESTROYALLDATA *LPD3DHAL_CONTEXTDESTROYALLDATA; +typedef struct _D3DHAL_SCENECAPTUREDATA *LPD3DHAL_SCENECAPTUREDATA; +typedef struct _D3DHAL_RENDERSTATEDATA *LPD3DHAL_RENDERSTATEDATA; +typedef struct _D3DHAL_RENDERPRIMITIVEDATA *LPD3DHAL_RENDERPRIMITIVEDATA; +typedef struct _D3DHAL_TEXTURECREATEDATA *LPD3DHAL_TEXTURECREATEDATA; +typedef struct _D3DHAL_TEXTUREDESTROYDATA *LPD3DHAL_TEXTUREDESTROYDATA; +typedef struct _D3DHAL_TEXTURESWAPDATA *LPD3DHAL_TEXTURESWAPDATA; +typedef struct _D3DHAL_TEXTUREGETSURFDATA *LPD3DHAL_TEXTUREGETSURFDATA; +typedef struct _D3DHAL_GETSTATEDATA *LPD3DHAL_GETSTATEDATA; typedef DWORD (PASCAL *LPD3DHAL_CONTEXTCREATECB) (LPD3DHAL_CONTEXTCREATEDATA); typedef DWORD (PASCAL *LPD3DHAL_CONTEXTDESTROYCB) (LPD3DHAL_CONTEXTDESTROYDATA); typedef DWORD (PASCAL *LPD3DHAL_CONTEXTDESTROYALLCB)(LPD3DHAL_CONTEXTDESTROYALLDATA); -typedef DWORD (PASCAL *LPD3DHAL_SCENECAPTURECB) (LPD3DHAL_SCENECAPTUREDATA); -typedef DWORD (PASCAL *LPD3DHAL_RENDERSTATECB) (LPD3DHAL_RENDERSTATEDATA); +typedef DWORD (PASCAL *LPD3DHAL_SCENECAPTURECB) (LPD3DHAL_SCENECAPTUREDATA); +typedef DWORD (PASCAL *LPD3DHAL_RENDERSTATECB) (LPD3DHAL_RENDERSTATEDATA); typedef DWORD (PASCAL *LPD3DHAL_RENDERPRIMITIVECB) (LPD3DHAL_RENDERPRIMITIVEDATA); typedef DWORD (PASCAL *LPD3DHAL_TEXTURECREATECB) (LPD3DHAL_TEXTURECREATEDATA); typedef DWORD (PASCAL *LPD3DHAL_TEXTUREDESTROYCB) (LPD3DHAL_TEXTUREDESTROYDATA); -typedef DWORD (PASCAL *LPD3DHAL_TEXTURESWAPCB) (LPD3DHAL_TEXTURESWAPDATA); +typedef DWORD (PASCAL *LPD3DHAL_TEXTURESWAPCB) (LPD3DHAL_TEXTURESWAPDATA); typedef DWORD (PASCAL *LPD3DHAL_TEXTUREGETSURFCB) (LPD3DHAL_TEXTUREGETSURFDATA); -typedef DWORD (PASCAL *LPD3DHAL_GETSTATECB) (LPD3DHAL_GETSTATEDATA); +typedef DWORD (PASCAL *LPD3DHAL_GETSTATECB) (LPD3DHAL_GETSTATEDATA); typedef struct _D3DHAL_CALLBACKS { - DWORD dwSize; - LPD3DHAL_CONTEXTCREATECB ContextCreate; - LPD3DHAL_CONTEXTDESTROYCB ContextDestroy; - LPD3DHAL_CONTEXTDESTROYALLCB ContextDestroyAll; - LPD3DHAL_SCENECAPTURECB SceneCapture; - LPVOID lpReserved10; - LPVOID lpReserved11; - LPD3DHAL_RENDERSTATECB RenderState; - LPD3DHAL_RENDERPRIMITIVECB RenderPrimitive; - DWORD dwReserved; - LPD3DHAL_TEXTURECREATECB TextureCreate; - LPD3DHAL_TEXTUREDESTROYCB TextureDestroy; - LPD3DHAL_TEXTURESWAPCB TextureSwap; - LPD3DHAL_TEXTUREGETSURFCB TextureGetSurf; + DWORD dwSize; + LPD3DHAL_CONTEXTCREATECB ContextCreate; + LPD3DHAL_CONTEXTDESTROYCB ContextDestroy; + LPD3DHAL_CONTEXTDESTROYALLCB ContextDestroyAll; + LPD3DHAL_SCENECAPTURECB SceneCapture; + LPVOID lpReserved10; + LPVOID lpReserved11; + LPD3DHAL_RENDERSTATECB RenderState; + LPD3DHAL_RENDERPRIMITIVECB RenderPrimitive; + DWORD dwReserved; + LPD3DHAL_TEXTURECREATECB TextureCreate; + LPD3DHAL_TEXTUREDESTROYCB TextureDestroy; + LPD3DHAL_TEXTURESWAPCB TextureSwap; + LPD3DHAL_TEXTUREGETSURFCB TextureGetSurf; /* now why did MS create CALLBACKS2 and CALLBACKS3 structures if * all these reserved fields were available? we may never know */ - LPVOID lpReserved12; - LPVOID lpReserved13; - LPVOID lpReserved14; - LPVOID lpReserved15; - LPVOID lpReserved16; - LPVOID lpReserved17; - LPVOID lpReserved18; - LPVOID lpReserved19; - LPVOID lpReserved20; - LPVOID lpReserved21; - LPD3DHAL_GETSTATECB GetState; - DWORD dwReserved0; - DWORD dwReserved1; - DWORD dwReserved2; - DWORD dwReserved3; - DWORD dwReserved4; - DWORD dwReserved5; - DWORD dwReserved6; - DWORD dwReserved7; - DWORD dwReserved8; - DWORD dwReserved9; + LPVOID lpReserved12; + LPVOID lpReserved13; + LPVOID lpReserved14; + LPVOID lpReserved15; + LPVOID lpReserved16; + LPVOID lpReserved17; + LPVOID lpReserved18; + LPVOID lpReserved19; + LPVOID lpReserved20; + LPVOID lpReserved21; + LPD3DHAL_GETSTATECB GetState; + DWORD dwReserved0; + DWORD dwReserved1; + DWORD dwReserved2; + DWORD dwReserved3; + DWORD dwReserved4; + DWORD dwReserved5; + DWORD dwReserved6; + DWORD dwReserved7; + DWORD dwReserved8; + DWORD dwReserved9; } D3DHAL_CALLBACKS; #ifndef D3DHAL_CALLBACKS_DEFINED @@ -198,132 +189,132 @@ typedef D3DHAL_CALLBACKS *LPD3DHAL_CALLBACKS; #define D3DHAL_CALLBACKS_DEFINED #endif -typedef struct _D3DHAL_SETRENDERTARGETDATA *LPD3DHAL_SETRENDERTARGETDATA; -typedef struct _D3DHAL_CLEARDATA *LPD3DHAL_CLEARDATA; -typedef struct _D3DHAL_DRAWONEPRIMITIVEDATA *LPD3DHAL_DRAWONEPRIMITIVEDATA; -typedef struct _D3DHAL_DRAWONEINDEXEDPRIMITIVEDATA *LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA; -typedef struct _D3DHAL_DRAWPRIMITIVESDATA *LPD3DHAL_DRAWPRIMITIVESDATA; +typedef struct _D3DHAL_SETRENDERTARGETDATA *LPD3DHAL_SETRENDERTARGETDATA; +typedef struct _D3DHAL_CLEARDATA *LPD3DHAL_CLEARDATA; +typedef struct _D3DHAL_DRAWONEPRIMITIVEDATA *LPD3DHAL_DRAWONEPRIMITIVEDATA; +typedef struct _D3DHAL_DRAWONEINDEXEDPRIMITIVEDATA *LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA; +typedef struct _D3DHAL_DRAWPRIMITIVESDATA *LPD3DHAL_DRAWPRIMITIVESDATA; -typedef DWORD (PASCAL *LPD3DHAL_SETRENDERTARGETCB) (LPD3DHAL_SETRENDERTARGETDATA); -typedef DWORD (PASCAL *LPD3DHAL_CLEARCB) (LPD3DHAL_CLEARDATA); -typedef DWORD (PASCAL *LPD3DHAL_DRAWONEPRIMITIVECB) (LPD3DHAL_DRAWONEPRIMITIVEDATA); +typedef DWORD (PASCAL *LPD3DHAL_SETRENDERTARGETCB) (LPD3DHAL_SETRENDERTARGETDATA); +typedef DWORD (PASCAL *LPD3DHAL_CLEARCB) (LPD3DHAL_CLEARDATA); +typedef DWORD (PASCAL *LPD3DHAL_DRAWONEPRIMITIVECB) (LPD3DHAL_DRAWONEPRIMITIVEDATA); typedef DWORD (PASCAL *LPD3DHAL_DRAWONEINDEXEDPRIMITIVECB)(LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA); -typedef DWORD (PASCAL *LPD3DHAL_DRAWPRIMITIVESCB) (LPD3DHAL_DRAWPRIMITIVESDATA); +typedef DWORD (PASCAL *LPD3DHAL_DRAWPRIMITIVESCB) (LPD3DHAL_DRAWPRIMITIVESDATA); typedef struct _D3DHAL_CALLBACKS2 { - DWORD dwSize; - DWORD dwFlags; - LPD3DHAL_SETRENDERTARGETCB SetRenderTarget; - LPD3DHAL_CLEARCB Clear; - LPD3DHAL_DRAWONEPRIMITIVECB DrawOnePrimitive; - LPD3DHAL_DRAWONEINDEXEDPRIMITIVECB DrawOneIndexedPrimitive; - LPD3DHAL_DRAWPRIMITIVESCB DrawPrimitives; -} D3DHAL_CALLBACKS2,*LPD3DHAL_CALLBACKS2; + DWORD dwSize; + DWORD dwFlags; + LPD3DHAL_SETRENDERTARGETCB SetRenderTarget; + LPD3DHAL_CLEARCB Clear; + LPD3DHAL_DRAWONEPRIMITIVECB DrawOnePrimitive; + LPD3DHAL_DRAWONEINDEXEDPRIMITIVECB DrawOneIndexedPrimitive; + LPD3DHAL_DRAWPRIMITIVESCB DrawPrimitives; +} D3DHAL_CALLBACKS2, *LPD3DHAL_CALLBACKS2; -typedef struct _D3DHAL_CLEAR2DATA *LPD3DHAL_CLEAR2DATA; -typedef struct _D3DHAL_VALIDATETEXTURESTAGESTATEDATA *LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA; -typedef struct _D3DHAL_DRAWPRIMITIVES2DATA *LPD3DHAL_DRAWPRIMITIVES2DATA; +typedef struct _D3DHAL_CLEAR2DATA *LPD3DHAL_CLEAR2DATA; +typedef struct _D3DHAL_VALIDATETEXTURESTAGESTATEDATA *LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA; +typedef struct _D3DHAL_DRAWPRIMITIVES2DATA *LPD3DHAL_DRAWPRIMITIVES2DATA; -typedef DWORD (PASCAL *LPD3DHAL_CLEAR2CB) (LPD3DHAL_CLEAR2DATA); -typedef DWORD (PASCAL *LPD3DHAL_VALIDATETEXTURESTAGESTATECB)(LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA); -typedef DWORD (PASCAL *LPD3DHAL_DRAWPRIMITIVES2CB) (LPD3DHAL_DRAWPRIMITIVES2DATA); +typedef DWORD (PASCAL *LPD3DHAL_CLEAR2CB) (LPD3DHAL_CLEAR2DATA); +typedef DWORD (PASCAL *LPD3DHAL_VALIDATETEXTURESTAGESTATECB) (LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA); +typedef DWORD (PASCAL *LPD3DHAL_DRAWPRIMITIVES2CB) (LPD3DHAL_DRAWPRIMITIVES2DATA); typedef struct _D3DHAL_CALLBACKS3 { - DWORD dwSize; - DWORD dwFlags; - LPD3DHAL_CLEAR2CB Clear2; - LPVOID lpvReserved; - LPD3DHAL_VALIDATETEXTURESTAGESTATECB ValidateTextureStageState; - LPD3DHAL_DRAWPRIMITIVES2CB DrawPrimitives2; -} D3DHAL_CALLBACKS3,*LPD3DHAL_CALLBACKS3; + DWORD dwSize; + DWORD dwFlags; + LPD3DHAL_CLEAR2CB Clear2; + LPVOID lpvReserved; + LPD3DHAL_VALIDATETEXTURESTAGESTATECB ValidateTextureStageState; + LPD3DHAL_DRAWPRIMITIVES2CB DrawPrimitives2; +} D3DHAL_CALLBACKS3, *LPD3DHAL_CALLBACKS3; /***************************************************************************** * parameter structures */ typedef struct _D3DHAL_CONTEXTCREATEDATA { - union { - LPDDRAWI_DIRECTDRAW_GBL lpDDGbl; /* pre-DirectX 7 */ - LPDDRAWI_DIRECTDRAW_LCL lpDDLcl; /* DirectX 7 */ + _ANONYMOUS_UNION union { + LPDDRAWI_DIRECTDRAW_GBL lpDDGbl; /* pre-DirectX 7 */ + LPDDRAWI_DIRECTDRAW_LCL lpDDLcl; /* DirectX 7 */ } DUMMYUNIONNAME1; - union { - LPDIRECTDRAWSURFACE lpDDS; - LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl; /* DirectX 7 */ + _ANONYMOUS_UNION union { + LPDIRECTDRAWSURFACE lpDDS; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl; /* DirectX 7 */ } DUMMYUNIONNAME2; - union { - LPDIRECTDRAWSURFACE lpDDSZ; - LPDDRAWI_DDRAWSURFACE_LCL lpDDSZLcl; /* DirectX 7 */ + _ANONYMOUS_UNION union { + LPDIRECTDRAWSURFACE lpDDSZ; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSZLcl; /* DirectX 7 */ } DUMMYUNIONNAME3; - union { - DWORD dwPID; - ULONG_PTR dwrstates; + _ANONYMOUS_UNION union { + DWORD dwPID; + ULONG_PTR dwrstates; } DUMMYUNIONNAME4; - ULONG_PTR dwhContext; - HRESULT ddrval; + ULONG_PTR dwhContext; + HRESULT ddrval; } D3DHAL_CONTEXTCREATEDATA; typedef struct _D3DHAL_CONTEXTDESTROYDATA { - ULONG_PTR dwhContext; - HRESULT ddrval; + ULONG_PTR dwhContext; + HRESULT ddrval; } D3DHAL_CONTEXTDESTROYDATA; typedef struct _D3DHAL_CONTEXTDESTROYALLDATA { - DWORD dwPID; - HRESULT ddrval; + DWORD dwPID; + HRESULT ddrval; } D3DHAL_CONTEXTDESTROYALLDATA; typedef struct _D3DHAL_SCENECAPTUREDATA { - ULONG_PTR dwhContext; - DWORD dwFlag; - HRESULT ddrval; + ULONG_PTR dwhContext; + DWORD dwFlag; + HRESULT ddrval; } D3DHAL_SCENECAPTUREDATA; -#define D3DHAL_SCENE_CAPTURE_START 0x00000000 -#define D3DHAL_SCENE_CAPTURE_END 0x00000001 +#define D3DHAL_SCENE_CAPTURE_START 0x00000000 +#define D3DHAL_SCENE_CAPTURE_END 0x00000001 typedef struct _D3DHAL_SETRENDERTARGETDATA { - ULONG_PTR dwhContext; - union { - LPDIRECTDRAWSURFACE lpDDS; - LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl; + ULONG_PTR dwhContext; + _ANONYMOUS_UNION union { + LPDIRECTDRAWSURFACE lpDDS; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl; } DUMMYUNIONNAME1; - union { - LPDIRECTDRAWSURFACE lpDDSZ; - LPDDRAWI_DDRAWSURFACE_LCL lpDDSZLcl; + _ANONYMOUS_UNION union { + LPDIRECTDRAWSURFACE lpDDSZ; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSZLcl; } DUMMYUNIONNAME2; - HRESULT ddrval; + HRESULT ddrval; } D3DHAL_SETRENDERTARGETDATA; typedef struct _D3DHAL_DRAWPRIMITIVES2DATA { - ULONG_PTR dwhContext; - DWORD dwFlags; - DWORD dwVertexType; - LPDDRAWI_DDRAWSURFACE_LCL lpDDCommands; - DWORD dwCommandOffset; - DWORD dwCommandLength; - union { - LPDDRAWI_DDRAWSURFACE_LCL lpDDVertex; - LPVOID lpVertices; + ULONG_PTR dwhContext; + DWORD dwFlags; + DWORD dwVertexType; + LPDDRAWI_DDRAWSURFACE_LCL lpDDCommands; + DWORD dwCommandOffset; + DWORD dwCommandLength; + _ANONYMOUS_UNION union { + LPDDRAWI_DDRAWSURFACE_LCL lpDDVertex; + LPVOID lpVertices; } DUMMYUNIONNAME1; - DWORD dwVertexOffset; - DWORD dwVertexLength; - DWORD dwReqVertexBufSize; - DWORD dwReqCommandBufSize; - LPDWORD lpdwRStates; - union { - DWORD dwVertexSize; - HRESULT ddrval; + DWORD dwVertexOffset; + DWORD dwVertexLength; + DWORD dwReqVertexBufSize; + DWORD dwReqCommandBufSize; + LPDWORD lpdwRStates; + _ANONYMOUS_UNION union { + DWORD dwVertexSize; + HRESULT ddrval; } DUMMYUNIONNAME2; - DWORD dwErrorOffset; + DWORD dwErrorOffset; } D3DHAL_DRAWPRIMITIVES2DATA; -#define D3DHALDP2_USERMEMVERTICES 0x00000001 -#define D3DHALDP2_EXECUTEBUFFER 0x00000002 -#define D3DHALDP2_SWAPVERTEXBUFFER 0x00000004 -#define D3DHALDP2_SWAPCOMMANDBUFFER 0x00000008 -#define D3DHALDP2_REQVERTEXBUFSIZE 0x00000010 -#define D3DHALDP2_REQCOMMANDBUFSIZE 0x00000020 -#define D3DHALDP2_VIDMEMVERTEXBUF 0x00000040 -#define D3DHALDP2_VIDMEMCOMMANDBUF 0x00000080 +#define D3DHALDP2_USERMEMVERTICES 0x00000001 +#define D3DHALDP2_EXECUTEBUFFER 0x00000002 +#define D3DHALDP2_SWAPVERTEXBUFFER 0x00000004 +#define D3DHALDP2_SWAPCOMMANDBUFFER 0x00000008 +#define D3DHALDP2_REQVERTEXBUFSIZE 0x00000010 +#define D3DHALDP2_REQCOMMANDBUFSIZE 0x00000020 +#define D3DHALDP2_VIDMEMVERTEXBUF 0x00000040 +#define D3DHALDP2_VIDMEMCOMMANDBUF 0x00000080 /***************************************************************************** * DrawPrimitives2 command structures @@ -331,50 +322,50 @@ typedef struct _D3DHAL_DRAWPRIMITIVES2DATA { typedef struct _D3DHAL_DP2COMMAND { BYTE bCommand; BYTE bReserved; - union { + _ANONYMOUS_UNION union { WORD wPrimitiveCount; WORD wStateCount; } DUMMYUNIONNAME; -} D3DHAL_DP2COMMAND,*LPD3DHAL_DP2COMMAND; +} D3DHAL_DP2COMMAND, *LPD3DHAL_DP2COMMAND; typedef enum _D3DHAL_DP2OPERATION { - D3DDP2OP_POINTS = 1, - D3DDP2OP_INDEXEDLINELIST = 2, - D3DDP2OP_INDEXEDTRIANGLELIST = 3, - D3DDP2OP_RENDERSTATE = 8, - D3DDP2OP_LINELIST = 15, - D3DDP2OP_LINESTRIP = 16, - D3DDP2OP_INDEXEDLINESTRIP = 17, - D3DDP2OP_TRIANGLELIST = 18, - D3DDP2OP_TRIANGLESTRIP = 19, - D3DDP2OP_INDEXEDTRIANGLESTRIP = 20, - D3DDP2OP_TRIANGLEFAN = 21, - D3DDP2OP_INDEXEDTRIANGLEFAN = 22, - D3DDP2OP_TRIANGLEFAN_IMM = 23, - D3DDP2OP_LINELIST_IMM = 24, - D3DDP2OP_TEXTURESTAGESTATE = 25, - D3DDP2OP_INDEXEDTRIANGLELIST2 = 26, - D3DDP2OP_INDEXEDLINELIST2 = 27, - D3DDP2OP_VIEWPORTINFO = 28, - D3DDP2OP_WINFO = 29, + D3DDP2OP_POINTS = 1, + D3DDP2OP_INDEXEDLINELIST = 2, + D3DDP2OP_INDEXEDTRIANGLELIST = 3, + D3DDP2OP_RENDERSTATE = 8, + D3DDP2OP_LINELIST = 15, + D3DDP2OP_LINESTRIP = 16, + D3DDP2OP_INDEXEDLINESTRIP = 17, + D3DDP2OP_TRIANGLELIST = 18, + D3DDP2OP_TRIANGLESTRIP = 19, + D3DDP2OP_INDEXEDTRIANGLESTRIP = 20, + D3DDP2OP_TRIANGLEFAN = 21, + D3DDP2OP_INDEXEDTRIANGLEFAN = 22, + D3DDP2OP_TRIANGLEFAN_IMM = 23, + D3DDP2OP_LINELIST_IMM = 24, + D3DDP2OP_TEXTURESTAGESTATE = 25, + D3DDP2OP_INDEXEDTRIANGLELIST2 = 26, + D3DDP2OP_INDEXEDLINELIST2 = 27, + D3DDP2OP_VIEWPORTINFO = 28, + D3DDP2OP_WINFO = 29, /* pre-DirectX 7 interfaces */ - D3DDP2OP_SETPALETTE = 30, - D3DDP2OP_UPDATEPALETTE = 31, + D3DDP2OP_SETPALETTE = 30, + D3DDP2OP_UPDATEPALETTE = 31, /* DirectX 7 interfaces */ - D3DDP2OP_ZRANGE = 32, - D3DDP2OP_SETMATERIAL = 33, - D3DDP2OP_SETLIGHT = 34, - D3DDP2OP_CREATELIGHT = 35, - D3DDP2OP_SETTRANSFORM = 36, - D3DDP2OP_TEXBLT = 38, - D3DDP2OP_STATESET = 39, - D3DDP2OP_SETPRIORITY = 40, + D3DDP2OP_ZRANGE = 32, + D3DDP2OP_SETMATERIAL = 33, + D3DDP2OP_SETLIGHT = 34, + D3DDP2OP_CREATELIGHT = 35, + D3DDP2OP_SETTRANSFORM = 36, + D3DDP2OP_TEXBLT = 38, + D3DDP2OP_STATESET = 39, + D3DDP2OP_SETPRIORITY = 40, /* all interfaces */ - D3DDP2OP_SETRENDERTARGET = 41, - D3DDP2OP_CLEAR = 42, + D3DDP2OP_SETRENDERTARGET = 41, + D3DDP2OP_CLEAR = 42, /* DirectX 7 interfaces */ - D3DDP2OP_SETTEXLOD = 43, - D3DPP2OP_SETCLIPPLANE = 44, + D3DDP2OP_SETTEXLOD = 43, + D3DPP2OP_SETCLIPPLANE = 44, #if(DIRECT3D_VERSION >= 0x0800) D3DDP2OP_CREATEVERTEXSHADER = 45, D3DDP2OP_DELETEVERTEXSHADER = 46, @@ -433,84 +424,84 @@ typedef enum _D3DHAL_DP2OPERATION { typedef struct _D3DHAL_POINTS { WORD wCount; WORD wVStart; -} D3DHAL_DP2POINTS,*LPD3DHAL_DP2POINTS; +} D3DHAL_DP2POINTS, *LPD3DHAL_DP2POINTS; /* line primitives */ typedef struct _D3DHAL_DP2STARTVERTEX { WORD wVStart; -} D3DHAL_DP2STARTVERTEX,*LPD3DHAL_DP2STARTVERTEX; +} D3DHAL_DP2STARTVERTEX, *LPD3DHAL_DP2STARTVERTEX; typedef struct _D3DHAL_DP2LINELIST { WORD wVStart; -} D3DHAL_DP2LINELIST,*LPD3DHAL_DP2LINELIST; +} D3DHAL_DP2LINELIST, *LPD3DHAL_DP2LINELIST; typedef struct _D3DHAL_DP2INDEXEDLINELIST { WORD wV1; WORD wV2; -} D3DHAL_DP2INDEXEDLINELIST,*LPD3DHAL_DP2INDEXEDLINELIST; +} D3DHAL_DP2INDEXEDLINELIST, *LPD3DHAL_DP2INDEXEDLINELIST; typedef struct _D3DHAL_DP2LINESTRIP { WORD wVStart; -} D3DHAL_DP2LINESTRIP,*LPD3DHAL_DP2LINESTRIP; +} D3DHAL_DP2LINESTRIP, *LPD3DHAL_DP2LINESTRIP; typedef struct _D3DHAL_DP2INDEXEDLINESTRIP { WORD wV[2]; -} D3DHAL_DP2INDEXEDLINESTRIP,*LPD3DHAL_DP2INDEXEDLINESTRIP; +} D3DHAL_DP2INDEXEDLINESTRIP, *LPD3DHAL_DP2INDEXEDLINESTRIP; /* triangle primitives */ typedef struct _D3DHAL_DP2TRIANGLELIST { WORD wVStart; -} D3DHAL_DP2TRIANGLELIST,*LPD3DHAL_DP2TRIANGLELIST; +} D3DHAL_DP2TRIANGLELIST, *LPD3DHAL_DP2TRIANGLELIST; typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST { WORD wV1; WORD wV2; WORD wV3; WORD wFlags; -} D3DHAL_DP2INDEXEDTRIANGLELIST,*LPD3DHAL_DP2INDEXEDTRIANGLELIST; +} D3DHAL_DP2INDEXEDTRIANGLELIST, *LPD3DHAL_DP2INDEXEDTRIANGLELIST; typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST2 { WORD wV1; WORD wV2; WORD wV3; -} D3DHAL_DP2INDEXEDTRIANGLELIST2,*LPD3DHAL_DP2INDEXEDTRIANGLELIST2; +} D3DHAL_DP2INDEXEDTRIANGLELIST2, *LPD3DHAL_DP2INDEXEDTRIANGLELIST2; typedef struct _D3DHAL_DP2TRIANGLESTRIP { WORD wVStart; -} D3DHAL_DP2TRIANGLESTRIP,*LPD3DHAL_DP2TRIANGLESTRIP; +} D3DHAL_DP2TRIANGLESTRIP, *LPD3DHAL_DP2TRIANGLESTRIP; typedef struct _D3DHAL_DP2INDEXEDTRIANGLESTRIP { WORD wV[3]; -} D3DHAL_DP2INDEXEDTRIANGLESTRIP,*LPD3DHAL_DP2INDEXEDTRIANGLESTRIP; +} D3DHAL_DP2INDEXEDTRIANGLESTRIP, *LPD3DHAL_DP2INDEXEDTRIANGLESTRIP; typedef struct _D3DHAL_DP2TRIANGLEFAN { WORD wVStart; -} D3DHAL_DP2TRIANGLEFAN,*LPD3DHAL_DP2TRIANGLEFAN; +} D3DHAL_DP2TRIANGLEFAN, *LPD3DHAL_DP2TRIANGLEFAN; typedef struct _D3DHAL_DP2INDEXEDTRIANGLEFAN { WORD wV[3]; -} D3DHAL_DP2INDEXEDTRIANGLEFAN,*LPD3DHAL_DP2INDEXEDTRIANGLEFAN; +} D3DHAL_DP2INDEXEDTRIANGLEFAN, *LPD3DHAL_DP2INDEXEDTRIANGLEFAN; typedef struct _D3DHAL_DP2TRIANGLEFAN_IMM { DWORD dwEdgeFlags; -} D3DHAL_DP2TRIANGLEFAN_IMM,*LPD3DHAL_DP2TRIANGLEFAN_IMM; +} D3DHAL_DP2TRIANGLEFAN_IMM, *LPD3DHAL_DP2TRIANGLEFAN_IMM; /* render states */ typedef struct _D3DHAL_DP2RENDERSTATE { - D3DRENDERSTATETYPE RenderState; - union { + D3DRENDERSTATETYPE RenderState; + _ANONYMOUS_UNION union { D3DVALUE dvState; DWORD dwState; } DUMMYUNIONNAME; -} D3DHAL_DP2RENDERSTATE,*LPD3DHAL_DP2RENDERSTATE; +} D3DHAL_DP2RENDERSTATE, *LPD3DHAL_DP2RENDERSTATE; typedef struct _D3DHAL_DP2TEXTURESTAGESTATE { - WORD wStage; - WORD TSState; + WORD wStage; + WORD TSState; DWORD dwValue; -} D3DHAL_DP2TEXTURESTAGESTATE,*LPD3DHAL_DP2TEXTURESTAGESTATE; +} D3DHAL_DP2TEXTURESTAGESTATE, *LPD3DHAL_DP2TEXTURESTAGESTATE; #define D3DTSS_TEXTUREMAP 0 @@ -519,49 +510,49 @@ typedef struct _D3DHAL_DP2VIEWPORTINFO { DWORD dwY; DWORD dwWidth; DWORD dwHeight; -} D3DHAL_DP2VIEWPORTINFO,*LPD3DHAL_DP2VIEWPORTINFO; +} D3DHAL_DP2VIEWPORTINFO, *LPD3DHAL_DP2VIEWPORTINFO; typedef struct _D3DHAL_DP2WINFO { D3DVALUE dwWNear; D3DVALUE dwWFar; -} D3DHAL_DP2WINFO,*LPD3DHAL_DP2WINFO; +} D3DHAL_DP2WINFO, *LPD3DHAL_DP2WINFO; typedef struct _D3DHAL_DP2SETPALETTE { DWORD dwPaletteHandle; DWORD dwPaletteFlags; DWORD dwSurfaceHandle; -} D3DHAL_DP2SETPALETTE,*LPD3DHAL_DP2SETPALETTE; +} D3DHAL_DP2SETPALETTE, *LPD3DHAL_DP2SETPALETTE; typedef struct _D3DHAL_DP2UPDATEPALETTE { DWORD dwPaletteHandle; - WORD wStartIndex; - WORD wNumEntries; -} D3DHAL_DP2UPDATEPALETTE,*LPD3DHAL_DP2UPDATEPALETTE; + WORD wStartIndex; + WORD wNumEntries; +} D3DHAL_DP2UPDATEPALETTE, *LPD3DHAL_DP2UPDATEPALETTE; typedef struct _D3DHAL_DP2ZRANGE { D3DVALUE dvMinZ; D3DVALUE dvMaxZ; -} D3DHAL_DP2ZRANGE,*LPD3DHAL_DP2ZRANGE; +} D3DHAL_DP2ZRANGE, *LPD3DHAL_DP2ZRANGE; typedef D3DMATERIAL7 D3DHAL_DP2SETMATERIAL,*LPD3DHAL_DP2SETMATERIAL; typedef struct _D3DHAL_DP2SETLIGHT { DWORD dwIndex; DWORD dwDataType; -} D3DHAL_DP2SETLIGHT,*LPD3DHAL_DP2SETLIGHT; +} D3DHAL_DP2SETLIGHT, *LPD3DHAL_DP2SETLIGHT; -#define D3DHAL_SETLIGHT_ENABLE 0 -#define D3DHAL_SETLIGHT_DISABLE 1 -#define D3DHAL_SETLIGHT_DATA 2 +#define D3DHAL_SETLIGHT_ENABLE 0 +#define D3DHAL_SETLIGHT_DISABLE 1 +#define D3DHAL_SETLIGHT_DATA 2 typedef struct _D3DHAL_DP2CREATELIGHT { DWORD dwIndex; -} D3DHAL_DP2CREATELIGHT,*LPD3DHAL_DP2CREATELIGHT; +} D3DHAL_DP2CREATELIGHT, *LPD3DHAL_DP2CREATELIGHT; typedef struct _D3DHAL_DP2SETTRANSFORM { - D3DTRANSFORMSTATETYPE xfrmType; - D3DMATRIX matrix; -} D3DHAL_DP2SETTRANSFORM,*LPD3DHAL_DP2SETTRANSFORM; + D3DTRANSFORMSTATETYPE xfrmType; + D3DMATRIX matrix; +} D3DHAL_DP2SETTRANSFORM, *LPD3DHAL_DP2SETTRANSFORM; typedef struct _D3DHAL_DP2TEXBLT { DWORD dwDDDestSurface; @@ -569,72 +560,72 @@ typedef struct _D3DHAL_DP2TEXBLT { POINT pDest; RECTL rSrc; DWORD dwFlags; -} D3DHAL_DP2TEXBLT,*LPD3DHAL_DP2TEXBLT; +} D3DHAL_DP2TEXBLT, *LPD3DHAL_DP2TEXBLT; typedef struct _D3DHAL_DP2STATESET { - DWORD dwOperation; - DWORD dwParam; - D3DSTATEBLOCKTYPE sbType; -} D3DHAL_DP2STATESET,*LPD3DHAL_DP2STATESET; + DWORD dwOperation; + DWORD dwParam; + D3DSTATEBLOCKTYPE sbType; +} D3DHAL_DP2STATESET, *LPD3DHAL_DP2STATESET; -#define D3DHAL_STATESETBEGIN 0 -#define D3DHAL_STATESETEND 1 -#define D3DHAL_STATESETDELETE 2 -#define D3DHAL_STATESETEXECUTE 3 -#define D3DHAL_STATESETCAPTURE 4 +#define D3DHAL_STATESETBEGIN 0 +#define D3DHAL_STATESETEND 1 +#define D3DHAL_STATESETDELETE 2 +#define D3DHAL_STATESETEXECUTE 3 +#define D3DHAL_STATESETCAPTURE 4 typedef struct _D3DHAL_DP2SETPRIORITY { DWORD dwDDSurface; DWORD dwPriority; -} D3DHAL_DP2SETPRIORITY,*LPD3DHAL_DP2SETPRIORITY; +} D3DHAL_DP2SETPRIORITY, *LPD3DHAL_DP2SETPRIORITY; typedef struct _D3DHAL_DP2SETRENDERTARGET { DWORD hRenderTarget; DWORD hZBuffer; -} D3DHAL_DP2SETRENDERTARGET,*LPD3DHAL_DP2SETRENDERTARGET; +} D3DHAL_DP2SETRENDERTARGET, *LPD3DHAL_DP2SETRENDERTARGET; typedef struct _D3DHAL_DP2CLEAR { - DWORD dwFlags; - DWORD dwFillColor; - D3DVALUE dvFillDepth; - DWORD dwFillStencil; - RECT Rects[1]; -} D3DHAL_DP2CLEAR,*LPD3DHAL_DP2CLEAR; + DWORD dwFlags; + DWORD dwFillColor; + D3DVALUE dvFillDepth; + DWORD dwFillStencil; + RECT Rects[1]; +} D3DHAL_DP2CLEAR, *LPD3DHAL_DP2CLEAR; typedef struct _D3DHAL_DP2SETTEXLOD { DWORD dwDDSurface; DWORD dwLOD; -} D3DHAL_DP2SETTEXLOD,*LPD3DHAL_DP2SETTEXLOD; - +} D3DHAL_DP2SETTEXLOD, *LPD3DHAL_DP2SETTEXLOD; #if (DIRECT3D_VERSION >= 0x0900) -#define DX9_DDI_VERSION 4 +#define DX9_DDI_VERSION 4 #ifndef D3DVTXPCAPS_NO_VSDT_UBYTE4 -#define D3DVTXPCAPS_NO_VSDT_UBYTE4 0x00000080 +#define D3DVTXPCAPS_NO_VSDT_UBYTE4 0x00000080 #endif -#define D3DPMISCCAPS_LINEPATTERNREP 0x00000004 +#ifndef D3DPMISCCAPS_LINEPATTERNREP +#define D3DPMISCCAPS_LINEPATTERNREP 0x00000004 +#endif -#define D3DDEVCAPS_HWVERTEXBUFFER 0x02000000 -#define D3DDEVCAPS_HWINDEXBUFFER 0x04000000 -#define D3DDEVCAPS_SUBVOLUMELOCK 0x08000000 +#define D3DDEVCAPS_HWVERTEXBUFFER 0x02000000 +#define D3DDEVCAPS_HWINDEXBUFFER 0x04000000 +#define D3DDEVCAPS_SUBVOLUMELOCK 0x08000000 #ifndef D3DPMISCCAPS_FOGINFVF -#define D3DPMISCCAPS_FOGINFVF 0x00002000 +#define D3DPMISCCAPS_FOGINFVF 0x00002000 #endif #ifndef D3DFVF_FOG -#define D3DFVF_FOG 0x00002000 +#define D3DFVF_FOG 0x00002000 #endif -typedef struct _DD_GETDRIVERINFO2DATA -{ - DWORD dwReserved; - DWORD dwMagic; - DWORD dwType; - DWORD dwExpectedSize; +typedef struct _DD_GETDRIVERINFO2DATA { + DWORD dwReserved; + DWORD dwMagic; + DWORD dwType; + DWORD dwExpectedSize; } DD_GETDRIVERINFO2DATA; /** @@ -642,19 +633,19 @@ typedef struct _DD_GETDRIVERINFO2DATA * D3DGDI2_MAGIC to see if the passed GUID is GUID_GetDriverInfo2 * or a GUID_DDStereoMode. */ -#define GUID_GetDriverInfo2 GUID_DDStereoMode +#define GUID_GetDriverInfo2 GUID_DDStereoMode /** * Magic number used in DD_GETDRIVERINFO2DATA.dwHeight when * GUID_GetDriverInfo2/GUID_DDStereoMode is specified in a * GetDriverInfo call. */ -#define D3DGDI2_MAGIC 0xFFFFFFFF +#define D3DGDI2_MAGIC 0xFFFFFFFF #define D3DGDI2_TYPE_GETD3DCAPS8 0x00000001 #define D3DGDI2_TYPE_GETFORMATCOUNT 0x00000002 #define D3DGDI2_TYPE_GETFORMAT 0x00000003 -#define D3DGDI2_TYPE_DXVERSION 0x00000004 /* Make driver aware of currently used DirectX version */ +#define D3DGDI2_TYPE_DXVERSION 0x00000004 /* Make driver aware of currently used DirectX version */ #define D3DGDI2_TYPE_GETD3DCAPS9 0x00000010 #define D3DGDI2_TYPE_GETEXTENDEDMODECOUNT 0x00000011 #define D3DGDI2_TYPE_GETEXTENDEDMODE 0x00000012 @@ -665,10 +656,9 @@ typedef struct _DD_GETDRIVERINFO2DATA #define D3DGDI2_TYPE_DEFER_AGP_FREES 0x00000020 #define D3DGDI2_TYPE_GETD3DQUERYCOUNT 0x00000021 #define D3DGDI2_TYPE_GETD3DQUERY 0x00000022 -#define D3DGDI2_TYPE_GETDDIVERSION 0x00000023 /* Returns DX9_DDI_VERSION, used to check which DDK version the driver is compiled against */ +#define D3DGDI2_TYPE_GETDDIVERSION 0x00000023 /* Returns DX9_DDI_VERSION, used to check which DDK version the driver is compiled against */ -typedef struct _D3DCAPS8 -{ +typedef struct _D3DCAPS8 { D3DDEVTYPE DeviceType; UINT AdapterOrdinal; DWORD Caps; @@ -724,90 +714,77 @@ typedef struct _D3DCAPS8 float MaxPixelShaderValue; } D3DCAPS8; -typedef struct _DD_GETFORMATCOUNTDATA -{ - DD_GETDRIVERINFO2DATA gdi2; - DWORD dwFormatCount; - DWORD dwReserved; +typedef struct _DD_GETFORMATCOUNTDATA { + DD_GETDRIVERINFO2DATA gdi2; + DWORD dwFormatCount; + DWORD dwReserved; } DD_GETFORMATCOUNTDATA; -typedef struct _DD_GETFORMATDATA -{ - DD_GETDRIVERINFO2DATA gdi2; - DWORD dwFormatIndex; - DDPIXELFORMAT format; +typedef struct _DD_GETFORMATDATA { + DD_GETDRIVERINFO2DATA gdi2; + DWORD dwFormatIndex; + DDPIXELFORMAT format; } DD_GETFORMATDATA; -typedef struct _DD_DXVERSION -{ - DD_GETDRIVERINFO2DATA gdi2; - DWORD dwDXVersion; - DWORD dwReserved; +typedef struct _DD_DXVERSION { + DD_GETDRIVERINFO2DATA gdi2; + DWORD dwDXVersion; + DWORD dwReserved; } DD_DXVERSION; -typedef struct _DD_DEFERRED_AGP_AWARE_DATA -{ - DD_GETDRIVERINFO2DATA gdi2; +typedef struct _DD_DEFERRED_AGP_AWARE_DATA { + DD_GETDRIVERINFO2DATA gdi2; } DD_DEFERRED_AGP_AWARE_DATA; -typedef struct _DD_FREE_DEFERRED_AGP_DATA -{ - DD_GETDRIVERINFO2DATA gdi2; - DWORD dwProcessId; +typedef struct _DD_FREE_DEFERRED_AGP_DATA { + DD_GETDRIVERINFO2DATA gdi2; + DWORD dwProcessId; } DD_FREE_DEFERRED_AGP_DATA; -typedef struct _DD_GETEXTENDEDMODECOUNTDATA -{ - DD_GETDRIVERINFO2DATA gdi2; - DWORD dwModeCount; - DWORD dwReserved; +typedef struct _DD_GETEXTENDEDMODECOUNTDATA { + DD_GETDRIVERINFO2DATA gdi2; + DWORD dwModeCount; + DWORD dwReserved; } DD_GETEXTENDEDMODECOUNTDATA; -typedef struct _DD_GETEXTENDEDMODEDATA -{ - DD_GETDRIVERINFO2DATA gdi2; - DWORD dwModeIndex; - D3DDISPLAYMODE mode; +typedef struct _DD_GETEXTENDEDMODEDATA { + DD_GETDRIVERINFO2DATA gdi2; + DWORD dwModeIndex; + D3DDISPLAYMODE mode; } DD_GETEXTENDEDMODEDATA; -typedef struct _DD_GETADAPTERGROUPDATA -{ - DD_GETDRIVERINFO2DATA gdi2; - ULONG_PTR ulUniqueAdapterGroupId; - DWORD dwReserved1; - DWORD dwReserved2; +typedef struct _DD_GETADAPTERGROUPDATA { + DD_GETDRIVERINFO2DATA gdi2; + ULONG_PTR ulUniqueAdapterGroupId; + DWORD dwReserved1; + DWORD dwReserved2; } DD_GETADAPTERGROUPDATA; -typedef struct _DD_MULTISAMPLEQUALITYLEVELSDATA -{ - DD_GETDRIVERINFO2DATA gdi2; - D3DFORMAT Format; - BOOL bFlip : 1; - D3DMULTISAMPLE_TYPE MSType : 31; - DWORD QualityLevels; +typedef struct _DD_MULTISAMPLEQUALITYLEVELSDATA { + DD_GETDRIVERINFO2DATA gdi2; + D3DFORMAT Format; + WINBOOL bFlip : 1; + D3DMULTISAMPLE_TYPE MSType : 31; + DWORD QualityLevels; } DD_MULTISAMPLEQUALITYLEVELSDATA; -typedef struct _DD_GETD3DQUERYCOUNTDATA -{ - DD_GETDRIVERINFO2DATA gdi2; - DWORD dwNumQueries; +typedef struct _DD_GETD3DQUERYCOUNTDATA { + DD_GETDRIVERINFO2DATA gdi2; + DWORD dwNumQueries; } DD_GETD3DQUERYCOUNTDATA; -typedef struct _DD_GETD3DQUERYDATA -{ - DD_GETDRIVERINFO2DATA gdi2; - __GNU_EXTENSION union - { - DWORD dwQueryIndex; - D3DQUERYTYPE QueryType; - }; +typedef struct _DD_GETD3DQUERYDATA { + DD_GETDRIVERINFO2DATA gdi2; + __GNU_EXTENSION union { + DWORD dwQueryIndex; + D3DQUERYTYPE QueryType; + }; } DD_GETD3DQUERYDATA; -typedef struct _DD_GETDDIVERSIONDATA -{ - DD_GETDRIVERINFO2DATA gdi2; - DWORD dwDXVersion; - DWORD dwDDIVersion; +typedef struct _DD_GETDDIVERSIONDATA { + DD_GETDRIVERINFO2DATA gdi2; + DWORD dwDXVersion; + DWORD dwDDIVersion; } DD_GETDDIVERSIONDATA; #endif /* (DIRECT3D_VERSION >= 0x0900) */ diff --git a/include/ddk/d3dhalex.h b/include/ddk/d3dhalex.h index c040876c8fb..7c852aedc94 100644 --- a/include/ddk/d3dhalex.h +++ b/include/ddk/d3dhalex.h @@ -1,10 +1,10 @@ - #ifndef _D3DHALEX_H #define _D3DHALEX_H + #define D3DGDI_IS_GDI2(pData) ((((DD_GETDRIVERINFO2DATA*)(pData->lpvData))->dwMagic) == D3DGDI2_MAGIC) #define D3DGDI_IS_STEREOMODE(pData) ((((DD_STEREOMODE*) (pData->lpvData))->dwHeight) != D3DGDI2_MAGIC) #define D3DGDI_GET_GDI2_DATA(pData) (D3DGDI_IS_GDI2(pData) ? (((DD_GETDRIVERINFO2DATA*)(pData->lpvData))) : NULL) #define D3DGDI_GET_STEREOMODE_DATA(pData) (D3DGDI_IS_STEREOMODE(pData) ? (((DD_STEREOMODE*)(pData->lpvData))) : NULL) -#endif +#endif /* _D3DHALEX_H */ diff --git a/include/ddk/d3dnthal.h b/include/ddk/d3dnthal.h deleted file mode 100644 index b396e6f23a3..00000000000 --- a/include/ddk/d3dnthal.h +++ /dev/null @@ -1,272 +0,0 @@ -/* - * Direct3D NT driver interface - */ - -#ifndef __DDK_D3DNTHAL_H -#define __DDK_D3DNTHAL_H - -#include -#include -#include - -/* Helper macro to enable gcc's extension. */ -#ifndef __GNU_EXTENSION -#ifdef __GNUC__ -#define __GNU_EXTENSION __extension__ -#else -#define __GNU_EXTENSION -#endif -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -DEFINE_GUID(GUID_D3DCallbacks, 0x7BF06990, 0x8794, 0x11D0, 0x91, 0x39, 0x08, 0x00, 0x36, 0xD2, 0xEF, 0x02); -DEFINE_GUID(GUID_D3DCallbacks3, 0xDDF41230, 0xEC0A, 0x11D0, 0xA9, 0xB6, 0x00, 0xAA, 0x00, 0xC0, 0x99, 0x3E); -DEFINE_GUID(GUID_D3DExtendedCaps, 0x7DE41F80, 0x9D93, 0x11D0, 0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29); -DEFINE_GUID(GUID_D3DParseUnknownCommandCallback, 0x2E04FFA0, 0x98E4, 0x11D1, 0x8C, 0xE1, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8); -DEFINE_GUID(GUID_ZPixelFormats, 0x93869880, 0x36CF, 0x11D1, 0x9B, 0x1B, 0x00, 0xAA, 0x00, 0xBB, 0xB8, 0xAE); -DEFINE_GUID(GUID_DDStereoMode, 0xF828169C, 0xA8E8, 0x11D2, 0xA1, 0xF2, 0x00, 0xA0, 0xC9, 0x83, 0xEA, 0xF6); - -typedef struct _D3DNTHAL_CONTEXTCREATEDATA -{ - __GNU_EXTENSION union - { - PDD_DIRECTDRAW_GLOBAL lpDDGbl; - PDD_DIRECTDRAW_LOCAL lpDDLcl; - }; - __GNU_EXTENSION union - { - PDD_SURFACE_LOCAL lpDDS; - PDD_SURFACE_LOCAL lpDDSLcl; - }; - __GNU_EXTENSION union - { - PDD_SURFACE_LOCAL lpDDSZ; - PDD_SURFACE_LOCAL lpDDSZLcl; - }; - DWORD dwPID; - ULONG_PTR dwhContext; - HRESULT ddrval; -} D3DNTHAL_CONTEXTCREATEDATA, *LPD3DNTHAL_CONTEXTCREATEDATA; - -typedef struct _D3DNTHAL_CONTEXTDESTROYDATA -{ - ULONG_PTR dwhContext; - HRESULT ddrval; -} D3DNTHAL_CONTEXTDESTROYDATA, *LPD3DNTHAL_CONTEXTDESTROYDATA; - -typedef struct _D3DNTHAL_CONTEXTDESTROYALLDATA -{ - DWORD dwPID; - HRESULT ddrval; -} D3DNTHAL_CONTEXTDESTROYALLDATA, *LPD3DNTHAL_CONTEXTDESTROYALLDATA; - -typedef struct _D3DNTHAL_SCENECAPTUREDATA -{ - ULONG_PTR dwhContext; - DWORD dwFlag; - HRESULT ddrval; -} D3DNTHAL_SCENECAPTUREDATA, *LPD3DNTHAL_SCENECAPTUREDATA; - -typedef struct _D3DNTHAL_TEXTURECREATEDATA -{ - ULONG_PTR dwhContext; - HANDLE hDDS; - ULONG_PTR dwHandle; - HRESULT ddrval; -} D3DNTHAL_TEXTURECREATEDATA, *LPD3DNTHAL_TEXTURECREATEDATA; - -typedef struct _D3DNTHAL_TEXTUREDESTROYDATA -{ - ULONG_PTR dwhContext; - ULONG_PTR dwHandle; - HRESULT ddrval; -} D3DNTHAL_TEXTUREDESTROYDATA, *LPD3DNTHAL_TEXTUREDESTROYDATA; - -typedef struct _D3DNTHAL_TEXTURESWAPDATA -{ - ULONG_PTR dwhContext; - ULONG_PTR dwHandle1; - ULONG_PTR dwHandle2; - HRESULT ddrval; -} D3DNTHAL_TEXTURESWAPDATA, *LPD3DNTHAL_TEXTURESWAPDATA; - -typedef struct _D3DNTHAL_TEXTUREGETSURFDATA -{ - ULONG_PTR dwhContext; - HANDLE hDDS; - ULONG_PTR dwHandle; - HRESULT ddrval; -} D3DNTHAL_TEXTUREGETSURFDATA, *LPD3DNTHAL_TEXTUREGETSURFDATA; - -typedef DWORD (APIENTRY *LPD3DNTHAL_CONTEXTCREATECB)(LPD3DNTHAL_CONTEXTCREATEDATA); -typedef DWORD (APIENTRY *LPD3DNTHAL_CONTEXTDESTROYCB)(LPD3DNTHAL_CONTEXTDESTROYDATA); -typedef DWORD (APIENTRY *LPD3DNTHAL_CONTEXTDESTROYALLCB)(LPD3DNTHAL_CONTEXTDESTROYALLDATA); -typedef DWORD (APIENTRY *LPD3DNTHAL_SCENECAPTURECB)(LPD3DNTHAL_SCENECAPTUREDATA); -typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTURECREATECB)(LPD3DNTHAL_TEXTURECREATEDATA); -typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTUREDESTROYCB)(LPD3DNTHAL_TEXTUREDESTROYDATA); -typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTURESWAPCB)(LPD3DNTHAL_TEXTURESWAPDATA); -typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTUREGETSURFCB)(LPD3DNTHAL_TEXTUREGETSURFDATA); - -typedef struct _D3DNTHALDeviceDesc_V1 -{ - DWORD dwSize; - DWORD dwFlags; - D3DCOLORMODEL dcmColorModel; - DWORD dwDevCaps; - D3DTRANSFORMCAPS dtcTransformCaps; - BOOL bClipping; - D3DLIGHTINGCAPS dlcLightingCaps; - D3DPRIMCAPS dpcLineCaps; - D3DPRIMCAPS dpcTriCaps; - DWORD dwDeviceRenderBitDepth; - DWORD dwDeviceZBufferBitDepth; - DWORD dwMaxBufferSize; - DWORD dwMaxVertexCount; -} D3DNTHALDEVICEDESC_V1, *LPD3DNTHALDEVICEDESC_V1; - -typedef struct _D3DNTHAL_GLOBALDRIVERDATA -{ - DWORD dwSize; - D3DNTHALDEVICEDESC_V1 hwCaps; - DWORD dwNumVertices; - DWORD dwNumClipVertices; - DWORD dwNumTextureFormats; - LPDDSURFACEDESC lpTextureFormats; -} D3DNTHAL_GLOBALDRIVERDATA, *LPD3DNTHAL_GLOBALDRIVERDATA; - -typedef struct _D3DNTHAL_CALLBACKS -{ - DWORD dwSize; - LPD3DNTHAL_CONTEXTCREATECB ContextCreate; - LPD3DNTHAL_CONTEXTDESTROYCB ContextDestroy; - LPD3DNTHAL_CONTEXTDESTROYALLCB ContextDestroyAll; - LPD3DNTHAL_SCENECAPTURECB SceneCapture; - LPVOID dwReserved10; - LPVOID dwReserved11; - LPVOID dwReserved22; - LPVOID dwReserved23; - ULONG_PTR dwReserved; - LPD3DNTHAL_TEXTURECREATECB TextureCreate; - LPD3DNTHAL_TEXTUREDESTROYCB TextureDestroy; - LPD3DNTHAL_TEXTURESWAPCB TextureSwap; - LPD3DNTHAL_TEXTUREGETSURFCB TextureGetSurf; - LPVOID dwReserved12; - LPVOID dwReserved13; - LPVOID dwReserved14; - LPVOID dwReserved15; - LPVOID dwReserved16; - LPVOID dwReserved17; - LPVOID dwReserved18; - LPVOID dwReserved19; - LPVOID dwReserved20; - LPVOID dwReserved21; - LPVOID dwReserved24; - ULONG_PTR dwReserved0; - ULONG_PTR dwReserved1; - ULONG_PTR dwReserved2; - ULONG_PTR dwReserved3; - ULONG_PTR dwReserved4; - ULONG_PTR dwReserved5; - ULONG_PTR dwReserved6; - ULONG_PTR dwReserved7; - ULONG_PTR dwReserved8; - ULONG_PTR dwReserved9; -} D3DNTHAL_CALLBACKS, *LPD3DNTHAL_CALLBACKS; - - -typedef struct _D3DNTHAL_SETRENDERTARGETDATA -{ - ULONG_PTR dwhContext; - PDD_SURFACE_LOCAL lpDDS; - PDD_SURFACE_LOCAL lpDDSZ; - HRESULT ddrval; -} D3DNTHAL_SETRENDERTARGETDATA; -typedef D3DNTHAL_SETRENDERTARGETDATA *LPD3DNTHAL_SETRENDERTARGETDATA; - -typedef DWORD (APIENTRY *LPD3DNTHAL_SETRENDERTARGETCB)(LPD3DNTHAL_SETRENDERTARGETDATA); - - -typedef struct _D3DNTHAL_CALLBACKS2 -{ - DWORD dwSize; - DWORD dwFlags; - - LPD3DNTHAL_SETRENDERTARGETCB SetRenderTarget; - LPVOID dwReserved1; - LPVOID dwReserved2; - LPVOID dwReserved3; - LPVOID dwReserved4; -} D3DNTHAL_CALLBACKS2, *LPD3DNTHAL_CALLBACKS2; - - -typedef struct _D3DNTHAL_CLEAR2DATA -{ - ULONG_PTR dwhContext; - DWORD dwFlags; - DWORD dwFillColor; - D3DVALUE dvFillDepth; - DWORD dwFillStencil; - LPD3DRECT lpRects; - DWORD dwNumRects; - HRESULT ddrval; -} D3DNTHAL_CLEAR2DATA; -typedef D3DNTHAL_CLEAR2DATA FAR *LPD3DNTHAL_CLEAR2DATA; - -typedef struct _D3DNTHAL_VALIDATETEXTURESTAGESTATEDATA -{ - ULONG_PTR dwhContext; - DWORD dwFlags; - ULONG_PTR dwReserved; - DWORD dwNumPasses; - HRESULT ddrval; -} D3DNTHAL_VALIDATETEXTURESTAGESTATEDATA, FAR *LPD3DNTHAL_VALIDATETEXTURESTAGESTATEDATA; - -typedef struct _D3DNTHAL_DRAWPRIMITIVES2DATA -{ - ULONG_PTR dwhContext; - DWORD dwFlags; - DWORD dwVertexType; - PDD_SURFACE_LOCAL lpDDCommands; - DWORD dwCommandOffset; - DWORD dwCommandLength; - __GNU_EXTENSION union - { - PDD_SURFACE_LOCAL lpDDVertex; - LPVOID lpVertices; - }; - DWORD dwVertexOffset; - DWORD dwVertexLength; - DWORD dwReqVertexBufSize; - DWORD dwReqCommandBufSize; - LPDWORD lpdwRStates; - __GNU_EXTENSION union - { - DWORD dwVertexSize; - HRESULT ddrval; - }; - DWORD dwErrorOffset; -} D3DNTHAL_DRAWPRIMITIVES2DATA, FAR *LPD3DNTHAL_DRAWPRIMITIVES2DATA; - -typedef DWORD (APIENTRY *LPD3DNTHAL_CLEAR2CB)(LPD3DNTHAL_CLEAR2DATA); -typedef DWORD (APIENTRY *LPD3DNTHAL_VALIDATETEXTURESTAGESTATECB)(LPD3DNTHAL_VALIDATETEXTURESTAGESTATEDATA); -typedef DWORD (APIENTRY *LPD3DNTHAL_DRAWPRIMITIVES2CB)(LPD3DNTHAL_DRAWPRIMITIVES2DATA); - -typedef struct _D3DNTHAL_CALLBACKS3 -{ - DWORD dwSize; - DWORD dwFlags; - - LPD3DNTHAL_CLEAR2CB Clear2; - LPVOID lpvReserved; - LPD3DNTHAL_VALIDATETEXTURESTAGESTATECB ValidateTextureStageState; - LPD3DNTHAL_DRAWPRIMITIVES2CB DrawPrimitives2; -} D3DNTHAL_CALLBACKS3, *LPD3DNTHAL_CALLBACKS3; - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* __DDK_D3DNTHAL_H */ diff --git a/include/ddk/ddkernel.h b/include/ddk/ddkernel.h deleted file mode 100644 index bd46c759851..00000000000 --- a/include/ddk/ddkernel.h +++ /dev/null @@ -1,97 +0,0 @@ -/* $Id$ - * - * COPYRIGHT: This file is in the public domain. - * PROJECT: ReactOS kernel - * FILE: - * PURPOSE: Directx headers - * PROGRAMMER: Magnus Olsen (greatlrd) - * - */ - -#ifndef __DDKM_INCLUDED__ -#define __DDKM_INCLUDED__ - -#if defined (_WIN32) && !defined (_NO_COM) -DEFINE_GUID (IID_IDirectDrawKernel, 0x8D56C120,0x6A08,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); -DEFINE_GUID (IID_IDirectDrawSurfaceKernel, 0x60755DA0,0x6A40,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); -#endif - -typedef struct _DDKERNELCAPS -{ - DWORD dwSize; - DWORD dwCaps; - DWORD dwIRQCaps; -} DDKERNELCAPS, *LPDDKERNELCAPS; - -#define DDKERNELCAPS_SKIPFIELDS 0x00000001 -#define DDKERNELCAPS_AUTOFLIP 0x00000002 -#define DDKERNELCAPS_SETSTATE 0x00000004 -#define DDKERNELCAPS_LOCK 0x00000008 -#define DDKERNELCAPS_FLIPVIDEOPORT 0x00000010 -#define DDKERNELCAPS_FLIPOVERLAY 0x00000020 -#define DDKERNELCAPS_CAPTURE_SYSMEM 0x00000040 -#define DDKERNELCAPS_CAPTURE_NONLOCALVIDMEM 0x00000080 -#define DDKERNELCAPS_FIELDPOLARITY 0x00000100 -#define DDKERNELCAPS_CAPTURE_INVERTED 0x00000200 -#define DDIRQ_DISPLAY_VSYNC 0x00000001 -#define DDIRQ_RESERVED1 0x00000002 -#define DDIRQ_VPORT0_VSYNC 0x00000004 -#define DDIRQ_VPORT0_LINE 0x00000008 -#define DDIRQ_VPORT1_VSYNC 0x00000010 -#define DDIRQ_VPORT1_LINE 0x00000020 -#define DDIRQ_VPORT2_VSYNC 0x00000040 -#define DDIRQ_VPORT2_LINE 0x00000080 -#define DDIRQ_VPORT3_VSYNC 0x00000100 -#define DDIRQ_VPORT3_LINE 0x00000200 -#define DDIRQ_VPORT4_VSYNC 0x00000400 -#define DDIRQ_VPORT4_LINE 0x00000800 -#define DDIRQ_VPORT5_VSYNC 0x00001000 -#define DDIRQ_VPORT5_LINE 0x00002000 -#define DDIRQ_VPORT6_VSYNC 0x00004000 -#define DDIRQ_VPORT6_LINE 0x00008000 -#define DDIRQ_VPORT7_VSYNC 0x00010000 -#define DDIRQ_VPORT7_LINE 0x00020000 -#define DDIRQ_VPORT8_VSYNC 0x00040000 -#define DDIRQ_VPORT8_LINE 0x00080000 -#define DDIRQ_VPORT9_VSYNC 0x00010000 -#define DDIRQ_VPORT9_LINE 0x00020000 - -typedef struct IDirectDrawKernel* LPDIRECTDRAWKERNEL; -typedef struct IDirectDrawSurfaceKernel* LPDIRECTDRAWSURFACEKERNEL; - -#if defined(_WIN32) && !defined(_NO_COM) - -#undef INTERFACE -#define INTERFACE IDirectDrawKernel -DECLARE_INTERFACE_ (IDirectDrawKernel, IUnknown) -{ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - STDMETHOD(GetKernelHandle) (THIS_ ULONG*) PURE; - STDMETHOD(ReleaseKernelHandle) (THIS) PURE; -}; - -#undef INTERFACE -#define INTERFACE IDirectDrawSurfaceKernel -DECLARE_INTERFACE_ (IDirectDrawSurfaceKernel, IUnknown) -{ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - STDMETHOD(GetKernelHandle) (THIS_ ULONG*) PURE; - STDMETHOD(ReleaseKernelHandle) (THIS) PURE; -}; - -#undef INTERFACE -#endif // defined(_WIN32) && !defined(_NO_COM) - -#ifdef __cplusplus -}; -#endif - -#endif - - - - diff --git a/include/ddk/ddrawi.h b/include/ddk/ddrawi.h deleted file mode 100644 index 6b658ff5120..00000000000 --- a/include/ddk/ddrawi.h +++ /dev/null @@ -1,2204 +0,0 @@ -/* - * DirectDraw driver interface - * (DirectX 7 version) - * - * Copyright (C) 2001 Ove Kaaven - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef __DDRAWI_INCLUDED__ -#define __DDRAWI_INCLUDED__ - -/* Helper macro to enable gcc's extension. */ -#ifndef __GNU_EXTENSION -#ifdef __GNUC__ -#define __GNU_EXTENSION __extension__ -#else -#define __GNU_EXTENSION -#endif -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define OBJECT_ISROOT 0x80000000 - -#include -#include -#include -#include - -#define DDAPI WINAPI - -#define VALID_ALIGNMENT(align) \ - (!((align==0)||(align%2)!= 0 )) - -/* the DirectDraw versions */ -#define DD_VERSION 0x0200 /* compatibility version */ -#define DD_RUNTIME_VERSION 0x0902 /* actual version */ - -/* the HAL version returned from QUERYESCSUPPORT - DCICOMMAND */ -#define DD_HAL_VERSION 0x0100 - -/* more DCICOMMAND escapes */ -#ifndef DCICOMMAND -#define DCICOMMAND 3075 -#endif - -#define DDCREATEDRIVEROBJECT 10 -#define DDGET32BITDRIVERNAME 11 -#define DDNEWCALLBACKFNS 12 -#define DDVERSIONINFO 13 - - - -#define DDUNSUPPORTEDMODE ((DWORD) -1) - -#include "dciddi.h" - -#ifndef CCHDEVICENAME -#define CCHDEVICENAME 32 -#endif -#define MAX_DRIVER_NAME CCHDEVICENAME - -#define DDHAL_DRIVER_DLLNAME "DDRAW16.DLL" -#define DDHAL_APP_DLLNAME "DDRAW.DLL" - - - -/* GUID */ -#ifdef _WIN32 -DEFINE_GUID(GUID_MiscellaneousCallbacks, 0xefd60cc0, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a); -DEFINE_GUID(GUID_VideoPortCallbacks, 0xefd60cc1, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a); -DEFINE_GUID(GUID_ColorControlCallbacks, 0xefd60cc2, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a); -DEFINE_GUID(GUID_VideoPortCaps, 0xefd60cc3, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a); -DEFINE_GUID(GUID_D3DCallbacks2, 0x0ba584e1, 0x70b6, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a); -DEFINE_GUID(GUID_D3DCallbacks3, 0xddf41230, 0xec0a, 0x11d0, 0xa9, 0xb6, 0x00, 0xaa, 0x00, 0xc0, 0x99, 0x3e); -DEFINE_GUID(GUID_NonLocalVidMemCaps, 0x86c4fa80, 0x8d84, 0x11d0, 0x94, 0xe8, 0x00, 0xc0, 0x4f, 0xc3, 0x41, 0x37); -DEFINE_GUID(GUID_KernelCallbacks, 0x80863800, 0x6B06, 0x11D0, 0x9B, 0x06, 0x0, 0xA0, 0xC9, 0x03, 0xA3, 0xB8); -DEFINE_GUID(GUID_KernelCaps, 0xFFAA7540, 0x7AA8, 0x11D0, 0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8); -DEFINE_GUID(GUID_D3DExtendedCaps, 0x7de41f80, 0x9d93, 0x11d0, 0x89, 0xab, 0x0, 0xa0, 0xc9, 0x5, 0x41, 0x29); -DEFINE_GUID(GUID_ZPixelFormats, 0x93869880, 0x36cf, 0x11d1, 0x9b, 0x1b, 0x0, 0xaa, 0x0, 0xbb, 0xb8, 0xae); -DEFINE_GUID(GUID_DDMoreSurfaceCaps, 0x3b8a0466, 0xf269, 0x11d1, 0x88, 0x0b, 0x0, 0xc0, 0x4f, 0xd9, 0x30, 0xc5); -DEFINE_GUID(GUID_DDStereoMode, 0xf828169c, 0xa8e8, 0x11d2, 0xa1, 0xf2, 0x0, 0xa0, 0xc9, 0x83, 0xea, 0xf6); -DEFINE_GUID(GUID_OptSurfaceKmodeInfo, 0xe05c8472, 0x51d4, 0x11d1, 0x8c, 0xce, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); -DEFINE_GUID(GUID_OptSurfaceUmodeInfo, 0x9d792804, 0x5fa8, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); -DEFINE_GUID(GUID_UserModeDriverInfo, 0xf0b0e8e2, 0x5f97, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); -DEFINE_GUID(GUID_UserModeDriverPassword, 0x97f861b6, 0x60a1, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); -DEFINE_GUID(GUID_D3DParseUnknownCommandCallback, 0x2e04ffa0, 0x98e4, 0x11d1, 0x8c, 0xe1, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); -DEFINE_GUID(GUID_MotionCompCallbacks, 0xb1122b40, 0x5dA5, 0x11d1, 0x8f, 0xcF, 0x00, 0xc0, 0x4f, 0xc2, 0x9b, 0x4e); -DEFINE_GUID(GUID_Miscellaneous2Callbacks, 0x406B2F00, 0x3E5A, 0x11D1, 0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A); -#endif - -#ifndef _WIN32 -#undef E_NOTIMPL -#undef E_OUTOFMEMORY -#undef E_INVALIDARG -#undef E_FAIL -#define E_NOTIMPL 0x80004001L -#define E_OUTOFMEMORY 0x8007000EL -#define E_INVALIDARG 0x80070057L -#define E_FAIL 0x80004005L -#endif - - -/***************************************************************************** - * Initialization stuff - */ -typedef struct { - char szName[260]; - char szEntryPoint[64]; - DWORD dwContext; -} DD32BITDRIVERDATA,*LPDD32BITDRIVERDATA; - -typedef struct { - DWORD dwHALVersion; - ULONG_PTR dwReserved1; - ULONG_PTR dwReserved2; -} DDVERSIONDATA,*LPDDVERSIONDATA; - -typedef DWORD (PASCAL *LPDD32BITDRIVERINIT)(DWORD dwContext); - - - -/* predeclare some structures */ -typedef struct _DDHALINFO *LPDDHALINFO; -typedef struct _DDRAWI_DIRECTDRAW_INT *LPDDRAWI_DIRECTDRAW_INT; - -#ifndef DDRAWI_DIRECTDRAW_DEFINED -typedef struct _DDRAWI_DIRECTDRAW_LCL *LPDDRAWI_DIRECTDRAW_LCL; -typedef struct _DDRAWI_DIRECTDRAW_GBL *LPDDRAWI_DIRECTDRAW_GBL; -#define DDRAWI_DIRECTDRAW_DEFINED -#endif - -typedef struct _DDRAWI_DDRAWSURFACE_INT *LPDDRAWI_DDRAWSURFACE_INT; - -#ifndef DDRAWI_DDRAWSURFACE_DEFINED -typedef struct _DDRAWI_DDRAWSURFACE_LCL *LPDDRAWI_DDRAWSURFACE_LCL; -#define DDRAWI_DDRAWSURFACE_DEFINED -#endif - -typedef struct _DDRAWI_DDRAWSURFACE_GBL *LPDDRAWI_DDRAWSURFACE_GBL; -typedef struct _DDRAWI_DDRAWSURFACE_MORE *LPDDRAWI_DDRAWSURFACE_MORE; -typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE *LPDDRAWI_DDRAWSURFACE_GBL_MORE; -typedef struct _DDRAWI_DDRAWPALETTE_INT *LPDDRAWI_DDRAWPALETTE_INT; -typedef struct _DDRAWI_DDRAWPALETTE_LCL *LPDDRAWI_DDRAWPALETTE_LCL; -typedef struct _DDRAWI_DDRAWPALETTE_GBL *LPDDRAWI_DDRAWPALETTE_GBL; -typedef struct _DDRAWI_DDRAWCLIPPER_INT *LPDDRAWI_DDRAWCLIPPER_INT; -typedef struct _DDRAWI_DDRAWCLIPPER_LCL *LPDDRAWI_DDRAWCLIPPER_LCL; -typedef struct _DDRAWI_DDRAWCLIPPER_GBL *LPDDRAWI_DDRAWCLIPPER_GBL; -typedef struct _DDRAWI_DDVIDEOPORT_INT *LPDDRAWI_DDVIDEOPORT_INT; -typedef struct _DDRAWI_DDVIDEOPORT_LCL *LPDDRAWI_DDVIDEOPORT_LCL; -typedef struct _DDRAWI_DDMOTIONCOMP_INT *LPDDRAWI_DDMOTIONCOMP_INT; -typedef struct _DDRAWI_DDMOTIONCOMP_LCL *LPDDRAWI_DDMOTIONCOMP_LCL; - -/***************************************************************************** - * driver->ddraw callbacks - */ -typedef BOOL (DDAPI *LPDDHAL_SETINFO)(LPDDHALINFO lpDDHalInfo, BOOL reset); -typedef FLATPTR (DDAPI *LPDDHAL_VIDMEMALLOC)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, DWORD dwWidth, DWORD dwHeight); -typedef void (DDAPI *LPDDHAL_VIDMEMFREE)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, FLATPTR fpMem); - -typedef struct { - DWORD dwSize; - LPDDHAL_SETINFO lpSetInfo; - LPDDHAL_VIDMEMALLOC lpVidMemAlloc; - LPDDHAL_VIDMEMFREE lpVidMemFree; -} DDHALDDRAWFNS,*LPDDHALDDRAWFNS; - -/***************************************************************************** - * mode info structure - */ -typedef struct _DDHALMODEINFO { - DWORD dwWidth; - DWORD dwHeight; - LONG lPitch; - DWORD dwBPP; - WORD wFlags; - WORD wRefreshRate; - DWORD dwRBitMask; - DWORD dwGBitMask; - DWORD dwBBitMask; - DWORD dwAlphaBitMask; -} DDHALMODEINFO,*LPDDHALMODEINFO; - - - - -#define DDMODEINFO_PALETTIZED 0x0001 -#define DDMODEINFO_MODEX 0x0002 -#define DDMODEINFO_UNSUPPORTED 0x0004 -#define DDMODEINFO_STANDARDVGA 0x0008 -#define DDMODEINFO_MAXREFRESH 0x0010 -#define DDMODEINFO_STEREO 0x0020 - -/***************************************************************************** - * video memory info structure - */ -typedef struct _VIDMEM { - DWORD dwFlags; - FLATPTR fpStart; - __GNU_EXTENSION union { - FLATPTR fpEnd; - DWORD dwWidth; - }; - DDSCAPS ddsCaps; - DDSCAPS ddsCapsAlt; - __GNU_EXTENSION union { - LPVMEMHEAP lpHeap; - DWORD dwHeight; - }; -} VIDMEM; - - -#define VIDMEM_ISLINEAR 0x00000001l -#define VIDMEM_ISRECTANGULAR 0x00000002l -#define VIDMEM_ISHEAP 0x00000004l -#define VIDMEM_ISNONLOCAL 0x00000008l -#define VIDMEM_ISWC 0x00000010l -#define VIDMEM_HEAPDISABLED 0x00000020l - -typedef struct _VIDMEMINFO { - FLATPTR fpPrimary; - DWORD dwFlags; - DWORD dwDisplayWidth; - DWORD dwDisplayHeight; - LONG lDisplayPitch; - DDPIXELFORMAT ddpfDisplay; - DWORD dwOffscreenAlign; - DWORD dwOverlayAlign; - DWORD dwTextureAlign; - DWORD dwZBufferAlign; - DWORD dwAlphaAlign; - DWORD dwNumHeaps; - LPVIDMEM pvmList; -} VIDMEMINFO,*LPVIDMEMINFO; - - - -typedef struct _HEAPALIAS { - FLATPTR fpVidMem; - LPVOID lpAlias; - DWORD dwAliasSize; -} HEAPALIAS,*LPHEAPALIAS; - -typedef struct _HEAPALIASINFO { - DWORD dwRefCnt; - DWORD dwFlags; - DWORD dwNumHeaps; - LPHEAPALIAS lpAliases; -} HEAPALIASINFO,*LPHEAPALIASINFO; - -#define HEAPALIASINFO_MAPPEDREAL 0x00000001 -#define HEAPALIASINFO_MAPPEDDUMMY 0x00000002 - -/***************************************************************************** - * capabilities structures - */ -typedef struct _DDCORECAPS { - DWORD dwSize; - DWORD dwCaps; - DWORD dwCaps2; - DWORD dwCKeyCaps; - DWORD dwFXCaps; - DWORD dwFXAlphaCaps; - DWORD dwPalCaps; - DWORD dwSVCaps; - DWORD dwAlphaBltConstBitDepths; - DWORD dwAlphaBltPixelBitDepths; - DWORD dwAlphaBltSurfaceBitDepths; - DWORD dwAlphaOverlayConstBitDepths; - DWORD dwAlphaOverlayPixelBitDepths; - DWORD dwAlphaOverlaySurfaceBitDepths; - DWORD dwZBufferBitDepths; - DWORD dwVidMemTotal; - DWORD dwVidMemFree; - DWORD dwMaxVisibleOverlays; - DWORD dwCurrVisibleOverlays; - DWORD dwNumFourCCCodes; - DWORD dwAlignBoundarySrc; - DWORD dwAlignSizeSrc; - DWORD dwAlignBoundaryDest; - DWORD dwAlignSizeDest; - DWORD dwAlignStrideAlign; - DWORD dwRops[DD_ROP_SPACE]; - DDSCAPS ddsCaps; - DWORD dwMinOverlayStretch; - DWORD dwMaxOverlayStretch; - DWORD dwMinLiveVideoStretch; - DWORD dwMaxLiveVideoStretch; - DWORD dwMinHwCodecStretch; - DWORD dwMaxHwCodecStretch; - DWORD dwReserved1; - DWORD dwReserved2; - DWORD dwReserved3; - DWORD dwSVBCaps; - DWORD dwSVBCKeyCaps; - DWORD dwSVBFXCaps; - DWORD dwSVBRops[DD_ROP_SPACE]; - DWORD dwVSBCaps; - DWORD dwVSBCKeyCaps; - DWORD dwVSBFXCaps; - DWORD dwVSBRops[DD_ROP_SPACE]; - DWORD dwSSBCaps; - DWORD dwSSBCKeyCaps; - DWORD dwSSBFXCaps; - DWORD dwSSBRops[DD_ROP_SPACE]; - DWORD dwMaxVideoPorts; - DWORD dwCurrVideoPorts; - DWORD dwSVBCaps2; -} DDCORECAPS,*LPDDCORECAPS; - -typedef struct _DDNONLOCALVIDMEMCAPS { - DWORD dwSize; - DWORD dwNLVBCaps; - DWORD dwNLVBCaps2; - DWORD dwNLVBCKeyCaps; - DWORD dwNLVBFXCaps; - DWORD dwNLVBRops[DD_ROP_SPACE]; -} DDNONLOCALVIDMEMCAPS,*LPDDNONLOCALVIDMEMCAPS; - - - -#define DDSCAPS_EXECUTEBUFFER DDSCAPS_RESERVED2 -#define DDSCAPS2_VERTEXBUFFER DDSCAPS2_RESERVED1 -#define DDSCAPS2_COMMANDBUFFER DDSCAPS2_RESERVED2 - - - - -/***************************************************************************** - * ddraw->driver callbacks - */ -#define DDHAL_DRIVER_NOTHANDLED 0x00000000l -#define DDHAL_DRIVER_HANDLED 0x00000001l -#define DDHAL_DRIVER_NOCKEYHW 0x00000002l - -typedef struct _DDHAL_DESTROYDRIVERDATA *LPDDHAL_DESTROYDRIVERDATA; -typedef struct _DDHAL_CREATESURFACEDATA *LPDDHAL_CREATESURFACEDATA; -typedef struct _DDHAL_DRVSETCOLORKEYDATA *LPDDHAL_DRVSETCOLORKEYDATA; -typedef struct _DDHAL_SETMODEDATA *LPDDHAL_SETMODEDATA; -typedef struct _DDHAL_WAITFORVERTICALBLANKDATA *LPDDHAL_WAITFORVERTICALBLANKDATA; -typedef struct _DDHAL_CANCREATESURFACEDATA *LPDDHAL_CANCREATESURFACEDATA; -typedef struct _DDHAL_CREATEPALETTEDATA *LPDDHAL_CREATEPALETTEDATA; -typedef struct _DDHAL_GETSCANLINEDATA *LPDDHAL_GETSCANLINEDATA; -typedef struct _DDHAL_SETEXCLUSIVEMODEDATA *LPDDHAL_SETEXCLUSIVEMODEDATA; -typedef struct _DDHAL_FLIPTOGDISURFACEDATA *LPDDHAL_FLIPTOGDISURFACEDATA; - -typedef DWORD (PASCAL *LPDDHAL_DESTROYDRIVER) (LPDDHAL_DESTROYDRIVERDATA); -typedef DWORD (PASCAL *LPDDHAL_CREATESURFACE) (LPDDHAL_CREATESURFACEDATA); -typedef DWORD (PASCAL *LPDDHAL_SETCOLORKEY) (LPDDHAL_DRVSETCOLORKEYDATA); -typedef DWORD (PASCAL *LPDDHAL_SETMODE) (LPDDHAL_SETMODEDATA); -typedef DWORD (PASCAL *LPDDHAL_WAITFORVERTICALBLANK)(LPDDHAL_WAITFORVERTICALBLANKDATA); -typedef DWORD (PASCAL *LPDDHAL_CANCREATESURFACE) (LPDDHAL_CANCREATESURFACEDATA ); -typedef DWORD (PASCAL *LPDDHAL_CREATEPALETTE) (LPDDHAL_CREATEPALETTEDATA); -typedef DWORD (PASCAL *LPDDHAL_GETSCANLINE) (LPDDHAL_GETSCANLINEDATA); -typedef DWORD (PASCAL *LPDDHAL_SETEXCLUSIVEMODE) (LPDDHAL_SETEXCLUSIVEMODEDATA); -typedef DWORD (PASCAL *LPDDHAL_FLIPTOGDISURFACE) (LPDDHAL_FLIPTOGDISURFACEDATA); - - - -typedef struct _DDHAL_DDCALLBACKS { - DWORD dwSize; - DWORD dwFlags; - LPDDHAL_DESTROYDRIVER DestroyDriver; - LPDDHAL_CREATESURFACE CreateSurface; - LPDDHAL_SETCOLORKEY SetColorKey; - LPDDHAL_SETMODE SetMode; - LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank; - LPDDHAL_CANCREATESURFACE CanCreateSurface; - LPDDHAL_CREATEPALETTE CreatePalette; - LPDDHAL_GETSCANLINE GetScanLine; - /* DirectX 2 */ - LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode; - LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface; -} DDHAL_DDCALLBACKS,*LPDDHAL_DDCALLBACKS; - - - -typedef struct _DDHAL_DESTROYSURFACEDATA *LPDDHAL_DESTROYSURFACEDATA; -typedef struct _DDHAL_FLIPDATA *LPDDHAL_FLIPDATA; -typedef struct _DDHAL_SETCLIPLISTDATA *LPDDHAL_SETCLIPLISTDATA; -typedef struct _DDHAL_LOCKDATA *LPDDHAL_LOCKDATA; -typedef struct _DDHAL_UNLOCKDATA *LPDDHAL_UNLOCKDATA; -typedef struct _DDHAL_BLTDATA *LPDDHAL_BLTDATA; -typedef struct _DDHAL_SETCOLORKEYDATA *LPDDHAL_SETCOLORKEYDATA; -typedef struct _DDHAL_ADDATTACHEDSURFACEDATA *LPDDHAL_ADDATTACHEDSURFACEDATA; -typedef struct _DDHAL_GETBLTSTATUSDATA *LPDDHAL_GETBLTSTATUSDATA; -typedef struct _DDHAL_GETFLIPSTATUSDATA *LPDDHAL_GETFLIPSTATUSDATA; -typedef struct _DDHAL_UPDATEOVERLAYDATA *LPDDHAL_UPDATEOVERLAYDATA; -typedef struct _DDHAL_SETOVERLAYPOSITIONDATA *LPDDHAL_SETOVERLAYPOSITIONDATA; -typedef struct _DDHAL_SETPALETTEDATA *LPDDHAL_SETPALETTEDATA; - -typedef DWORD (PASCAL *LPDDHALSURFCB_DESTROYSURFACE) (LPDDHAL_DESTROYSURFACEDATA); -typedef DWORD (PASCAL *LPDDHALSURFCB_FLIP) (LPDDHAL_FLIPDATA); -typedef DWORD (PASCAL *LPDDHALSURFCB_SETCLIPLIST) (LPDDHAL_SETCLIPLISTDATA); -typedef DWORD (PASCAL *LPDDHALSURFCB_LOCK) (LPDDHAL_LOCKDATA); -typedef DWORD (PASCAL *LPDDHALSURFCB_UNLOCK) (LPDDHAL_UNLOCKDATA); -typedef DWORD (PASCAL *LPDDHALSURFCB_BLT) (LPDDHAL_BLTDATA); -typedef DWORD (PASCAL *LPDDHALSURFCB_SETCOLORKEY) (LPDDHAL_SETCOLORKEYDATA); -typedef DWORD (PASCAL *LPDDHALSURFCB_ADDATTACHEDSURFACE)(LPDDHAL_ADDATTACHEDSURFACEDATA); -typedef DWORD (PASCAL *LPDDHALSURFCB_GETBLTSTATUS) (LPDDHAL_GETBLTSTATUSDATA); -typedef DWORD (PASCAL *LPDDHALSURFCB_GETFLIPSTATUS) (LPDDHAL_GETFLIPSTATUSDATA); -typedef DWORD (PASCAL *LPDDHALSURFCB_UPDATEOVERLAY) (LPDDHAL_UPDATEOVERLAYDATA); -typedef DWORD (PASCAL *LPDDHALSURFCB_SETOVERLAYPOSITION)(LPDDHAL_SETOVERLAYPOSITIONDATA); -typedef DWORD (PASCAL *LPDDHALSURFCB_SETPALETTE) (LPDDHAL_SETPALETTEDATA); - -typedef struct _DDHAL_DDSURFACECALLBACKS { - DWORD dwSize; - DWORD dwFlags; - LPDDHALSURFCB_DESTROYSURFACE DestroySurface; - LPDDHALSURFCB_FLIP Flip; - LPDDHALSURFCB_SETCLIPLIST SetClipList; - LPDDHALSURFCB_LOCK Lock; - LPDDHALSURFCB_UNLOCK Unlock; - LPDDHALSURFCB_BLT Blt; - LPDDHALSURFCB_SETCOLORKEY SetColorKey; - LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface; - LPDDHALSURFCB_GETBLTSTATUS GetBltStatus; - LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus; - LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay; - LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition; - LPVOID reserved4; - LPDDHALSURFCB_SETPALETTE SetPalette; -} DDHAL_DDSURFACECALLBACKS,*LPDDHAL_DDSURFACECALLBACKS; - - - -typedef struct _DDHAL_DESTROYPALETTEDATA *LPDDHAL_DESTROYPALETTEDATA; -typedef struct _DDHAL_SETENTRIESDATA *LPDDHAL_SETENTRIESDATA; - -typedef DWORD (PASCAL *LPDDHALPALCB_DESTROYPALETTE)(LPDDHAL_DESTROYPALETTEDATA); -typedef DWORD (PASCAL *LPDDHALPALCB_SETENTRIES) (LPDDHAL_SETENTRIESDATA); - -typedef struct _DDHAL_DDPALETTECALLBACKS { - DWORD dwSize; - DWORD dwFlags; - LPDDHALPALCB_DESTROYPALETTE DestroyPalette; - LPDDHALPALCB_SETENTRIES SetEntries; -} DDHAL_DDPALETTECALLBACKS,*LPDDHAL_DDPALETTECALLBACKS; - -typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CANCREATEEXEBUF)(LPDDHAL_CANCREATESURFACEDATA); -typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CREATEEXEBUF) (LPDDHAL_CREATESURFACEDATA); -typedef DWORD (PASCAL *LPDDHALEXEBUFCB_DESTROYEXEBUF) (LPDDHAL_DESTROYSURFACEDATA); -typedef DWORD (PASCAL *LPDDHALEXEBUFCB_LOCKEXEBUF) (LPDDHAL_LOCKDATA); -typedef DWORD (PASCAL *LPDDHALEXEBUFCB_UNLOCKEXEBUF) (LPDDHAL_UNLOCKDATA); - -typedef struct _DDHAL_DDEXEBUFCALLBACKS { - DWORD dwSize; - DWORD dwFlags; - LPDDHALEXEBUFCB_CANCREATEEXEBUF CanCreateExecuteBuffer; - LPDDHALEXEBUFCB_CREATEEXEBUF CreateExecuteBuffer; - LPDDHALEXEBUFCB_DESTROYEXEBUF DestroyExecuteBuffer; - LPDDHALEXEBUFCB_LOCKEXEBUF LockExecuteBuffer; - LPDDHALEXEBUFCB_UNLOCKEXEBUF UnlockExecuteBuffer; -} DDHAL_DDEXEBUFCALLBACKS,*LPDDHAL_DDEXEBUFCALLBACKS; - -typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA *LPDDHAL_GETAVAILDRIVERMEMORYDATA; -typedef struct _DDHAL_UPDATENONLOCALHEAPDATA *LPDDHAL_UPDATENONLOCALHEAPDATA; -typedef struct _DDHAL_GETHEAPALIGNMENTDATA *LPDDHAL_GETHEAPALIGNMENTDATA; - -typedef DWORD (PASCAL *LPDDHAL_GETAVAILDRIVERMEMORY)(LPDDHAL_GETAVAILDRIVERMEMORYDATA); -typedef DWORD (PASCAL *LPDDHAL_UPDATENONLOCALHEAP) (LPDDHAL_UPDATENONLOCALHEAPDATA); -typedef DWORD (PASCAL *LPDDHAL_GETHEAPALIGNMENT) (LPDDHAL_GETHEAPALIGNMENTDATA); - -typedef struct _DDHAL_DDMISCELLANEOUSCALLBACKS { - DWORD dwSize; - DWORD dwFlags; - LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory; - LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap; - LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment; - LPDDHALSURFCB_GETBLTSTATUS GetSysmemBltStatus; -} DDHAL_DDMISCELLANEOUSCALLBACKS,*LPDDHAL_DDMISCELLANEOUSCALLBACKS; - -typedef struct _DDHAL_CREATESURFACEEXDATA *LPDDHAL_CREATESURFACEEXDATA; -typedef struct _DDHAL_GETDRIVERSTATEDATA *LPDDHAL_GETDRIVERSTATEDATA; -typedef struct _DDHAL_DESTROYDDLOCALDATA *LPDDHAL_DESTROYDDLOCALDATA; - -typedef DWORD (PASCAL *LPDDHAL_CREATESURFACEEX)(LPDDHAL_CREATESURFACEEXDATA); -typedef DWORD (PASCAL *LPDDHAL_GETDRIVERSTATE) (LPDDHAL_GETDRIVERSTATEDATA); -typedef DWORD (PASCAL *LPDDHAL_DESTROYDDLOCAL) (LPDDHAL_DESTROYDDLOCALDATA); - -typedef struct _DDHAL_DDMISCELLANEOUS2CALLBACKS { - DWORD dwSize; - DWORD dwFlags; - LPVOID Reserved; - LPDDHAL_CREATESURFACEEX CreateSurfaceEx; - LPDDHAL_GETDRIVERSTATE GetDriverState; - LPDDHAL_DESTROYDDLOCAL DestroyDDLocal; -} DDHAL_DDMISCELLANEOUS2CALLBACKS,*LPDDHAL_DDMISCELLANEOUS2CALLBACKS; - - -typedef struct _DDHAL_CANCREATEVPORTDATA *LPDDHAL_CANCREATEVPORTDATA; -typedef struct _DDHAL_CREATEVPORTDATA *LPDDHAL_CREATEVPORTDATA; -typedef struct _DDHAL_FLIPVPORTDATA *LPDDHAL_FLIPVPORTDATA; -typedef struct _DDHAL_GETVPORTCONNECTDATA *LPDDHAL_GETVPORTCONNECTDATA; -typedef struct _DDHAL_GETVPORTBANDWIDTHDATA *LPDDHAL_GETVPORTBANDWIDTHDATA; -typedef struct _DDHAL_GETVPORTINPUTFORMATDATA *LPDDHAL_GETVPORTINPUTFORMATDATA; -typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA *LPDDHAL_GETVPORTOUTPUTFORMATDATA; -typedef struct _DDHAL_GETVPORTFIELDDATA *LPDDHAL_GETVPORTFIELDDATA; -typedef struct _DDHAL_GETVPORTLINEDATA *LPDDHAL_GETVPORTLINEDATA; -typedef struct _DDHAL_DESTROYVPORTDATA *LPDDHAL_DESTROYVPORTDATA; -typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA *LPDDHAL_GETVPORTFLIPSTATUSDATA; -typedef struct _DDHAL_UPDATEVPORTDATA *LPDDHAL_UPDATEVPORTDATA; -typedef struct _DDHAL_WAITFORVPORTSYNCDATA *LPDDHAL_WAITFORVPORTSYNCDATA; -typedef struct _DDHAL_GETVPORTSIGNALDATA *LPDDHAL_GETVPORTSIGNALDATA; -typedef struct _DDHAL_VPORTCOLORDATA *LPDDHAL_VPORTCOLORDATA; - -typedef DWORD (PASCAL *LPDDHALVPORTCB_CANCREATEVIDEOPORT)(LPDDHAL_CANCREATEVPORTDATA); -typedef DWORD (PASCAL *LPDDHALVPORTCB_CREATEVIDEOPORT)(LPDDHAL_CREATEVPORTDATA); -typedef DWORD (PASCAL *LPDDHALVPORTCB_FLIP)(LPDDHAL_FLIPVPORTDATA); -typedef DWORD (PASCAL *LPDDHALVPORTCB_GETBANDWIDTH)(LPDDHAL_GETVPORTBANDWIDTHDATA); -typedef DWORD (PASCAL *LPDDHALVPORTCB_GETINPUTFORMATS)(LPDDHAL_GETVPORTINPUTFORMATDATA); -typedef DWORD (PASCAL *LPDDHALVPORTCB_GETOUTPUTFORMATS)(LPDDHAL_GETVPORTOUTPUTFORMATDATA); -typedef DWORD (PASCAL *LPDDHALVPORTCB_GETFIELD)(LPDDHAL_GETVPORTFIELDDATA); -typedef DWORD (PASCAL *LPDDHALVPORTCB_GETLINE)(LPDDHAL_GETVPORTLINEDATA); -typedef DWORD (PASCAL *LPDDHALVPORTCB_GETVPORTCONNECT)(LPDDHAL_GETVPORTCONNECTDATA); -typedef DWORD (PASCAL *LPDDHALVPORTCB_DESTROYVPORT)(LPDDHAL_DESTROYVPORTDATA); -typedef DWORD (PASCAL *LPDDHALVPORTCB_GETFLIPSTATUS)(LPDDHAL_GETVPORTFLIPSTATUSDATA); -typedef DWORD (PASCAL *LPDDHALVPORTCB_UPDATE)(LPDDHAL_UPDATEVPORTDATA); -typedef DWORD (PASCAL *LPDDHALVPORTCB_WAITFORSYNC)(LPDDHAL_WAITFORVPORTSYNCDATA); -typedef DWORD (PASCAL *LPDDHALVPORTCB_GETSIGNALSTATUS)(LPDDHAL_GETVPORTSIGNALDATA); -typedef DWORD (PASCAL *LPDDHALVPORTCB_COLORCONTROL)(LPDDHAL_VPORTCOLORDATA); - -typedef struct _DDHAL_DDVIDEOPORTCALLBACKS -{ - DWORD dwSize; - DWORD dwFlags; - LPDDHALVPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort; - LPDDHALVPORTCB_CREATEVIDEOPORT CreateVideoPort; - LPDDHALVPORTCB_FLIP FlipVideoPort; - LPDDHALVPORTCB_GETBANDWIDTH GetVideoPortBandwidth; - LPDDHALVPORTCB_GETINPUTFORMATS GetVideoPortInputFormats; - LPDDHALVPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats; - LPVOID lpReserved1; - LPDDHALVPORTCB_GETFIELD GetVideoPortField; - LPDDHALVPORTCB_GETLINE GetVideoPortLine; - LPDDHALVPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo; - LPDDHALVPORTCB_DESTROYVPORT DestroyVideoPort; - LPDDHALVPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus; - LPDDHALVPORTCB_UPDATE UpdateVideoPort; - LPDDHALVPORTCB_WAITFORSYNC WaitForVideoPortSync; - LPDDHALVPORTCB_GETSIGNALSTATUS GetVideoSignalStatus; - LPDDHALVPORTCB_COLORCONTROL ColorControl; -} DDHAL_DDVIDEOPORTCALLBACKS; - - -typedef struct _DDHAL_COLORCONTROLDATA *LPDDHAL_COLORCONTROLDATA; - -typedef DWORD (PASCAL *LPDDHALCOLORCB_COLORCONTROL)(LPDDHAL_COLORCONTROLDATA); - - -typedef struct _DDHAL_DDCOLORCONTROLCALLBACKS -{ - DWORD dwSize; - DWORD dwFlags; - LPDDHALCOLORCB_COLORCONTROL ColorControl; -} DDHAL_DDCOLORCONTROLCALLBACKS; - -typedef struct _DDHAL_SYNCSURFACEDATA *LPDDHAL_SYNCSURFACEDATA; -typedef struct _DDHAL_SYNCVIDEOPORTDATA *LPDDHAL_SYNCVIDEOPORTDATA; - -typedef DWORD (PASCAL *LPDDHALKERNELCB_SYNCSURFACE)(LPDDHAL_SYNCSURFACEDATA); -typedef DWORD (PASCAL *LPDDHALKERNELCB_SYNCVIDEOPORT)(LPDDHAL_SYNCVIDEOPORTDATA); - -typedef struct _DDHAL_DDKERNELCALLBACKS -{ - DWORD dwSize; - DWORD dwFlags; - LPDDHALKERNELCB_SYNCSURFACE SyncSurfaceData; - LPDDHALKERNELCB_SYNCVIDEOPORT SyncVideoPortData; -} DDHAL_DDKERNELCALLBACKS, *LPDDHAL_DDKERNELCALLBACKS; - -typedef struct _DDHAL_GETMOCOMPGUIDSDATA *LPDDHAL_GETMOCOMPGUIDSDATA; -typedef struct _DDHAL_GETMOCOMPFORMATSDATA *LPDDHAL_GETMOCOMPFORMATSDATA; -typedef struct _DDHAL_CREATEMOCOMPDATA *LPDDHAL_CREATEMOCOMPDATA; -typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA *LPDDHAL_GETMOCOMPCOMPBUFFDATA; -typedef struct _DDHAL_GETINTERNALMOCOMPDATA *LPDDHAL_GETINTERNALMOCOMPDATA; -typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA *LPDDHAL_BEGINMOCOMPFRAMEDATA; -typedef struct _DDHAL_ENDMOCOMPFRAMEDATA *LPDDHAL_ENDMOCOMPFRAMEDATA; -typedef struct _DDHAL_RENDERMOCOMPDATA *LPDDHAL_RENDERMOCOMPDATA; -typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA *LPDDHAL_QUERYMOCOMPSTATUSDATA; -typedef struct _DDHAL_DESTROYMOCOMPDATA *LPDDHAL_DESTROYMOCOMPDATA; - -typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETGUIDS)( LPDDHAL_GETMOCOMPGUIDSDATA); -typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETFORMATS)( LPDDHAL_GETMOCOMPFORMATSDATA); -typedef DWORD (PASCAL *LPDDHALMOCOMPCB_CREATE)( LPDDHAL_CREATEMOCOMPDATA); -typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETCOMPBUFFINFO)( LPDDHAL_GETMOCOMPCOMPBUFFDATA); -typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETINTERNALINFO)( LPDDHAL_GETINTERNALMOCOMPDATA); -typedef DWORD (PASCAL *LPDDHALMOCOMPCB_BEGINFRAME)( LPDDHAL_BEGINMOCOMPFRAMEDATA); -typedef DWORD (PASCAL *LPDDHALMOCOMPCB_ENDFRAME)( LPDDHAL_ENDMOCOMPFRAMEDATA); -typedef DWORD (PASCAL *LPDDHALMOCOMPCB_RENDER)( LPDDHAL_RENDERMOCOMPDATA); -typedef DWORD (PASCAL *LPDDHALMOCOMPCB_QUERYSTATUS)( LPDDHAL_QUERYMOCOMPSTATUSDATA); -typedef DWORD (PASCAL *LPDDHALMOCOMPCB_DESTROY)( LPDDHAL_DESTROYMOCOMPDATA); - -typedef struct _DDHAL_DDMOTIONCOMPCALLBACKS -{ - DWORD dwSize; - DWORD dwFlags; - LPDDHALMOCOMPCB_GETGUIDS GetMoCompGuids; - LPDDHALMOCOMPCB_GETFORMATS GetMoCompFormats; - LPDDHALMOCOMPCB_CREATE CreateMoComp; - LPDDHALMOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo; - LPDDHALMOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo; - LPDDHALMOCOMPCB_BEGINFRAME BeginMoCompFrame; - LPDDHALMOCOMPCB_ENDFRAME EndMoCompFrame; - LPDDHALMOCOMPCB_RENDER RenderMoComp; - LPDDHALMOCOMPCB_QUERYSTATUS QueryMoCompStatus; - LPDDHALMOCOMPCB_DESTROY DestroyMoComp; -} DDHAL_DDMOTIONCOMPCALLBACKS, *LPDDHAL_DDMOTIONCOMPCALLBACKS; - - - -typedef HRESULT (WINAPI *LPDDGAMMACALIBRATORPROC)(LPDDGAMMARAMP, LPBYTE); - - - -/***************************************************************************** - * driver info structure - * - * The HAL is queried for additional callbacks via the GetDriverInfo callback. - */ -typedef struct _DDHAL_GETDRIVERINFODATA *LPDDHAL_GETDRIVERINFODATA; -typedef DWORD (PASCAL *LPDDHAL_GETDRIVERINFO)(LPDDHAL_GETDRIVERINFODATA); - - -typedef struct _DDHAL_GETDRIVERINFODATA { - DWORD dwSize; - DWORD dwFlags; - GUID guidInfo; - DWORD dwExpectedSize; - LPVOID lpvData; - DWORD dwActualSize; - HRESULT ddRVal; - ULONG_PTR dwContext; - -} DDHAL_GETDRIVERINFODATA; - -typedef struct _DDHALINFO { - DWORD dwSize; - LPDDHAL_DDCALLBACKS lpDDCallbacks; - LPDDHAL_DDSURFACECALLBACKS lpDDSurfaceCallbacks; - LPDDHAL_DDPALETTECALLBACKS lpDDPaletteCallbacks; - VIDMEMINFO vmiData; - DDCORECAPS ddCaps; - DWORD dwMonitorFrequency; - LPDDHAL_GETDRIVERINFO GetDriverInfo; - DWORD dwModeIndex; - LPDWORD lpdwFourCC; - DWORD dwNumModes; - LPDDHALMODEINFO lpModeInfo; - DWORD dwFlags; - LPVOID lpPDevice; - DWORD hInstance; - /* DirectX 2 */ - ULONG_PTR lpD3DGlobalDriverData; - ULONG_PTR lpD3DHALCallbacks; - LPDDHAL_DDEXEBUFCALLBACKS lpDDExeBufCallbacks; -} DDHALINFO; - - - -#define DDPALETTECALLBACKSSIZE sizeof( DDHAL_DDPALETTECALLBACKS ) -#define DDSURFACECALLBACKSSIZE sizeof( DDHAL_DDSURFACECALLBACKS ) -#define DDMISCELLANEOUSCALLBACKSSIZE sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS) -#define DDMISCELLANEOUS2CALLBACKSSIZE sizeof(DDHAL_DDMISCELLANEOUS2CALLBACKS) -#define DDEXEBUFCALLBACKSSIZE sizeof( DDHAL_DDEXEBUFCALLBACKS ) -#define DDVIDEOPORTCALLBACKSSIZE sizeof( DDHAL_DDVIDEOPORTCALLBACKS ) -#define DDCOLORCONTROLCALLBACKSSIZE sizeof( DDHAL_DDCOLORCONTROLCALLBACKS ) -#define DDKERNELCALLBACKSSIZE sizeof(DDHAL_DDKERNELCALLBACKS) -#define DDMOTIONCOMPCALLBACKSSIZE sizeof( DDHAL_DDMOTIONCOMPCALLBACKS ) - -#define MAX_PALETTE_SIZE 256 - -#define MAX_AUTOFLIP_BUFFERS 10 -#define DDSCAPS2_INDEXBUFFER DDSCAPS2_RESERVED3 -#define DDSCAPS3_VIDEO DDSCAPS3_RESERVED2 -#define D3DFMT_INTERNAL_D32 71 -#define D3DFMT_INTERNAL_S1D15 72 -#define D3DFMT_INTERNAL_D15S1 73 -#define D3DFMT_INTERNAL_S8D24 74 -#define D3DFMT_INTERNAL_D24S8 75 -#define D3DFMT_INTERNAL_X8D24 76 -#define D3DFMT_INTERNAL_D24X8 77 -#define DDHAL_PLEASEALLOC_BLOCKSIZE 0x00000002l -#define DDHAL_PLEASEALLOC_LINEARSIZE 0x00000003l - -#define DDHAL_CB32_DESTROYDRIVER 0x00000001l -#define DDHAL_CB32_CREATESURFACE 0x00000002l -#define DDHAL_CB32_SETCOLORKEY 0x00000004l -#define DDHAL_CB32_SETMODE 0x00000008l -#define DDHAL_CB32_WAITFORVERTICALBLANK 0x00000010l -#define DDHAL_CB32_CANCREATESURFACE 0x00000020l -#define DDHAL_CB32_CREATEPALETTE 0x00000040l -#define DDHAL_CB32_GETSCANLINE 0x00000080l -#define DDHAL_CB32_SETEXCLUSIVEMODE 0x00000100l -#define DDHAL_CB32_FLIPTOGDISURFACE 0x00000200l -#define DDHAL_PALCB32_DESTROYPALETTE 0x00000001l -#define DDHAL_PALCB32_SETENTRIES 0x00000002l -#define DDHALINFO_ISPRIMARYDISPLAY 0x00000001 -#define DDHALINFO_MODEXILLEGAL 0x00000002 -#define DDHALINFO_GETDRIVERINFOSET 0x00000004 -#define DDHALINFO_GETDRIVERINFO2 0x00000008 -#define DDRAWI_VPORTSTART 0x0001 -#define DDRAWI_VPORTSTOP 0x0002 -#define DDRAWI_VPORTUPDATE 0x0003 -#define DDRAWI_VPORTGETCOLOR 0x0001 -#define DDRAWI_VPORTSETCOLOR 0x0002 -#define DDHAL_SURFCB32_DESTROYSURFACE 0x00000001 -#define DDHAL_SURFCB32_FLIP 0x00000002 -#define DDHAL_SURFCB32_SETCLIPLIST 0x00000004 -#define DDHAL_SURFCB32_LOCK 0x00000008 -#define DDHAL_SURFCB32_UNLOCK 0x00000010 -#define DDHAL_SURFCB32_BLT 0x00000020 -#define DDHAL_SURFCB32_SETCOLORKEY 0x00000040 -#define DDHAL_SURFCB32_ADDATTACHEDSURFACE 0x00000080 -#define DDHAL_SURFCB32_GETBLTSTATUS 0x00000100 -#define DDHAL_SURFCB32_GETFLIPSTATUS 0x00000200 -#define DDHAL_SURFCB32_UPDATEOVERLAY 0x00000400 -#define DDHAL_SURFCB32_SETOVERLAYPOSITION 0x00000800 -#define DDHAL_SURFCB32_RESERVED4 0x00001000 -#define DDHAL_SURFCB32_SETPALETTE 0x00002000 -#define DDHAL_MISCCB32_GETAVAILDRIVERMEMORY 0x00000001 -#define DDHAL_MISCCB32_UPDATENONLOCALHEAP 0x00000002 -#define DDHAL_MISCCB32_GETHEAPALIGNMENT 0x00000004 -#define DDHAL_MISCCB32_GETSYSMEMBLTSTATUS 0x00000008 -#define DDHAL_MISC2CB32_ALPHABLT 0x00000001 -#define DDHAL_MISC2CB32_CREATESURFACEEX 0x00000002 -#define DDHAL_MISC2CB32_GETDRIVERSTATE 0x00000004 -#define DDHAL_MISC2CB32_DESTROYDDLOCAL 0x00000008 -#define DDHAL_EXEBUFCB32_CANCREATEEXEBUF 0x00000001l -#define DDHAL_EXEBUFCB32_CREATEEXEBUF 0x00000002l -#define DDHAL_EXEBUFCB32_DESTROYEXEBUF 0x00000004l -#define DDHAL_EXEBUFCB32_LOCKEXEBUF 0x00000008l -#define DDHAL_EXEBUFCB32_UNLOCKEXEBUF 0x00000010l -#define DDHAL_VPORT32_CANCREATEVIDEOPORT 0x00000001 -#define DDHAL_VPORT32_CREATEVIDEOPORT 0x00000002 -#define DDHAL_VPORT32_FLIP 0x00000004 -#define DDHAL_VPORT32_GETBANDWIDTH 0x00000008 -#define DDHAL_VPORT32_GETINPUTFORMATS 0x00000010 -#define DDHAL_VPORT32_GETOUTPUTFORMATS 0x00000020 -#define DDHAL_VPORT32_GETFIELD 0x00000080 -#define DDHAL_VPORT32_GETLINE 0x00000100 -#define DDHAL_VPORT32_GETCONNECT 0x00000200 -#define DDHAL_VPORT32_DESTROY 0x00000400 -#define DDHAL_VPORT32_GETFLIPSTATUS 0x00000800 -#define DDHAL_VPORT32_UPDATE 0x00001000 -#define DDHAL_VPORT32_WAITFORSYNC 0x00002000 -#define DDHAL_VPORT32_GETSIGNALSTATUS 0x00004000 -#define DDHAL_VPORT32_COLORCONTROL 0x00008000 -#define DDHAL_COLOR_COLORCONTROL 0x00000001 -#define DDHAL_KERNEL_SYNCSURFACEDATA 0x00000001l -#define DDHAL_KERNEL_SYNCVIDEOPORTDATA 0x00000002l -#define DDHAL_MOCOMP32_GETGUIDS 0x00000001 -#define DDHAL_MOCOMP32_GETFORMATS 0x00000002 -#define DDHAL_MOCOMP32_CREATE 0x00000004 -#define DDHAL_MOCOMP32_GETCOMPBUFFINFO 0x00000008 -#define DDHAL_MOCOMP32_GETINTERNALINFO 0x00000010 -#define DDHAL_MOCOMP32_BEGINFRAME 0x00000020 -#define DDHAL_MOCOMP32_ENDFRAME 0x00000040 -#define DDHAL_MOCOMP32_RENDER 0x00000080 -#define DDHAL_MOCOMP32_QUERYSTATUS 0x00000100 -#define DDHAL_MOCOMP32_DESTROY 0x00000200 - - -/* where the high-level ddraw implementation stores the callbacks */ -typedef struct _DDHAL_CALLBACKS { - DDHAL_DDCALLBACKS cbDDCallbacks; - DDHAL_DDSURFACECALLBACKS cbDDSurfaceCallbacks; - DDHAL_DDPALETTECALLBACKS cbDDPaletteCallbacks; - DDHAL_DDCALLBACKS HALDD; - DDHAL_DDSURFACECALLBACKS HALDDSurface; - DDHAL_DDPALETTECALLBACKS HALDDPalette; - DDHAL_DDCALLBACKS HELDD; - DDHAL_DDSURFACECALLBACKS HELDDSurface; - DDHAL_DDPALETTECALLBACKS HELDDPalette; - DDHAL_DDEXEBUFCALLBACKS cbDDExeBufCallbacks; - DDHAL_DDEXEBUFCALLBACKS HALDDExeBuf; - DDHAL_DDEXEBUFCALLBACKS HELDDExeBuf; - DDHAL_DDVIDEOPORTCALLBACKS cbDDVideoPortCallbacks; - DDHAL_DDVIDEOPORTCALLBACKS HALDDVideoPort; - DDHAL_DDCOLORCONTROLCALLBACKS cbDDColorControlCallbacks; - DDHAL_DDCOLORCONTROLCALLBACKS HALDDColorControl; - DDHAL_DDMISCELLANEOUSCALLBACKS cbDDMiscellaneousCallbacks; - DDHAL_DDMISCELLANEOUSCALLBACKS HALDDMiscellaneous; - DDHAL_DDKERNELCALLBACKS cbDDKernelCallbacks; - DDHAL_DDKERNELCALLBACKS HALDDKernel; - DDHAL_DDMOTIONCOMPCALLBACKS cbDDMotionCompCallbacks; - DDHAL_DDMOTIONCOMPCALLBACKS HALDDMotionComp; -} DDHAL_CALLBACKS,*LPDDHAL_CALLBACKS; - -/***************************************************************************** - * parameter structures - */ -typedef struct _DDHAL_DESTROYDRIVERDATA { - LPDDRAWI_DIRECTDRAW_GBL lpDD; - HRESULT ddRVal; - LPDDHAL_DESTROYDRIVER DestroyDriver; -} DDHAL_DESTROYDRIVERDATA; - -typedef struct _DDHAL_SETMODEDATA { - LPDDRAWI_DIRECTDRAW_GBL lpDD; - DWORD dwModeIndex; - HRESULT ddRVal; - LPDDHAL_SETMODE SetMode; - BOOL inexcl; - BOOL useRefreshRate; -} DDHAL_SETMODEDATA; - -typedef struct _DDHAL_CREATESURFACEDATA { - LPDDRAWI_DIRECTDRAW_GBL lpDD; - LPDDSURFACEDESC lpDDSurfaceDesc; - LPDDRAWI_DDRAWSURFACE_LCL * lplpSList; - DWORD dwSCnt; - HRESULT ddRVal; - LPDDHAL_CREATESURFACE CreateSurface; -} DDHAL_CREATESURFACEDATA; - -typedef struct _DDHAL_CANCREATESURFACEDATA { - LPDDRAWI_DIRECTDRAW_GBL lpDD; - LPDDSURFACEDESC lpDDSurfaceDesc; - DWORD bIsDifferentPixelFormat; - HRESULT ddRVal; - LPDDHAL_CANCREATESURFACE CanCreateSurface; -} DDHAL_CANCREATESURFACEDATA; - -typedef struct _DDHAL_CREATEPALETTEDATA { - LPDDRAWI_DIRECTDRAW_GBL lpDD; - LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette; - LPPALETTEENTRY lpColorTable; - HRESULT ddRVal; - LPDDHAL_CREATEPALETTE CreatePalette; - BOOL is_excl; -} DDHAL_CREATEPALETTEDATA; - -typedef struct _DDHAL_SETEXCLUSIVEMODEDATA { - LPDDRAWI_DIRECTDRAW_GBL lpDD; - DWORD dwEnterExcl; - DWORD dwReserved; - HRESULT ddRVal; - LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode; -} DDHAL_SETEXCLUSIVEMODEDATA; - -/* surfaces */ -typedef struct _DDHAL_DESTROYSURFACEDATA { - LPDDRAWI_DIRECTDRAW_GBL lpDD; - LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; - HRESULT ddRVal; - LPDDHALSURFCB_DESTROYSURFACE DestroySurface; -} DDHAL_DESTROYSURFACEDATA; - -typedef struct _DDHAL_FLIPDATA { - LPDDRAWI_DIRECTDRAW_GBL lpDD; - LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr; - LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg; - DWORD dwFlags; - HRESULT ddRVal; - LPDDHALSURFCB_FLIP Flip; - LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurrLeft; - LPDDRAWI_DDRAWSURFACE_LCL lpSurfTargLeft; -} DDHAL_FLIPDATA; - -typedef struct _DDHAL_LOCKDATA { - LPDDRAWI_DIRECTDRAW_GBL lpDD; - LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; - DWORD bHasRect; - RECTL rArea; - LPVOID lpSurfData; - HRESULT ddRVal; - LPDDHALSURFCB_LOCK Lock; - DWORD dwFlags; -} DDHAL_LOCKDATA; - -typedef struct _DDHAL_UNLOCKDATA { - LPDDRAWI_DIRECTDRAW_GBL lpDD; - LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; - HRESULT ddRVal; - LPDDHALSURFCB_UNLOCK Unlock; -} DDHAL_UNLOCKDATA; - -typedef struct _DDHAL_BLTDATA { - LPDDRAWI_DIRECTDRAW_GBL lpDD; - LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface; - RECTL rDest; - LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface; - RECTL rSrc; - DWORD dwFlags; - DWORD dwROPFlags; - DDBLTFX bltFX; - HRESULT ddRVal; - LPDDHALSURFCB_BLT Blt; - BOOL IsClipped; - RECTL rOrigDest; - RECTL rOrigSrc; - DWORD dwRectCnt; - LPRECT prDestRects; -} DDHAL_BLTDATA; - -typedef struct _DDHAL_SETPALETTEDATA { - LPDDRAWI_DIRECTDRAW_GBL lpDD; - LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; - LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette; - HRESULT ddRVal; - LPDDHALSURFCB_SETPALETTE SetPalette; - BOOL Attach; -} DDHAL_SETPALETTEDATA; - -/* palettes */ -typedef struct _DDHAL_DESTROYPALETTEDATA { - LPDDRAWI_DIRECTDRAW_GBL lpDD; - LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette; - HRESULT ddRVal; - LPDDHALPALCB_DESTROYPALETTE DestroyPalette; -} DDHAL_DESTROYPALETTEDATA; - -typedef struct _DDHAL_SETENTRIESDATA { - LPDDRAWI_DIRECTDRAW_GBL lpDD; - LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette; - DWORD dwBase; - DWORD dwNumEntries; - LPPALETTEENTRY lpEntries; - HRESULT ddRVal; - LPDDHALPALCB_SETENTRIES SetEntries; -} DDHAL_SETENTRIESDATA; - - -typedef struct _DDHAL_CANCREATEVPORTDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDVIDEOPORTDESC lpDDVideoPortDesc; - HRESULT ddRVal; - LPDDHALVPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort; -} DDHAL_CANCREATEVPORTDATA; - -typedef struct _DDHAL_CREATEVPORTDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDVIDEOPORTDESC lpDDVideoPortDesc; - LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; - HRESULT ddRVal; - LPDDHALVPORTCB_CREATEVIDEOPORT CreateVideoPort; -} DDHAL_CREATEVPORTDATA; - -typedef struct _DDHAL_GETVPORTBANDWIDTHDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; - LPDDPIXELFORMAT lpddpfFormat; - DWORD dwWidth; - DWORD dwHeight; - DWORD dwFlags; - LPDDVIDEOPORTBANDWIDTH lpBandwidth; - HRESULT ddRVal; - LPDDHALVPORTCB_GETBANDWIDTH GetVideoPortBandwidth; -} DDHAL_GETVPORTBANDWIDTHDATA; - -typedef struct _DDHAL_GETVPORTINPUTFORMATDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; - DWORD dwFlags; - LPDDPIXELFORMAT lpddpfFormat; - DWORD dwNumFormats; - HRESULT ddRVal; - LPDDHALVPORTCB_GETINPUTFORMATS GetVideoPortInputFormats; -} DDHAL_GETVPORTINPUTFORMATDATA; - -typedef struct _DDHAL_GETVPORTFIELDDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; - BOOL bField; - HRESULT ddRVal; - LPDDHALVPORTCB_GETFIELD GetVideoPortField; -} DDHAL_GETVPORTFIELDDATA; - -typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; - DWORD dwFlags; - LPDDPIXELFORMAT lpddpfInputFormat; - LPDDPIXELFORMAT lpddpfOutputFormats; - DWORD dwNumFormats; - HRESULT ddRVal; - LPDDHALVPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats; -} DDHAL_GETVPORTOUTPUTFORMATDATA; - -typedef struct _DDHAL_GETVPORTLINEDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; - DWORD dwLine; - HRESULT ddRVal; - LPDDHALVPORTCB_GETLINE GetVideoPortLine; -} DDHAL_GETVPORTLINEDATA; - -typedef struct _DDHAL_DESTROYVPORTDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; - HRESULT ddRVal; - LPDDHALVPORTCB_DESTROYVPORT DestroyVideoPort; -} DDHAL_DESTROYVPORTDATA; - -typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - FLATPTR fpSurface; - HRESULT ddRVal; - LPDDHALVPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus; -} DDHAL_GETVPORTFLIPSTATUSDATA; - -typedef struct _DDHAL_UPDATEVPORTDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; - LPDDRAWI_DDRAWSURFACE_INT *lplpDDSurface; - LPDDRAWI_DDRAWSURFACE_INT *lplpDDVBISurface; - LPDDVIDEOPORTINFO lpVideoInfo; - DWORD dwFlags; - DWORD dwNumAutoflip; - DWORD dwNumVBIAutoflip; - HRESULT ddRVal; - LPDDHALVPORTCB_UPDATE UpdateVideoPort; -} DDHAL_UPDATEVPORTDATA; - -typedef struct _DDHAL_WAITFORVPORTSYNCDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; - DWORD dwFlags; - DWORD dwLine; - DWORD dwTimeOut; - HRESULT ddRVal; - LPDDHALVPORTCB_WAITFORSYNC WaitForVideoPortSync; -} DDHAL_WAITFORVPORTSYNCDATA; - -typedef struct _DDHAL_GETVPORTSIGNALDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; - DWORD dwStatus; - HRESULT ddRVal; - LPDDHALVPORTCB_GETSIGNALSTATUS GetVideoSignalStatus; -} DDHAL_GETVPORTSIGNALDATA; - -typedef struct _DDHAL_VPORTCOLORDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; - DWORD dwFlags; - LPDDCOLORCONTROL lpColorData; - HRESULT ddRVal; - LPDDHALVPORTCB_COLORCONTROL ColorControl; -} DDHAL_VPORTCOLORDATA; - -typedef struct _DDHAL_FLIPVPORTDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; - LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr; - LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg; - HRESULT ddRVal; - LPDDHALVPORTCB_FLIP FlipVideoPort; -} DDHAL_FLIPVPORTDATA; - -typedef struct _DDHAL_GETVPORTCONNECTDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - DWORD dwPortId; - LPDDVIDEOPORTCONNECT lpConnect; - DWORD dwNumEntries; - HRESULT ddRVal; - LPDDHALVPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo; -} DDHAL_GETVPORTCONNECTDATA; - -typedef struct _DDHAL_SYNCSURFACEDATA -{ - DWORD dwSize; - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; - DWORD dwSurfaceOffset; - ULONG_PTR fpLockPtr; - LONG lPitch; - DWORD dwOverlayOffset; - DWORD dwOverlaySrcWidth; - DWORD dwOverlaySrcHeight; - DWORD dwOverlayDestWidth; - DWORD dwOverlayDestHeight; - ULONG_PTR dwDriverReserved1; - ULONG_PTR dwDriverReserved2; - ULONG_PTR dwDriverReserved3; - HRESULT ddRVal; -} DDHAL_SYNCSURFACEDATA; - -typedef struct _DDHAL_SYNCVIDEOPORTDATA -{ - DWORD dwSize; - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; - DWORD dwOriginOffset; - DWORD dwHeight; - DWORD dwVBIHeight; - ULONG_PTR dwDriverReserved1; - ULONG_PTR dwDriverReserved2; - ULONG_PTR dwDriverReserved3; - HRESULT ddRVal; -} DDHAL_SYNCVIDEOPORTDATA; - -typedef struct _DDHAL_DESTROYDDLOCALDATA -{ - DWORD dwFlags; - LPDDRAWI_DIRECTDRAW_LCL pDDLcl; - HRESULT ddRVal; -} DDHAL_DESTROYDDLOCALDATA; - -typedef struct _DDHAL_CREATESURFACEEXDATA { - DWORD dwFlags; - LPDDRAWI_DIRECTDRAW_LCL lpDDLcl; - LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl; - HRESULT ddRVal; -} DDHAL_CREATESURFACEEXDATA; - -typedef struct _DDHAL_GETHEAPALIGNMENTDATA -{ - ULONG_PTR dwInstance; - DWORD dwHeap; - HRESULT ddRVal; - LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment; - HEAPALIGNMENT Alignment; -} DDHAL_GETHEAPALIGNMENTDATA; - - -typedef struct _DDMORESURFACECAPS -{ - DWORD dwSize; - DDSCAPSEX ddsCapsMore; - struct tagExtendedHeapRestrictions - { - DDSCAPSEX ddsCapsEx; - DDSCAPSEX ddsCapsExAlt; - } ddsExtendedHeapRestrictions[1]; -} DDMORESURFACECAPS, * LPDDMORESURFACECAPS; - -typedef struct _DDSTEREOMODE -{ - DWORD dwSize; - DWORD dwHeight; - DWORD dwWidth; - DWORD dwBpp; - DWORD dwRefreshRate; - BOOL bSupported; - -} DDSTEREOMODE, * LPDDSTEREOMODE; - -/***************************************************************************** - * high-level ddraw implementation structures - */ -typedef struct _IUNKNOWN_LIST { - struct _IUNKNOWN_LIST * lpLink; - LPGUID lpGuid; - -#ifndef _NO_COM - IUnknown * lpIUnknown; -#else - LPVOID lpIUnknown; -#endif /* _NO_COM */ -} IUNKNOWN_LIST,*LPIUNKNOWN_LIST; - - -typedef struct _PROCESS_LIST { - struct _PROCESS_LIST * lpLink; - DWORD dwProcessId; - DWORD dwRefCnt; - DWORD dwAlphaDepth; - DWORD dwZDepth; -} PROCESS_LIST,*LPPROCESS_LIST; - -typedef struct _ATTACHLIST { - DWORD dwFlags; - struct _ATTACHLIST * lpLink; - LPDDRAWI_DDRAWSURFACE_LCL lpAttached; - LPDDRAWI_DDRAWSURFACE_INT lpIAttached; -} ATTACHLIST,*LPATTACHLIST; - -#define DDAL_IMPLICIT 0x00000001 - -typedef struct _ACCESSRECTLIST { - struct _ACCESSRECTLIST * lpLink; - RECT rDest; - LPDDRAWI_DIRECTDRAW_LCL lpOwner; - LPVOID lpSurfaceData; - DWORD dwFlags; - LPHEAPALIASINFO lpHeapAliasInfo; -} ACCESSRECTLIST,*LPACCESSRECTLIST; - -#define ACCESSRECT_VRAMSTYLE 0x00000001 -#define ACCESSRECT_NOTHOLDINGWIN16LOCK 0x00000002 -#define ACCESSRECT_BROKEN 0x00000004 - -typedef struct _DBLNODE { - struct _DBLNODE * next; - struct _DBLNODE * prev; - LPDDRAWI_DDRAWSURFACE_LCL object; - LPDDRAWI_DDRAWSURFACE_INT object_int; -} DBLNODE,*LPDBLNODE; - -typedef struct _DDRAWI_DIRECTDRAW_INT { - LPVOID lpVtbl; - LPDDRAWI_DIRECTDRAW_LCL lpLcl; - LPDDRAWI_DIRECTDRAW_INT lpLink; - DWORD dwIntRefCnt; -} DDRAWI_DIRECTDRAW_INT; - - -typedef struct _DDRAWI_DIRECTDRAW_LCL { - DWORD lpDDMore; - LPDDRAWI_DIRECTDRAW_GBL lpGbl; - DWORD dwUnused0; - DWORD dwLocalFlags; - DWORD dwLocalRefCnt; - DWORD dwProcessId; -#ifndef _NO_COM - IUnknown * pUnkOuter; -#else - PVOID pUnkOuter; -#endif - DWORD dwObsolete1; - ULONG_PTR hWnd; - ULONG_PTR hDC; - DWORD dwErrorMode; - LPDDRAWI_DDRAWSURFACE_INT lpPrimary; - LPDDRAWI_DDRAWSURFACE_INT lpCB; - DWORD dwPreferredMode; - /* DirectX 2 */ - HINSTANCE hD3DInstance; -#ifndef _NO_COM - IUnknown * pD3DIUnknown; -#else - PVOID pD3DIUnknown; -#endif - LPDDHAL_CALLBACKS lpDDCB; - ULONG_PTR hDDVxd; - /* DirectX 5.0 */ - DWORD dwAppHackFlags; - /* DirectX 5.0A */ - ULONG_PTR hFocusWnd; - DWORD dwHotTracking; - DWORD dwIMEState; - /* DirectX 6.0 */ - ULONG_PTR hWndPopup; - ULONG_PTR hDD; - ULONG_PTR hGammaCalibrator; - LPDDGAMMACALIBRATORPROC lpGammaCalibrator; -} DDRAWI_DIRECTDRAW_LCL; - - -#define DDRAWILCL_HASEXCLUSIVEMODE 0x00000001 -#define DDRAWILCL_ISFULLSCREEN 0x00000002 -#define DDRAWILCL_SETCOOPCALLED 0x00000004 -#define DDRAWILCL_ACTIVEYES 0x00000008 -#define DDRAWILCL_ACTIVENO 0x00000010 -#define DDRAWILCL_HOOKEDHWND 0x00000020 -#define DDRAWILCL_ALLOWMODEX 0x00000040 -#define DDRAWILCL_V1SCLBEHAVIOUR 0x00000080 -#define DDRAWILCL_MODEHASBEENCHANGED 0x00000100 -#define DDRAWILCL_CREATEDWINDOW 0x00000200 -#define DDRAWILCL_DIRTYDC 0x00000400 -#define DDRAWILCL_DISABLEINACTIVATE 0x00000800 -#define DDRAWILCL_CURSORCLIPPED 0x00001000 -#define DDRAWILCL_EXPLICITMONITOR 0x00002000 -#define DDRAWILCL_MULTITHREADED 0x00004000 -#define DDRAWILCL_FPUSETUP 0x00008000 -#define DDRAWILCL_POWEREDDOWN 0x00010000 -#define DDRAWILCL_DIRECTDRAW7 0x00020000 -#define DDRAWILCL_ATTEMPTEDD3DCONTEXT 0x00040000 -#define DDRAWILCL_FPUPRESERVE 0x00080000 -#define DDRAWILCL_DX8DRIVER 0x00100000 -#define DDRAWILCL_DIRECTDRAW8 0x00200000 - - -typedef struct _DDRAWI_DIRECTDRAW_GBL { - DWORD dwRefCnt; - DWORD dwFlags; - FLATPTR fpPrimaryOrig; - DDCORECAPS ddCaps; - DWORD dwInternal1; - DWORD dwUnused1[9]; - LPDDHAL_CALLBACKS lpDDCBtmp; - LPDDRAWI_DDRAWSURFACE_INT dsList; - LPDDRAWI_DDRAWPALETTE_INT palList; - LPDDRAWI_DDRAWCLIPPER_INT clipperList; - LPDDRAWI_DIRECTDRAW_GBL lp16DD; - DWORD dwMaxOverlays; - DWORD dwCurrOverlays; - DWORD dwMonitorFrequency; - DDCORECAPS ddHELCaps; - DWORD dwUnused2[50]; - DDCOLORKEY ddckCKDestOverlay; - DDCOLORKEY ddckCKSrcOverlay; - VIDMEMINFO vmiData; - LPVOID lpDriverHandle; - LPDDRAWI_DIRECTDRAW_LCL lpExclusiveOwner; - DWORD dwModeIndex; - DWORD dwModeIndexOrig; - DWORD dwNumFourCC; - LPDWORD lpdwFourCC; - DWORD dwNumModes; - LPDDHALMODEINFO lpModeInfo; - PROCESS_LIST plProcessList; - DWORD dwSurfaceLockCount; - DWORD dwAliasedLockCnt; - ULONG_PTR dwReserved3; - ULONG_PTR hDD; - char cObsolete[12]; - DWORD dwReserved1; - DWORD dwReserved2; - DBLNODE dbnOverlayRoot; - volatile LPWORD lpwPDeviceFlags; - DWORD dwPDevice; - DWORD dwWin16LockCnt; - DWORD dwUnused3; - DWORD hInstance; - DWORD dwEvent16; - DWORD dwSaveNumModes; - /* DirectX 2 */ - ULONG_PTR lpD3DGlobalDriverData; - ULONG_PTR lpD3DHALCallbacks; - DDCORECAPS ddBothCaps; - /* DirectX 5.0 */ - LPDDVIDEOPORTCAPS lpDDVideoPortCaps; - LPDDRAWI_DDVIDEOPORT_INT dvpList; - ULONG_PTR lpD3DHALCallbacks2; - RECT rectDevice; - DWORD cMonitors; - LPVOID gpbmiSrc; - LPVOID gpbmiDest; - LPHEAPALIASINFO phaiHeapAliases; - ULONG_PTR hKernelHandle; - ULONG_PTR pfnNotifyProc; - LPDDKERNELCAPS lpDDKernelCaps; - LPDDNONLOCALVIDMEMCAPS lpddNLVCaps; - LPDDNONLOCALVIDMEMCAPS lpddNLVHELCaps; - LPDDNONLOCALVIDMEMCAPS lpddNLVBothCaps; - ULONG_PTR lpD3DExtendedCaps; - /* DirectX 5.0A */ - DWORD dwDOSBoxEvent; - RECT rectDesktop; - char cDriverName[MAX_DRIVER_NAME]; - /* DirectX 6.0 */ - ULONG_PTR lpD3DHALCallbacks3; - DWORD dwNumZPixelFormats; - LPDDPIXELFORMAT lpZPixelFormats; - LPDDRAWI_DDMOTIONCOMP_INT mcList; - DWORD hDDVxd; - DDSCAPSEX ddsCapsMore; -} DDRAWI_DIRECTDRAW_GBL; - -#define DDRAWI_xxxxxxxxx1 0x00000001 -#define DDRAWI_xxxxxxxxx2 0x00000002 -#define DDRAWI_VIRTUALDESKTOP 0x00000008 -#define DDRAWI_MODEX 0x00000010 -#define DDRAWI_DISPLAYDRV 0x00000020 -#define DDRAWI_FULLSCREEN 0x00000040 -#define DDRAWI_MODECHANGED 0x00000080 -#define DDRAWI_NOHARDWARE 0x00000100 -#define DDRAWI_PALETTEINIT 0x00000200 -#define DDRAWI_NOEMULATION 0x00000400 -#define DDRAWI_HASCKEYDESTOVERLAY 0x00000800 -#define DDRAWI_HASCKEYSRCOVERLAY 0x00001000 -#define DDRAWI_HASGDIPALETTE 0x00002000 -#define DDRAWI_EMULATIONINITIALIZED 0x00004000 -#define DDRAWI_HASGDIPALETTE_EXCLUSIVE 0x00008000 -#define DDRAWI_MODEXILLEGAL 0x00010000 -#define DDRAWI_FLIPPEDTOGDI 0x00020000 -#define DDRAWI_NEEDSWIN16FORVRAMLOCK 0x00040000 -#define DDRAWI_PDEVICEVRAMBITCLEARED 0x00080000 -#define DDRAWI_STANDARDVGA 0x00100000 -#define DDRAWI_EXTENDEDALIGNMENT 0x00200000 -#define DDRAWI_CHANGINGMODE 0x00400000 -#define DDRAWI_GDIDRV 0x00800000 -#define DDRAWI_ATTACHEDTODESKTOP 0x01000000 -#define DDRAWI_UMODELOADED 0x02000000 -#define DDRAWI_DDRAWDATANOTFETCHED 0x04000000 -#define DDRAWI_SECONDARYDRIVERLOADED 0x08000000 -#define DDRAWI_TESTINGMODES 0x10000000 -#define DDRAWI_DRIVERINFO2 0x20000000 -#define DDRAWI_BADPDEV 0x40000000 - - -/* surfaces */ -typedef struct _DDRAWI_DDRAWSURFACE_INT { - LPVOID lpVtbl; - LPDDRAWI_DDRAWSURFACE_LCL lpLcl; - LPDDRAWI_DDRAWSURFACE_INT lpLink; - DWORD dwIntRefCnt; -} DDRAWI_DDRAWSURFACE_INT; - -typedef struct _DDRAWI_DDRAWSURFACE_GBL { - DWORD dwRefCnt; - DWORD dwGlobalFlags; - __GNU_EXTENSION union { - LPACCESSRECTLIST lpRectList; - DWORD dwBlockSizeY; - LONG lSlicePitch; - }; - __GNU_EXTENSION union { - LPVMEMHEAP lpVidMemHeap; - DWORD dwBlockSizeX; - }; - __GNU_EXTENSION union { - LPDDRAWI_DIRECTDRAW_GBL lpDD; - LPVOID lpDDHandle; - }; - FLATPTR fpVidMem; - __GNU_EXTENSION union { - LONG lPitch; - DWORD dwLinearSize; - }; - WORD wHeight; - WORD wWidth; - DWORD dwUsageCount; - ULONG_PTR dwReserved1; - DDPIXELFORMAT ddpfSurface; -} DDRAWI_DDRAWSURFACE_GBL; - -#define DDRAWISURFGBL_MEMFREE 0x00000001L -#define DDRAWISURFGBL_SYSMEMREQUESTED 0x00000002L -#define DDRAWISURFGBL_ISGDISURFACE 0x00000004L -#define DDRAWISURFGBL_SOFTWAREAUTOFLIP 0x00000008L -#define DDRAWISURFGBL_LOCKNOTHOLDINGWIN16LOCK 0x00000010L -#define DDRAWISURFGBL_LOCKVRAMSTYLE 0x00000020L -#define DDRAWISURFGBL_LOCKBROKEN 0x00000040L -#define DDRAWISURFGBL_IMPLICITHANDLE 0x00000080L -#define DDRAWISURFGBL_ISCLIENTMEM 0x00000100L -#define DDRAWISURFGBL_HARDWAREOPSOURCE 0x00000200L -#define DDRAWISURFGBL_HARDWAREOPDEST 0x00000400L -#define DDRAWISURFGBL_HARDWAREOPSTARTED (DDRAWISURFGBL_HARDWAREOPSOURCE|DDRAWISURFGBL_HARDWAREOPDEST) -#define DDRAWISURFGBL_VPORTINTERLEAVED 0x00000800L -#define DDRAWISURFGBL_VPORTDATA 0x00001000L -#define DDRAWISURFGBL_LATEALLOCATELINEAR 0x00002000L -#define DDRAWISURFGBL_SYSMEMEXECUTEBUFFER 0x00004000L -#define DDRAWISURFGBL_FASTLOCKHELD 0x00008000L -#define DDRAWISURFGBL_READONLYLOCKHELD 0x00010000L -#define DDRAWISURFGBL_DX8SURFACE 0x00080000L -#define DDRAWISURFGBL_DDHELDONTFREE 0x00100000L -#define DDRAWISURFGBL_NOTIFYWHENUNLOCKED 0x00200000L -#define DDRAWISURFGBL_RESERVED0 0x80000000L // Reserved flag - -typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE { - DWORD dwSize; - __GNU_EXTENSION union { - DWORD dwPhysicalPageTable; - FLATPTR fpPhysicalVidMem; - }; - LPDWORD pPageTable; - DWORD cPages; - ULONG_PTR dwSavedDCContext; - FLATPTR fpAliasedVidMem; - ULONG_PTR dwDriverReserved; - ULONG_PTR dwHELReserved; - DWORD cPageUnlocks; - ULONG_PTR hKernelSurface; - DWORD dwKernelRefCnt; - LPDDCOLORCONTROL lpColorInfo; - FLATPTR fpNTAlias; - DWORD dwContentsStamp; - LPVOID lpvUnswappedDriverReserved; - LPVOID lpDDRAWReserved2; - DWORD dwDDRAWReserved1; - DWORD dwDDRAWReserved2; - FLATPTR fpAliasOfVidMem; -} DDRAWI_DDRAWSURFACE_GBL_MORE; - -/* the MS version of this macro was somewhat obfuscated and unreadable - * (possibly because of mediocre MS coders)... so I simplified it... - * (and so I commit no copyright violations either, hah) */ -#define GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl) \ - (*(((LPDDRAWI_DDRAWSURFACE_GBL_MORE *)(psurf_gbl)) - 1)) - -#define SURFACE_PHYSICALVIDMEM( psurf_gbl ) \ - ( GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl )->fpPhysicalVidMem ) - - -typedef struct _DISPLAYMODEINFO -{ - WORD wWidth; - WORD wHeight; - BYTE wBPP; - BYTE wMonitorsAttachedToDesktop; - WORD wRefreshRate; -} DISPLAYMODEINFO, *LPDISPLAYMODEINFO; - -#define EQUAL_DISPLAYMODE ( A, B ) (0 == memcmp(&(A), &(B), sizeof (DISPLAYMODEINFO))) - - - - -typedef struct _DDRAWI_DDRAWSURFACE_MORE { - DWORD dwSize; - IUNKNOWN_LIST * lpIUnknowns; - LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; - DWORD dwPageLockCount; - DWORD dwBytesAllocated; - LPDDRAWI_DIRECTDRAW_INT lpDD_int; - DWORD dwMipMapCount; - LPDDRAWI_DDRAWCLIPPER_INT lpDDIClipper; - /* DirectX 5.0 */ - LPHEAPALIASINFO lpHeapAliasInfo; - DWORD dwOverlayFlags; - VOID *rgjunc; - LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; - LPDDOVERLAYFX lpddOverlayFX; - DDSCAPSEX ddsCapsEx; - DWORD dwTextureStage; - LPVOID lpDDRAWReserved; - LPVOID lpDDRAWReserved2; - LPVOID lpDDrawReserved3; - DWORD dwDDrawReserved4; - LPVOID lpDDrawReserved5; - LPDWORD lpGammaRamp; - LPDWORD lpOriginalGammaRamp; - LPVOID lpDDrawReserved6; - #ifndef WIN95 - DISPLAYMODEINFO dmiDDrawReserved7; - #endif - DWORD dwSurfaceHandle; - DWORD qwDDrawReserved8[2]; - LPVOID lpDDrawReserved9; - DWORD cSurfaces; - LPDDSURFACEDESC2 pCreatedDDSurfaceDesc2; - LPDDRAWI_DDRAWSURFACE_LCL *slist; - DWORD dwFVF; - LPVOID lpVB; -} DDRAWI_DDRAWSURFACE_MORE; - - - -typedef struct _DDRAWI_DDRAWSURFACE_LCL { - LPDDRAWI_DDRAWSURFACE_MORE lpSurfMore; - LPDDRAWI_DDRAWSURFACE_GBL lpGbl; - ULONG_PTR hDDSurface; - LPATTACHLIST lpAttachList; - LPATTACHLIST lpAttachListFrom; - DWORD dwLocalRefCnt; - DWORD dwProcessId; - DWORD dwFlags; - DDSCAPS ddsCaps; - __GNU_EXTENSION union - { - LPDDRAWI_DDRAWPALETTE_INT lpDDPalette; - LPDDRAWI_DDRAWPALETTE_INT lp16DDPalette; - }; - __GNU_EXTENSION union - { - LPDDRAWI_DDRAWCLIPPER_LCL lpDDClipper; - LPDDRAWI_DDRAWCLIPPER_INT lp16DDClipper; - }; - DWORD dwModeCreatedIn; - DWORD dwBackBufferCount; - DDCOLORKEY ddckCKDestBlt; - DDCOLORKEY ddckCKSrcBlt; - ULONG_PTR hDC; - ULONG_PTR dwReserved1; - DDCOLORKEY ddckCKSrcOverlay; - DDCOLORKEY ddckCKDestOverlay; - LPDDRAWI_DDRAWSURFACE_INT lpSurfaceOverlaying; - DBLNODE dbnOverlayNode; - RECT rcOverlaySrc; - RECT rcOverlayDest; - DWORD dwClrXparent; - DWORD dwAlpha; - LONG lOverlayX; - LONG lOverlayY; -} DDRAWI_DDRAWSURFACE_LCL; - -#define DDRAWISURF_ATTACHED 0x00000001L -#define DDRAWISURF_IMPLICITCREATE 0x00000002L -#define DDRAWISURF_ISFREE 0x00000004L -#define DDRAWISURF_ATTACHED_FROM 0x00000008L -#define DDRAWISURF_IMPLICITROOT 0x00000010L -#define DDRAWISURF_PARTOFPRIMARYCHAIN 0x00000020L -#define DDRAWISURF_DATAISALIASED 0x00000040L -#define DDRAWISURF_HASDC 0x00000080L -#define DDRAWISURF_HASCKEYDESTOVERLAY 0x00000100L -#define DDRAWISURF_HASCKEYDESTBLT 0x00000200L -#define DDRAWISURF_HASCKEYSRCOVERLAY 0x00000400L -#define DDRAWISURF_HASCKEYSRCBLT 0x00000800L -#define DDRAWISURF_LOCKEXCLUDEDCURSOR 0x00001000L -#define DDRAWISURF_HASPIXELFORMAT 0x00002000L -#define DDRAWISURF_HASOVERLAYDATA 0x00004000L -#define DDRAWISURF_SETGAMMA 0x00008000L -#define DDRAWISURF_SW_CKEYDESTOVERLAY 0x00010000L -#define DDRAWISURF_SW_CKEYDESTBLT 0x00020000L -#define DDRAWISURF_SW_CKEYSRCOVERLAY 0x00040000L -#define DDRAWISURF_SW_CKEYSRCBLT 0x00080000L -#define DDRAWISURF_HW_CKEYDESTOVERLAY 0x00100000L -#define DDRAWISURF_HW_CKEYDESTBLT 0x00200000L -#define DDRAWISURF_HW_CKEYSRCOVERLAY 0x00400000L -#define DDRAWISURF_HW_CKEYSRCBLT 0x00800000L -#define DDRAWISURF_INMASTERSPRITELIST 0x01000000L -#define DDRAWISURF_HELCB 0x02000000L -#define DDRAWISURF_FRONTBUFFER 0x04000000L -#define DDRAWISURF_BACKBUFFER 0x08000000L -#define DDRAWISURF_INVALID 0x10000000L -#define DDRAWISURF_DCIBUSY 0x20000000L -#define DDRAWISURF_GETDCNULL 0x40000000L -#define DDRAWISURF_STEREOSURFACELEFT 0x20000000L -#define DDRAWISURF_DRIVERMANAGED 0x40000000L -#define DDRAWISURF_DCILOCK 0x80000000L - -/* palettes */ -typedef struct _DDRAWI_DDRAWPALETTE_INT { - LPVOID lpVtbl; - LPDDRAWI_DDRAWPALETTE_LCL lpLcl; - LPDDRAWI_DDRAWPALETTE_INT lpLink; - DWORD dwIntRefCnt; -} DDRAWI_DDRAWPALETTE_INT; - -typedef struct _DDRAWI_DDRAWPALETTE_GBL { - DWORD dwRefCnt; - DWORD dwFlags; - LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; - DWORD dwProcessId; - LPPALETTEENTRY lpColorTable; - __GNU_EXTENSION union { - ULONG_PTR dwReserved1; - HPALETTE hHELGDIPalette; - }; - DWORD dwDriverReserved; - DWORD dwContentsStamp; - DWORD dwSaveStamp; - DWORD dwHandle; -} DDRAWI_DDRAWPALETTE_GBL; - -#define DDRAWIPAL_256 0x00000001 -#define DDRAWIPAL_16 0x00000002 -#define DDRAWIPAL_GDI 0x00000004 -#define DDRAWIPAL_STORED_8 0x00000008 -#define DDRAWIPAL_STORED_16 0x00000010 -#define DDRAWIPAL_STORED_24 0x00000020 -#define DDRAWIPAL_EXCLUSIVE 0x00000040 -#define DDRAWIPAL_INHEL 0x00000080 -#define DDRAWIPAL_DIRTY 0x00000100 -#define DDRAWIPAL_ALLOW256 0x00000200 -#define DDRAWIPAL_4 0x00000400 -#define DDRAWIPAL_2 0x00000800 -#define DDRAWIPAL_STORED_8INDEX 0x00001000 -#define DDRAWIPAL_ALPHA 0x00002000 - -#define D3DFORMAT_OP_TEXTURE 0x00000001L -#define D3DFORMAT_OP_VOLUMETEXTURE 0x00000002L -#define D3DFORMAT_OP_CUBETEXTURE 0x00000004L -#define D3DFORMAT_OP_OFFSCREEN_RENDERTARGET 0x00000008L -#define D3DFORMAT_OP_SAME_FORMAT_RENDERTARGET 0x00000010L -#define D3DFORMAT_OP_ZSTENCIL 0x00000040L -#define D3DFORMAT_OP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH 0x00000080L -#define D3DFORMAT_OP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET 0x00000100L -#define D3DFORMAT_OP_DISPLAYMODE 0x00000400L -#define D3DFORMAT_OP_3DACCELERATION 0x00000800L -#define D3DFORMAT_OP_PIXELSIZE 0x00001000L -#define D3DFORMAT_OP_CONVERT_TO_ARGB 0x00002000L -#define D3DFORMAT_OP_OFFSCREENPLAIN 0x00004000L -#define D3DFORMAT_OP_SRGBREAD 0x00008000L -#define D3DFORMAT_OP_BUMPMAP 0x00010000L -#define D3DFORMAT_OP_NOFILTER 0x00040000L -#define DDPF_D3DFORMAT 0x00200000l -#define DDPF_NOVEL_TEXTURE_FORMAT 0x00100000l -#define D3DFORMAT_MEMBEROFGROUP_ARGB 0x00080000L -#define D3DFORMAT_OP_SRGBWRITE 0x00100000L -#define D3DFORMAT_OP_NOALPHABLEND 0x00200000L -#define D3DFORMAT_OP_AUTOGENMIPMAP 0x00400000L -#define D3DFORMAT_OP_VERTEXTEXTURE 0x00800000L -#define D3DFORMAT_OP_NOTEXCOORDWRAPNORMIP 0x01000000L -#define DELETED_OK 0 -#define DELETED_LASTONE 1 -#define DELETED_NOTFOUND 2 -#define DDCALLBACKSSIZE_V1 ( offsetof( DDHAL_DDCALLBACKS, SetExclusiveMode ) ) -#define DDCALLBACKSSIZE sizeof( DDHAL_DDCALLBACKS ) -#define DDRAWICLIP_WATCHWINDOW 0x00000001 -#define DDRAWICLIP_ISINITIALIZED 0x00000002 -#define DDRAWICLIP_INMASTERSPRITELIST 0x00000004 -#define PFINDEX_UNINITIALIZED (0UL) -#define PFINDEX_UNSUPPORTED (~0UL) -#define ROP_HAS_SOURCE 0x00000001l -#define ROP_HAS_PATTERN 0x00000002l -#define ROP_HAS_SOURCEPATTERN ROP_HAS_SOURCE | ROP_HAS_PATTERN -#define DDRAWIVPORT_ON 0x00000001 -#define DDRAWIVPORT_SOFTWARE_AUTOFLIP 0x00000002 -#define DDRAWIVPORT_COLORKEYANDINTERP 0x00000004 -#define DDRAWIVPORT_NOKERNELHANDLES 0x00000008 -#define DDRAWIVPORT_SOFTWARE_BOB 0x00000010 -#define DDRAWIVPORT_VBION 0x00000020 -#define DDRAWIVPORT_VIDEOON 0x00000040 -#define DDRAWI_GETCOLOR 0x0001 -#define DDRAWI_SETCOLOR 0x0002 -#define DDMCQUERY_READ 0x00000001 -#define DDWAITVB_I_TESTVB 0x80000006 - - -#define DDBLT_ANYALPHA \ - (DDBLT_ALPHASRCSURFACEOVERRIDE | DDBLT_ALPHASRCCONSTOVERRIDE | \ - DDBLT_ALPHASRC | DDBLT_ALPHADESTSURFACEOVERRIDE | \ - DDBLT_ALPHADESTCONSTOVERRIDE | DDBLT_ALPHADEST) - -#define DDHAL_ALIGNVALIDCAPS (DDSCAPS_OFFSCREENPLAIN | DDSCAPS_EXECUTEBUFFER | \ - DDSCAPS_OVERLAY | DDSCAPS_TEXTURE | \ - DDSCAPS_ZBUFFER | DDSCAPS_ALPHA | DDSCAPS_FLIP ) - - -#define DDHALINFOSIZE_V2 sizeof(DDHALINFO) - -#define DDOVER_ANYALPHA \ - (DDOVER_ALPHASRCSURFACEOVERRIDE | DDOVER_ALPHASRCCONSTOVERRIDE | \ - DDOVER_ALPHASRC | DDOVER_ALPHADESTSURFACEOVERRIDE | \ - DDOVER_ALPHADESTCONSTOVERRIDE | DDOVER_ALPHADEST) - - -typedef struct _DDRAWI_DDRAWPALETTE_LCL { - DWORD lpPalMore; - LPDDRAWI_DDRAWPALETTE_GBL lpGbl; - ULONG_PTR dwUnused0; - DWORD dwLocalRefCnt; -#ifndef _NO_COM - IUnknown * pUnkOuter; -#else - PVOID pUnkOuter; -#endif - LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; - ULONG_PTR dwReserved1; - /* DirectX 6.0 */ - ULONG_PTR dwDDRAWReserved1; - ULONG_PTR dwDDRAWReserved2; - ULONG_PTR dwDDRAWReserved3; -} DDRAWI_DDRAWPALETTE_LCL; - - -typedef struct _DDMCCOMPBUFFERINFO -{ - DWORD dwSize; - DWORD dwNumCompBuffers; - DWORD dwWidthToCreate; - DWORD dwHeightToCreate; - DWORD dwBytesToAllocate; - DDSCAPS2 ddCompCaps; - DDPIXELFORMAT ddPixelFormat; -} DDMCCOMPBUFFERINFO, *LPDDMCCOMPBUFFERINFO; - -typedef struct _DDMCBUFFERINFO -{ - DWORD dwSize; - LPDDRAWI_DDRAWSURFACE_LCL lpCompSurface; - DWORD dwDataOffset; - DWORD dwDataSize; - LPVOID lpPrivate; -} DDMCBUFFERINFO, *LPDDMCBUFFERINFO; - -typedef struct _DDHAL_GETDRIVERSTATEDATA { - DWORD dwFlags; - __GNU_EXTENSION union - { - ULONG_PTR dwhContext; - }; - LPDWORD lpdwStates; - DWORD dwLength; - HRESULT ddRVal; -} DDHAL_GETDRIVERSTATEDATA; - -typedef struct _DDHAL_ADDATTACHEDSURFACEDATA -{ - LPDDRAWI_DIRECTDRAW_GBL lpDD; - LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; - LPDDRAWI_DDRAWSURFACE_LCL lpSurfAttached; - HRESULT ddRVal; - LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface; -} DDHAL_ADDATTACHEDSURFACEDATA; - - - -typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; - LPDDRAWI_DDRAWSURFACE_LCL lpDestSurface; - DWORD dwInputDataSize; - LPVOID lpInputData; - DWORD dwOutputDataSize; - LPVOID lpOutputData; - HRESULT ddRVal; - LPDDHALMOCOMPCB_BEGINFRAME BeginMoCompFrame; -} DDHAL_BEGINMOCOMPFRAMEDATA; - -typedef struct _DDHAL_COLORCONTROLDATA -{ - LPDDRAWI_DIRECTDRAW_GBL lpDD; - LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; - LPDDCOLORCONTROL lpColorData; - DWORD dwFlags; - HRESULT ddRVal; - LPDDHALCOLORCB_COLORCONTROL ColorControl; -} DDHAL_COLORCONTROLDATA; - -typedef struct _DDHAL_CREATEMOCOMPDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; - LPGUID lpGuid; - DWORD dwUncompWidth; - DWORD dwUncompHeight; - DDPIXELFORMAT ddUncompPixelFormat; - LPVOID lpData; - DWORD dwDataSize; - HRESULT ddRVal; - LPDDHALMOCOMPCB_CREATE CreateMoComp; -} DDHAL_CREATEMOCOMPDATA; - -typedef struct _DDHAL_DESTROYMOCOMPDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; - HRESULT ddRVal; - LPDDHALMOCOMPCB_DESTROY DestroyMoComp; -} DDHAL_DESTROYMOCOMPDATA; - -typedef struct _DDHAL_ENDMOCOMPFRAMEDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; - LPVOID lpInputData; - DWORD dwInputDataSize; - HRESULT ddRVal; - LPDDHALMOCOMPCB_ENDFRAME EndMoCompFrame; -} DDHAL_ENDMOCOMPFRAMEDATA; - -typedef struct _DDHAL_FLIPTOGDISURFACEDATA -{ - LPDDRAWI_DIRECTDRAW_GBL lpDD; - DWORD dwToGDI; - DWORD dwReserved; - HRESULT ddRVal; - LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface; -} DDHAL_FLIPTOGDISURFACEDATA; - -typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA -{ - LPDDRAWI_DIRECTDRAW_GBL lpDD; - DDSCAPS DDSCaps; - DWORD dwTotal; - DWORD dwFree; - HRESULT ddRVal; - LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory; - DDSCAPSEX ddsCapsEx; - -} DDHAL_GETAVAILDRIVERMEMORYDATA; - -typedef struct _DDHAL_GETBLTSTATUSDATA -{ - LPDDRAWI_DIRECTDRAW_GBL lpDD; - LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; - DWORD dwFlags; - HRESULT ddRVal; - LPDDHALSURFCB_GETBLTSTATUS GetBltStatus; -} DDHAL_GETBLTSTATUSDATA; - -typedef struct _DDHAL_GETFLIPSTATUSDATA -{ - LPDDRAWI_DIRECTDRAW_GBL lpDD; - LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; - DWORD dwFlags; - HRESULT ddRVal; - LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus; -} DDHAL_GETFLIPSTATUSDATA; - -typedef struct _DDHAL_GETINTERNALMOCOMPDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPGUID lpGuid; - DWORD dwWidth; - DWORD dwHeight; - DDPIXELFORMAT ddPixelFormat; - DWORD dwScratchMemAlloc; - HRESULT ddRVal; - LPDDHALMOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo; -} DDHAL_GETINTERNALMOCOMPDATA; - -typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPGUID lpGuid; - DWORD dwWidth; - DWORD dwHeight; - DDPIXELFORMAT ddPixelFormat; - DWORD dwNumTypesCompBuffs; - LPDDMCCOMPBUFFERINFO lpCompBuffInfo; - HRESULT ddRVal; - LPDDHALMOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo; -} DDHAL_GETMOCOMPCOMPBUFFDATA; - -typedef struct _DDHAL_GETMOCOMPGUIDSDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - DWORD dwNumGuids; - LPGUID lpGuids; - HRESULT ddRVal; - LPDDHALMOCOMPCB_GETGUIDS GetMoCompGuids; -} DDHAL_GETMOCOMPGUIDSDATA; - -typedef struct _DDHAL_GETMOCOMPFORMATSDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPGUID lpGuid; - DWORD dwNumFormats; - LPDDPIXELFORMAT lpFormats; - HRESULT ddRVal; - LPDDHALMOCOMPCB_GETFORMATS GetMoCompFormats; -} DDHAL_GETMOCOMPFORMATSDATA; - -typedef struct _DDHAL_GETSCANLINEDATA -{ - LPDDRAWI_DIRECTDRAW_GBL lpDD; - DWORD dwScanLine; - HRESULT ddRVal; - LPDDHAL_GETSCANLINE GetScanLine; -} DDHAL_GETSCANLINEDATA; - -typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; - LPDDRAWI_DDRAWSURFACE_LCL lpSurface; - DWORD dwFlags; - HRESULT ddRVal; - LPDDHALMOCOMPCB_QUERYSTATUS QueryMoCompStatus; -} DDHAL_QUERYMOCOMPSTATUSDATA; - -typedef struct _DDHAL_RENDERMOCOMPDATA -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; - DWORD dwNumBuffers; - LPDDMCBUFFERINFO lpBufferInfo; - DWORD dwFunction; - LPVOID lpInputData; - DWORD dwInputDataSize; - LPVOID lpOutputData; - DWORD dwOutputDataSize; - HRESULT ddRVal; - LPDDHALMOCOMPCB_RENDER RenderMoComp; -} DDHAL_RENDERMOCOMPDATA; - -typedef struct _DDHAL_SETCOLORKEYDATA -{ - LPDDRAWI_DIRECTDRAW_GBL lpDD; - LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; - DWORD dwFlags; - DDCOLORKEY ckNew; - HRESULT ddRVal; - LPDDHALSURFCB_SETCOLORKEY SetColorKey; -} DDHAL_SETCOLORKEYDATA; - -typedef struct _DDHAL_SETOVERLAYPOSITIONDATA -{ - LPDDRAWI_DIRECTDRAW_GBL lpDD; - LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface; - LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface; - LONG lXPos; - LONG lYPos; - HRESULT ddRVal; - LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition; -} DDHAL_SETOVERLAYPOSITIONDATA; - -typedef struct _DDHAL_UPDATEOVERLAYDATA -{ - LPDDRAWI_DIRECTDRAW_GBL lpDD; - LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface; - RECTL rDest; - LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface; - RECTL rSrc; - DWORD dwFlags; - DDOVERLAYFX overlayFX; - HRESULT ddRVal; - LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay; -} DDHAL_UPDATEOVERLAYDATA; - -typedef struct _DDHAL_WAITFORVERTICALBLANKDATA -{ - LPDDRAWI_DIRECTDRAW_GBL lpDD; - DWORD dwFlags; - DWORD bIsInVB; - ULONG_PTR hEvent; - HRESULT ddRVal; - LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank; -} DDHAL_WAITFORVERTICALBLANKDATA; - -typedef struct _DDHAL_DRVSETCOLORKEYDATA -{ - LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; - DWORD dwFlags; - DDCOLORKEY ckNew; - HRESULT ddRVal; - LPDDHAL_SETCOLORKEY SetColorKey; -} DDHAL_DRVSETCOLORKEYDATA; - -typedef struct _DDMONITORINFO -{ - WORD Manufacturer; - WORD Product; - DWORD SerialNumber; - GUID DeviceIdentifier; - int Mode640x480; - int Mode800x600; - int Mode1024x768; - int Mode1280x1024; - int Mode1600x1200; - int ModeReserved1; - int ModeReserved2; - int ModeReserved3; -} DDMONITORINFO, FAR *LPDDMONITORINFO; - -typedef struct _DDRAWI_DDRAWCLIPPER_INT -{ - LPVOID lpVtbl; - LPDDRAWI_DDRAWCLIPPER_LCL lpLcl; - LPDDRAWI_DDRAWCLIPPER_INT lpLink; - DWORD dwIntRefCnt; -} DDRAWI_DDRAWCLIPPER_INT; - -typedef struct _DDHAL_UPDATENONLOCALHEAPDATA -{ - LPDDRAWI_DIRECTDRAW_GBL lpDD; - DWORD dwHeap; - FLATPTR fpGARTLin; - FLATPTR fpGARTDev; - ULONG_PTR ulPolicyMaxBytes; - HRESULT ddRVal; - LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap; -} DDHAL_UPDATENONLOCALHEAPDATA; - -typedef struct _DDHAL_SETCLIPLISTDATA -{ - LPDDRAWI_DIRECTDRAW_GBL lpDD; - LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; - HRESULT ddRVal; - LPDDHALSURFCB_SETCLIPLIST SetClipList; -} DDHAL_SETCLIPLISTDATA; - -typedef struct _DDRAWI_DDMOTIONCOMP_LCL -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - GUID guid; - DWORD dwUncompWidth; - DWORD dwUncompHeight; - DDPIXELFORMAT ddUncompPixelFormat; - DWORD dwInternalFlags; - DWORD dwRefCnt; - DWORD dwProcessId; - HANDLE hMoComp; - DWORD dwDriverReserved1; - DWORD dwDriverReserved2; - DWORD dwDriverReserved3; - LPVOID lpDriverReserved1; - LPVOID lpDriverReserved2; - LPVOID lpDriverReserved3; -} DDRAWI_DDMOTIONCOMP_LCL; - -typedef struct _DDRAWI_DDMOTIONCOMP_INT -{ - LPVOID lpVtbl; - LPDDRAWI_DDMOTIONCOMP_LCL lpLcl; - LPDDRAWI_DDMOTIONCOMP_INT lpLink; - DWORD dwIntRefCnt; -} DDRAWI_DDMOTIONCOMP_INT; - - -typedef struct _DDRAWI_DDVIDEOPORT_LCL -{ - LPDDRAWI_DIRECTDRAW_LCL lpDD; - DDVIDEOPORTDESC ddvpDesc; - DDVIDEOPORTINFO ddvpInfo; - LPDDRAWI_DDRAWSURFACE_INT lpSurface; - LPDDRAWI_DDRAWSURFACE_INT lpVBISurface; - LPDDRAWI_DDRAWSURFACE_INT *lpFlipInts; - DWORD dwNumAutoflip; - DWORD dwProcessID; - DWORD dwStateFlags; - DWORD dwFlags; - DWORD dwRefCnt; - FLATPTR fpLastFlip; - ULONG_PTR dwReserved1; - ULONG_PTR dwReserved2; - HANDLE hDDVideoPort; - DWORD dwNumVBIAutoflip; - LPDDVIDEOPORTDESC lpVBIDesc; - LPDDVIDEOPORTDESC lpVideoDesc; - LPDDVIDEOPORTINFO lpVBIInfo; - LPDDVIDEOPORTINFO lpVideoInfo; - DWORD dwVBIProcessID; - LPDDRAWI_DDVIDEOPORT_INT lpVPNotify; -} DDRAWI_DDVIDEOPORT_LCL; - - -typedef struct _DDRAWI_DDVIDEOPORT_INT -{ - LPVOID lpVtbl; - LPDDRAWI_DDVIDEOPORT_LCL lpLcl; - LPDDRAWI_DDVIDEOPORT_INT lpLink; - DWORD dwIntRefCnt; - DWORD dwFlags; -} DDRAWI_DDVIDEOPORT_INT; - - -typedef struct _DDRAWI_DDRAWCLIPPER_LCL -{ - DWORD lpClipMore; - LPDDRAWI_DDRAWCLIPPER_GBL lpGbl; - LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; - DWORD dwLocalRefCnt; -#ifndef _NO_COM - IUnknown *pUnkOuter; -#else - PVOID *pUnkOuter; -#endif - LPDDRAWI_DIRECTDRAW_INT lpDD_int; - ULONG_PTR dwReserved1; -#ifndef _NO_COM - IUnknown * pAddrefedThisOwner; -#else - PVOID pAddrefedThisOwner; -#endif -} DDRAWI_DDRAWCLIPPER_LCL; - - - -typedef struct _DDRAWI_DDRAWCLIPPER_GBL -{ - DWORD dwRefCnt; - DWORD dwFlags; - LPDDRAWI_DIRECTDRAW_GBL lpDD; - DWORD dwProcessId; - ULONG_PTR dwReserved1; - ULONG_PTR hWnd; - LPRGNDATA lpStaticClipList; -} DDRAWI_DDRAWCLIPPER_GBL; - -typedef BOOL (PASCAL *LPDDHEL_INIT)(LPDDRAWI_DIRECTDRAW_GBL,BOOL); - -extern HRESULT DDAPI - LateAllocateSurfaceMem( - LPDIRECTDRAWSURFACE lpSurface, - DWORD dwPleaseAllocType, - DWORD dwWidthInBytesOrSize, - DWORD dwHeight); - - LPDIRECTDRAWSURFACE GetNextMipMap( - LPDIRECTDRAWSURFACE lpLevel); - - - -typedef struct IDirectDrawClipperVtbl DIRECTDRAWCLIPPERCALLBACKS; -typedef struct IDirectDrawPaletteVtbl DIRECTDRAWPALETTECALLBACKS; -typedef struct IDirectDrawSurfaceVtbl DIRECTDRAWSURFACECALLBACKS; -typedef struct IDirectDrawSurface2Vtbl DIRECTDRAWSURFACE2CALLBACKS; -typedef struct IDirectDrawSurface3Vtbl DIRECTDRAWSURFACE3CALLBACKS; -typedef struct IDirectDrawSurface4Vtbl DIRECTDRAWSURFACE4CALLBACKS; -typedef struct IDirectDrawSurface7Vtbl DIRECTDRAWSURFACE7CALLBACKS; -typedef struct IDirectDrawColorControlVtbl DIRECTDRAWCOLORCONTROLCALLBACKS; -typedef struct IDirectDrawVtbl DIRECTDRAWCALLBACKS; -typedef struct IDirectDraw2Vtbl DIRECTDRAW2CALLBACKS; -typedef struct IDirectDraw4Vtbl DIRECTDRAW4CALLBACKS; -typedef struct IDirectDraw7Vtbl DIRECTDRAW7CALLBACKS; -typedef struct IDirectDrawKernelVtbl DIRECTDRAWKERNELCALLBACKS; -typedef struct IDirectDrawSurfaceKernelVtbl DIRECTDRAWSURFACEKERNELCALLBACKS; -typedef struct IDirectDrawGammaControlVtbl DIRECTDRAWGAMMACONTROLCALLBACKS; - - -typedef DIRECTDRAWCLIPPERCALLBACKS *LPDIRECTDRAWCLIPPERCALLBACKS; -typedef DIRECTDRAWPALETTECALLBACKS *LPDIRECTDRAWPALETTECALLBACKS; -typedef DIRECTDRAWSURFACECALLBACKS *LPDIRECTDRAWSURFACECALLBACKS; -typedef DIRECTDRAWCALLBACKS *LPDIRECTDRAWCALLBACKS; - - -HRESULT CALLBACK - D3DParseUnknownCommand (LPVOID lpvCommands, - LPVOID *lplpvReturnedCommand); - -#ifdef __cplusplus - /* extern "C" */ -#endif - -#endif /* __DDRAWI_INCLUDED__ */ diff --git a/include/ddk/ddrawint.h b/include/ddk/ddrawint.h deleted file mode 100644 index b78c209bc9d..00000000000 --- a/include/ddk/ddrawint.h +++ /dev/null @@ -1,1475 +0,0 @@ -/* - * DirectDraw NT driver interface - */ - -#ifndef __DD_INCLUDED__ -#define __DD_INCLUDED__ - -/* Helper macro to enable gcc's extension. */ -#ifndef __GNU_EXTENSION -#ifdef __GNUC__ -#define __GNU_EXTENSION __extension__ -#else -#define __GNU_EXTENSION -#endif -#endif - -DEFINE_GUID( GUID_MiscellaneousCallbacks, 0xEFD60CC0, 0x49e7, 0x11d0, 0x88, 0x9d, 0x0, 0xaa, 0x0, 0xbb, 0xb7, 0x6a); -DEFINE_GUID( GUID_Miscellaneous2Callbacks, 0x406B2F00, 0x3E5A, 0x11D1, 0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A); -DEFINE_GUID( GUID_VideoPortCallbacks, 0xefd60cc1, 0x49e7, 0x11d0, 0x88, 0x9d, 0x0, 0xaa, 0x0, 0xbb, 0xb7, 0x6a); -DEFINE_GUID( GUID_ColorControlCallbacks, 0xefd60cc2, 0x49e7, 0x11d0, 0x88, 0x9d, 0x0, 0xaa, 0x0, 0xbb, 0xb7, 0x6a); -DEFINE_GUID( GUID_MotionCompCallbacks, 0xb1122b40, 0x5dA5, 0x11d1, 0x8f, 0xcF, 0x00, 0xc0, 0x4f, 0xc2, 0x9b, 0x4e); -DEFINE_GUID( GUID_VideoPortCaps, 0xefd60cc3, 0x49e7, 0x11d0, 0x88, 0x9d, 0x0, 0xaa, 0x0, 0xbb, 0xb7, 0x6a); -DEFINE_GUID( GUID_D3DCaps, 0x7bf06991, 0x8794, 0x11d0, 0x91, 0x39, 0x08, 0x00, 0x36, 0xd2, 0xef, 0x02); -DEFINE_GUID( GUID_D3DExtendedCaps, 0x7de41f80, 0x9d93, 0x11d0, 0x89, 0xab, 0x00, 0xa0, 0xc9, 0x05, 0x41, 0x29); -DEFINE_GUID( GUID_D3DCallbacks, 0x7bf06990, 0x8794, 0x11d0, 0x91, 0x39, 0x08, 0x00, 0x36, 0xd2, 0xef, 0x02); -DEFINE_GUID( GUID_D3DCallbacks2, 0xba584e1, 0x70b6, 0x11d0, 0x88, 0x9d, 0x0, 0xaa, 0x0, 0xbb, 0xb7, 0x6a); -DEFINE_GUID( GUID_D3DCallbacks3, 0xddf41230, 0xec0a, 0x11d0, 0xa9, 0xb6, 0x00, 0xaa, 0x00, 0xc0, 0x99, 0x3e); -DEFINE_GUID( GUID_NonLocalVidMemCaps, 0x86c4fa80, 0x8d84, 0x11d0, 0x94, 0xe8, 0x00, 0xc0, 0x4f, 0xc3, 0x41, 0x37); -DEFINE_GUID( GUID_KernelCallbacks, 0x80863800, 0x6B06, 0x11D0, 0x9B, 0x06, 0x0, 0xA0, 0xC9, 0x03, 0xA3, 0xB8); -DEFINE_GUID( GUID_KernelCaps, 0xFFAA7540, 0x7AA8, 0x11D0, 0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8); -DEFINE_GUID( GUID_ZPixelFormats, 0x93869880, 0x36cf, 0x11d1, 0x9b, 0x1b, 0x0, 0xaa, 0x0, 0xbb, 0xb8, 0xae); -DEFINE_GUID( GUID_DDMoreCaps, 0x880baf30, 0xb030, 0x11d0, 0x8e, 0xa7, 0x00, 0x60, 0x97, 0x97, 0xea, 0x5b); -DEFINE_GUID( GUID_D3DParseUnknownCommandCallback, 0x2e04ffa0, 0x98e4, 0x11d1, 0x8c, 0xe1, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); -DEFINE_GUID( GUID_NTCallbacks, 0x6fe9ecde, 0xdf89, 0x11d1, 0x9d, 0xb0, 0x00, 0x60, 0x08, 0x27, 0x71, 0xba); -DEFINE_GUID( GUID_DDMoreSurfaceCaps, 0x3b8a0466, 0xf269, 0x11d1, 0x88, 0x0b, 0x0, 0xc0, 0x4f, 0xd9, 0x30, 0xc5); -DEFINE_GUID( GUID_GetHeapAlignment, 0x42e02f16, 0x7b41, 0x11d2, 0x8b, 0xff, 0x0, 0xa0, 0xc9, 0x83, 0xea, 0xf6); -DEFINE_GUID( GUID_UpdateNonLocalHeap, 0x42e02f17, 0x7b41, 0x11d2, 0x8b, 0xff, 0x0, 0xa0, 0xc9, 0x83, 0xea, 0xf6); -DEFINE_GUID( GUID_NTPrivateDriverCaps, 0xfad16a23, 0x7b66, 0x11d2, 0x83, 0xd7, 0x0, 0xc0, 0x4f, 0x7c, 0xe5, 0x8c); -DEFINE_GUID( GUID_DDStereoMode, 0xf828169c, 0xa8e8, 0x11d2, 0xa1, 0xf2, 0x0, 0xa0, 0xc9, 0x83, 0xea, 0xf6); -DEFINE_GUID( GUID_VPE2Callbacks, 0x52882147, 0x2d47, 0x469a, 0xa0, 0xd1, 0x3, 0x45, 0x58, 0x90, 0xf6, 0xc8); - - -#ifndef GUID_DEFS_ONLY - -#ifndef _NO_DDRAWINT_NO_COM -#ifndef _NO_COM -#define _NO_COM -#include -#include -#undef _NO_COM -#else -#include -#include -#endif -#else -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef MAKE_HRESULT // fixme this if statment should not be here, but MAKE_HRESULT should be here -#define MAKE_HRESULT(sev,fac,code) ((HRESULT) (((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code))) ) -#endif - -#ifndef FLATPTR_DEFINED -typedef ULONG_PTR FLATPTR; -#define FLATPTR_DEFINED -#endif - -typedef struct _DD_VIDEOPORT_LOCAL *PDD_VIDEOPORT_LOCAL; - -/************************************************************************/ -/* _DD_GETHEAPALIGNMENTDATA is defined in dmemmgr.h */ - /************************************************************************/ -struct _DD_GETHEAPALIGNMENTDATA; -#ifndef DD_GETHEAPALIGNMENTDATA_DECLARED -typedef struct _DD_GETHEAPALIGNMENTDATA *PDD_GETHEAPALIGNMENTDATA; -#define DD_GETHEAPALIGNMENTDATA_DECLARED -#endif - -/************************************************************************/ -/* Video memory info structures */ -/************************************************************************/ - -typedef struct _VIDEOMEMORY -{ - DWORD dwFlags; - FLATPTR fpStart; - __GNU_EXTENSION union - { - FLATPTR fpEnd; - DWORD dwWidth; - }; - DDSCAPS ddsCaps; - DDSCAPS ddsCapsAlt; - __GNU_EXTENSION union - { - struct _VMEMHEAP *lpHeap; - DWORD dwHeight; - }; -} VIDEOMEMORY, *PVIDEOMEMORY; - -typedef struct _VIDEOMEMORYINFO -{ - FLATPTR fpPrimary; - DWORD dwFlags; - DWORD dwDisplayWidth; - DWORD dwDisplayHeight; - LONG lDisplayPitch; - DDPIXELFORMAT ddpfDisplay; - DWORD dwOffscreenAlign; - DWORD dwOverlayAlign; - DWORD dwTextureAlign; - DWORD dwZBufferAlign; - DWORD dwAlphaAlign; - PVOID pvPrimary; -} VIDEOMEMORYINFO; -typedef VIDEOMEMORYINFO *LPVIDEOMEMORYINFO; - -typedef struct _DD_DIRECTDRAW_GLOBAL -{ - PVOID dhpdev; - ULONG_PTR dwReserved1; - ULONG_PTR dwReserved2; - LPDDVIDEOPORTCAPS lpDDVideoPortCaps; -} DD_DIRECTDRAW_GLOBAL, *PDD_DIRECTDRAW_GLOBAL; - -typedef struct _DD_DIRECTDRAW_LOCAL -{ - PDD_DIRECTDRAW_GLOBAL lpGbl; -} DD_DIRECTDRAW_LOCAL, *PDD_DIRECTDRAW_LOCAL; - - -typedef struct _DD_SURFACE_GLOBAL -{ - __GNU_EXTENSION union - { - DWORD dwBlockSizeY; - LONG lSlicePitch; - }; - - __GNU_EXTENSION union - { - PVIDEOMEMORY lpVidMemHeap; - DWORD dwBlockSizeX; - DWORD dwUserMemSize; - }; - - FLATPTR fpVidMem; - __GNU_EXTENSION union - { - LONG lPitch; - DWORD dwLinearSize; - }; - LONG yHint; - LONG xHint; - DWORD wHeight; - DWORD wWidth; - ULONG_PTR dwReserved1; - DDPIXELFORMAT ddpfSurface; - FLATPTR fpHeapOffset; - HANDLE hCreatorProcess; -} DD_SURFACE_GLOBAL, *PDD_SURFACE_GLOBAL; - -typedef struct _DD_SURFACE_MORE -{ - DWORD dwMipMapCount; - PDD_VIDEOPORT_LOCAL lpVideoPort; - DWORD dwOverlayFlags; - DDSCAPSEX ddsCapsEx; - DWORD dwSurfaceHandle; -} DD_SURFACE_MORE, *PDD_SURFACE_MORE; - -typedef struct _DD_ATTACHLIST *PDD_ATTACHLIST; - -typedef struct _DD_SURFACE_LOCAL -{ - PDD_SURFACE_GLOBAL lpGbl; - DWORD dwFlags; - DDSCAPS ddsCaps; - ULONG_PTR dwReserved1; - __GNU_EXTENSION union - { - DDCOLORKEY ddckCKSrcOverlay; - DDCOLORKEY ddckCKSrcBlt; - }; - __GNU_EXTENSION union - { - DDCOLORKEY ddckCKDestOverlay; - DDCOLORKEY ddckCKDestBlt; - }; - PDD_SURFACE_MORE lpSurfMore; - PDD_ATTACHLIST lpAttachList; - PDD_ATTACHLIST lpAttachListFrom; - RECT rcOverlaySrc; -} DD_SURFACE_LOCAL, *PDD_SURFACE_LOCAL; - -typedef struct _DD_ATTACHLIST -{ - PDD_ATTACHLIST lpLink; - PDD_SURFACE_LOCAL lpAttached; -} DD_ATTACHLIST; - -typedef struct _DD_SURFACE_INT -{ - PDD_SURFACE_LOCAL lpLcl; -} DD_SURFACE_INT, *PDD_SURFACE_INT; - -/************************************************************************/ -/* DDI representation of the DirectDrawPalette object */ -/************************************************************************/ - -typedef struct _DD_PALETTE_GLOBAL -{ - ULONG_PTR Reserved1; -} DD_PALETTE_GLOBAL, *PDD_PALETTE_GLOBAL; - -/************************************************************************/ -/* DDI representation of the DirectDrawVideo object */ -/************************************************************************/ - -typedef struct -{ - PDD_DIRECTDRAW_LOCAL lpDD; - GUID guid; - DWORD dwUncompWidth; - DWORD dwUncompHeight; - DDPIXELFORMAT ddUncompPixelFormat; - DWORD dwDriverReserved1; - DWORD dwDriverReserved2; - DWORD dwDriverReserved3; - LPVOID lpDriverReserved1; - LPVOID lpDriverReserved2; - LPVOID lpDriverReserved3; -} DD_MOTIONCOMP_LOCAL, *PDD_MOTIONCOMP_LOCAL; - - -typedef struct _DD_VIDEOPORT_LOCAL -{ - PDD_DIRECTDRAW_LOCAL lpDD; - DDVIDEOPORTDESC ddvpDesc; - DDVIDEOPORTINFO ddvpInfo; - PDD_SURFACE_INT lpSurface; - PDD_SURFACE_INT lpVBISurface; - DWORD dwNumAutoflip; - DWORD dwNumVBIAutoflip; - ULONG_PTR dwReserved1; - ULONG_PTR dwReserved2; - ULONG_PTR dwReserved3; -} DD_VIDEOPORT_LOCAL ; - -/************************************************************************/ -/* IDirectDrawSurface callbacks */ -/************************************************************************/ - -typedef struct _DD_LOCKDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - PDD_SURFACE_LOCAL lpDDSurface; - DWORD bHasRect; - RECTL rArea; - LPVOID lpSurfData; - HRESULT ddRVal; - PVOID Lock; - DWORD dwFlags; - FLATPTR fpProcess; -} DD_LOCKDATA, *PDD_LOCKDATA; -typedef DWORD (WINAPI *PDD_SURFCB_LOCK)(PDD_LOCKDATA); - - -typedef struct _DD_UNLOCKDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - PDD_SURFACE_LOCAL lpDDSurface; - HRESULT ddRVal; - PVOID Unlock; -} DD_UNLOCKDATA, *PDD_UNLOCKDATA; -typedef DWORD (WINAPI *PDD_SURFCB_UNLOCK)(PDD_UNLOCKDATA); - -#define DDABLT_SRCOVERDEST 0x00000001 -#define DDBLT_AFLAGS 0x80000000 - - - -typedef struct _DD_BLTDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - PDD_SURFACE_LOCAL lpDDDestSurface; - RECTL rDest; - PDD_SURFACE_LOCAL lpDDSrcSurface; - RECTL rSrc; - DWORD dwFlags; - DWORD dwROPFlags; - DDBLTFX bltFX; - HRESULT ddRVal; - PVOID Blt; - BOOL IsClipped; - RECTL rOrigDest; - RECTL rOrigSrc; - DWORD dwRectCnt; - LPRECT prDestRects; - DWORD dwAFlags; - DDARGB ddargbScaleFactors; -} DD_BLTDATA, *PDD_BLTDATA; -typedef DWORD (WINAPI *PDD_SURFCB_BLT)(PDD_BLTDATA); - -typedef struct _DD_UPDATEOVERLAYDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - PDD_SURFACE_LOCAL lpDDDestSurface; - RECTL rDest; - PDD_SURFACE_LOCAL lpDDSrcSurface; - RECTL rSrc; - DWORD dwFlags; - DDOVERLAYFX overlayFX; - HRESULT ddRVal; - PVOID UpdateOverlay; -} DD_UPDATEOVERLAYDATA, *PDD_UPDATEOVERLAYDATA; -typedef DWORD (WINAPI *PDD_SURFCB_UPDATEOVERLAY)(PDD_UPDATEOVERLAYDATA); - -typedef struct _DD_SETOVERLAYPOSITIONDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - PDD_SURFACE_LOCAL lpDDSrcSurface; - PDD_SURFACE_LOCAL lpDDDestSurface; - LONG lXPos; - LONG lYPos; - HRESULT ddRVal; - PVOID SetOverlayPosition; -} DD_SETOVERLAYPOSITIONDATA, *PDD_SETOVERLAYPOSITIONDATA; -typedef DWORD (WINAPI *PDD_SURFCB_SETOVERLAYPOSITION)(PDD_SETOVERLAYPOSITIONDATA); - -typedef struct _DD_SETPALETTEDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - PDD_SURFACE_LOCAL lpDDSurface; - PDD_PALETTE_GLOBAL lpDDPalette; - HRESULT ddRVal; - PVOID SetPalette; - BOOL Attach; -} DD_SETPALETTEDATA, *PDD_SETPALETTEDATA; -typedef DWORD (WINAPI *PDD_SURFCB_SETPALETTE)(PDD_SETPALETTEDATA); - -typedef struct _DD_FLIPDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - PDD_SURFACE_LOCAL lpSurfCurr; - PDD_SURFACE_LOCAL lpSurfTarg; - DWORD dwFlags; - HRESULT ddRVal; - PVOID Flip; - PDD_SURFACE_LOCAL lpSurfCurrLeft; - PDD_SURFACE_LOCAL lpSurfTargLeft; -} DD_FLIPDATA, *PDD_FLIPDATA; -typedef DWORD (WINAPI *PDD_SURFCB_FLIP)(PDD_FLIPDATA); - -typedef struct _DD_DESTROYSURFACEDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - PDD_SURFACE_LOCAL lpDDSurface; - HRESULT ddRVal; - PVOID DestroySurface; -} DD_DESTROYSURFACEDATA, *PDD_DESTROYSURFACEDATA; -typedef DWORD (WINAPI *PDD_SURFCB_DESTROYSURFACE)(PDD_DESTROYSURFACEDATA); - -typedef struct _DD_SETCLIPLISTDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - PDD_SURFACE_LOCAL lpDDSurface; - HRESULT ddRVal; - PVOID SetClipList; -} DD_SETCLIPLISTDATA, *PDD_SETCLIPLISTDATA; -typedef DWORD (WINAPI *PDD_SURFCB_SETCLIPLIST)(PDD_SETCLIPLISTDATA); - -typedef struct _DD_ADDATTACHEDSURFACEDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - PDD_SURFACE_LOCAL lpDDSurface; - PDD_SURFACE_LOCAL lpSurfAttached; - HRESULT ddRVal; - PVOID AddAttachedSurface; -} DD_ADDATTACHEDSURFACEDATA, *PDD_ADDATTACHEDSURFACEDATA; -typedef DWORD (WINAPI *PDD_SURFCB_ADDATTACHEDSURFACE)(PDD_ADDATTACHEDSURFACEDATA); - -typedef struct _DD_SETCOLORKEYDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - PDD_SURFACE_LOCAL lpDDSurface; - DWORD dwFlags; - DDCOLORKEY ckNew; - HRESULT ddRVal; - PVOID SetColorKey; -} DD_SETCOLORKEYDATA, *PDD_SETCOLORKEYDATA; -typedef DWORD (WINAPI *PDD_SURFCB_SETCOLORKEY)(PDD_SETCOLORKEYDATA); - -typedef struct _DD_GETBLTSTATUSDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - PDD_SURFACE_LOCAL lpDDSurface; - DWORD dwFlags; - HRESULT ddRVal; - PVOID GetBltStatus; -} DD_GETBLTSTATUSDATA, *PDD_GETBLTSTATUSDATA; -typedef DWORD (WINAPI *PDD_SURFCB_GETBLTSTATUS)(PDD_GETBLTSTATUSDATA); - -typedef struct _DD_GETFLIPSTATUSDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - PDD_SURFACE_LOCAL lpDDSurface; - DWORD dwFlags; - HRESULT ddRVal; - PVOID GetFlipStatus; -} DD_GETFLIPSTATUSDATA, *PDD_GETFLIPSTATUSDATA; -typedef DWORD (WINAPI *PDD_SURFCB_GETFLIPSTATUS)(PDD_GETFLIPSTATUSDATA); - -typedef struct DD_SURFACECALLBACKS -{ - DWORD dwSize; - DWORD dwFlags; - PDD_SURFCB_DESTROYSURFACE DestroySurface; - PDD_SURFCB_FLIP Flip; - PDD_SURFCB_SETCLIPLIST SetClipList; - PDD_SURFCB_LOCK Lock; - PDD_SURFCB_UNLOCK Unlock; - PDD_SURFCB_BLT Blt; - PDD_SURFCB_SETCOLORKEY SetColorKey; - PDD_SURFCB_ADDATTACHEDSURFACE AddAttachedSurface; - PDD_SURFCB_GETBLTSTATUS GetBltStatus; - PDD_SURFCB_GETFLIPSTATUS GetFlipStatus; - PDD_SURFCB_UPDATEOVERLAY UpdateOverlay; - PDD_SURFCB_SETOVERLAYPOSITION SetOverlayPosition; - PVOID reserved4; - PDD_SURFCB_SETPALETTE SetPalette; -} DD_SURFACECALLBACKS, *PDD_SURFACECALLBACKS; - - -#define DDHAL_SURFCB32_DESTROYSURFACE 0x00000001 -#define DDHAL_SURFCB32_FLIP 0x00000002 -#define DDHAL_SURFCB32_SETCLIPLIST 0x00000004 -#define DDHAL_SURFCB32_LOCK 0x00000008 -#define DDHAL_SURFCB32_UNLOCK 0x00000010 -#define DDHAL_SURFCB32_BLT 0x00000020 -#define DDHAL_SURFCB32_SETCOLORKEY 0x00000040 -#define DDHAL_SURFCB32_ADDATTACHEDSURFACE 0x00000080 -#define DDHAL_SURFCB32_GETBLTSTATUS 0x00000100 -#define DDHAL_SURFCB32_GETFLIPSTATUS 0x00000200 -#define DDHAL_SURFCB32_UPDATEOVERLAY 0x00000400 -#define DDHAL_SURFCB32_SETOVERLAYPOSITION 0x00000800 -#define DDHAL_SURFCB32_RESERVED4 0x00001000 -#define DDHAL_SURFCB32_SETPALETTE 0x00002000 -/************************************************************************/ -/* IDirectDraw callbacks */ -/************************************************************************/ - -typedef struct _DD_CREATESURFACEDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - DDSURFACEDESC *lpDDSurfaceDesc; - PDD_SURFACE_LOCAL *lplpSList; - DWORD dwSCnt; - HRESULT ddRVal; - PVOID CreateSurface; -} DD_CREATESURFACEDATA, *PDD_CREATESURFACEDATA; -typedef DWORD (WINAPI *PDD_CREATESURFACE)(PDD_CREATESURFACEDATA); - -typedef struct _DD_DRVSETCOLORKEYDATA -{ - PDD_SURFACE_LOCAL lpDDSurface; - DWORD dwFlags; - DDCOLORKEY ckNew; - HRESULT ddRVal; - PVOID SetColorKey; -} DD_DRVSETCOLORKEYDATA, *PDD_DRVSETCOLORKEYDATA; -typedef DWORD (WINAPI *PDD_SETCOLORKEY)(PDD_DRVSETCOLORKEYDATA); - -#define DDWAITVB_I_TESTVB 0x80000006 - -typedef struct _DD_WAITFORVERTICALBLANKDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - DWORD dwFlags; - DWORD bIsInVB; - DWORD hEvent; - HRESULT ddRVal; - PVOID WaitForVerticalBlank; -} DD_WAITFORVERTICALBLANKDATA, *PDD_WAITFORVERTICALBLANKDATA; -typedef DWORD (WINAPI *PDD_WAITFORVERTICALBLANK)(PDD_WAITFORVERTICALBLANKDATA); - -typedef struct _DD_CANCREATESURFACEDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - DDSURFACEDESC *lpDDSurfaceDesc; - DWORD bIsDifferentPixelFormat; - HRESULT ddRVal; - PVOID CanCreateSurface; -} DD_CANCREATESURFACEDATA, *PDD_CANCREATESURFACEDATA; -typedef DWORD (WINAPI *PDD_CANCREATESURFACE)(PDD_CANCREATESURFACEDATA); - -typedef struct _DD_CREATEPALETTEDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - PDD_PALETTE_GLOBAL lpDDPalette; - LPPALETTEENTRY lpColorTable; - HRESULT ddRVal; - PVOID CreatePalette; - BOOL is_excl; -} DD_CREATEPALETTEDATA, *PDD_CREATEPALETTEDATA; -typedef DWORD (WINAPI *PDD_CREATEPALETTE)(PDD_CREATEPALETTEDATA); - -typedef struct _DD_GETSCANLINEDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - DWORD dwScanLine; - HRESULT ddRVal; - PVOID GetScanLine; -} DD_GETSCANLINEDATA, *PDD_GETSCANLINEDATA; -typedef DWORD (WINAPI *PDD_GETSCANLINE)(PDD_GETSCANLINEDATA); - -typedef struct _DD_MAPMEMORYDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - BOOL bMap; - HANDLE hProcess; - FLATPTR fpProcess; - HRESULT ddRVal; -} DD_MAPMEMORYDATA, *PDD_MAPMEMORYDATA; -typedef DWORD (WINAPI *PDD_MAPMEMORY)(PDD_MAPMEMORYDATA); - - - - -typedef struct _DD_DESTROYDRIVERDATA *PDD_DESTROYDRIVERDATA; -typedef struct _DD_SETMODEDATA *PDD_SETMODEDATA; - -typedef DWORD (APIENTRY *PDD_DESTROYDRIVER)(PDD_DESTROYDRIVERDATA); -typedef DWORD (APIENTRY *PDD_SETMODE)(PDD_SETMODEDATA); - -typedef struct DD_CALLBACKS -{ - DWORD dwSize; - DWORD dwFlags; - PDD_DESTROYDRIVER DestroyDriver; - PDD_CREATESURFACE CreateSurface; - PDD_SETCOLORKEY SetColorKey; - PDD_SETMODE SetMode; - PDD_WAITFORVERTICALBLANK WaitForVerticalBlank; - PDD_CANCREATESURFACE CanCreateSurface; - PDD_CREATEPALETTE CreatePalette; - PDD_GETSCANLINE GetScanLine; - PDD_MAPMEMORY MapMemory; -} DD_CALLBACKS, *PDD_CALLBACKS; - - - -#define DDHAL_CB32_DESTROYDRIVER 0x00000001l -#define DDHAL_CB32_CREATESURFACE 0x00000002l -#define DDHAL_CB32_SETCOLORKEY 0x00000004l -#define DDHAL_CB32_SETMODE 0x00000008l -#define DDHAL_CB32_WAITFORVERTICALBLANK 0x00000010l -#define DDHAL_CB32_CANCREATESURFACE 0x00000020l -#define DDHAL_CB32_CREATEPALETTE 0x00000040l -#define DDHAL_CB32_GETSCANLINE 0x00000080l -#define DDHAL_CB32_MAPMEMORY 0x80000000l - -typedef struct _DD_GETAVAILDRIVERMEMORYDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - DDSCAPS DDSCaps; - DWORD dwTotal; - DWORD dwFree; - HRESULT ddRVal; - PVOID GetAvailDriverMemory; -} DD_GETAVAILDRIVERMEMORYDATA, *PDD_GETAVAILDRIVERMEMORYDATA; -typedef DWORD (WINAPI *PDD_GETAVAILDRIVERMEMORY)(PDD_GETAVAILDRIVERMEMORYDATA); - -typedef struct _DD_MISCELLANEOUSCALLBACKS -{ - DWORD dwSize; - DWORD dwFlags; - PDD_GETAVAILDRIVERMEMORY GetAvailDriverMemory; -} DD_MISCELLANEOUSCALLBACKS, *PDD_MISCELLANEOUSCALLBACKS; - -#define DDHAL_MISCCB32_GETAVAILDRIVERMEMORY 0x00000001 - -typedef DWORD (WINAPI *PDD_ALPHABLT)(PDD_BLTDATA); - -typedef struct _DD_CREATESURFACEEXDATA -{ - DWORD dwFlags; - PDD_DIRECTDRAW_LOCAL lpDDLcl; - PDD_SURFACE_LOCAL lpDDSLcl; - HRESULT ddRVal; -} DD_CREATESURFACEEXDATA, *PDD_CREATESURFACEEXDATA; -typedef DWORD (WINAPI *PDD_CREATESURFACEEX)(PDD_CREATESURFACEEXDATA); - -typedef struct _DD_GETDRIVERSTATEDATA -{ - DWORD dwFlags; - __GNU_EXTENSION union - { - PDD_DIRECTDRAW_GLOBAL lpDD; - DWORD_PTR dwhContext; - }; - LPDWORD lpdwStates; - DWORD dwLength; - HRESULT ddRVal; -} DD_GETDRIVERSTATEDATA, *PDD_GETDRIVERSTATEDATA; -typedef DWORD (WINAPI *PDD_GETDRIVERSTATE)(PDD_GETDRIVERSTATEDATA); - -typedef struct _DD_DESTROYDDLOCALDATA -{ - DWORD dwFlags; - PDD_DIRECTDRAW_LOCAL pDDLcl; - HRESULT ddRVal; -} DD_DESTROYDDLOCALDATA, *PDD_DESTROYDDLOCALDATA; -typedef DWORD (WINAPI *PDD_DESTROYDDLOCAL)(PDD_DESTROYDDLOCALDATA); - - - -typedef struct _DD_MISCELLANEOUS2CALLBACKS -{ - DWORD dwSize; - DWORD dwFlags; - PDD_ALPHABLT AlphaBlt; - PDD_CREATESURFACEEX CreateSurfaceEx; - PDD_GETDRIVERSTATE GetDriverState; - PDD_DESTROYDDLOCAL DestroyDDLocal; -} DD_MISCELLANEOUS2CALLBACKS, *PDD_MISCELLANEOUS2CALLBACKS; - - -#define DDHAL_MISC2CB32_ALPHABLT 0x00000001 -#define DDHAL_MISC2CB32_CREATESURFACEEX 0x00000002 -#define DDHAL_MISC2CB32_GETDRIVERSTATE 0x00000004 -#define DDHAL_MISC2CB32_DESTROYDDLOCAL 0x00000008 - - -typedef struct _DD_FREEDRIVERMEMORYDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - PDD_SURFACE_LOCAL lpDDSurface; - HRESULT ddRVal; - PVOID FreeDriverMemory; -} DD_FREEDRIVERMEMORYDATA, *PDD_FREEDRIVERMEMORYDATA; -typedef DWORD (WINAPI *PDD_FREEDRIVERMEMORY)(PDD_FREEDRIVERMEMORYDATA); - -typedef struct _DD_SETEXCLUSIVEMODEDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - DWORD dwEnterExcl; - DWORD dwReserved; - HRESULT ddRVal; - PVOID SetExclusiveMode; -} DD_SETEXCLUSIVEMODEDATA, *PDD_SETEXCLUSIVEMODEDATA; -typedef DWORD (WINAPI *PDD_SETEXCLUSIVEMODE)(PDD_SETEXCLUSIVEMODEDATA); - -typedef struct _DD_FLIPTOGDISURFACEDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - DWORD dwToGDI; - DWORD dwReserved; - HRESULT ddRVal; - PVOID FlipToGDISurface; -} DD_FLIPTOGDISURFACEDATA, *PDD_FLIPTOGDISURFACEDATA; -typedef DWORD (WINAPI *PDD_FLIPTOGDISURFACE)(PDD_FLIPTOGDISURFACEDATA); - - - -typedef struct _DD_NTCALLBACKS -{ - DWORD dwSize; - DWORD dwFlags; - PDD_FREEDRIVERMEMORY FreeDriverMemory; - PDD_SETEXCLUSIVEMODE SetExclusiveMode; - PDD_FLIPTOGDISURFACE FlipToGDISurface; -} DD_NTCALLBACKS, *PDD_NTCALLBACKS; - - -#define DDHAL_NTCB32_FREEDRIVERMEMORY 0x00000001 -#define DDHAL_NTCB32_SETEXCLUSIVEMODE 0x00000002 -#define DDHAL_NTCB32_FLIPTOGDISURFACE 0x00000004 - -/************************************************************************/ -/* IDirectDrawPalette callbacks */ -/************************************************************************/ - -typedef struct _DD_DESTROYPALETTEDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - PDD_PALETTE_GLOBAL lpDDPalette; - HRESULT ddRVal; - PVOID DestroyPalette; -} DD_DESTROYPALETTEDATA, *PDD_DESTROYPALETTEDATA; -typedef DWORD (WINAPI *PDD_PALCB_DESTROYPALETTE)(PDD_DESTROYPALETTEDATA); - -typedef struct _DD_SETENTRIESDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - PDD_PALETTE_GLOBAL lpDDPalette; - DWORD dwBase; - DWORD dwNumEntries; - LPPALETTEENTRY lpEntries; - HRESULT ddRVal; - PVOID SetEntries; -} DD_SETENTRIESDATA, *PDD_SETENTRIESDATA; -typedef DWORD (WINAPI *PDD_PALCB_SETENTRIES)(PDD_SETENTRIESDATA); - -typedef struct DD_PALETTECALLBACKS -{ - DWORD dwSize; - DWORD dwFlags; - PDD_PALCB_DESTROYPALETTE DestroyPalette; - PDD_PALCB_SETENTRIES SetEntries; -} DD_PALETTECALLBACKS, *PDD_PALETTECALLBACKS; - -#define DDHAL_PALCB32_DESTROYPALETTE 0x00000001l -#define DDHAL_PALCB32_SETENTRIES 0x00000002l - -/************************************************************************/ -/* IDirectDrawVideoport callbacks */ -/************************************************************************/ - -typedef struct _DD_CANCREATEVPORTDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - LPDDVIDEOPORTDESC lpDDVideoPortDesc; - HRESULT ddRVal; - PVOID CanCreateVideoPort; -} DD_CANCREATEVPORTDATA, *PDD_CANCREATEVPORTDATA; -typedef DWORD (WINAPI *PDD_VPORTCB_CANCREATEVIDEOPORT)(PDD_CANCREATEVPORTDATA); - -typedef struct _DD_CREATEVPORTDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - LPDDVIDEOPORTDESC lpDDVideoPortDesc; - PDD_VIDEOPORT_LOCAL lpVideoPort; - HRESULT ddRVal; - PVOID CreateVideoPort; -} DD_CREATEVPORTDATA, *PDD_CREATEVPORTDATA; -typedef DWORD (WINAPI *PDD_VPORTCB_CREATEVIDEOPORT)(PDD_CREATEVPORTDATA); - -typedef struct _DD_FLIPVPORTDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - PDD_VIDEOPORT_LOCAL lpVideoPort; - PDD_SURFACE_LOCAL lpSurfCurr; - PDD_SURFACE_LOCAL lpSurfTarg; - HRESULT ddRVal; - PVOID FlipVideoPort; -} DD_FLIPVPORTDATA, *PDD_FLIPVPORTDATA; -typedef DWORD (WINAPI *PDD_VPORTCB_FLIP)(PDD_FLIPVPORTDATA); - -typedef struct _DD_GETVPORTBANDWIDTHDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - PDD_VIDEOPORT_LOCAL lpVideoPort; - LPDDPIXELFORMAT lpddpfFormat; - DWORD dwWidth; - DWORD dwHeight; - DWORD dwFlags; - LPDDVIDEOPORTBANDWIDTH lpBandwidth; - HRESULT ddRVal; - PVOID GetVideoPortBandwidth; -} DD_GETVPORTBANDWIDTHDATA, *PDD_GETVPORTBANDWIDTHDATA; -typedef DWORD (WINAPI *PDD_VPORTCB_GETBANDWIDTH)(PDD_GETVPORTBANDWIDTHDATA); - -typedef struct _DD_GETVPORTINPUTFORMATDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - PDD_VIDEOPORT_LOCAL lpVideoPort; - DWORD dwFlags; - LPDDPIXELFORMAT lpddpfFormat; - DWORD dwNumFormats; - HRESULT ddRVal; - PVOID GetVideoPortInputFormats; -} DD_GETVPORTINPUTFORMATDATA, *PDD_GETVPORTINPUTFORMATDATA; -typedef DWORD (WINAPI *PDD_VPORTCB_GETINPUTFORMATS)(PDD_GETVPORTINPUTFORMATDATA); - -typedef struct _DD_GETVPORTOUTPUTFORMATDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - PDD_VIDEOPORT_LOCAL lpVideoPort; - DWORD dwFlags; - LPDDPIXELFORMAT lpddpfInputFormat; - LPDDPIXELFORMAT lpddpfOutputFormats; - DWORD dwNumFormats; - HRESULT ddRVal; - PVOID GetVideoPortInputFormats; -} DD_GETVPORTOUTPUTFORMATDATA, *PDD_GETVPORTOUTPUTFORMATDATA; -typedef DWORD (WINAPI *PDD_VPORTCB_GETOUTPUTFORMATS)(PDD_GETVPORTOUTPUTFORMATDATA); - -typedef struct _DD_GETVPORTFIELDDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - PDD_VIDEOPORT_LOCAL lpVideoPort; - BOOL bField; - HRESULT ddRVal; - PVOID GetVideoPortField; -} DD_GETVPORTFIELDDATA, *PDD_GETVPORTFIELDDATA; -typedef DWORD (WINAPI *PDD_VPORTCB_GETFIELD)(PDD_GETVPORTFIELDDATA); - -typedef struct _DD_GETVPORTLINEDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - PDD_VIDEOPORT_LOCAL lpVideoPort; - DWORD dwLine; - HRESULT ddRVal; - PVOID GetVideoPortLine; -} DD_GETVPORTLINEDATA, *PDD_GETVPORTLINEDATA; -typedef DWORD (WINAPI *PDD_VPORTCB_GETLINE)(PDD_GETVPORTLINEDATA); - -typedef struct _DD_GETVPORTCONNECTDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - DWORD dwPortId; - LPDDVIDEOPORTCONNECT lpConnect; - DWORD dwNumEntries; - HRESULT ddRVal; - PVOID GetVideoPortConnectInfo; -} DD_GETVPORTCONNECTDATA, *PDD_GETVPORTCONNECTDATA; -typedef DWORD (WINAPI *PDD_VPORTCB_GETVPORTCONNECT)(PDD_GETVPORTCONNECTDATA); - -typedef struct _DD_DESTROYVPORTDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - PDD_VIDEOPORT_LOCAL lpVideoPort; - HRESULT ddRVal; - PVOID DestroyVideoPort; -} DD_DESTROYVPORTDATA, *PDD_DESTROYVPORTDATA; -typedef DWORD (WINAPI *PDD_VPORTCB_DESTROYVPORT)(PDD_DESTROYVPORTDATA); - -typedef struct _DD_GETVPORTFLIPSTATUSDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - FLATPTR fpSurface; - HRESULT ddRVal; - PVOID GetVideoPortFlipStatus; -} DD_GETVPORTFLIPSTATUSDATA, *PDD_GETVPORTFLIPSTATUSDATA; -typedef DWORD (WINAPI *PDD_VPORTCB_GETFLIPSTATUS)(PDD_GETVPORTFLIPSTATUSDATA); - - - -typedef struct _DD_UPDATEVPORTDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - PDD_VIDEOPORT_LOCAL lpVideoPort; - PDD_SURFACE_INT *lplpDDSurface; - PDD_SURFACE_INT *lplpDDVBISurface; - LPDDVIDEOPORTINFO lpVideoInfo; - DWORD dwFlags; - DWORD dwNumAutoflip; - DWORD dwNumVBIAutoflip; - HRESULT ddRVal; - PVOID UpdateVideoPort; -} DD_UPDATEVPORTDATA, *PDD_UPDATEVPORTDATA; -typedef DWORD (WINAPI *PDD_VPORTCB_UPDATE)(PDD_UPDATEVPORTDATA); - -typedef struct _DD_WAITFORVPORTSYNCDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - PDD_VIDEOPORT_LOCAL lpVideoPort; - DWORD dwFlags; - DWORD dwLine; - DWORD dwTimeOut; - HRESULT ddRVal; - PVOID UpdateVideoPort; -} DD_WAITFORVPORTSYNCDATA, *PDD_WAITFORVPORTSYNCDATA; -typedef DWORD (WINAPI *PDD_VPORTCB_WAITFORSYNC)(PDD_WAITFORVPORTSYNCDATA); - -typedef struct _DD_GETVPORTSIGNALDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - PDD_VIDEOPORT_LOCAL lpVideoPort; - DWORD dwStatus; - HRESULT ddRVal; - PVOID GetVideoSignalStatus; -} DD_GETVPORTSIGNALDATA, *PDD_GETVPORTSIGNALDATA; -typedef DWORD (WINAPI *PDD_VPORTCB_GETSIGNALSTATUS)(PDD_GETVPORTSIGNALDATA); - - - -typedef struct _DD_VPORTCOLORDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - PDD_VIDEOPORT_LOCAL lpVideoPort; - DWORD dwFlags; - LPDDCOLORCONTROL lpColorData; - HRESULT ddRVal; - PVOID ColorControl; -} DD_VPORTCOLORDATA, *PDD_VPORTCOLORDATA; -typedef DWORD (WINAPI *PDD_VPORTCB_COLORCONTROL)(PDD_VPORTCOLORDATA); - - -typedef struct DD_VIDEOPORTCALLBACKS -{ - DWORD dwSize; - DWORD dwFlags; - PDD_VPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort; - PDD_VPORTCB_CREATEVIDEOPORT CreateVideoPort; - PDD_VPORTCB_FLIP FlipVideoPort; - PDD_VPORTCB_GETBANDWIDTH GetVideoPortBandwidth; - PDD_VPORTCB_GETINPUTFORMATS GetVideoPortInputFormats; - PDD_VPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats; - PVOID lpReserved1; - PDD_VPORTCB_GETFIELD GetVideoPortField; - PDD_VPORTCB_GETLINE GetVideoPortLine; - PDD_VPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo; - PDD_VPORTCB_DESTROYVPORT DestroyVideoPort; - PDD_VPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus; - PDD_VPORTCB_UPDATE UpdateVideoPort; - PDD_VPORTCB_WAITFORSYNC WaitForVideoPortSync; - PDD_VPORTCB_GETSIGNALSTATUS GetVideoSignalStatus; - PDD_VPORTCB_COLORCONTROL ColorControl; -} DD_VIDEOPORTCALLBACKS, *PDD_VIDEOPORTCALLBACKS; - -#define DDHAL_VPORT32_CANCREATEVIDEOPORT 0x00000001 -#define DDHAL_VPORT32_CREATEVIDEOPORT 0x00000002 -#define DDHAL_VPORT32_FLIP 0x00000004 -#define DDHAL_VPORT32_GETBANDWIDTH 0x00000008 -#define DDHAL_VPORT32_GETINPUTFORMATS 0x00000010 -#define DDHAL_VPORT32_GETOUTPUTFORMATS 0x00000020 -#define DDHAL_VPORT32_GETFIELD 0x00000080 -#define DDHAL_VPORT32_GETLINE 0x00000100 -#define DDHAL_VPORT32_GETCONNECT 0x00000200 -#define DDHAL_VPORT32_DESTROY 0x00000400 -#define DDHAL_VPORT32_GETFLIPSTATUS 0x00000800 -#define DDHAL_VPORT32_UPDATE 0x00001000 -#define DDHAL_VPORT32_WAITFORSYNC 0x00002000 -#define DDHAL_VPORT32_GETSIGNALSTATUS 0x00004000 -#define DDHAL_VPORT32_COLORCONTROL 0x00008000 - - -/************************************************************************/ -/* IDirectDrawColorControl callbacks */ -/************************************************************************/ - -#define DDRAWI_GETCOLOR 0x0001 -#define DDRAWI_SETCOLOR 0x0002 - -typedef struct _DD_COLORCONTROLDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - PDD_SURFACE_LOCAL lpDDSurface; - LPDDCOLORCONTROL lpColorData; - DWORD dwFlags; - HRESULT ddRVal; - PVOID ColorControl; -} DD_COLORCONTROLDATA, *PDD_COLORCONTROLDATA; -typedef DWORD (WINAPI *PDD_COLORCB_COLORCONTROL)(PDD_COLORCONTROLDATA); - - - -typedef struct _DD_COLORCONTROLCALLBACKS -{ - DWORD dwSize; - DWORD dwFlags; - PDD_COLORCB_COLORCONTROL ColorControl; -} DD_COLORCONTROLCALLBACKS, *PDD_COLORCONTROLCALLBACKS; - -#define DDHAL_COLOR_COLORCONTROL 0x00000001 - -/************************************************************************/ -/* IDirectDrawVideo callbacks */ -/************************************************************************/ - -typedef struct _DD_GETMOCOMPGUIDSDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - DWORD dwNumGuids; - GUID *lpGuids; - HRESULT ddRVal; -} DD_GETMOCOMPGUIDSDATA, *PDD_GETMOCOMPGUIDSDATA; -typedef DWORD (WINAPI *PDD_MOCOMPCB_GETGUIDS)(PDD_GETMOCOMPGUIDSDATA); - -typedef struct _DD_GETMOCOMPFORMATSDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - GUID *lpGuid; - DWORD dwNumFormats; - LPDDPIXELFORMAT lpFormats; - HRESULT ddRVal; -} DD_GETMOCOMPFORMATSDATA, *PDD_GETMOCOMPFORMATSDATA; -typedef DWORD (WINAPI *PDD_MOCOMPCB_GETFORMATS)(PDD_GETMOCOMPFORMATSDATA); - -typedef struct _DD_CREATEMOCOMPDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - PDD_MOTIONCOMP_LOCAL lpMoComp; - GUID *lpGuid; - DWORD dwUncompWidth; - DWORD dwUncompHeight; - DDPIXELFORMAT ddUncompPixelFormat; - LPVOID lpData; - DWORD dwDataSize; - HRESULT ddRVal; -} DD_CREATEMOCOMPDATA, *PDD_CREATEMOCOMPDATA; -typedef DWORD (WINAPI *PDD_MOCOMPCB_CREATE)(PDD_CREATEMOCOMPDATA); - -typedef struct _DDCOMPBUFFERINFO -{ - DWORD dwSize; - DWORD dwNumCompBuffers; - DWORD dwWidthToCreate; - DWORD dwHeightToCreate; - DWORD dwBytesToAllocate; - DDSCAPS2 ddCompCaps; - DDPIXELFORMAT ddPixelFormat; -} DDCOMPBUFFERINFO, *LPDDCOMPBUFFERINFO; - -typedef struct _DD_GETMOCOMPCOMPBUFFDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - GUID *lpGuid; - DWORD dwWidth; - DWORD dwHeight; - DDPIXELFORMAT ddPixelFormat; - DWORD dwNumTypesCompBuffs; - LPDDCOMPBUFFERINFO lpCompBuffInfo; - HRESULT ddRVal; -} DD_GETMOCOMPCOMPBUFFDATA, *PDD_GETMOCOMPCOMPBUFFDATA; -typedef DWORD (WINAPI *PDD_MOCOMPCB_GETCOMPBUFFINFO)(PDD_GETMOCOMPCOMPBUFFDATA); - -typedef struct _DD_GETINTERNALMOCOMPDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - GUID *lpGuid; - DWORD dwWidth; - DWORD dwHeight; - DDPIXELFORMAT ddPixelFormat; - DWORD dwScratchMemAlloc; - HRESULT ddRVal; -} DD_GETINTERNALMOCOMPDATA, *PDD_GETINTERNALMOCOMPDATA; -typedef DWORD (WINAPI *PDD_MOCOMPCB_GETINTERNALINFO)(PDD_GETINTERNALMOCOMPDATA); - -typedef struct _DD_BEGINMOCOMPFRAMEDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - PDD_MOTIONCOMP_LOCAL lpMoComp; - PDD_SURFACE_LOCAL lpDestSurface; - DWORD dwInputDataSize; - LPVOID lpInputData; - DWORD dwOutputDataSize; - LPVOID lpOutputData; - HRESULT ddRVal; -} DD_BEGINMOCOMPFRAMEDATA, *PDD_BEGINMOCOMPFRAMEDATA; -typedef DWORD (WINAPI *PDD_MOCOMPCB_BEGINFRAME)(PDD_BEGINMOCOMPFRAMEDATA); - -typedef struct _DD_ENDMOCOMPFRAMEDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - PDD_MOTIONCOMP_LOCAL lpMoComp; - LPVOID lpInputData; - DWORD dwInputDataSize; - HRESULT ddRVal; -} DD_ENDMOCOMPFRAMEDATA, *PDD_ENDMOCOMPFRAMEDATA; -typedef DWORD (WINAPI *PDD_MOCOMPCB_ENDFRAME)(PDD_ENDMOCOMPFRAMEDATA); - -typedef struct _DDMOCOMPBUFFERINFO -{ - DWORD dwSize; - PDD_SURFACE_LOCAL lpCompSurface; - DWORD dwDataOffset; - DWORD dwDataSize; - LPVOID lpPrivate; -} DDMOCOMPBUFFERINFO, *LPDDMOCOMPBUFFERINFO; - -typedef struct _DD_RENDERMOCOMPDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - PDD_MOTIONCOMP_LOCAL lpMoComp; - DWORD dwNumBuffers; - LPDDMOCOMPBUFFERINFO lpBufferInfo; - DWORD dwFunction; - LPVOID lpInputData; - DWORD dwInputDataSize; - LPVOID lpOutputData; - DWORD dwOutputDataSize; - HRESULT ddRVal; -} DD_RENDERMOCOMPDATA, *PDD_RENDERMOCOMPDATA; -typedef DWORD (WINAPI *PDD_MOCOMPCB_RENDER)(PDD_RENDERMOCOMPDATA); - -#define DDMCQUERY_READ 0x00000001 - -typedef struct _DD_QUERYMOCOMPSTATUSDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - PDD_MOTIONCOMP_LOCAL lpMoComp; - PDD_SURFACE_LOCAL lpSurface; - DWORD dwFlags; - HRESULT ddRVal; -} DD_QUERYMOCOMPSTATUSDATA, *PDD_QUERYMOCOMPSTATUSDATA; -typedef DWORD (WINAPI *PDD_MOCOMPCB_QUERYSTATUS)(PDD_QUERYMOCOMPSTATUSDATA); - -typedef struct _DD_DESTROYMOCOMPDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - PDD_MOTIONCOMP_LOCAL lpMoComp; - HRESULT ddRVal; -} DD_DESTROYMOCOMPDATA, *PDD_DESTROYMOCOMPDATA; -typedef DWORD (WINAPI *PDD_MOCOMPCB_DESTROY)(PDD_DESTROYMOCOMPDATA); - - - -typedef struct DD_MOTIONCOMPCALLBACKS -{ - DWORD dwSize; - DWORD dwFlags; - PDD_MOCOMPCB_GETGUIDS GetMoCompGuids; - PDD_MOCOMPCB_GETFORMATS GetMoCompFormats; - PDD_MOCOMPCB_CREATE CreateMoComp; - PDD_MOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo; - PDD_MOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo; - PDD_MOCOMPCB_BEGINFRAME BeginMoCompFrame; - PDD_MOCOMPCB_ENDFRAME EndMoCompFrame; - PDD_MOCOMPCB_RENDER RenderMoComp; - PDD_MOCOMPCB_QUERYSTATUS QueryMoCompStatus; - PDD_MOCOMPCB_DESTROY DestroyMoComp; -} DD_MOTIONCOMPCALLBACKS, *PDD_MOTIONCOMPCALLBACKS; - -#define DDHAL_MOCOMP32_GETGUIDS 0x00000001 -#define DDHAL_MOCOMP32_GETFORMATS 0x00000002 -#define DDHAL_MOCOMP32_CREATE 0x00000004 -#define DDHAL_MOCOMP32_GETCOMPBUFFINFO 0x00000008 -#define DDHAL_MOCOMP32_GETINTERNALINFO 0x00000010 -#define DDHAL_MOCOMP32_BEGINFRAME 0x00000020 -#define DDHAL_MOCOMP32_ENDFRAME 0x00000040 -#define DDHAL_MOCOMP32_RENDER 0x00000080 -#define DDHAL_MOCOMP32_QUERYSTATUS 0x00000100 -#define DDHAL_MOCOMP32_DESTROY 0x00000200 - -/************************************************************************/ -/* D3D buffer callbacks */ -/************************************************************************/ - -typedef struct _DD_D3DBUFCALLBACKS -{ - DWORD dwSize; - DWORD dwFlags; - PDD_CANCREATESURFACE CanCreateD3DBuffer; - PDD_CREATESURFACE CreateD3DBuffer; - PDD_SURFCB_DESTROYSURFACE DestroyD3DBuffer; - PDD_SURFCB_LOCK LockD3DBuffer; - PDD_SURFCB_UNLOCK UnlockD3DBuffer; -} DD_D3DBUFCALLBACKS, *PDD_D3DBUFCALLBACKS; - -/************************************************************************/ -/* DdGetDriverInfo callback */ -/************************************************************************/ - -typedef struct _DD_GETDRIVERINFODATA -{ - // Input: - PVOID dhpdev; - DWORD dwSize; - DWORD dwFlags; - GUID guidInfo; - DWORD dwExpectedSize; - PVOID lpvData; - // Output: - DWORD dwActualSize; - HRESULT ddRVal; -} DD_GETDRIVERINFODATA, *PDD_GETDRIVERINFODATA; -typedef DWORD (WINAPI *PDD_GETDRIVERINFO)(PDD_GETDRIVERINFODATA); - - - - -/************************************************************************/ -/* Driver info structures */ -/************************************************************************/ - -typedef struct _DDNTCORECAPS -{ - DWORD dwSize; - DWORD dwCaps; - DWORD dwCaps2; - DWORD dwCKeyCaps; - DWORD dwFXCaps; - DWORD dwFXAlphaCaps; - DWORD dwPalCaps; - DWORD dwSVCaps; - DWORD dwAlphaBltConstBitDepths; - DWORD dwAlphaBltPixelBitDepths; - DWORD dwAlphaBltSurfaceBitDepths; - DWORD dwAlphaOverlayConstBitDepths; - DWORD dwAlphaOverlayPixelBitDepths; - DWORD dwAlphaOverlaySurfaceBitDepths; - DWORD dwZBufferBitDepths; - DWORD dwVidMemTotal; - DWORD dwVidMemFree; - DWORD dwMaxVisibleOverlays; - DWORD dwCurrVisibleOverlays; - DWORD dwNumFourCCCodes; - DWORD dwAlignBoundarySrc; - DWORD dwAlignSizeSrc; - DWORD dwAlignBoundaryDest; - DWORD dwAlignSizeDest; - DWORD dwAlignStrideAlign; - DWORD dwRops[DD_ROP_SPACE]; - DDSCAPS ddsCaps; - DWORD dwMinOverlayStretch; - DWORD dwMaxOverlayStretch; - DWORD dwMinLiveVideoStretch; - DWORD dwMaxLiveVideoStretch; - DWORD dwMinHwCodecStretch; - DWORD dwMaxHwCodecStretch; - DWORD dwReserved1; - DWORD dwReserved2; - DWORD dwReserved3; - DWORD dwSVBCaps; - DWORD dwSVBCKeyCaps; - DWORD dwSVBFXCaps; - DWORD dwSVBRops[DD_ROP_SPACE]; - DWORD dwVSBCaps; - DWORD dwVSBCKeyCaps; - DWORD dwVSBFXCaps; - DWORD dwVSBRops[DD_ROP_SPACE]; - DWORD dwSSBCaps; - DWORD dwSSBCKeyCaps; - DWORD dwSSBFXCaps; - DWORD dwSSBRops[DD_ROP_SPACE]; - DWORD dwMaxVideoPorts; - DWORD dwCurrVideoPorts; - DWORD dwSVBCaps2; -} DDNTCORECAPS, *PDDNTCORECAPS; - - -typedef struct _DD_HALINFO_V4 -{ - DWORD dwSize; - VIDEOMEMORYINFO vmiData; - DDNTCORECAPS ddCaps; - PDD_GETDRIVERINFO GetDriverInfo; - DWORD dwFlags; -} DD_HALINFO_V4, *PDD_HALINFO_V4; - -typedef struct _DD_HALINFO -{ - DWORD dwSize; - VIDEOMEMORYINFO vmiData; - DDNTCORECAPS ddCaps; - PDD_GETDRIVERINFO GetDriverInfo; - DWORD dwFlags; - PVOID lpD3DGlobalDriverData; - PVOID lpD3DHALCallbacks; - PDD_D3DBUFCALLBACKS lpD3DBufCallbacks; -} DD_HALINFO, *PDD_HALINFO; - - - -typedef struct _DD_NONLOCALVIDMEMCAPS -{ - DWORD dwSize; - DWORD dwNLVBCaps; - DWORD dwNLVBCaps2; - DWORD dwNLVBCKeyCaps; - DWORD dwNLVBFXCaps; - DWORD dwNLVBRops[DD_ROP_SPACE]; -} DD_NONLOCALVIDMEMCAPS, *PDD_NONLOCALVIDMEMCAPS; - - - -typedef struct _DD_MORESURFACECAPS -{ - DWORD dwSize; - DDSCAPSEX ddsCapsMore; - struct tagNTExtendedHeapRestrictions - { - DDSCAPSEX ddsCapsEx; - DDSCAPSEX ddsCapsExAlt; - } ddsExtendedHeapRestrictions[1]; -} DD_MORESURFACECAPS, *PDD_MORESURFACECAPS; - - -/*********************************************************/ -/* Kernel Callbacks */ -/*********************************************************/ -typedef struct _DD_SYNCSURFACEDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - PDD_SURFACE_LOCAL lpDDSurface; - DWORD dwSurfaceOffset; - ULONG_PTR fpLockPtr; - LONG lPitch; - DWORD dwOverlayOffset; - ULONG dwDriverReserved1; - ULONG dwDriverReserved2; - ULONG dwDriverReserved3; - ULONG dwDriverReserved4; - HRESULT ddRVal; -} DD_SYNCSURFACEDATA, *PDD_SYNCSURFACEDATA; -typedef DWORD (WINAPI *PDD_KERNELCB_SYNCSURFACE)(PDD_SYNCSURFACEDATA); - -typedef struct _DD_SYNCVIDEOPORTDATA -{ - PDD_DIRECTDRAW_LOCAL lpDD; - PDD_VIDEOPORT_LOCAL lpVideoPort; - DWORD dwOriginOffset; - DWORD dwHeight; - DWORD dwVBIHeight; - ULONG dwDriverReserved1; - ULONG dwDriverReserved2; - ULONG dwDriverReserved3; - HRESULT ddRVal; -} DD_SYNCVIDEOPORTDATA, *PDD_SYNCVIDEOPORTDATA; -typedef DWORD (WINAPI *PDD_KERNELCB_SYNCVIDEOPORT)(PDD_SYNCVIDEOPORTDATA); - - -typedef struct DD_NTPRIVATEDRIVERCAPS -{ - DWORD dwSize; - DWORD dwPrivateCaps; -} DD_NTPRIVATEDRIVERCAPS; - -typedef struct _DD_UPDATENONLOCALHEAPDATA -{ - PDD_DIRECTDRAW_GLOBAL lpDD; - DWORD dwHeap; - FLATPTR fpGARTLin; - FLATPTR fpGARTDev; - ULONG_PTR ulPolicyMaxBytes; - HRESULT ddRVal; - VOID* UpdateNonLocalHeap; -} DD_UPDATENONLOCALHEAPDATA, *PDD_UPDATENONLOCALHEAPDATA; - -typedef struct _DD_STEREOMODE -{ - DWORD dwSize; - DWORD dwHeight; - DWORD dwWidth; - DWORD dwBpp; - DWORD dwRefreshRate; - BOOL bSupported; -} DD_STEREOMODE, *PDD_STEREOMODE; - -typedef struct _DD_MORECAPS -{ - DWORD dwSize; - DWORD dwAlphaCaps; - DWORD dwSVBAlphaCaps; - DWORD dwVSBAlphaCaps; - DWORD dwSSBAlphaCaps; - DWORD dwFilterCaps; - DWORD dwSVBFilterCaps; - DWORD dwVSBFilterCaps; - DWORD dwSSBFilterCaps; -} DD_MORECAPS, *PDD_MORECAPS; - -typedef struct _DD_CLIPPER_GLOBAL -{ - ULONG_PTR dwReserved1; -} DD_CLIPPER_GLOBAL; - -typedef struct _DD_CLIPPER_LOCAL -{ - ULONG_PTR dwReserved1; -} DD_CLIPPER_LOCAL; - -typedef struct _DD_PALETTE_LOCAL -{ - ULONG dwReserved0; - ULONG_PTR dwReserved1; -} DD_PALETTE_LOCAL; - - -typedef struct DD_KERNELCALLBACKS -{ - DWORD dwSize; - DWORD dwFlags; - PDD_KERNELCB_SYNCSURFACE SyncSurfaceData; - PDD_KERNELCB_SYNCVIDEOPORT SyncVideoPortData; -} DD_KERNELCALLBACKS, *PDD_KERNELCALLBACKS; - - -#define MAX_AUTOFLIP_BUFFERS 10 -#define DDSCAPS_EXECUTEBUFFER DDSCAPS_RESERVED2 -#define DDSCAPS_COMMANDBUFFER DDSCAPS_RESERVED3 -#define DDSCAPS_VERTEXBUFFER DDSCAPS_RESERVED4 -#define DDPF_D3DFORMAT 0x00200000l -#define D3DFORMAT_OP_TEXTURE 0x00000001L -#define D3DFORMAT_OP_VOLUMETEXTURE 0x00000002L -#define D3DFORMAT_OP_CUBETEXTURE 0x00000004L -#define D3DFORMAT_OP_OFFSCREEN_RENDERTARGET 0x00000008L -#define D3DFORMAT_OP_SAME_FORMAT_RENDERTARGET 0x00000010L -#define D3DFORMAT_OP_ZSTENCIL 0x00000040L -#define D3DFORMAT_OP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH 0x00000080L -#define D3DFORMAT_OP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET 0x00000100L -#define D3DFORMAT_OP_DISPLAYMODE 0x00000400L -#define D3DFORMAT_OP_3DACCELERATION 0x00000800L -#define D3DFORMAT_OP_PIXELSIZE 0x00001000L -#define D3DFORMAT_OP_CONVERT_TO_ARGB 0x00002000L -#define D3DFORMAT_OP_OFFSCREENPLAIN 0x00004000L -#define D3DFORMAT_OP_SRGBREAD 0x00008000L -#define D3DFORMAT_OP_BUMPMAP 0x00010000L -#define D3DFORMAT_OP_DMAP 0x00020000L -#define D3DFORMAT_OP_NOFILTER 0x00040000L -#define D3DFORMAT_MEMBEROFGROUP_ARGB 0x00080000L -#define D3DFORMAT_OP_SRGBWRITE 0x00100000L -#define D3DFORMAT_OP_NOALPHABLEND 0x00200000L -#define D3DFORMAT_OP_AUTOGENMIPMAP 0x00400000L -#define D3DFORMAT_OP_VERTEXTEXTURE 0x00800000L -#define D3DFORMAT_OP_NOTEXCOORDWRAPNORMIP 0x01000000L -#define DDHAL_PLEASEALLOC_BLOCKSIZE 0x00000002l -#define DDHAL_PLEASEALLOC_USERMEM 0x00000004l - - -#define VIDMEM_ISLINEAR 0x00000001l -#define VIDMEM_ISRECTANGULAR 0x00000002l -#define VIDMEM_ISHEAP 0x00000004l -#define VIDMEM_ISNONLOCAL 0x00000008l -#define VIDMEM_ISWC 0x00000010l -#define VIDMEM_HEAPDISABLED 0x00000020l - -#define DDHAL_CREATESURFACEEX_SWAPHANDLES 0x00000001l - -#define DDHAL_KERNEL_SYNCSURFACEDATA 0x00000001l -#define DDHAL_KERNEL_SYNCVIDEOPORTDATA 0x00000002l - -#define DDHAL_DRIVER_NOTHANDLED 0x00000000l -#define DDHAL_DRIVER_HANDLED 0x00000001l -#define DDHAL_DRIVER_NOCKEYHW 0x00000002l - -#define DDRAWISURF_HASCKEYSRCBLT 0x00000800L -#define DDRAWISURF_HASPIXELFORMAT 0x00002000L -#define DDRAWISURF_HASOVERLAYDATA 0x00004000L -#define DDRAWISURF_FRONTBUFFER 0x04000000L -#define DDRAWISURF_BACKBUFFER 0x08000000L -#define DDRAWISURF_INVALID 0x10000000L -#define DDRAWISURF_DRIVERMANAGED 0x40000000L - -#define ROP_HAS_SOURCE 0x00000001l -#define ROP_HAS_PATTERN 0x00000002l -#define ROP_HAS_SOURCEPATTERN ROP_HAS_SOURCE | ROP_HAS_PATTERN - -#define DDHAL_EXEBUFCB32_CANCREATEEXEBUF 0x00000001l -#define DDHAL_EXEBUFCB32_CREATEEXEBUF 0x00000002l -#define DDHAL_EXEBUFCB32_DESTROYEXEBUF 0x00000004l -#define DDHAL_EXEBUFCB32_LOCKEXEBUF 0x00000008l -#define DDHAL_EXEBUFCB32_UNLOCKEXEBUF 0x00000010l - -#define DDHAL_D3DBUFCB32_CANCREATED3DBUF DDHAL_EXEBUFCB32_CANCREATEEXEBUF -#define DDHAL_D3DBUFCB32_CREATED3DBUF DDHAL_EXEBUFCB32_CREATEEXEBUF -#define DDHAL_D3DBUFCB32_DESTROYD3DBUF DDHAL_EXEBUFCB32_DESTROYEXEBUF -#define DDHAL_D3DBUFCB32_LOCKD3DBUF DDHAL_EXEBUFCB32_LOCKEXEBUF -#define DDHAL_D3DBUFCB32_UNLOCKD3DBUF DDHAL_EXEBUFCB32_UNLOCKEXEBUF - -#define DDHALINFO_ISPRIMARYDISPLAY 0x00000001 -#define DDHALINFO_MODEXILLEGAL 0x00000002 -#define DDHALINFO_GETDRIVERINFOSET 0x00000004 -#define DDHALINFO_GETDRIVERINFO2 0x00000008 - -#define DDRAWIVPORT_ON 0x00000001 -#define DDRAWIVPORT_SOFTWARE_AUTOFLIP 0x00000002 -#define DDRAWIVPORT_COLORKEYANDINTERP 0x00000004 - -#define DDHAL_PRIVATECAP_ATOMICSURFACECREATION 0x00000001l -#define DDHAL_PRIVATECAP_NOTIFYPRIMARYCREATION 0x00000002l -#define DDHAL_PRIVATECAP_RESERVED1 0x00000004l - -#define DDRAWI_VPORTSTART 0x0001 -#define DDRAWI_VPORTSTOP 0x0002 -#define DDRAWI_VPORTUPDATE 0x0003 -#define DDRAWI_VPORTGETCOLOR 0x0001 -#define DDRAWI_VPORTSETCOLOR 0x0002 - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* GUID_DEFS_ONLY */ - -#endif /* __DD_INCLUDED__ */ diff --git a/include/ddk/dmusicks.h b/include/ddk/dmusicks.h index 64fac3b34b4..27cd6ac06d9 100644 --- a/include/ddk/dmusicks.h +++ b/include/ddk/dmusicks.h @@ -7,33 +7,30 @@ typedef LONGLONG REFERENCE_TIME; #endif -typedef struct _DMUS_KERNEL_EVENT -{ - BYTE bReserved; - BYTE cbStruct; - USHORT cbEvent; - USHORT usChannelGroup; - USHORT usFlags; - REFERENCE_TIME ullPresTime100ns; - ULONGLONG ullBytePosition; - struct _DMUS_KERNEL_EVENT *pNextEvt; - union - { - BYTE abData[sizeof(PBYTE)]; - PBYTE pbData; - struct _DMUS_KERNEL_EVENT *pPackageEvt; - }uData; -}DMUS_KERNEL_EVENT, *PDMUS_KERNEL_EVENT; +typedef struct _DMUS_KERNEL_EVENT { + BYTE bReserved; + BYTE cbStruct; + USHORT cbEvent; + USHORT usChannelGroup; + USHORT usFlags; + REFERENCE_TIME ullPresTime100ns; + ULONGLONG ullBytePosition; + struct _DMUS_KERNEL_EVENT *pNextEvt; + union { + BYTE abData[sizeof(PBYTE)]; + PBYTE pbData; + struct _DMUS_KERNEL_EVENT *pPackageEvt; + } uData; +} DMUS_KERNEL_EVENT, *PDMUS_KERNEL_EVENT; -typedef enum -{ - DMUS_STREAM_MIDI_INVALID = -1, - DMUS_STREAM_MIDI_RENDER = 0, - DMUS_STREAM_MIDI_CAPTURE, - DMUS_STREAM_WAVE_SINK -}DMUS_STREAM_TYPE; +typedef enum { + DMUS_STREAM_MIDI_INVALID = -1, + DMUS_STREAM_MIDI_RENDER = 0, + DMUS_STREAM_MIDI_CAPTURE, + DMUS_STREAM_WAVE_SINK +} DMUS_STREAM_TYPE; -DEFINE_GUID(CLSID_MiniportDriverDMusUART, 0xd3f0ce1c, 0xFFFC, 0x11D1, 0x81, 0xB0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1); +DEFINE_GUID(CLSID_MiniportDriverDMusUART, 0xd3f0ce1c, 0xFFFC, 0x11D1, 0x81, 0xB0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1); DEFINE_GUID(CLSID_MiniportDriverDMusUARTCapture, 0xD3F0CE1D, 0xFFFC, 0x11D1, 0x81, 0xB0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1); /* =============================================================== @@ -43,21 +40,20 @@ DEFINE_GUID(CLSID_MiniportDriverDMusUARTCapture, 0xD3F0CE1D, 0xFFFC, 0x11D1, 0x8 #undef INTERFACE #define INTERFACE IMasterClock -DECLARE_INTERFACE_(IMasterClock,IUnknown) -{ - DEFINE_ABSTRACT_UNKNOWN() +DECLARE_INTERFACE_(IMasterClock,IUnknown) { + DEFINE_ABSTRACT_UNKNOWN() - STDMETHOD_(NTSTATUS,GetTime)( THIS_ - OUT REFERENCE_TIME * pTime - ) PURE; + STDMETHOD_(NTSTATUS,GetTime)( THIS_ + OUT REFERENCE_TIME *pTime + ) PURE; }; typedef IMasterClock *PMASTERCLOCK; -#define IMP_IMasterClock \ - STDMETHODIMP_(NTSTATUS) GetTime( \ - OUT REFERENCE_TIME * pTime \ - ) +#define IMP_IMasterClock \ + STDMETHODIMP_(NTSTATUS) GetTime( \ + OUT REFERENCE_TIME *pTime \ + ) /* =============================================================== IMXF Interface @@ -70,46 +66,32 @@ struct IMXF; typedef struct IMXF *PMXF; #define DEFINE_ABSTRACT_IMXF() \ - STDMETHOD_(NTSTATUS,SetState)(THIS_ \ - IN KSSTATE State \ - ) PURE; \ - STDMETHOD_(NTSTATUS,PutMessage) \ - ( THIS_ \ - IN PDMUS_KERNEL_EVENT pDMKEvt \ - ) PURE; \ - STDMETHOD_(NTSTATUS,ConnectOutput) \ - ( THIS_ \ - IN PMXF sinkMXF \ - ) PURE; \ - STDMETHOD_(NTSTATUS,DisconnectOutput) \ - ( THIS_ \ - IN PMXF sinkMXF \ - ) PURE; + STDMETHOD_(NTSTATUS,SetState)(THIS_ \ + IN KSSTATE State \ + ) PURE; \ + STDMETHOD_(NTSTATUS,PutMessage)(THIS_ \ + IN PDMUS_KERNEL_EVENT pDMKEvt \ + ) PURE; \ + STDMETHOD_(NTSTATUS,ConnectOutput)(THIS_ \ + IN PMXF sinkMXF \ + ) PURE; \ + STDMETHOD_(NTSTATUS,DisconnectOutput)(THIS_ \ + IN PMXF sinkMXF \ + ) PURE; -#define IMP_IMXF \ - STDMETHODIMP_(NTSTATUS) SetState \ - ( \ - IN KSSTATE State \ - ); \ - STDMETHODIMP_(NTSTATUS) PutMessage \ - ( THIS_ \ - IN PDMUS_KERNEL_EVENT pDMKEvt \ - ); \ - STDMETHODIMP_(NTSTATUS) ConnectOutput \ - ( THIS_ \ - IN PMXF sinkMXF \ - ); \ - STDMETHODIMP_(NTSTATUS) DisconnectOutput \ - ( THIS_ \ - IN PMXF sinkMXF \ - ) +#define IMP_IMXF \ + STDMETHODIMP_(NTSTATUS) SetState ( \ + IN KSSTATE State); \ + STDMETHODIMP_(NTSTATUS) PutMessage (THIS_ \ + IN PDMUS_KERNEL_EVENT pDMKEvt); \ + STDMETHODIMP_(NTSTATUS) ConnectOutput (THIS_ \ + IN PMXF sinkMXF); \ + STDMETHODIMP_(NTSTATUS) DisconnectOutput (THIS_ \ + IN PMXF sinkMXF) - -DECLARE_INTERFACE_(IMXF,IUnknown) -{ - DEFINE_ABSTRACT_UNKNOWN() - - DEFINE_ABSTRACT_IMXF() +DECLARE_INTERFACE_(IMXF,IUnknown) { + DEFINE_ABSTRACT_UNKNOWN() + DEFINE_ABSTRACT_IMXF() }; /* =============================================================== @@ -123,47 +105,43 @@ struct IAllocatorMXF; typedef struct IAllocatorMXF *PAllocatorMXF; #define STATIC_IID_IAllocatorMXF\ - 0xa5f0d62c, 0xb30f, 0x11d2, 0xb7, 0xa3, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1 + 0xa5f0d62c, 0xb30f, 0x11d2, 0xb7, 0xa3, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1 DEFINE_GUIDSTRUCT("a5f0d62c-b30f-11d2-b7a3-0060083316c1", IID_IAllocatorMXF); #define IID_IAllocatorMXF DEFINE_GUIDNAMED(IID_IAllocatorMXF) -DECLARE_INTERFACE_(IAllocatorMXF, IMXF) -{ - DEFINE_ABSTRACT_UNKNOWN() +DECLARE_INTERFACE_(IAllocatorMXF, IMXF) { + DEFINE_ABSTRACT_UNKNOWN() - DEFINE_ABSTRACT_IMXF() + DEFINE_ABSTRACT_IMXF() - STDMETHOD_(NTSTATUS,GetMessage)(THIS_ - OUT PDMUS_KERNEL_EVENT * ppDMKEvt - ) PURE; + STDMETHOD_(NTSTATUS,GetMessage)(THIS_ + OUT PDMUS_KERNEL_EVENT *ppDMKEvt + ) PURE; - STDMETHOD_(USHORT,GetBufferSize)(THIS) PURE; + STDMETHOD_(USHORT,GetBufferSize)(THIS) PURE; - STDMETHOD_(NTSTATUS,GetBuffer)(THIS_ - OUT PBYTE * ppBuffer - )PURE; + STDMETHOD_(NTSTATUS,GetBuffer)(THIS_ + OUT PBYTE *ppBuffer + )PURE; - STDMETHOD_(NTSTATUS,PutBuffer)(THIS_ - IN PBYTE pBuffer - ) PURE; + STDMETHOD_(NTSTATUS,PutBuffer)(THIS_ + IN PBYTE pBuffer + ) PURE; }; -#define IMP_IAllocatorMXF \ - IMP_IMXF; \ - STDMETHODIMP_(NTSTATUS) GetMessage( \ - OUT PDMUS_KERNEL_EVENT * ppDMKEvt \ - ); \ - \ - STDMETHODIMP_(USHORT) GetBufferSize(void); \ - \ - STDMETHODIMP_(NTSTATUS) GetBuffer( \ - OUT PBYTE * ppBuffer \ - ); \ - \ - STDMETHODIMP_(NTSTATUS) PutBuffer( \ - IN PBYTE pBuffer \ - ) +#define IMP_IAllocatorMXF \ + IMP_IMXF; \ + STDMETHODIMP_(NTSTATUS) GetMessage( \ + OUT PDMUS_KERNEL_EVENT *ppDMKEvt); \ + \ + STDMETHODIMP_(USHORT) GetBufferSize(void); \ + \ + STDMETHODIMP_(NTSTATUS) GetBuffer( \ + OUT PBYTE *ppBuffer); \ + \ + STDMETHODIMP_(NTSTATUS) PutBuffer( \ + IN PBYTE pBuffer) #undef INTERFACE #define INTERFACE IPortDMus @@ -171,91 +149,85 @@ DECLARE_INTERFACE_(IAllocatorMXF, IMXF) DEFINE_GUID(IID_IPortDMus, 0xc096df9c, 0xfb09, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1); DEFINE_GUID(CLSID_PortDMus, 0xb7902fe9, 0xfb0a, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1); -DECLARE_INTERFACE_(IPortDMus, IPort) -{ - DEFINE_ABSTRACT_UNKNOWN() +DECLARE_INTERFACE_(IPortDMus, IPort) { + DEFINE_ABSTRACT_UNKNOWN() - DEFINE_ABSTRACT_PORT() + DEFINE_ABSTRACT_PORT() - STDMETHOD_(void,Notify)(THIS_ - IN PSERVICEGROUP ServiceGroup OPTIONAL - )PURE; + STDMETHOD_(void,Notify)(THIS_ + IN PSERVICEGROUP ServiceGroup OPTIONAL + ) PURE; - STDMETHOD_(void,RegisterServiceGroup)(THIS_ - IN PSERVICEGROUP ServiceGroup - ) PURE; + STDMETHOD_(void,RegisterServiceGroup)(THIS_ + IN PSERVICEGROUP ServiceGroup + ) PURE; }; typedef IPortDMus *PPORTDMUS; -#define IMP_IPortDMus \ - IMP_IPort; \ - STDMETHODIMP_(void) Notify( \ - IN PSERVICEGROUP ServiceGroup OPTIONAL \ - ); \ - \ - STDMETHODIMP_(void) RegisterServiceGroup( \ - IN PSERVICEGROUP ServiceGroup \ - ) +#define IMP_IPortDMus \ + IMP_IPort; \ + STDMETHODIMP_(void) Notify( \ + IN PSERVICEGROUP ServiceGroup OPTIONAL); \ + \ + STDMETHODIMP_(void) RegisterServiceGroup( \ + IN PSERVICEGROUP ServiceGroup) #undef INTERFACE #define INTERFACE IMiniportDMus DEFINE_GUID(IID_IMiniportDMus, 0xc096df9d, 0xfb09, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1); -DECLARE_INTERFACE_(IMiniportDMus, IMiniport) -{ - DEFINE_ABSTRACT_UNKNOWN() - DEFINE_ABSTRACT_MINIPORT() - +DECLARE_INTERFACE_(IMiniportDMus, IMiniport) { + DEFINE_ABSTRACT_UNKNOWN() - STDMETHOD_(NTSTATUS,Init)(THIS_ - IN PUNKNOWN UnknownAdapter, - IN PRESOURCELIST ResourceList, - IN PPORTDMUS Port, - OUT PSERVICEGROUP * ServiceGroup - ) PURE; + DEFINE_ABSTRACT_MINIPORT() - STDMETHOD_(void,Service)(THIS) PURE; + STDMETHOD_(NTSTATUS,Init)(THIS_ + IN PUNKNOWN UnknownAdapter, + IN PRESOURCELIST ResourceList, + IN PPORTDMUS Port, + OUT PSERVICEGROUP *ServiceGroup + ) PURE; - STDMETHOD_(NTSTATUS,NewStream)(THIS_ - OUT PMXF * MXF, - IN PUNKNOWN OuterUnknown OPTIONAL, - IN POOL_TYPE PoolType, - IN ULONG PinID, - IN DMUS_STREAM_TYPE StreamType, - IN PKSDATAFORMAT DataFormat, - OUT PSERVICEGROUP * ServiceGroup, - IN PAllocatorMXF AllocatorMXF, - IN PMASTERCLOCK MasterClock, - OUT PULONGLONG SchedulePreFetch - ) PURE; + STDMETHOD_(void,Service)(THIS) PURE; + + STDMETHOD_(NTSTATUS,NewStream)(THIS_ + OUT PMXF *MXF, + IN PUNKNOWN OuterUnknown OPTIONAL, + IN POOL_TYPE PoolType, + IN ULONG PinID, + IN DMUS_STREAM_TYPE StreamType, + IN PKSDATAFORMAT DataFormat, + OUT PSERVICEGROUP *ServiceGroup, + IN PAllocatorMXF AllocatorMXF, + IN PMASTERCLOCK MasterClock, + OUT PULONGLONG SchedulePreFetch + ) PURE; }; typedef IMiniportDMus *PMINIPORTDMUS; #undef INTERFACE -#define IMP_IMiniportDMus \ - IMP_IMiniport; \ - STDMETHODIMP_(NTSTATUS) Init( \ - IN PUNKNOWN UnknownAdapter, \ - IN PRESOURCELIST ResourceList, \ - IN PPORTDMUS Port, \ - OUT PSERVICEGROUP * ServiceGroup \ - ); \ - \ - STDMETHODIMP_(void) Service(THIS); \ - \ - STDMETHODIMP_(NTSTATUS) NewStream( \ - OUT PMXF * MXF, \ - IN PUNKNOWN OuterUnknown, \ - IN POOL_TYPE PoolType, \ - IN ULONG PinID, \ - IN DMUS_STREAM_TYPE StreamType, \ - IN PKSDATAFORMAT DataFormat, \ - OUT PSERVICEGROUP * ServiceGroup, \ - IN PAllocatorMXF AllocatorMXF, \ - IN PMASTERCLOCK MasterClock, \ - OUT PULONGLONG SchedulePreFetch \ - ) +#define IMP_IMiniportDMus \ + IMP_IMiniport; \ + STDMETHODIMP_(NTSTATUS) Init( \ + IN PUNKNOWN UnknownAdapter, \ + IN PRESOURCELIST ResourceList, \ + IN PPORTDMUS Port, \ + OUT PSERVICEGROUP *ServiceGroup); \ + \ + STDMETHODIMP_(void) Service(THIS); \ + \ + STDMETHODIMP_(NTSTATUS) NewStream( \ + OUT PMXF *MXF, \ + IN PUNKNOWN OuterUnknown, \ + IN POOL_TYPE PoolType, \ + IN ULONG PinID, \ + IN DMUS_STREAM_TYPE StreamType, \ + IN PKSDATAFORMAT DataFormat, \ + OUT PSERVICEGROUP *ServiceGroup, \ + IN PAllocatorMXF AllocatorMXF, \ + IN PMASTERCLOCK MasterClock, \ + OUT PULONGLONG SchedulePreFetch) -#endif +#endif /* _DMUSICKS_ */ diff --git a/include/ddk/drivinit.h b/include/ddk/drivinit.h index fb6cdc39092..44248a3f5e1 100644 --- a/include/ddk/drivinit.h +++ b/include/ddk/drivinit.h @@ -1,4 +1,2 @@ /* This are empty and is left for be compatible with building some older windows nt4/2000/2003/XP drivers */ - - diff --git a/include/ddk/drmk.h b/include/ddk/drmk.h index 5c18ec5ca38..19659e34234 100644 --- a/include/ddk/drmk.h +++ b/include/ddk/drmk.h @@ -8,19 +8,17 @@ #ifndef DRMK_H #define DRMK_H -typedef struct -{ - DWORD Flags; - PDEVICE_OBJECT DeviceObject; - PFILE_OBJECT FileObject; - PVOID Context; +typedef struct { + DWORD Flags; + PDEVICE_OBJECT DeviceObject; + PFILE_OBJECT FileObject; + PVOID Context; } DRMFORWARD, *PDRMFORWARD, *PCDRMFORWARD; -typedef struct -{ - BOOL CopyProtect; - ULONG Reserved; - BOOL DigitalOutputDisable; +typedef struct { + BOOL CopyProtect; + ULONG Reserved; + BOOL DigitalOutputDisable; } DRMRIGHTS, *PDRMRIGHTS; typedef const DRMRIGHTS *PCDRMRIGHTS; @@ -31,87 +29,82 @@ typedef const DRMRIGHTS *PCDRMRIGHTS; */ #ifdef __cplusplus -extern "C" -{ +extern "C" { #endif NTSTATUS NTAPI DrmAddContentHandlers( - IN ULONG ContentId, - IN PVOID *paHandlers, - IN ULONG NumHandlers); + IN ULONG ContentId, + IN PVOID *paHandlers, + IN ULONG NumHandlers); NTSTATUS NTAPI DrmCreateContentMixed( - IN PULONG paContentId, - IN ULONG cContentId, - OUT PULONG pMixedContentId); + IN PULONG paContentId, + IN ULONG cContentId, + OUT PULONG pMixedContentId); NTSTATUS NTAPI DrmDestroyContent( - IN ULONG ContentId); + IN ULONG ContentId); NTSTATUS NTAPI DrmForwardContentToDeviceObject( - IN ULONG ContentId, - IN PVOID Reserved, - IN PCDRMFORWARD DrmForward); + IN ULONG ContentId, + IN PVOID Reserved, + IN PCDRMFORWARD DrmForward); NTSTATUS NTAPI DrmForwardContentToFileObject( - IN ULONG ContentId, - IN PFILE_OBJECT FileObject); + IN ULONG ContentId, + IN PFILE_OBJECT FileObject); NTSTATUS NTAPI DrmForwardContentToInterface( - IN ULONG ContentId, - IN PUNKNOWN pUnknown, - IN ULONG NumMethods); + IN ULONG ContentId, + IN PUNKNOWN pUnknown, + IN ULONG NumMethods); NTSTATUS NTAPI DrmGetContentRights( - IN ULONG ContentId, - OUT PDRMRIGHTS DrmRights); + IN ULONG ContentId, + OUT PDRMRIGHTS DrmRights); #ifdef __cplusplus } #endif - - DEFINE_GUID(IID_IDrmAudioStream, - 0x1915c967, 0x3299, 0x48cb, 0xa3, 0xe4, 0x69, 0xfd, 0x1d, 0x1b, 0x30, 0x6e); + 0x1915c967, 0x3299, 0x48cb, 0xa3, 0xe4, 0x69, 0xfd, 0x1d, 0x1b, 0x30, 0x6e); #undef INTERFACE #define INTERFACE IDrmAudioStream -DECLARE_INTERFACE_(IDrmAudioStream, IUnknown) -{ - STDMETHOD_(NTSTATUS, QueryInterface)(THIS_ - REFIID InterfaceId, - PVOID* Interface - ) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD_(NTSTATUS,SetContentId)(THIS_ - IN ULONG ContentId, - IN PCDRMRIGHTS DrmRights) PURE; +DECLARE_INTERFACE_(IDrmAudioStream, IUnknown) { + STDMETHOD_(NTSTATUS, QueryInterface)(THIS_ + REFIID InterfaceId, + PVOID* Interface + ) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD_(NTSTATUS,SetContentId)(THIS_ + IN ULONG ContentId, + IN PCDRMRIGHTS DrmRights + ) PURE; }; typedef IDrmAudioStream *PDRMAUDIOSTREAM; -#define IMP_IDrmAudioStream \ - STDMETHODIMP_(NTSTATUS) SetContentId \ - ( IN ULONG ContentId, \ - IN PCDRMRIGHTS DrmRights \ - ); +#define IMP_IDrmAudioStream \ + STDMETHODIMP_(NTSTATUS) SetContentId( \ + IN ULONG ContentId, \ + IN PCDRMRIGHTS DrmRights); - -#endif +#endif /* DRMK_H */ diff --git a/include/ddk/dxapi.h b/include/ddk/dxapi.h index 58c29ac2dc5..6108fe8d379 100644 --- a/include/ddk/dxapi.h +++ b/include/ddk/dxapi.h @@ -1,5 +1,5 @@ ULONG -DxApiGetVersion(); +DxApiGetVersion(void); ULONG DxApi( diff --git a/include/ddk/hubbusif.h b/include/ddk/hubbusif.h index cf97c5cf64f..be7b12e6b48 100644 --- a/include/ddk/hubbusif.h +++ b/include/ddk/hubbusif.h @@ -22,15 +22,15 @@ typedef struct _ROOTHUB_PDO_EXTENSION { #define USB_BUSIFFN __stdcall #endif -#define CD_ERR_V1 0x00000001 +#define CD_ERR_V1 0x00000001 -#define ID_ERR_V1 0x00000001 +#define ID_ERR_V1 0x00000001 #define USBD_KEEP_DEVICE_DATA 0x00000001 #define USBD_MARK_DEVICE_BUSY 0x00000002 -#define USB_IDLE_NOT_READY 0 -#define USB_IDLE_READY 1 +#define USB_IDLE_NOT_READY 0 +#define USB_IDLE_READY 1 typedef NTSTATUS @@ -41,7 +41,6 @@ USB_BUSIFFN_CREATE_USB_DEVICE ( IN PUSB_DEVICE_HANDLE HubDeviceHandle, IN USHORT PortStatus, IN USHORT PortNumber); - typedef USB_BUSIFFN_CREATE_USB_DEVICE *PUSB_BUSIFFN_CREATE_USB_DEVICE; typedef enum _USBPORT_CREATEDEV_ERROR { @@ -56,47 +55,45 @@ typedef enum _USBPORT_CREATEDEV_ERROR { } USBPORT_CREATEDEV_ERROR; typedef struct _USB_CD_ERROR_INFORMATION { - ULONG Version; - USBPORT_CREATEDEV_ERROR PathError; - ULONG UlongArg1; - ULONG UlongArg2; - NTSTATUS NtStatus; - UCHAR XtraInfo[64]; + ULONG Version; + USBPORT_CREATEDEV_ERROR PathError; + ULONG UlongArg1; + ULONG UlongArg2; + NTSTATUS NtStatus; + UCHAR XtraInfo[64]; } USB_CD_ERROR_INFORMATION, *PUSB_CD_ERROR_INFORMATION; typedef NTSTATUS USB_BUSIFFN USB_BUSIFFN_CREATE_USB_DEVICE_EX ( - IN PVOID BusContext, - OUT PUSB_DEVICE_HANDLE *NewDeviceHandle, - IN PUSB_DEVICE_HANDLE HsHubDeviceHandle, - IN USHORT PortStatus, - IN USHORT PortNumber, - OUT PUSB_CD_ERROR_INFORMATION CdErrorInfo, + IN PVOID BusContext, + OUT PUSB_DEVICE_HANDLE *NewDeviceHandle, + IN PUSB_DEVICE_HANDLE HsHubDeviceHandle, + IN USHORT PortStatus, + IN USHORT PortNumber, + OUT PUSB_CD_ERROR_INFORMATION CdErrorInfo, IN USHORT TtPortNumber); - typedef USB_BUSIFFN_CREATE_USB_DEVICE_EX *PUSB_BUSIFFN_CREATE_USB_DEVICE_EX; typedef struct _USB_PORT_PATH { - ULONG PortPathDepth; - ULONG PortPath[6]; + ULONG PortPathDepth; + ULONG PortPath[6]; } USB_PORT_PATH, *PUSB_PORT_PATH; typedef NTSTATUS USB_BUSIFFN USB_BUSIFFN_CREATE_USB_DEVICE_V7 ( - IN PVOID BusContext, - OUT PUSB_DEVICE_HANDLE *NewDeviceHandle, - IN PUSB_DEVICE_HANDLE HsHubDeviceHandle, - IN USHORT PortStatus, - IN PUSB_PORT_PATH PortPath, - OUT PUSB_CD_ERROR_INFORMATION CdErrorInfo, - IN USHORT TtPortNumber, - IN PDEVICE_OBJECT PdoDeviceObject, - IN PUNICODE_STRING PhysicalDeviceObjectName); - + IN PVOID BusContext, + OUT PUSB_DEVICE_HANDLE *NewDeviceHandle, + IN PUSB_DEVICE_HANDLE HsHubDeviceHandle, + IN USHORT PortStatus, + IN PUSB_PORT_PATH PortPath, + OUT PUSB_CD_ERROR_INFORMATION CdErrorInfo, + IN USHORT TtPortNumber, + IN PDEVICE_OBJECT PdoDeviceObject, + IN PUNICODE_STRING PhysicalDeviceObjectName); typedef USB_BUSIFFN_CREATE_USB_DEVICE_V7 *PUSB_BUSIFFN_CREATE_USB_DEVICE_V7; typedef enum _USBPORT_INITDEV_ERROR { @@ -120,29 +117,26 @@ typedef NTSTATUS USB_BUSIFFN USB_BUSIFFN_INITIALIZE_USB_DEVICE ( - IN PVOID BusContext, - IN OUT PUSB_DEVICE_HANDLE DeviceHandle); - + IN PVOID BusContext, + IN OUT PUSB_DEVICE_HANDLE DeviceHandle); typedef USB_BUSIFFN_INITIALIZE_USB_DEVICE *PUSB_BUSIFFN_INITIALIZE_USB_DEVICE; typedef NTSTATUS USB_BUSIFFN USB_BUSIFFN_INITIALIZE_USB_DEVICE_EX ( - IN PVOID BusContext, - IN OUT PUSB_DEVICE_HANDLE DeviceHandle, - OUT PUSB_ID_ERROR_INFORMATION IdErrInfo); - + IN PVOID BusContext, + IN OUT PUSB_DEVICE_HANDLE DeviceHandle, + OUT PUSB_ID_ERROR_INFORMATION IdErrInfo); typedef USB_BUSIFFN_INITIALIZE_USB_DEVICE_EX *PUSB_BUSIFFN_INITIALIZE_USB_DEVICE_EX; typedef NTSTATUS USB_BUSIFFN USB_BUSIFFN_REMOVE_USB_DEVICE ( - IN PVOID BusContext, - IN OUT PUSB_DEVICE_HANDLE DeviceHandle, - IN ULONG Flags); - + IN PVOID BusContext, + IN OUT PUSB_DEVICE_HANDLE DeviceHandle, + IN ULONG Flags); typedef USB_BUSIFFN_REMOVE_USB_DEVICE *PUSB_BUSIFFN_REMOVE_USB_DEVICE; typedef @@ -155,7 +149,6 @@ USB_BUSIFFN_GET_USB_DESCRIPTORS ( IN OUT PULONG DeviceDescriptorBufferLength, OUT PUCHAR ConfigDescriptorBuffer, IN OUT PULONG ConfigDescriptorBufferLength); - typedef USB_BUSIFFN_GET_USB_DESCRIPTORS *PUSB_BUSIFFN_GET_USB_DESCRIPTORS; typedef @@ -165,7 +158,6 @@ USB_BUSIFFN_RESTORE_DEVICE ( IN PVOID BusContext, IN OUT PUSB_DEVICE_HANDLE OldDeviceHandle, IN OUT PUSB_DEVICE_HANDLE NewDeviceHandle); - typedef USB_BUSIFFN_RESTORE_DEVICE *PUSB_BUSIFFN_RESTORE_DEVICE; typedef @@ -174,7 +166,6 @@ USB_BUSIFFN USB_BUSIFFN_GET_POTRTHACK_FLAGS ( IN PVOID BusContext, IN OUT PULONG Flags); - typedef USB_BUSIFFN_GET_POTRTHACK_FLAGS *PUSB_BUSIFFN_GET_POTRTHACK_FLAGS; typedef @@ -186,7 +177,6 @@ USB_BUSIFFN_GET_DEVICE_INFORMATION ( OUT PVOID DeviceInformationBuffer, IN ULONG DeviceInformationBufferLength, IN OUT PULONG LengthOfDataCopied); - typedef USB_BUSIFFN_GET_DEVICE_INFORMATION *PUSB_BUSIFFN_GET_DEVICE_INFORMATION; typedef @@ -197,7 +187,6 @@ USB_BUSIFFN_GET_CONTROLLER_INFORMATION ( IN OUT PVOID ControllerInformationBuffer, IN ULONG ControllerInformationBufferLength, IN OUT PULONG LengthOfDataCopied); - typedef USB_BUSIFFN_GET_CONTROLLER_INFORMATION *PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION; typedef @@ -206,7 +195,6 @@ USB_BUSIFFN USB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND ( IN PVOID BusContext, IN BOOLEAN Enable); - typedef USB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND *PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND; typedef @@ -218,7 +206,6 @@ USB_BUSIFFN_GET_EXTENDED_HUB_INFO ( IN PVOID HubInformationBuffer, IN ULONG HubInformationBufferLength, OUT PULONG LengthOfDataCopied); - typedef USB_BUSIFFN_GET_EXTENDED_HUB_INFO *PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO; typedef @@ -229,7 +216,6 @@ USB_BUSIFFN_GET_ROOTHUB_SYM_NAME ( IN PVOID HubSymNameBuffer, IN ULONG HubSymNameBufferLength, OUT PULONG HubSymNameActualLength); - typedef USB_BUSIFFN_GET_ROOTHUB_SYM_NAME *PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME; typedef @@ -238,7 +224,6 @@ USB_BUSIFFN USB_BUSIFFN_GET_DEVICE_BUSCONTEXT ( IN PVOID HubBusContext, IN PVOID DeviceHandle); - typedef USB_BUSIFFN_GET_DEVICE_BUSCONTEXT *PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT; typedef @@ -248,7 +233,6 @@ USB_BUSIFFN_INITIALIZE_20HUB ( IN PVOID BusContext, IN PUSB_DEVICE_HANDLE HubDeviceHandle, IN ULONG TtCount); - typedef USB_BUSIFFN_INITIALIZE_20HUB *PUSB_BUSIFFN_INITIALIZE_20HUB; typedef @@ -257,7 +241,6 @@ USB_BUSIFFN USB_BUSIFFN_IS_ROOT ( IN PVOID BusContext, IN PVOID DeviceObject); - typedef USB_BUSIFFN_IS_ROOT *PUSB_BUSIFFN_IS_ROOT; typedef @@ -265,7 +248,6 @@ VOID USB_BUSIFFN USB_BUSIFFN_ACQUIRE_SEMAPHORE ( IN PVOID BusContext); - typedef USB_BUSIFFN_ACQUIRE_SEMAPHORE *PUSB_BUSIFFN_ACQUIRE_SEMAPHORE; typedef @@ -273,7 +255,6 @@ VOID USB_BUSIFFN USB_BUSIFFN_RELEASE_SEMAPHORE ( IN PVOID BusContext); - typedef USB_BUSIFFN_RELEASE_SEMAPHORE *PUSB_BUSIFFN_RELEASE_SEMAPHORE; typedef @@ -281,7 +262,6 @@ VOID __stdcall RH_INIT_CALLBACK ( IN PVOID CallBackContext); - typedef RH_INIT_CALLBACK *PRH_INIT_CALLBACK; typedef @@ -291,7 +271,6 @@ USB_BUSIFFN_ROOTHUB_INIT_NOTIFY ( IN PVOID BusContext, IN PVOID CallbackContext, IN PRH_INIT_CALLBACK CallbackRoutine); - typedef USB_BUSIFFN_ROOTHUB_INIT_NOTIFY *PUSB_BUSIFFN_ROOTHUB_INIT_NOTIFY; typedef @@ -300,7 +279,6 @@ USB_BUSIFFN USB_BUSIFFN_FLUSH_TRANSFERS ( IN PVOID BusContext, IN PVOID DeviceHandle); - typedef USB_BUSIFFN_FLUSH_TRANSFERS *PUSB_BUSIFFN_FLUSH_TRANSFERS; typedef @@ -310,7 +288,6 @@ USB_BUSIFFN_CALC_PIPE_BANDWIDTH ( IN PVOID BusContext, IN PUSBD_PIPE_INFORMATION PipeInfo, IN USB_DEVICE_SPEED DeviceSpeed); - typedef USB_BUSIFFN_CALC_PIPE_BANDWIDTH *PUSB_BUSIFFN_CALC_PIPE_BANDWIDTH; typedef @@ -319,7 +296,6 @@ USB_BUSIFFN USB_BUSIFFN_SET_BUS_WAKE_MODE ( IN PVOID BusContext, IN ULONG Mode); - typedef USB_BUSIFFN_SET_BUS_WAKE_MODE *PUSB_BUSIFFN_SET_BUS_WAKE_MODE; typedef @@ -330,7 +306,6 @@ USB_BUSIFFN_SET_DEVICE_FLAG ( IN GUID *DeviceFlagGuid, IN PVOID ValueData, IN ULONG ValueLength); - typedef USB_BUSIFFN_SET_DEVICE_FLAG *PUSB_BUSIFFN_SET_DEVICE_FLAG; typedef @@ -340,7 +315,6 @@ USB_BUSIFFN_SET_DEVHANDLE_DATA ( IN PVOID BusContext, IN PVOID DeviceHandle, IN PDEVICE_OBJECT UsbDevicePdo); - typedef USB_BUSIFFN_SET_DEVHANDLE_DATA *PUSB_BUSIFFN_SET_DEVHANDLE_DATA; typedef @@ -351,7 +325,6 @@ USB_BUSIFFN_TEST_POINT ( IN PVOID DeviceHandle, IN ULONG Opcode, IN PVOID TestData); - typedef USB_BUSIFFN_TEST_POINT *PUSB_BUSIFFN_TEST_POINT; typedef @@ -363,7 +336,6 @@ USB_BUSIFFN_GET_DEVICE_PERFORMANCE_INFO ( OUT PVOID DeviceInformationBuffer, IN ULONG DeviceInformationBufferLength, IN OUT PULONG LengthOfDataCopied); - typedef USB_BUSIFFN_GET_DEVICE_PERFORMANCE_INFO *PUSB_BUSIFFN_GET_DEVICE_PERFORMANCE_INFO; typedef @@ -371,7 +343,6 @@ NTSTATUS USB_BUSIFFN USB_BUSIFFN_WAIT_ASYNC_POWERUP ( IN PVOID BusContext); - typedef USB_BUSIFFN_WAIT_ASYNC_POWERUP *PUSB_BUSIFFN_WAIT_ASYNC_POWERUP; typedef @@ -381,7 +352,6 @@ USB_BUSIFFN_GET_DEVICE_ADDRESS ( IN PVOID BusContext, IN PUSB_DEVICE_HANDLE DeviceHandle, OUT PUSHORT DeviceAddress); - typedef USB_BUSIFFN_GET_DEVICE_ADDRESS *PUSB_BUSIFFN_GET_DEVICE_ADDRESS; typedef @@ -392,7 +362,6 @@ USB_BUSIFFN_DEREF_DEVICE_HANDLE ( IN PUSB_DEVICE_HANDLE DeviceHandle, IN PVOID Object, IN ULONG Tag); - typedef USB_BUSIFFN_DEREF_DEVICE_HANDLE *PUSB_BUSIFFN_DEREF_DEVICE_HANDLE; typedef @@ -403,7 +372,6 @@ USB_BUSIFFN_REF_DEVICE_HANDLE ( IN PUSB_DEVICE_HANDLE DeviceHandle, IN PVOID Object, IN ULONG Tag); - typedef USB_BUSIFFN_REF_DEVICE_HANDLE *PUSB_BUSIFFN_REF_DEVICE_HANDLE; typedef @@ -413,7 +381,6 @@ USB_BUSIFFN_SET_DEVICE_HANDLE_IDLE_READY_STATE ( IN PVOID BusContext, IN PUSB_DEVICE_HANDLE DeviceHandle, IN ULONG NewIdleReadyState); - typedef USB_BUSIFFN_SET_DEVICE_HANDLE_IDLE_READY_STATE *PUSB_BUSIFFN_SET_DEVICE_HANDLE_IDLE_READY_STATE; typedef @@ -423,7 +390,6 @@ USB_BUSIFFN_GET_CONTAINER_ID_FOR_PORT ( IN PVOID BusContext, IN USHORT PortNumber, OUT LPGUID ContainerId); - typedef USB_BUSIFFN_GET_CONTAINER_ID_FOR_PORT *PUSB_BUSIFFN_GET_CONTAINER_ID_FOR_PORT; typedef @@ -433,7 +399,6 @@ USB_BUSIFFN_SET_CONTAINER_ID_FOR_PORT ( IN PVOID BusContext, IN USHORT PortNumber, IN LPGUID ContainerId); - typedef USB_BUSIFFN_SET_CONTAINER_ID_FOR_PORT *PUSB_BUSIFFN_SET_CONTAINER_ID_FOR_PORT; typedef @@ -442,7 +407,6 @@ USB_BUSIFFN USB_BUSIFFN_ABORT_ALL_DEVICE_PIPES ( IN PVOID BusContext, IN PUSB_DEVICE_HANDLE DeviceHandle); - typedef USB_BUSIFFN_ABORT_ALL_DEVICE_PIPES *PUSB_BUSIFFN_ABORT_ALL_DEVICE_PIPES; #define ERRATA_FLAG_RESET_TT_ON_CANCEL 1 @@ -468,11 +432,10 @@ USB_BUSIFFN_SET_DEVICE_ERRATA_FLAG ( IN PVOID BusContext, IN PUSB_DEVICE_HANDLE DeviceHandle, IN ULONG DeviceErrataFlag); - typedef USB_BUSIFFN_SET_DEVICE_ERRATA_FLAG *PUSB_BUSIFFN_SET_DEVICE_ERRATA_FLAG; DEFINE_GUID(USB_BUS_INTERFACE_HUB_GUID, -0xb2bb8c0a, 0x5ab4, 0x11d3, 0xa8, 0xcd, 0x0, 0xc0, 0x4f, 0x68, 0x74, 0x7a); + 0xb2bb8c0a, 0x5ab4, 0x11d3, 0xa8, 0xcd, 0x0, 0xc0, 0x4f, 0x68, 0x74, 0x7a); typedef struct _USB_BUS_INTERFACE_HUB_V0 { USHORT Size; @@ -667,7 +630,7 @@ typedef struct _USB_BUS_INTERFACE_HUB_V7 { } USB_BUS_INTERFACE_HUB_V7, *PUSB_BUS_INTERFACE_HUB_V7; DEFINE_GUID(USB_BUS_INTERFACE_HUB_MINIDUMP_GUID, -0xc5485f21, 0x4e81, 0x4a23, 0xa8, 0xf9, 0xd8, 0x51, 0x8a, 0xf4, 0x5c, 0x38); + 0xc5485f21, 0x4e81, 0x4a23, 0xa8, 0xf9, 0xd8, 0x51, 0x8a, 0xf4, 0x5c, 0x38); typedef VOID (USB_BUSIFFN *PUSB_BUSIFFN_SET_MINIDUMP_FLAGS) ( @@ -683,7 +646,7 @@ typedef struct _USB_BUS_INTERFACE_HUB_MINIDUMP { } USB_BUS_INTERFACE_HUB_MINIDUMP, *PUSB_BUS_INTERFACE_HUB_MINIDUMP; DEFINE_GUID(USB_BUS_INTERFACE_HUB_SS_GUID, -0xbfc3f363, 0x8ba1, 0x4c7b, 0x97, 0xba, 0x9b, 0x12, 0xb1, 0xca, 0x13, 0x2f); + 0xbfc3f363, 0x8ba1, 0x4c7b, 0x97, 0xba, 0x9b, 0x12, 0xb1, 0xca, 0x13, 0x2f); typedef NTSTATUS (USB_BUSIFFN *PUSB_BUSIFFN_SUSPEND_HUB) ( @@ -694,95 +657,95 @@ typedef NTSTATUS PDEVICE_OBJECT Pdo); typedef struct _USB_BUS_INTERFACE_HUB_SELECTIVE_SUSPEND { - USHORT Size; - USHORT Version; - PVOID BusContext; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PUSB_BUSIFFN_SUSPEND_HUB SuspendHub; - PUSB_BUSIFFN_RESUME_HUB ResumeHub; + USHORT Size; + USHORT Version; + PVOID BusContext; + PINTERFACE_REFERENCE InterfaceReference; + PINTERFACE_DEREFERENCE InterfaceDereference; + PUSB_BUSIFFN_SUSPEND_HUB SuspendHub; + PUSB_BUSIFFN_RESUME_HUB ResumeHub; } USB_BUS_INTERFACE_HUB_SELECTIVE_SUSPEND, *PUSB_BUS_INTERFACE_HUB_SELECTIVE_SUSPEND; #include typedef struct _USB_PIPE_INFORMATION_0 { - USB_ENDPOINT_DESCRIPTOR EndpointDescriptor; - UCHAR ED_Pad[1]; - ULONG ScheduleOffset; + USB_ENDPOINT_DESCRIPTOR EndpointDescriptor; + UCHAR ED_Pad[1]; + ULONG ScheduleOffset; } USB_PIPE_INFORMATION_0, *PUSB_PIPE_INFORMATION_0; typedef struct _USB_LEVEL_INFORMATION { - ULONG InformationLevel; - ULONG ActualLength; + ULONG InformationLevel; + ULONG ActualLength; } USB_LEVEL_INFORMATION, *PUSB_LEVEL_INFORMATION; typedef struct _USB_DEVICE_INFORMATION_0 { - ULONG InformationLevel; - ULONG ActualLength; - ULONG PortNumber; - USB_DEVICE_DESCRIPTOR DeviceDescriptor; - UCHAR DD_pad[2]; - UCHAR CurrentConfigurationValue; - UCHAR ReservedMBZ; - USHORT DeviceAddress; - ULONG HubAddress; - USB_DEVICE_SPEED DeviceSpeed; - USB_DEVICE_TYPE DeviceType; - ULONG NumberOfOpenPipes; - USB_PIPE_INFORMATION_0 PipeList[1]; + ULONG InformationLevel; + ULONG ActualLength; + ULONG PortNumber; + USB_DEVICE_DESCRIPTOR DeviceDescriptor; + UCHAR DD_pad[2]; + UCHAR CurrentConfigurationValue; + UCHAR ReservedMBZ; + USHORT DeviceAddress; + ULONG HubAddress; + USB_DEVICE_SPEED DeviceSpeed; + USB_DEVICE_TYPE DeviceType; + ULONG NumberOfOpenPipes; + USB_PIPE_INFORMATION_0 PipeList[1]; } USB_DEVICE_INFORMATION_0, *PUSB_DEVICE_INFORMATION_0; typedef struct _USB_CONTROLLER_INFORMATION_0 { - ULONG InformationLevel; - ULONG ActualLength; - BOOLEAN SelectiveSuspendEnabled; - BOOLEAN IsHighSpeedController; + ULONG InformationLevel; + ULONG ActualLength; + BOOLEAN SelectiveSuspendEnabled; + BOOLEAN IsHighSpeedController; } USB_CONTROLLER_INFORMATION_0, *PUSB_CONTROLLER_INFORMATION_0; typedef struct _USB_CONTROLLER_INFORMATION_1 { - ULONG InformationLevel; - ULONG ActualLength; - BOOLEAN SelectiveSuspendEnabled; - BOOLEAN IsHighSpeedController; - ULONG HcBusNumber; - ULONG HcBusDevice; - ULONG HcBusFunction; + ULONG InformationLevel; + ULONG ActualLength; + BOOLEAN SelectiveSuspendEnabled; + BOOLEAN IsHighSpeedController; + ULONG HcBusNumber; + ULONG HcBusDevice; + ULONG HcBusFunction; } USB_CONTROLLER_INFORMATION_1, *PUSB_CONTROLLER_INFORMATION_1; typedef struct _USB_EXTPORT_INFORMATION_0 { - ULONG PhysicalPortNumber; - ULONG PortLabelNumber; - USHORT VidOverride; - USHORT PidOverride; - ULONG PortAttributes; + ULONG PhysicalPortNumber; + ULONG PortLabelNumber; + USHORT VidOverride; + USHORT PidOverride; + ULONG PortAttributes; } USB_EXTPORT_INFORMATION_0, *PUSB_EXTPORT_INFORMATION; typedef struct _USB_EXTHUB_INFORMATION_0 { - ULONG InformationLevel; - ULONG NumberOfPorts; - USB_EXTPORT_INFORMATION_0 Port[255]; + ULONG InformationLevel; + ULONG NumberOfPorts; + USB_EXTPORT_INFORMATION_0 Port[255]; } USB_EXTHUB_INFORMATION_0, *PUSB_EXTHUB_INFORMATION_0; typedef struct _USB_DEVICE_PERFORMANCE_INFO_0 { - ULONG InformationLevel; - ULONG ActualLength; - ULONG BulkBytes; - ULONG BulkUrbCount; - ULONG ControlDataBytes; - ULONG ControlUrbCount; - ULONG IsoBytes; - ULONG IsoUrbCount; - ULONG InterruptBytes; - ULONG InterruptUrbCount; - ULONG AllocedInterrupt[6]; - ULONG AllocedIso; - ULONG Total32secBandwidth; - ULONG TotalTtBandwidth; - ULONG TotalIsoLatency; - ULONG DroppedIsoPackets; - ULONG TransferErrors; + ULONG InformationLevel; + ULONG ActualLength; + ULONG BulkBytes; + ULONG BulkUrbCount; + ULONG ControlDataBytes; + ULONG ControlUrbCount; + ULONG IsoBytes; + ULONG IsoUrbCount; + ULONG InterruptBytes; + ULONG InterruptUrbCount; + ULONG AllocedInterrupt[6]; + ULONG AllocedIso; + ULONG Total32secBandwidth; + ULONG TotalTtBandwidth; + ULONG TotalIsoLatency; + ULONG DroppedIsoPackets; + ULONG TransferErrors; } USB_DEVICE_PERFORMANCE_INFO_0, *PUSB_DEVICE_PERFORMANCE_INFO_0; #include -#endif +#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ diff --git a/include/ddk/ide.h b/include/ddk/ide.h index 5744a3fc0eb..7b99cedf43b 100644 --- a/include/ddk/ide.h +++ b/include/ddk/ide.h @@ -23,15 +23,6 @@ #ifndef __IDE_H #define __IDE_H -/* Helper macro to enable gcc's extension. */ -#ifndef __GNU_EXTENSION -#ifdef __GNUC__ -#define __GNU_EXTENSION __extension__ -#else -#define __GNU_EXTENSION -#endif -#endif - #ifdef __cplusplus extern "C" { #endif diff --git a/include/ddk/imm.h b/include/ddk/imm.h deleted file mode 100644 index 6e4d42fb447..00000000000 --- a/include/ddk/imm.h +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright (C) 2007 CodeWeavers, Aric Stewart - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#ifndef _DDKIMM_H_ -#define _DDKIMM_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct _tagINPUTCONTEXT { - HWND hWnd; - BOOL fOpen; - POINT ptStatusWndPos; - POINT ptSoftKbdPos; - DWORD fdwConversion; - DWORD fdwSentence; - union { - LOGFONTA A; - LOGFONTW W; - } lfFont; - COMPOSITIONFORM cfCompForm; - CANDIDATEFORM cfCandForm[4]; - HIMCC hCompStr; - HIMCC hCandInfo; - HIMCC hGuideLine; - HIMCC hPrivate; - DWORD dwNumMsgBuf; - HIMCC hMsgBuf; - DWORD fdwInit; - DWORD dwReserve[3]; -} INPUTCONTEXT, *LPINPUTCONTEXT; - -typedef struct _tagIMEINFO { - DWORD dwPrivateDataSize; - DWORD fdwProperty; - DWORD fdwConversionCaps; - DWORD fdwSentenceCaps; - DWORD fdwUICaps; - DWORD fdwSCSCaps; - DWORD fdwSelectCaps; -} IMEINFO, *LPIMEINFO; - -typedef struct tagCOMPOSITIONSTRING { - DWORD dwSize; - DWORD dwCompReadAttrLen; - DWORD dwCompReadAttrOffset; - DWORD dwCompReadClauseLen; - DWORD dwCompReadClauseOffset; - DWORD dwCompReadStrLen; - DWORD dwCompReadStrOffset; - DWORD dwCompAttrLen; - DWORD dwCompAttrOffset; - DWORD dwCompClauseLen; - DWORD dwCompClauseOffset; - DWORD dwCompStrLen; - DWORD dwCompStrOffset; - DWORD dwCursorPos; - DWORD dwDeltaStart; - DWORD dwResultReadClauseLen; - DWORD dwResultReadClauseOffset; - DWORD dwResultReadStrLen; - DWORD dwResultReadStrOffset; - DWORD dwResultClauseLen; - DWORD dwResultClauseOffset; - DWORD dwResultStrLen; - DWORD dwResultStrOffset; - DWORD dwPrivateSize; - DWORD dwPrivateOffset; -} COMPOSITIONSTRING, *LPCOMPOSITIONSTRING; - -typedef struct tagGUIDELINE { - DWORD dwSize; - DWORD dwLevel; - DWORD dwIndex; - DWORD dwStrLen; - DWORD dwStrOffset; - DWORD dwPrivateSize; - DWORD dwPrivateOffset; -} GUIDELINE, *LPGUIDELINE; - -typedef struct tagCANDIDATEINFO { - DWORD dwSize; - DWORD dwCount; - DWORD dwOffset[32]; - DWORD dwPrivateSize; - DWORD dwPrivateOffset; -} CANDIDATEINFO, *LPCANDIDATEINFO; - -LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC); -BOOL WINAPI ImmUnlockIMC(HIMC); -DWORD WINAPI ImmGetIMCLockCount(HIMC); -HIMCC WINAPI ImmCreateIMCC(DWORD); -HIMCC WINAPI ImmDestroyIMCC(HIMCC); -LPVOID WINAPI ImmLockIMCC(HIMCC); -BOOL WINAPI ImmUnlockIMCC(HIMCC); -DWORD WINAPI ImmGetIMCCLockCount(HIMCC); -HIMCC WINAPI ImmReSizeIMCC(HIMCC, DWORD); -DWORD WINAPI ImmGetIMCCSize(HIMCC); - -#define IMMGWL_IMC 0 -#define IMMGWL_PRIVATE (sizeof(LONG)) - -/* IME Property bits */ -#define IME_PROP_END_UNLOAD 0x0001 -#define IME_PROP_KBD_CHAR_FIRST 0x0002 -#define IME_PROP_IGNORE_UPKEYS 0x0004 -#define IME_PROP_NEED_ALTKEY 0x0008 -#define IME_PROP_NO_KEYS_ON_CLOSE 0x0010 - -/* for NI_CONTEXTUPDATED */ -#define IMC_SETCONVERSIONMODE 0x0002 -#define IMC_SETSENTENCEMODE 0x0004 -#define IMC_SETOPENSTATUS 0x0006 - -/* dwAction for ImmNotifyIME */ -#define NI_CONTEXTUPDATED 0x0003 -#define NI_OPENCANDIDATE 0x0010 -#define NI_CLOSECANDIDATE 0x0011 -#define NI_SELECTCANDIDATESTR 0x0012 -#define NI_CHANGECANDIDATELIST 0x0013 -#define NI_FINALIZECONVERSIONRESULT 0x0014 -#define NI_COMPOSITIONSTR 0x0015 -#define NI_SETCANDIDATE_PAGESTART 0x0016 -#define NI_SETCANDIDATE_PAGESIZE 0x0017 -#define NI_IMEMENUSELECTED 0x0018 - -BOOL WINAPI ImmGenerateMessage(HIMC); -LRESULT WINAPI ImmRequestMessageA(HIMC, WPARAM, LPARAM); -LRESULT WINAPI ImmRequestMessageW(HIMC, WPARAM, LPARAM); -#define ImmRequestMessage WINELIB_NAME_AW(ImmRequestMessage); -BOOL WINAPI ImmTranslateMessage(HWND, UINT, WPARAM, LPARAM); -HWND WINAPI ImmCreateSoftKeyboard(UINT, UINT, int, int); -BOOL WINAPI ImmDestroySoftKeyboard(HWND); -BOOL WINAPI ImmShowSoftKeyboard(HWND, int); - -BOOL WINAPI ImeInquire(LPIMEINFO, LPWSTR, LPCWSTR lpszOptions); -BOOL WINAPI ImeConfigure (HKL, HWND, DWORD, LPVOID); -DWORD WINAPI ImeConversionList(HIMC, LPCWSTR, LPCANDIDATELIST,DWORD,UINT); -BOOL WINAPI ImeDestroy(UINT); -LRESULT WINAPI ImeEscape(HIMC, UINT, LPVOID); -BOOL WINAPI ImeProcessKey(HIMC, UINT, LPARAM, CONST LPBYTE); -BOOL WINAPI ImeSelect(HIMC, BOOL); -BOOL WINAPI ImeSetActiveContext(HIMC, BOOL); -UINT WINAPI ImeToAsciiEx(UINT, UINT, CONST LPBYTE, LPDWORD, UINT, HIMC); -BOOL WINAPI NotifyIME(HIMC, DWORD, DWORD, DWORD); -BOOL WINAPI ImeRegisterWord(LPCWSTR, DWORD, LPCWSTR); -BOOL WINAPI ImeUnregisterWord(LPCWSTR, DWORD, LPCWSTR); -UINT WINAPI ImeGetRegisterWordStyle(UINT, LPSTYLEBUFW); -UINT WINAPI ImeEnumRegisterWord(REGISTERWORDENUMPROCW, LPCWSTR, DWORD, LPCWSTR, LPVOID); -BOOL WINAPI ImeSetCompositionString(HIMC, DWORD, LPCVOID, DWORD, LPCVOID, DWORD); -DWORD WINAPI ImeGetImeMenuItems(HIMC, DWORD, DWORD, LPIMEMENUITEMINFOW, LPIMEMENUITEMINFOW, DWORD); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* _DDKIMM_H_ */ diff --git a/include/ddk/ioaccess.h b/include/ddk/ioaccess.h index 0f1877f6c19..d1247302c0a 100755 --- a/include/ddk/ioaccess.h +++ b/include/ddk/ioaccess.h @@ -24,7 +24,7 @@ extern "C" { #endif #define H2I(p) PtrToUshort(p) - + #ifndef NO_PORT_MACROS #if defined(_X86_) || defined(_M_AMD64) @@ -41,7 +41,7 @@ extern "C" { #define WRITE_PORT_USHORT(p, v) __outword (H2I(p), (v)) #define WRITE_PORT_ULONG(p, v) __outdword (H2I(p), (v)) -#define MEMORY_BARRIER() +#define MEMORY_BARRIER() #elif defined(_PPC_) || defined(_MIPS_) || defined(_ARM_) @@ -59,10 +59,15 @@ extern "C" { #define WRITE_PORT_ULONG(p, v) WRITE_REGISTER_ULONG(p, (ULONG) (v)) #else - + #error Unsupported architecture #endif #endif /* NO_PORT_MACROS */ + +#ifdef __cplusplus +} +#endif + #endif /* __IOACCESS_H */ diff --git a/include/ddk/isguids.h b/include/ddk/isguids.h deleted file mode 100644 index 550207fad48..00000000000 --- a/include/ddk/isguids.h +++ /dev/null @@ -1,17 +0,0 @@ - - -#ifndef _ISGUIDS_H_ -#define _ISGUIDS_H_ - -DEFINE_GUID(CLSID_InternetShortcut, 0xFBF23B40L, 0xE3F0, 0x101B, 0x84, 0x88, 0x00, 0xAA, 0x00, 0x3E, 0x56, 0xF8); -DEFINE_GUID(IID_IUniformResourceLocatorA, 0xFBF23B80L, 0xE3F0, 0x101B, 0x84, 0x88, 0x00, 0xAA, 0x00, 0x3E, 0x56, 0xF8); -DEFINE_GUID(IID_IUniformResourceLocatorW, 0xCABB0DA0L, 0xDA57, 0x11CF, 0x99, 0x74, 0x00, 0x20, 0xAF, 0xD7, 0x97, 0x62); - -#ifdef UNICODE - #define IID_IUniformResourceLocator IID_IUniformResourceLocatorW -#else - #define IID_IUniformResourceLocator IID_IUniformResourceLocatorA -#endif - -#endif - diff --git a/include/ddk/mcd.h b/include/ddk/mcd.h index eb3e5427bd4..44c0b9329ab 100644 --- a/include/ddk/mcd.h +++ b/include/ddk/mcd.h @@ -32,9 +32,9 @@ extern "C" { #endif #if defined(_MCD_) - #define CHANGERAPI +#define CHANGERAPI #else - #define CHANGERAPI DECLSPEC_IMPORT +#define CHANGERAPI DECLSPEC_IMPORT #endif #ifdef DebugPrint @@ -47,41 +47,41 @@ extern "C" { #define DebugPrint(x) #endif -#define MAXIMUM_CHANGER_INQUIRY_DATA 252 +#define MAXIMUM_CHANGER_INQUIRY_DATA 252 CHANGERAPI PVOID NTAPI ChangerClassAllocatePool( - IN POOL_TYPE PoolType, - IN ULONG NumberOfBytes); + IN POOL_TYPE PoolType, + IN ULONG NumberOfBytes); VOID ChangerClassDebugPrint( - ULONG DebugPrintLevel, - PCCHAR DebugMessage, + ULONG DebugPrintLevel, + PCCHAR DebugMessage, ...); CHANGERAPI PVOID NTAPI ChangerClassFreePool( - IN PVOID PoolToFree); + IN PVOID PoolToFree); CHANGERAPI NTSTATUS NTAPI ChangerClassSendSrbSynchronous( - IN PDEVICE_OBJECT DeviceObject, - IN PSCSI_REQUEST_BLOCK Srb, - IN PVOID Buffer, - IN ULONG BufferSize, - IN BOOLEAN WriteToDevice); + IN PDEVICE_OBJECT DeviceObject, + IN PSCSI_REQUEST_BLOCK Srb, + IN PVOID Buffer, + IN ULONG BufferSize, + IN BOOLEAN WriteToDevice); typedef NTSTATUS NTAPI (*CHANGER_INITIALIZE)( - IN PDEVICE_OBJECT DeviceObject); + IN PDEVICE_OBJECT DeviceObject); typedef ULONG NTAPI (*CHANGER_EXTENSION_SIZE)( @@ -89,47 +89,47 @@ typedef ULONG NTAPI typedef VOID NTAPI (*CHANGER_ERROR_ROUTINE)( - PDEVICE_OBJECT DeviceObject, - PSCSI_REQUEST_BLOCK Srb, - NTSTATUS *Status, - BOOLEAN *Retry); + PDEVICE_OBJECT DeviceObject, + PSCSI_REQUEST_BLOCK Srb, + NTSTATUS *Status, + BOOLEAN *Retry); typedef NTSTATUS NTAPI (*CHANGER_COMMAND_ROUTINE)( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp); + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp); typedef NTSTATUS NTAPI (*CHANGER_PERFORM_DIAGNOSTICS)( - IN PDEVICE_OBJECT DeviceObject, - OUT PWMI_CHANGER_PROBLEM_DEVICE_ERROR ChangerDeviceError); + IN PDEVICE_OBJECT DeviceObject, + OUT PWMI_CHANGER_PROBLEM_DEVICE_ERROR ChangerDeviceError); typedef struct _MCD_INIT_DATA { - ULONG InitDataSize; - CHANGER_EXTENSION_SIZE ChangerAdditionalExtensionSize; - CHANGER_INITIALIZE ChangerInitialize; - CHANGER_ERROR_ROUTINE ChangerError; - CHANGER_PERFORM_DIAGNOSTICS ChangerPerformDiagnostics; - CHANGER_COMMAND_ROUTINE ChangerGetParameters; - CHANGER_COMMAND_ROUTINE ChangerGetStatus; - CHANGER_COMMAND_ROUTINE ChangerGetProductData; - CHANGER_COMMAND_ROUTINE ChangerSetAccess; - CHANGER_COMMAND_ROUTINE ChangerGetElementStatus; - CHANGER_COMMAND_ROUTINE ChangerInitializeElementStatus; - CHANGER_COMMAND_ROUTINE ChangerSetPosition; - CHANGER_COMMAND_ROUTINE ChangerExchangeMedium; - CHANGER_COMMAND_ROUTINE ChangerMoveMedium; - CHANGER_COMMAND_ROUTINE ChangerReinitializeUnit; - CHANGER_COMMAND_ROUTINE ChangerQueryVolumeTags; + ULONG InitDataSize; + CHANGER_EXTENSION_SIZE ChangerAdditionalExtensionSize; + CHANGER_INITIALIZE ChangerInitialize; + CHANGER_ERROR_ROUTINE ChangerError; + CHANGER_PERFORM_DIAGNOSTICS ChangerPerformDiagnostics; + CHANGER_COMMAND_ROUTINE ChangerGetParameters; + CHANGER_COMMAND_ROUTINE ChangerGetStatus; + CHANGER_COMMAND_ROUTINE ChangerGetProductData; + CHANGER_COMMAND_ROUTINE ChangerSetAccess; + CHANGER_COMMAND_ROUTINE ChangerGetElementStatus; + CHANGER_COMMAND_ROUTINE ChangerInitializeElementStatus; + CHANGER_COMMAND_ROUTINE ChangerSetPosition; + CHANGER_COMMAND_ROUTINE ChangerExchangeMedium; + CHANGER_COMMAND_ROUTINE ChangerMoveMedium; + CHANGER_COMMAND_ROUTINE ChangerReinitializeUnit; + CHANGER_COMMAND_ROUTINE ChangerQueryVolumeTags; } MCD_INIT_DATA, *PMCD_INIT_DATA; CHANGERAPI NTSTATUS NTAPI ChangerClassInitialize( - IN PDRIVER_OBJECT DriverObject, - IN PUNICODE_STRING RegistryPath, - IN PMCD_INIT_DATA MCDInitData); + IN PDRIVER_OBJECT DriverObject, + IN PUNICODE_STRING RegistryPath, + IN PMCD_INIT_DATA MCDInitData); #ifdef __cplusplus } diff --git a/include/ddk/mce.h b/include/ddk/mce.h index e2d8407da10..5178395bda8 100644 --- a/include/ddk/mce.h +++ b/include/ddk/mce.h @@ -3,7 +3,7 @@ #if defined(_X86_) || defined(_IA64_) || defined(_AMD64_) typedef union _MCI_ADDR { - struct { + _ANONYMOUS_STRUCT struct { ULONG Address; ULONG Reserved; } DUMMYSTRUCTNAME; @@ -157,7 +157,7 @@ typedef enum _ERROR_SEVERITY_VALUE { typedef union _ERROR_REVISION { USHORT Revision; - struct { + _ANONYMOUS_STRUCT struct { UCHAR Minor; UCHAR Major; } DUMMYSTRUCTNAME; @@ -174,7 +174,7 @@ typedef union _ERROR_REVISION { typedef union _ERROR_TIMESTAMP { ULONGLONG TimeStamp; - struct { + _ANONYMOUS_STRUCT struct { UCHAR Seconds; UCHAR Minutes; UCHAR Hours; @@ -201,7 +201,7 @@ typedef _ERROR_PLATFORM_GUID ERROR_PLATFORM_GUID, *PERROR_PLATFORM_GUID; typedef union _ERROR_RECORD_VALID { UCHAR Valid; - struct { + _ANONYMOUS_STRUCT struct { UCHAR OemPlatformID:1; UCHAR Reserved:7; } DUMMYSTRUCTNAME; @@ -219,7 +219,7 @@ typedef struct _ERROR_RECORD_HEADER { typedef union _ERROR_RECOVERY_INFO { UCHAR RecoveryInfo; - struct { + _ANONYMOUS_STRUCT struct { UCHAR Corrected:1; UCHAR NotContained:1; UCHAR Reset:1; @@ -236,7 +236,7 @@ typedef struct _ERROR_SECTION_HEADER { ULONG Length; } ERROR_SECTION_HEADER, *PERROR_SECTION_HEADER; -#if !defined(__midl) && defined(_MSC_EXTENSIONS) +#if !defined(__midl) __inline USHORT NTAPI @@ -245,16 +245,20 @@ GetFwMceLogProcessorNumber( { PERROR_SECTION_HEADER section = (PERROR_SECTION_HEADER)((ULONG64)Log + sizeof(*Log)); USHORT lid = (USHORT)((UCHAR)(section->Reserved)); +#ifdef NONAMELESSUNION + lid |= (USHORT)((UCHAR)(Log->TimeStamp.s.Reserved) << 8); +#else lid |= (USHORT)((UCHAR)(Log->TimeStamp.Reserved) << 8); +#endif return( lid ); } -#endif +#endif /* !__midl */ #define ERROR_PROCESSOR_GUID {0xe429faf1, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}} typedef union _ERROR_MODINFO_VALID { ULONGLONG Valid; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG CheckInfo:1; ULONGLONG RequestorIdentifier:1; ULONGLONG ResponderIdentifier:1; @@ -291,7 +295,7 @@ typedef enum _ERROR_CACHE_CHECK_MESI { typedef union _ERROR_CACHE_CHECK { ULONGLONG CacheCheck; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG Operation:4; ULONGLONG Level:2; ULONGLONG Reserved1:2; @@ -324,7 +328,7 @@ typedef union _ERROR_CACHE_CHECK { typedef union _ERROR_CACHE_CHECK { ULONGLONG CacheCheck; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG Operation:4; ULONGLONG Level:2; ULONGLONG Reserved1:2; @@ -367,7 +371,7 @@ typedef enum _ERROR_TLB_CHECK_OPERATION { typedef union _ERROR_TLB_CHECK { ULONGLONG TlbCheck; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG TRSlot:8; ULONGLONG TRSlotValid:1; ULONGLONG Reserved1:1; @@ -407,7 +411,7 @@ typedef enum _ERROR_BUS_CHECK_OPERATION { typedef union _ERROR_BUS_CHECK { ULONGLONG BusCheck; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG Size:5; ULONGLONG Internal:1; ULONGLONG External:1; @@ -434,7 +438,7 @@ typedef union _ERROR_BUS_CHECK { typedef union _ERROR_BUS_CHECK { ULONGLONG BusCheck; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG Size:5; ULONGLONG Internal:1; ULONGLONG External:1; @@ -484,7 +488,7 @@ typedef enum _ERROR_REGFILE_CHECK_OPERATION { typedef union _ERROR_REGFILE_CHECK { ULONGLONG RegFileCheck; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG Identifier:4; ULONGLONG Operation:4; ULONGLONG RegisterNumber:7; @@ -518,7 +522,7 @@ typedef enum _ERROR_MS_CHECK_OPERATION { typedef union _ERROR_MS_CHECK { ULONGLONG MsCheck; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG StructureIdentifier:5; ULONGLONG Level:3; ULONGLONG ArrayId:4; @@ -561,7 +565,7 @@ typedef struct _ERROR_MODINFO { typedef union _ERROR_PROCESSOR_VALID { ULONGLONG Valid; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG ErrorMap:1; ULONGLONG StateParameter:1; ULONGLONG CRLid:1; @@ -578,7 +582,7 @@ typedef union _ERROR_PROCESSOR_VALID { typedef union _ERROR_PROCESSOR_ERROR_MAP { ULONGLONG ErrorMap; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG Cid:4; ULONGLONG Tid:4; ULONGLONG Eic:4; @@ -597,7 +601,7 @@ typedef _ERROR_PROCESSOR_LEVEL_INDEX ERROR_PROCESSOR_LEVEL_INDEX, *PERROR_PROCES typedef union _ERROR_PROCESSOR_STATE_PARAMETER { ULONGLONG StateParameter; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG reserved0:2; ULONGLONG rz:1; ULONGLONG ra:1; @@ -641,7 +645,7 @@ typedef union _ERROR_PROCESSOR_STATE_PARAMETER { typedef union _PROCESSOR_LOCAL_ID { ULONGLONG LocalId; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG reserved:16; ULONGLONG eid:8; ULONGLONG id:8; @@ -664,7 +668,7 @@ typedef struct _ERROR_PROCESSOR_CPUID_INFO { typedef union _ERROR_PROCESSOR_STATIC_INFO_VALID { ULONGLONG Valid; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG MinState:1; ULONGLONG BR:1; ULONGLONG CR:1; @@ -730,7 +734,7 @@ typedef enum _ERR_TYPES { typedef union _ERROR_STATUS { ULONGLONG Status; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG Reserved0:8; ULONGLONG Type:8; ULONGLONG Address:1; @@ -750,7 +754,7 @@ typedef struct _ERROR_OEM_DATA { typedef union _ERROR_BUS_SPECIFIC_DATA { ULONGLONG BusSpecificData; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG LockAsserted:1; ULONGLONG DeferLogged:1; ULONGLONG IOQEmpty:1; @@ -777,7 +781,7 @@ typedef union _ERROR_BUS_SPECIFIC_DATA { typedef union _ERROR_MEMORY_VALID { ULONGLONG Valid; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG ErrorStatus:1; ULONGLONG PhysicalAddress:1; ULONGLONG AddressMask:1; @@ -825,7 +829,7 @@ typedef struct _ERROR_MEMORY { typedef union _ERROR_PCI_BUS_VALID { ULONGLONG Valid; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG ErrorStatus:1; ULONGLONG ErrorType:1; ULONGLONG Id:1; @@ -881,7 +885,7 @@ typedef struct _ERROR_PCI_BUS { typedef union _ERROR_PCI_COMPONENT_VALID { ULONGLONG Valid; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG ErrorStatus:1; ULONGLONG Info:1; ULONGLONG MemoryMappedRegistersPairs:1; @@ -919,7 +923,7 @@ typedef struct _ERROR_PCI_COMPONENT { typedef union _ERROR_SYSTEM_EVENT_LOG_VALID { ULONGLONG Valid; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG RecordId:1; ULONGLONG RecordType:1; ULONGLONG GeneratorId:1; @@ -954,7 +958,7 @@ typedef struct _ERROR_SYSTEM_EVENT_LOG { typedef union _ERROR_SMBIOS_VALID { ULONGLONG Valid; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG EventType:1; ULONGLONG Length:1; ULONGLONG TimeStamp:1; @@ -978,7 +982,7 @@ typedef struct _ERROR_SMBIOS { typedef union _ERROR_PLATFORM_SPECIFIC_VALID { ULONGLONG Valid; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG ErrorStatus:1; ULONGLONG RequestorId:1; ULONGLONG ResponderId:1; @@ -1007,7 +1011,7 @@ typedef struct _ERROR_PLATFORM_SPECIFIC { typedef union _ERROR_PLATFORM_BUS_VALID { ULONGLONG Valid; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG ErrorStatus:1; ULONGLONG RequestorId:1; ULONGLONG ResponderId:1; @@ -1036,7 +1040,7 @@ typedef struct _ERROR_PLATFORM_BUS { typedef union _ERROR_PLATFORM_HOST_CONTROLLER_VALID { ULONGLONG Valid; - struct { + _ANONYMOUS_STRUCT struct { ULONGLONG ErrorStatus:1; ULONGLONG RequestorId:1; ULONGLONG ResponderId:1; diff --git a/include/ddk/miniport.h b/include/ddk/miniport.h index f3f90a7bfae..afeafabd93d 100644 --- a/include/ddk/miniport.h +++ b/include/ddk/miniport.h @@ -31,213 +31,197 @@ extern "C" { #define EMULATOR_WRITE_ACCESS 0x02 typedef enum _EMULATOR_PORT_ACCESS_TYPE { - Uchar, - Ushort, - Ulong + Uchar, + Ushort, + Ulong } EMULATOR_PORT_ACCESS_TYPE, *PEMULATOR_PORT_ACCESS_TYPE; typedef struct _EMULATOR_ACCESS_ENTRY { - ULONG BasePort; - ULONG NumConsecutivePorts; - EMULATOR_PORT_ACCESS_TYPE AccessType; - UCHAR AccessMode; - UCHAR StringSupport; - PVOID Routine; + ULONG BasePort; + ULONG NumConsecutivePorts; + EMULATOR_PORT_ACCESS_TYPE AccessType; + UCHAR AccessMode; + UCHAR StringSupport; + PVOID Routine; } EMULATOR_ACCESS_ENTRY, *PEMULATOR_ACCESS_ENTRY; typedef VOID (NTAPI *PBANKED_SECTION_ROUTINE)( - IN ULONG ReadBank, - IN ULONG WriteBank, - IN PVOID Context); - + IN ULONG ReadBank, + IN ULONG WriteBank, + IN PVOID Context); + #ifndef __BROKEN__ typedef enum _INTERFACE_TYPE { - InterfaceTypeUndefined = -1, - Internal, - Isa, - Eisa, - MicroChannel, - TurboChannel, - PCIBus, - VMEBus, - NuBus, - PCMCIABus, - CBus, - MPIBus, - MPSABus, - ProcessorInternal, - InternalPowerBus, - PNPISABus, - PNPBus, - Vmcs, - MaximumInterfaceType -}INTERFACE_TYPE, *PINTERFACE_TYPE; + InterfaceTypeUndefined = -1, + Internal, + Isa, + Eisa, + MicroChannel, + TurboChannel, + PCIBus, + VMEBus, + NuBus, + PCMCIABus, + CBus, + MPIBus, + MPSABus, + ProcessorInternal, + InternalPowerBus, + PNPISABus, + PNPBus, + Vmcs, + MaximumInterfaceType +} INTERFACE_TYPE, *PINTERFACE_TYPE; typedef enum _KINTERRUPT_MODE { - LevelSensitive, - Latched + LevelSensitive, + Latched } KINTERRUPT_MODE; typedef VOID (*PINTERFACE_REFERENCE)(PVOID Context); typedef VOID (*PINTERFACE_DEREFERENCE)(PVOID Context); typedef enum _BUS_DATA_TYPE { - ConfigurationSpaceUndefined = -1, - Cmos, - EisaConfiguration, - Pos, - CbusConfiguration, - PCIConfiguration, - VMEConfiguration, - NuBusConfiguration, - PCMCIAConfiguration, - MPIConfiguration, - MPSAConfiguration, - PNPISAConfiguration, - SgiInternalConfiguration, - MaximumBusDataType + ConfigurationSpaceUndefined = -1, + Cmos, + EisaConfiguration, + Pos, + CbusConfiguration, + PCIConfiguration, + VMEConfiguration, + NuBusConfiguration, + PCMCIAConfiguration, + MPIConfiguration, + MPSAConfiguration, + PNPISAConfiguration, + SgiInternalConfiguration, + MaximumBusDataType } BUS_DATA_TYPE, *PBUS_DATA_TYPE; typedef enum _DMA_WIDTH { - Width8Bits, - Width16Bits, - Width32Bits, - MaximumDmaWidth -}DMA_WIDTH, *PDMA_WIDTH; + Width8Bits, + Width16Bits, + Width32Bits, + MaximumDmaWidth +} DMA_WIDTH, *PDMA_WIDTH; typedef enum _DMA_SPEED { - Compatible, - TypeA, - TypeB, - TypeC, - TypeF, - MaximumDmaSpeed -}DMA_SPEED, *PDMA_SPEED; + Compatible, + TypeA, + TypeB, + TypeC, + TypeF, + MaximumDmaSpeed +} DMA_SPEED, *PDMA_SPEED; typedef struct _INTERFACE { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; + USHORT Size; + USHORT Version; + PVOID Context; + PINTERFACE_REFERENCE InterfaceReference; + PINTERFACE_DEREFERENCE InterfaceDereference; } INTERFACE, *PINTERFACE; typedef enum _IRQ_DEVICE_POLICY { - IrqPolicyMachineDefault = 0, - IrqPolicyAllCloseProcessors, - IrqPolicyOneCloseProcessor, - IrqPolicyAllProcessorsInMachine, - IrqPolicySpecifiedProcessors, - IrqPolicySpreadMessagesAcrossAllProcessors + IrqPolicyMachineDefault = 0, + IrqPolicyAllCloseProcessors, + IrqPolicyOneCloseProcessor, + IrqPolicyAllProcessorsInMachine, + IrqPolicySpecifiedProcessors, + IrqPolicySpreadMessagesAcrossAllProcessors } IRQ_DEVICE_POLICY, *PIRQ_DEVICE_POLICY; typedef enum _IRQ_PRIORITY { - IrqPriorityUndefined = 0, - IrqPriorityLow, - IrqPriorityNormal, - IrqPriorityHigh + IrqPriorityUndefined = 0, + IrqPriorityLow, + IrqPriorityNormal, + IrqPriorityHigh } IRQ_PRIORITY, *PIRQ_PRIORITY; typedef struct _IO_RESOURCE_DESCRIPTOR { - UCHAR Option; - UCHAR Type; // use CM_RESOURCE_TYPE - UCHAR ShareDisposition; // use CM_SHARE_DISPOSITION - UCHAR Spare1; - USHORT Flags; // use CM resource flag defines - USHORT Spare2; // align - - union { - struct { - ULONG Length; - ULONG Alignment; - PHYSICAL_ADDRESS MinimumAddress; - PHYSICAL_ADDRESS MaximumAddress; - } Port; - - struct { - ULONG Length; - ULONG Alignment; - PHYSICAL_ADDRESS MinimumAddress; - PHYSICAL_ADDRESS MaximumAddress; - } Memory; - - struct { - ULONG MinimumVector; - ULONG MaximumVector; - IRQ_DEVICE_POLICY AffinityPolicy; - IRQ_PRIORITY PriorityPolicy; - KAFFINITY TargetedProcessors; - } Interrupt; - - struct { - ULONG MinimumChannel; - ULONG MaximumChannel; - } Dma; - - struct { - ULONG Length; - ULONG Alignment; - PHYSICAL_ADDRESS MinimumAddress; - PHYSICAL_ADDRESS MaximumAddress; - } Generic; - - struct { - ULONG Data[3]; - } DevicePrivate; - - // - // Bus Number information. - // - - struct { - ULONG Length; - ULONG MinBusNumber; - ULONG MaxBusNumber; - ULONG Reserved; - } BusNumber; - - struct { - ULONG Priority; // use LCPRI_Xxx values in cfg.h - ULONG Reserved1; - ULONG Reserved2; - } ConfigData; - - // - // The following structures provide descriptions - // for memory resource requirement greater than MAXULONG - // - - struct { - ULONG Length40; - ULONG Alignment40; - PHYSICAL_ADDRESS MinimumAddress; - PHYSICAL_ADDRESS MaximumAddress; - } Memory40; - - struct { - ULONG Length48; - ULONG Alignment48; - PHYSICAL_ADDRESS MinimumAddress; - PHYSICAL_ADDRESS MaximumAddress; - } Memory48; - - struct { - ULONG Length64; - ULONG Alignment64; - PHYSICAL_ADDRESS MinimumAddress; - PHYSICAL_ADDRESS MaximumAddress; - } Memory64; - - - } u; - + UCHAR Option; + UCHAR Type; // use CM_RESOURCE_TYPE + UCHAR ShareDisposition; // use CM_SHARE_DISPOSITION + UCHAR Spare1; + USHORT Flags; // use CM resource flag defines + USHORT Spare2; // align + union { + struct { + ULONG Length; + ULONG Alignment; + PHYSICAL_ADDRESS MinimumAddress; + PHYSICAL_ADDRESS MaximumAddress; + } Port; + struct { + ULONG Length; + ULONG Alignment; + PHYSICAL_ADDRESS MinimumAddress; + PHYSICAL_ADDRESS MaximumAddress; + } Memory; + struct { + ULONG MinimumVector; + ULONG MaximumVector; + IRQ_DEVICE_POLICY AffinityPolicy; + IRQ_PRIORITY PriorityPolicy; + KAFFINITY TargetedProcessors; + } Interrupt; + struct { + ULONG MinimumChannel; + ULONG MaximumChannel; + } Dma; + struct { + ULONG Length; + ULONG Alignment; + PHYSICAL_ADDRESS MinimumAddress; + PHYSICAL_ADDRESS MaximumAddress; + } Generic; + struct { + ULONG Data[3]; + } DevicePrivate; + // + // Bus Number information. + // + struct { + ULONG Length; + ULONG MinBusNumber; + ULONG MaxBusNumber; + ULONG Reserved; + } BusNumber; + struct { + ULONG Priority; // use LCPRI_Xxx values in cfg.h + ULONG Reserved1; + ULONG Reserved2; + } ConfigData; + // + // The following structures provide descriptions + // for memory resource requirement greater than MAXULONG + // + struct { + ULONG Length40; + ULONG Alignment40; + PHYSICAL_ADDRESS MinimumAddress; + PHYSICAL_ADDRESS MaximumAddress; + } Memory40; + struct { + ULONG Length48; + ULONG Alignment48; + PHYSICAL_ADDRESS MinimumAddress; + PHYSICAL_ADDRESS MaximumAddress; + } Memory48; + struct { + ULONG Length64; + ULONG Alignment64; + PHYSICAL_ADDRESS MinimumAddress; + PHYSICAL_ADDRESS MaximumAddress; + } Memory64; + } u; } IO_RESOURCE_DESCRIPTOR, *PIO_RESOURCE_DESCRIPTOR; #include -#endif +#endif /* ! __BROKEN__ */ #ifdef __cplusplus } diff --git a/include/ddk/minitape.h b/include/ddk/minitape.h index 43b1b030a9b..6d8e5d223e7 100644 --- a/include/ddk/minitape.h +++ b/include/ddk/minitape.h @@ -22,15 +22,6 @@ #ifndef __MINITAPE_H #define __MINITAPE_H -/* Helper macro to enable gcc's extension. */ -#ifndef __GNU_EXTENSION -#ifdef __GNUC__ -#define __GNU_EXTENSION __extension__ -#else -#define __GNU_EXTENSION -#endif -#endif - #ifdef __cplusplus extern "C" { #endif @@ -45,176 +36,179 @@ extern "C" { #define MEDIA_CURRENTLY_MOUNTED 0x80000000 typedef enum _TAPE_STATUS { - TAPE_STATUS_SEND_SRB_AND_CALLBACK, - TAPE_STATUS_CALLBACK, - TAPE_STATUS_CHECK_TEST_UNIT_READY, - TAPE_STATUS_SUCCESS, - TAPE_STATUS_INSUFFICIENT_RESOURCES, - TAPE_STATUS_NOT_IMPLEMENTED, - TAPE_STATUS_INVALID_DEVICE_REQUEST, - TAPE_STATUS_INVALID_PARAMETER, - TAPE_STATUS_MEDIA_CHANGED, - TAPE_STATUS_BUS_RESET, - TAPE_STATUS_SETMARK_DETECTED, - TAPE_STATUS_FILEMARK_DETECTED, - TAPE_STATUS_BEGINNING_OF_MEDIA, - TAPE_STATUS_END_OF_MEDIA, - TAPE_STATUS_BUFFER_OVERFLOW, - TAPE_STATUS_NO_DATA_DETECTED, - TAPE_STATUS_EOM_OVERFLOW, - TAPE_STATUS_NO_MEDIA, - TAPE_STATUS_IO_DEVICE_ERROR, - TAPE_STATUS_UNRECOGNIZED_MEDIA, - TAPE_STATUS_DEVICE_NOT_READY, - TAPE_STATUS_MEDIA_WRITE_PROTECTED, - TAPE_STATUS_DEVICE_DATA_ERROR, - TAPE_STATUS_NO_SUCH_DEVICE, - TAPE_STATUS_INVALID_BLOCK_LENGTH, - TAPE_STATUS_IO_TIMEOUT, - TAPE_STATUS_DEVICE_NOT_CONNECTED, - TAPE_STATUS_DATA_OVERRUN, - TAPE_STATUS_DEVICE_BUSY, - TAPE_STATUS_REQUIRES_CLEANING, - TAPE_STATUS_CLEANER_CARTRIDGE_INSTALLED + TAPE_STATUS_SEND_SRB_AND_CALLBACK, + TAPE_STATUS_CALLBACK, + TAPE_STATUS_CHECK_TEST_UNIT_READY, + TAPE_STATUS_SUCCESS, + TAPE_STATUS_INSUFFICIENT_RESOURCES, + TAPE_STATUS_NOT_IMPLEMENTED, + TAPE_STATUS_INVALID_DEVICE_REQUEST, + TAPE_STATUS_INVALID_PARAMETER, + TAPE_STATUS_MEDIA_CHANGED, + TAPE_STATUS_BUS_RESET, + TAPE_STATUS_SETMARK_DETECTED, + TAPE_STATUS_FILEMARK_DETECTED, + TAPE_STATUS_BEGINNING_OF_MEDIA, + TAPE_STATUS_END_OF_MEDIA, + TAPE_STATUS_BUFFER_OVERFLOW, + TAPE_STATUS_NO_DATA_DETECTED, + TAPE_STATUS_EOM_OVERFLOW, + TAPE_STATUS_NO_MEDIA, + TAPE_STATUS_IO_DEVICE_ERROR, + TAPE_STATUS_UNRECOGNIZED_MEDIA, + TAPE_STATUS_DEVICE_NOT_READY, + TAPE_STATUS_MEDIA_WRITE_PROTECTED, + TAPE_STATUS_DEVICE_DATA_ERROR, + TAPE_STATUS_NO_SUCH_DEVICE, + TAPE_STATUS_INVALID_BLOCK_LENGTH, + TAPE_STATUS_IO_TIMEOUT, + TAPE_STATUS_DEVICE_NOT_CONNECTED, + TAPE_STATUS_DATA_OVERRUN, + TAPE_STATUS_DEVICE_BUSY, + TAPE_STATUS_REQUIRES_CLEANING, + TAPE_STATUS_CLEANER_CARTRIDGE_INSTALLED } TAPE_STATUS, *PTAPE_STATUS; #define INQUIRYDATABUFFERSIZE 36 + #ifndef _INQUIRYDATA_DEFINED /* also in scsi.h */ #define _INQUIRYDATA_DEFINED + typedef struct _INQUIRYDATA { - UCHAR DeviceType : 5; - UCHAR DeviceTypeQualifier : 3; - UCHAR DeviceTypeModifier : 7; - UCHAR RemovableMedia : 1; - __GNU_EXTENSION union { - UCHAR Versions; - __GNU_EXTENSION struct { - UCHAR ANSIVersion : 3; - UCHAR ECMAVersion : 3; - UCHAR ISOVersion : 2; - }; - }; - UCHAR ResponseDataFormat : 4; - UCHAR HiSupport : 1; - UCHAR NormACA : 1; - UCHAR TerminateTask : 1; - UCHAR AERC : 1; - UCHAR AdditionalLength; - UCHAR Reserved; - UCHAR Addr16 : 1; - UCHAR Addr32 : 1; - UCHAR AckReqQ: 1; - UCHAR MediumChanger : 1; - UCHAR MultiPort : 1; - UCHAR ReservedBit2 : 1; - UCHAR EnclosureServices : 1; - UCHAR ReservedBit3 : 1; - UCHAR SoftReset : 1; - UCHAR CommandQueue : 1; - UCHAR TransferDisable : 1; - UCHAR LinkedCommands : 1; - UCHAR Synchronous : 1; - UCHAR Wide16Bit : 1; - UCHAR Wide32Bit : 1; - UCHAR RelativeAddressing : 1; - UCHAR VendorId[8]; - UCHAR ProductId[16]; - UCHAR ProductRevisionLevel[4]; - UCHAR VendorSpecific[20]; - UCHAR Reserved3[40]; + UCHAR DeviceType:5; + UCHAR DeviceTypeQualifier:3; + UCHAR DeviceTypeModifier:7; + UCHAR RemovableMedia:1; + __GNU_EXTENSION union { + UCHAR Versions; + __GNU_EXTENSION struct { + UCHAR ANSIVersion:3; + UCHAR ECMAVersion:3; + UCHAR ISOVersion:2; + }; + }; + UCHAR ResponseDataFormat:4; + UCHAR HiSupport:1; + UCHAR NormACA:1; + UCHAR TerminateTask:1; + UCHAR AERC:1; + UCHAR AdditionalLength; + UCHAR Reserved; + UCHAR Addr16:1; + UCHAR Addr32:1; + UCHAR AckReqQ:1; + UCHAR MediumChanger:1; + UCHAR MultiPort:1; + UCHAR ReservedBit2:1; + UCHAR EnclosureServices:1; + UCHAR ReservedBit3:1; + UCHAR SoftReset:1; + UCHAR CommandQueue:1; + UCHAR TransferDisable:1; + UCHAR LinkedCommands:1; + UCHAR Synchronous:1; + UCHAR Wide16Bit:1; + UCHAR Wide32Bit:1; + UCHAR RelativeAddressing:1; + UCHAR VendorId[8]; + UCHAR ProductId[16]; + UCHAR ProductRevisionLevel[4]; + UCHAR VendorSpecific[20]; + UCHAR Reserved3[40]; } INQUIRYDATA, *PINQUIRYDATA; -#endif + +#endif /* _INQUIRYDATA_DEFINED */ typedef struct _MODE_CAPABILITIES_PAGE { - UCHAR PageCode : 6; - UCHAR Reserved1 : 2; - UCHAR PageLength; - UCHAR Reserved2[2]; - UCHAR RO : 1; - UCHAR Reserved3 : 4; - UCHAR SPREV : 1; - UCHAR Reserved4 : 2; - UCHAR Reserved5 : 3; - UCHAR EFMT : 1; - UCHAR Reserved6 : 1; - UCHAR QFA : 1; - UCHAR Reserved7 : 2; - UCHAR LOCK : 1; - UCHAR LOCKED : 1; - UCHAR PREVENT : 1; - UCHAR UNLOAD : 1; - UCHAR Reserved8 : 2; - UCHAR ECC : 1; - UCHAR CMPRS : 1; - UCHAR Reserved9 : 1; - UCHAR BLK512 : 1; - UCHAR BLK1024 : 1; - UCHAR Reserved10 : 4; - UCHAR SLOWB : 1; - UCHAR MaximumSpeedSupported[2]; - UCHAR MaximumStoredDefectedListEntries[2]; - UCHAR ContinuousTransferLimit[2]; - UCHAR CurrentSpeedSelected[2]; - UCHAR BufferSize[2]; - UCHAR Reserved11[2]; + UCHAR PageCode:6; + UCHAR Reserved1:2; + UCHAR PageLength; + UCHAR Reserved2[2]; + UCHAR RO:1; + UCHAR Reserved3:4; + UCHAR SPREV:1; + UCHAR Reserved4:2; + UCHAR Reserved5:3; + UCHAR EFMT:1; + UCHAR Reserved6:1; + UCHAR QFA:1; + UCHAR Reserved7:2; + UCHAR LOCK:1; + UCHAR LOCKED:1; + UCHAR PREVENT:1; + UCHAR UNLOAD:1; + UCHAR Reserved8:2; + UCHAR ECC:1; + UCHAR CMPRS:1; + UCHAR Reserved9:1; + UCHAR BLK512:1; + UCHAR BLK1024:1; + UCHAR Reserved10:4; + UCHAR SLOWB:1; + UCHAR MaximumSpeedSupported[2]; + UCHAR MaximumStoredDefectedListEntries[2]; + UCHAR ContinuousTransferLimit[2]; + UCHAR CurrentSpeedSelected[2]; + UCHAR BufferSize[2]; + UCHAR Reserved11[2]; } MODE_CAPABILITIES_PAGE, *PMODE_CAPABILITIES_PAGE; typedef BOOLEAN NTAPI (*TAPE_VERIFY_INQUIRY_ROUTINE)( - IN PINQUIRYDATA InquiryData, - IN PMODE_CAPABILITIES_PAGE ModeCapabilitiesPage); + IN PINQUIRYDATA InquiryData, + IN PMODE_CAPABILITIES_PAGE ModeCapabilitiesPage); typedef VOID NTAPI (*TAPE_EXTENSION_INIT_ROUTINE)( - IN PVOID MinitapeExtension, - IN PINQUIRYDATA InquiryData, - IN PMODE_CAPABILITIES_PAGE ModeCapabilitiesPage); + IN PVOID MinitapeExtension, + IN PINQUIRYDATA InquiryData, + IN PMODE_CAPABILITIES_PAGE ModeCapabilitiesPage); typedef VOID NTAPI (*TAPE_ERROR_ROUTINE)( - IN PVOID MinitapeExtension, - IN PSCSI_REQUEST_BLOCK Srb, - IN OUT PTAPE_STATUS TapeStatus); + IN PVOID MinitapeExtension, + IN PSCSI_REQUEST_BLOCK Srb, + IN OUT PTAPE_STATUS TapeStatus); typedef TAPE_STATUS NTAPI (*TAPE_PROCESS_COMMAND_ROUTINE)( - IN OUT PVOID MinitapeExtension, - IN OUT PVOID CommandExtension, - IN OUT PVOID CommandParameters, - IN OUT PSCSI_REQUEST_BLOCK Srb, - IN ULONG CallNumber, - IN TAPE_STATUS StatusOfLastCommand, - IN OUT PULONG RetryFlags); + IN OUT PVOID MinitapeExtension, + IN OUT PVOID CommandExtension, + IN OUT PVOID CommandParameters, + IN OUT PSCSI_REQUEST_BLOCK Srb, + IN ULONG CallNumber, + IN TAPE_STATUS StatusOfLastCommand, + IN OUT PULONG RetryFlags); #define TAPE_RETRY_MASK 0x0000FFFF #define IGNORE_ERRORS 0x00010000 #define RETURN_ERRORS 0x00020000 typedef struct _TAPE_INIT_DATA { - TAPE_VERIFY_INQUIRY_ROUTINE VerifyInquiry; - BOOLEAN QueryModeCapabilitiesPage; - ULONG MinitapeExtensionSize; - TAPE_EXTENSION_INIT_ROUTINE ExtensionInit; - ULONG DefaultTimeOutValue; - TAPE_ERROR_ROUTINE TapeError; - ULONG CommandExtensionSize; - TAPE_PROCESS_COMMAND_ROUTINE CreatePartition; - TAPE_PROCESS_COMMAND_ROUTINE Erase; - TAPE_PROCESS_COMMAND_ROUTINE GetDriveParameters; - TAPE_PROCESS_COMMAND_ROUTINE GetMediaParameters; - TAPE_PROCESS_COMMAND_ROUTINE GetPosition; - TAPE_PROCESS_COMMAND_ROUTINE GetStatus; - TAPE_PROCESS_COMMAND_ROUTINE Prepare; - TAPE_PROCESS_COMMAND_ROUTINE SetDriveParameters; - TAPE_PROCESS_COMMAND_ROUTINE SetMediaParameters; - TAPE_PROCESS_COMMAND_ROUTINE SetPosition; - TAPE_PROCESS_COMMAND_ROUTINE WriteMarks; - TAPE_PROCESS_COMMAND_ROUTINE PreProcessReadWrite; /* optional */ + TAPE_VERIFY_INQUIRY_ROUTINE VerifyInquiry; + BOOLEAN QueryModeCapabilitiesPage; + ULONG MinitapeExtensionSize; + TAPE_EXTENSION_INIT_ROUTINE ExtensionInit; + ULONG DefaultTimeOutValue; + TAPE_ERROR_ROUTINE TapeError; + ULONG CommandExtensionSize; + TAPE_PROCESS_COMMAND_ROUTINE CreatePartition; + TAPE_PROCESS_COMMAND_ROUTINE Erase; + TAPE_PROCESS_COMMAND_ROUTINE GetDriveParameters; + TAPE_PROCESS_COMMAND_ROUTINE GetMediaParameters; + TAPE_PROCESS_COMMAND_ROUTINE GetPosition; + TAPE_PROCESS_COMMAND_ROUTINE GetStatus; + TAPE_PROCESS_COMMAND_ROUTINE Prepare; + TAPE_PROCESS_COMMAND_ROUTINE SetDriveParameters; + TAPE_PROCESS_COMMAND_ROUTINE SetMediaParameters; + TAPE_PROCESS_COMMAND_ROUTINE SetPosition; + TAPE_PROCESS_COMMAND_ROUTINE WriteMarks; + TAPE_PROCESS_COMMAND_ROUTINE PreProcessReadWrite; /* optional */ } TAPE_INIT_DATA, *PTAPE_INIT_DATA; typedef struct _TAPE_PHYS_POSITION { - ULONG SeekBlockAddress; - ULONG SpaceBlockCount; + ULONG SeekBlockAddress; + ULONG SpaceBlockCount; } TAPE_PHYS_POSITION, PTAPE_PHYS_POSITION; #pragma pack(pop) diff --git a/include/ddk/mountmgr.h b/include/ddk/mountmgr.h index d2a3a30092d..5d29083fdd7 100644 --- a/include/ddk/mountmgr.h +++ b/include/ddk/mountmgr.h @@ -15,13 +15,12 @@ DEFINE_GUID(MOUNTDEV_MOUNTED_DEVICE_GUID, 0x53F5630D, 0xB6BF, 0x11D0, 0x94, 0xF2 #define IOCTL_MOUNTMGR_DEFINE_UNIX_DRIVE CTL_CODE(MOUNTMGRCONTROLTYPE, 32, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) #define IOCTL_MOUNTMGR_QUERY_UNIX_DRIVE CTL_CODE(MOUNTMGRCONTROLTYPE, 33, METHOD_BUFFERED, FILE_READ_ACCESS) -struct mountmgr_unix_drive -{ - ULONG size; - ULONG type; - WCHAR letter; - USHORT mount_point_offset; - USHORT device_offset; +struct mountmgr_unix_drive { + ULONG size; + ULONG type; + WCHAR letter; + USHORT mount_point_offset; + USHORT device_offset; }; #define IOCTL_MOUNTMGR_CREATE_POINT \ @@ -51,20 +50,22 @@ struct mountmgr_unix_drive #define IOCTL_MOUNTDEV_QUERY_DEVICE_NAME \ CTL_CODE(MOUNTDEVCONTROLTYPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define MOUNTMGR_IS_DRIVE_LETTER(s) ((s)->Length == 28 && (s)->Buffer[0] == '\\' && (s)->Buffer[1] == 'D' && \ - (s)->Buffer[2] == 'o' && (s)->Buffer[3] == 's' && (s)->Buffer[4] == 'D' && \ - (s)->Buffer[5] == 'e' && \ (s)->Buffer[6] == 'v' && (s)->Buffer[7] == 'i' && \ - (s)->Buffer[8] == 'c' && (s)->Buffer[9] == 'e' && (s)->Buffer[10] == 's' && \ - (s)->Buffer[11] == '\\' && (s)->Buffer[12] >= 'A' && \ - (s)->Buffer[12] <= 'Z' && (s)->Buffer[13] == ':') +#define MOUNTMGR_IS_DRIVE_LETTER(s) \ + ((s)->Length == 28 && (s)->Buffer[0] == '\\' && (s)->Buffer[1] == 'D' && \ + (s)->Buffer[2] == 'o' && (s)->Buffer[3] == 's' && (s)->Buffer[4] == 'D' && \ + (s)->Buffer[5] == 'e' && \ (s)->Buffer[6] == 'v' && (s)->Buffer[7] == 'i' && \ + (s)->Buffer[8] == 'c' && (s)->Buffer[9] == 'e' && (s)->Buffer[10] == 's' && \ + (s)->Buffer[11] == '\\' && (s)->Buffer[12] >= 'A' && \ + (s)->Buffer[12] <= 'Z' && (s)->Buffer[13] == ':') -#define MOUNTMGR_IS_VOLUME_NAME(s) (((s)->Length == 96 || ((s)->Length == 98 && (s)->Buffer[48] == '\\')) && \ - (s)->Buffer[0] == '\\'&& ((s)->Buffer[1] == '?' || (s)->Buffer[1] == '\\') && \ - (s)->Buffer[2] == '?' && (s)->Buffer[3] == '\\' && (s)->Buffer[4] == 'V' && \ - (s)->Buffer[5] == 'o' && (s)->Buffer[6] == 'l' && (s)->Buffer[7] == 'u' && \ - (s)->Buffer[8] == 'm' && (s)->Buffer[9] == 'e' && (s)->Buffer[10] == '{' && \ - (s)->Buffer[19] == '-' && (s)->Buffer[24] == '-' && (s)->Buffer[29] == '-' && \ - (s)->Buffer[34] == '-' && (s)->Buffer[47] == '}') +#define MOUNTMGR_IS_VOLUME_NAME(s) \ + (((s)->Length == 96 || ((s)->Length == 98 && (s)->Buffer[48] == '\\')) && \ + (s)->Buffer[0] == '\\'&& ((s)->Buffer[1] == '?' || (s)->Buffer[1] == '\\') && \ + (s)->Buffer[2] == '?' && (s)->Buffer[3] == '\\' && (s)->Buffer[4] == 'V' && \ + (s)->Buffer[5] == 'o' && (s)->Buffer[6] == 'l' && (s)->Buffer[7] == 'u' && \ + (s)->Buffer[8] == 'm' && (s)->Buffer[9] == 'e' && (s)->Buffer[10] == '{' && \ + (s)->Buffer[19] == '-' && (s)->Buffer[24] == '-' && (s)->Buffer[29] == '-' && \ + (s)->Buffer[34] == '-' && (s)->Buffer[47] == '}') typedef struct _MOUNTMGR_CREATE_POINT_INPUT { USHORT SymbolicLinkNameOffset; @@ -128,10 +129,14 @@ typedef struct _MOUNTDEV_NAME { #define IOCTL_MOUNTMGR_QUERY_DOS_VOLUME_PATHS \ CTL_CODE(MOUNTMGRCONTROLTYPE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define MOUNTMGR_IS_DOS_VOLUME_NAME(s) (MOUNTMGR_IS_VOLUME_NAME(s) && (s)->Length == 96 && (s)->Buffer[1] == '\\') -#define MOUNTMGR_IS_DOS_VOLUME_NAME_WB(s) (MOUNTMGR_IS_VOLUME_NAME(s) && (s)->Length == 98 && (s)->Buffer[1] == '\\') -#define MOUNTMGR_IS_NT_VOLUME_NAME(s) ( MOUNTMGR_IS_VOLUME_NAME(s) && (s)->Length == 96 && (s)->Buffer[1] == '?') -#define MOUNTMGR_IS_NT_VOLUME_NAME_WB(s) (MOUNTMGR_IS_VOLUME_NAME(s) && (s)->Length == 98 && (s)->Buffer[1] == '?') +#define MOUNTMGR_IS_DOS_VOLUME_NAME(s) \ + (MOUNTMGR_IS_VOLUME_NAME(s) && (s)->Length == 96 && (s)->Buffer[1] == '\\') +#define MOUNTMGR_IS_DOS_VOLUME_NAME_WB(s) \ + (MOUNTMGR_IS_VOLUME_NAME(s) && (s)->Length == 98 && (s)->Buffer[1] == '\\') +#define MOUNTMGR_IS_NT_VOLUME_NAME(s) \ + ( MOUNTMGR_IS_VOLUME_NAME(s) && (s)->Length == 96 && (s)->Buffer[1] == '?') +#define MOUNTMGR_IS_NT_VOLUME_NAME_WB(s) \ + (MOUNTMGR_IS_VOLUME_NAME(s) && (s)->Length == 98 && (s)->Buffer[1] == '?') typedef struct _MOUNTMGR_VOLUME_PATHS { ULONG MultiSzLength; @@ -171,7 +176,7 @@ typedef struct _MOUNTMGR_SET_AUTO_MOUNT { #define IOCTL_MOUNTMGR_TRACELOG_CACHE \ CTL_CODE(MOUNTMGRCONTROLTYPE, 18, METHOD_BUFFERED, FILE_READ_ACCESS) -#endif +#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ #endif /* _MOUNTMGR_ */ diff --git a/include/ddk/ndis.h b/include/ddk/ndis.h index 4ace410ca2a..1df0998f115 100644 --- a/include/ddk/ndis.h +++ b/include/ddk/ndis.h @@ -29,22 +29,13 @@ * NDIS51_MINIPORT - Building NDIS 5.1 miniport driver */ -#ifndef __NDIS_H -#define __NDIS_H +#ifndef _NDIS_ +#define _NDIS_ #ifndef NDIS_WDM #define NDIS_WDM 0 #endif -/* Helper macro to enable gcc's extension. */ -#ifndef __GNU_EXTENSION -#ifdef __GNUC__ -#define __GNU_EXTENSION __extension__ -#else -#define __GNU_EXTENSION -#endif -#endif - #include "ntddk.h" #include "netpnp.h" #include "ntstatus.h" @@ -280,7 +271,7 @@ typedef struct _NET_PNP_EVENT { #else #define NDIS_SUPPORT_NDIS61 0 #endif -#endif // !defined(NDIS_SUPPORT_NDIS61) +#endif /* !defined(NDIS_SUPPORT_NDIS61) */ #if !defined(NDIS_SUPPORT_NDIS620) @@ -312,9 +303,9 @@ typedef struct _NET_PNP_EVENT { #endif #if defined(NDIS_WRAPPER) - #define NDISAPI +#define NDISAPI #else - #define NDISAPI DECLSPEC_IMPORT +#define NDISAPI DECLSPEC_IMPORT #endif typedef PVOID QUEUED_CLOSE; //FIXME : Doesn't exist in public headers @@ -695,7 +686,7 @@ typedef CM_PARTIAL_RESOURCE_LIST NDIS_RESOURCE_LIST, *PNDIS_RESOURCE_LIST; #define NDIS_GUID_TO_STATUS 0x00000002 #define NDIS_GUID_ANSI_STRING 0x00000004 #define NDIS_GUID_UNICODE_STRING 0x00000008 -#define NDIS_GUID_ARRAY 0x00000010 +#define NDIS_GUID_ARRAY 0x00000010 #if NDIS_LEGACY_DRIVER @@ -1002,7 +993,7 @@ typedef enum _NDIS_PNP_DEVICE_STATE { #define NDIS_DEVICE_NOT_STOPPABLE 0x00000001 #define NDIS_DEVICE_NOT_REMOVEABLE 0x00000002 -#define NDIS_DEVICE_NOT_SUSPENDABLE 0x00000004 +#define NDIS_DEVICE_NOT_SUSPENDABLE 0x00000004 #define NDIS_DEVICE_DISABLE_PM 0x00000008 #define NDIS_DEVICE_DISABLE_WAKE_UP 0x00000010 #define NDIS_DEVICE_DISABLE_WAKE_ON_RECONNECT 0x00000020 @@ -1053,12 +1044,12 @@ typedef struct _CO_CALL_MANAGER_PARAMETERS { /* CO_MEDIA_PARAMETERS.Flags constants */ #define RECEIVE_TIME_INDICATION 0x00000001 #define USE_TIME_STAMPS 0x00000002 -#define TRANSMIT_VC 0x00000004 +#define TRANSMIT_VC 0x00000004 #define RECEIVE_VC 0x00000008 #define INDICATE_ERRED_PACKETS 0x00000010 #define INDICATE_END_OF_TX 0x00000020 #define RESERVE_RESOURCES_VC 0x00000040 -#define ROUND_DOWN_FLOW 0x00000080 +#define ROUND_DOWN_FLOW 0x00000080 #define ROUND_UP_FLOW 0x00000100 typedef struct _CO_MEDIA_PARAMETERS { @@ -5987,6 +5978,6 @@ typedef NDIS_WAN_MAC_CHARACTERISTICS *PNDIS_WAN_MAC_CHARACTERISTICS; } #endif -#endif /* __NDIS_H */ +#endif /* _NDIS_ */ /* EOF */ diff --git a/include/ddk/ndistapi.h b/include/ddk/ndistapi.h index 2b432fc7bfb..68c15c2a0f7 100644 --- a/include/ddk/ndistapi.h +++ b/include/ddk/ndistapi.h @@ -20,8 +20,10 @@ * */ -#ifndef __NDISTAPI_H -#define __NDISTAPI_H +#pragma once + +#ifndef _NDIS_TAPI_ +#define _NDIS_TAPI_ #include "ndis.h" @@ -81,7 +83,7 @@ typedef ULONG_PTR HDRV_CALL; #define NDIS_STATUS_TAPI_DISCONNECTMODE_CONGESTION ((NDIS_STATUS)0xC0012029L) #define NDIS_STATUS_TAPI_DISCONNECTMODE_INCOMPATIBLE ((NDIS_STATUS)0xC001202AL) #define NDIS_STATUS_TAPI_DISCONNECTMODE_UNAVAIL ((NDIS_STATUS)0xC001202BL) -#define NDIS_STATUS_TAPI_RECV_DIGIT ((NDIS_STATUS)0x40010020L) +#define NDIS_STATUS_TAPI_RECV_DIGIT ((NDIS_STATUS)0x40010020L) #define LINE_ADDRESSSTATE 0L #define LINE_CALLINFO 1L @@ -603,615 +605,612 @@ typedef ULONG_PTR HDRV_CALL; #define LINETRANSLATERESULT_NOTRANSLATION 0x00000800 #endif - -typedef struct _NDIS_VAR_DATA_DESC { - USHORT Length; - USHORT MaximumLength; - LONG Offset; +typedef struct _NDIS_VAR_DATA_DESC { + USHORT Length; + USHORT MaximumLength; + LONG Offset; } NDIS_VAR_DATA_DESC, *PNDIS_VAR_DATA_DESC; typedef struct _LINE_DIAL_PARAMS { - ULONG ulDialPause; - ULONG ulDialSpeed; - ULONG ulDigitDuration; - ULONG ulWaitForDialtone; + ULONG ulDialPause; + ULONG ulDialSpeed; + ULONG ulDigitDuration; + ULONG ulWaitForDialtone; } LINE_DIAL_PARAMS, *PLINE_DIAL_PARAMS; typedef struct _LINE_ADDRESS_CAPS { - ULONG ulTotalSize; - ULONG ulNeededSize; - ULONG ulUsedSize; - ULONG ulLineDeviceID; - ULONG ulAddressSize; - ULONG ulAddressOffset; - ULONG ulDevSpecificSize; - ULONG ulDevSpecificOffset; - ULONG ulAddressSharing; - ULONG ulAddressStates; - ULONG ulCallInfoStates; - ULONG ulCallerIDFlags; - ULONG ulCalledIDFlags; - ULONG ulConnectedIDFlags; - ULONG ulRedirectionIDFlags; - ULONG ulRedirectingIDFlags; - ULONG ulCallStates; - ULONG ulDialToneModes; - ULONG ulBusyModes; - ULONG ulSpecialInfo; - ULONG ulDisconnectModes; - ULONG ulMaxNumActiveCalls; - ULONG ulMaxNumOnHoldCalls; - ULONG ulMaxNumOnHoldPendingCalls; - ULONG ulMaxNumConference; - ULONG ulMaxNumTransConf; - ULONG ulAddrCapFlags; - ULONG ulCallFeatures; - ULONG ulRemoveFromConfCaps; - ULONG ulRemoveFromConfState; - ULONG ulTransferModes; - ULONG ulParkModes; - ULONG ulForwardModes; - ULONG ulMaxForwardEntries; - ULONG ulMaxSpecificEntries; - ULONG ulMinFwdNumRings; - ULONG ulMaxFwdNumRings; - ULONG ulMaxCallCompletions; - ULONG ulCallCompletionConds; - ULONG ulCallCompletionModes; - ULONG ulNumCompletionMessages; - ULONG ulCompletionMsgTextEntrySize; - ULONG ulCompletionMsgTextSize; - ULONG ulCompletionMsgTextOffset; + ULONG ulTotalSize; + ULONG ulNeededSize; + ULONG ulUsedSize; + ULONG ulLineDeviceID; + ULONG ulAddressSize; + ULONG ulAddressOffset; + ULONG ulDevSpecificSize; + ULONG ulDevSpecificOffset; + ULONG ulAddressSharing; + ULONG ulAddressStates; + ULONG ulCallInfoStates; + ULONG ulCallerIDFlags; + ULONG ulCalledIDFlags; + ULONG ulConnectedIDFlags; + ULONG ulRedirectionIDFlags; + ULONG ulRedirectingIDFlags; + ULONG ulCallStates; + ULONG ulDialToneModes; + ULONG ulBusyModes; + ULONG ulSpecialInfo; + ULONG ulDisconnectModes; + ULONG ulMaxNumActiveCalls; + ULONG ulMaxNumOnHoldCalls; + ULONG ulMaxNumOnHoldPendingCalls; + ULONG ulMaxNumConference; + ULONG ulMaxNumTransConf; + ULONG ulAddrCapFlags; + ULONG ulCallFeatures; + ULONG ulRemoveFromConfCaps; + ULONG ulRemoveFromConfState; + ULONG ulTransferModes; + ULONG ulParkModes; + ULONG ulForwardModes; + ULONG ulMaxForwardEntries; + ULONG ulMaxSpecificEntries; + ULONG ulMinFwdNumRings; + ULONG ulMaxFwdNumRings; + ULONG ulMaxCallCompletions; + ULONG ulCallCompletionConds; + ULONG ulCallCompletionModes; + ULONG ulNumCompletionMessages; + ULONG ulCompletionMsgTextEntrySize; + ULONG ulCompletionMsgTextSize; + ULONG ulCompletionMsgTextOffset; #if (NDIS_TAPI_CURRENT_VERSION >= 0x00010004) - ULONG ulAddressFeatures; + ULONG ulAddressFeatures; #if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000) - ULONG ulPredictiveAutoTransferStates; - ULONG ulNumCallTreatments; - ULONG ulCallTreatmentListSize; - ULONG ulCallTreatmentListOffset; - ULONG ulDeviceClassesSize; - ULONG ulDeviceClassesOffset; - ULONG ulMaxCallDataSize; - ULONG ulCallFeatures2; - ULONG ulMaxNoAnswerTimeout; - ULONG ulConnectedModes; - ULONG ulOfferingModes; - ULONG ulAvailableMediaModes; -#endif + ULONG ulPredictiveAutoTransferStates; + ULONG ulNumCallTreatments; + ULONG ulCallTreatmentListSize; + ULONG ulCallTreatmentListOffset; + ULONG ulDeviceClassesSize; + ULONG ulDeviceClassesOffset; + ULONG ulMaxCallDataSize; + ULONG ulCallFeatures2; + ULONG ulMaxNoAnswerTimeout; + ULONG ulConnectedModes; + ULONG ulOfferingModes; + ULONG ulAvailableMediaModes; #endif +#endif /* (NDIS_TAPI_CURRENT_VERSION >= 0x00010004) */ } LINE_ADDRESS_CAPS, *PLINE_ADDRESS_CAPS; typedef struct _LINE_ADDRESS_STATUS { - ULONG ulTotalSize; - ULONG ulNeededSize; - ULONG ulUsedSize; - ULONG ulNumInUse; - ULONG ulNumActiveCalls; - ULONG ulNumOnHoldCalls; - ULONG ulNumOnHoldPendCalls; - ULONG ulAddressFeatures; - ULONG ulNumRingsNoAnswer; - ULONG ulForwardNumEntries; - ULONG ulForwardSize; - ULONG ulForwardOffset; - ULONG ulTerminalModesSize; - ULONG ulTerminalModesOffset; - ULONG ulDevSpecificSize; - ULONG ulDevSpecificOffset; + ULONG ulTotalSize; + ULONG ulNeededSize; + ULONG ulUsedSize; + ULONG ulNumInUse; + ULONG ulNumActiveCalls; + ULONG ulNumOnHoldCalls; + ULONG ulNumOnHoldPendCalls; + ULONG ulAddressFeatures; + ULONG ulNumRingsNoAnswer; + ULONG ulForwardNumEntries; + ULONG ulForwardSize; + ULONG ulForwardOffset; + ULONG ulTerminalModesSize; + ULONG ulTerminalModesOffset; + ULONG ulDevSpecificSize; + ULONG ulDevSpecificOffset; } LINE_ADDRESS_STATUS, *PLINE_ADDRESS_STATUS; typedef struct _LINE_CALL_INFO { - ULONG ulTotalSize; - ULONG ulNeededSize; - ULONG ulUsedSize; - ULONG hLine; - ULONG ulLineDeviceID; - ULONG ulAddressID; - ULONG ulBearerMode; - ULONG ulRate; - ULONG ulMediaMode; - ULONG ulAppSpecific; - ULONG ulCallID; - ULONG ulRelatedCallID; - ULONG ulCallParamFlags; - ULONG ulCallStates; - ULONG ulMonitorDigitModes; - ULONG ulMonitorMediaModes; - LINE_DIAL_PARAMS DialParams; - ULONG ulOrigin; - ULONG ulReason; - ULONG ulCompletionID; - ULONG ulNumOwners; - ULONG ulNumMonitors; - ULONG ulCountryCode; - ULONG ulTrunk; - ULONG ulCallerIDFlags; - ULONG ulCallerIDSize; - ULONG ulCallerIDOffset; - ULONG ulCallerIDNameSize; - ULONG ulCallerIDNameOffset; - ULONG ulCalledIDFlags; - ULONG ulCalledIDSize; - ULONG ulCalledIDOffset; - ULONG ulCalledIDNameSize; - ULONG ulCalledIDNameOffset; - ULONG ulConnectedIDFlags; - ULONG ulConnectedIDSize; - ULONG ulConnectedIDOffset; - ULONG ulConnectedIDNameSize; - ULONG ulConnectedIDNameOffset; - ULONG ulRedirectionIDFlags; - ULONG ulRedirectionIDSize; - ULONG ulRedirectionIDOffset; - ULONG ulRedirectionIDNameSize; - ULONG ulRedirectionIDNameOffset; - ULONG ulRedirectingIDFlags; - ULONG ulRedirectingIDSize; - ULONG ulRedirectingIDOffset; - ULONG ulRedirectingIDNameSize; - ULONG ulRedirectingIDNameOffset; - ULONG ulAppNameSize; - ULONG ulAppNameOffset; - ULONG ulDisplayableAddressSize; - ULONG ulDisplayableAddressOffset; - ULONG ulCalledPartySize; - ULONG ulCalledPartyOffset; - ULONG ulCommentSize; - ULONG ulCommentOffset; - ULONG ulDisplaySize; - ULONG ulDisplayOffset; - ULONG ulUserUserInfoSize; - ULONG ulUserUserInfoOffset; - ULONG ulHighLevelCompSize; - ULONG ulHighLevelCompOffset; - ULONG ulLowLevelCompSize; - ULONG ulLowLevelCompOffset; - ULONG ulChargingInfoSize; - ULONG ulChargingInfoOffset; - ULONG ulTerminalModesSize; - ULONG ulTerminalModesOffset; - ULONG ulDevSpecificSize; - ULONG ulDevSpecificOffset; + ULONG ulTotalSize; + ULONG ulNeededSize; + ULONG ulUsedSize; + ULONG hLine; + ULONG ulLineDeviceID; + ULONG ulAddressID; + ULONG ulBearerMode; + ULONG ulRate; + ULONG ulMediaMode; + ULONG ulAppSpecific; + ULONG ulCallID; + ULONG ulRelatedCallID; + ULONG ulCallParamFlags; + ULONG ulCallStates; + ULONG ulMonitorDigitModes; + ULONG ulMonitorMediaModes; + LINE_DIAL_PARAMS DialParams; + ULONG ulOrigin; + ULONG ulReason; + ULONG ulCompletionID; + ULONG ulNumOwners; + ULONG ulNumMonitors; + ULONG ulCountryCode; + ULONG ulTrunk; + ULONG ulCallerIDFlags; + ULONG ulCallerIDSize; + ULONG ulCallerIDOffset; + ULONG ulCallerIDNameSize; + ULONG ulCallerIDNameOffset; + ULONG ulCalledIDFlags; + ULONG ulCalledIDSize; + ULONG ulCalledIDOffset; + ULONG ulCalledIDNameSize; + ULONG ulCalledIDNameOffset; + ULONG ulConnectedIDFlags; + ULONG ulConnectedIDSize; + ULONG ulConnectedIDOffset; + ULONG ulConnectedIDNameSize; + ULONG ulConnectedIDNameOffset; + ULONG ulRedirectionIDFlags; + ULONG ulRedirectionIDSize; + ULONG ulRedirectionIDOffset; + ULONG ulRedirectionIDNameSize; + ULONG ulRedirectionIDNameOffset; + ULONG ulRedirectingIDFlags; + ULONG ulRedirectingIDSize; + ULONG ulRedirectingIDOffset; + ULONG ulRedirectingIDNameSize; + ULONG ulRedirectingIDNameOffset; + ULONG ulAppNameSize; + ULONG ulAppNameOffset; + ULONG ulDisplayableAddressSize; + ULONG ulDisplayableAddressOffset; + ULONG ulCalledPartySize; + ULONG ulCalledPartyOffset; + ULONG ulCommentSize; + ULONG ulCommentOffset; + ULONG ulDisplaySize; + ULONG ulDisplayOffset; + ULONG ulUserUserInfoSize; + ULONG ulUserUserInfoOffset; + ULONG ulHighLevelCompSize; + ULONG ulHighLevelCompOffset; + ULONG ulLowLevelCompSize; + ULONG ulLowLevelCompOffset; + ULONG ulChargingInfoSize; + ULONG ulChargingInfoOffset; + ULONG ulTerminalModesSize; + ULONG ulTerminalModesOffset; + ULONG ulDevSpecificSize; + ULONG ulDevSpecificOffset; #if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000) - ULONG ulCallTreatment; - ULONG ulCallDataSize; - ULONG ulCallDataOffset; - ULONG ulSendingFlowspecSize; - ULONG ulSendingFlowspecOffset; - ULONG ulReceivingFlowspecSize; - ULONG ulReceivingFlowspecOffset; + ULONG ulCallTreatment; + ULONG ulCallDataSize; + ULONG ulCallDataOffset; + ULONG ulSendingFlowspecSize; + ULONG ulSendingFlowspecOffset; + ULONG ulReceivingFlowspecSize; + ULONG ulReceivingFlowspecOffset; #endif #if (NDIS_TAPI_CURRENT_VERSION >= 0x00030000) - ULONG ulCallerIDAddressType; - ULONG ulCalledIDAddressType; - ULONG ulConnectedIDAddressType; - ULONG ulRedirectionIDAddressType; - ULONG ulRedirectingIDAddressType; + ULONG ulCallerIDAddressType; + ULONG ulCalledIDAddressType; + ULONG ulConnectedIDAddressType; + ULONG ulRedirectionIDAddressType; + ULONG ulRedirectingIDAddressType; #endif } LINE_CALL_INFO, *PLINE_CALL_INFO; typedef struct _LINE_CALL_PARAMS { - ULONG ulTotalSize; - ULONG ulBearerMode; - ULONG ulMinRate; - ULONG ulMaxRate; - ULONG ulMediaMode; - ULONG ulCallParamFlags; - ULONG ulAddressMode; - ULONG ulAddressID; - LINE_DIAL_PARAMS DialParams; - ULONG ulOrigAddressSize; - ULONG ulOrigAddressOffset; - ULONG ulDisplayableAddressSize; - ULONG ulDisplayableAddressOffset; - ULONG ulCalledPartySize; - ULONG ulCalledPartyOffset; - ULONG ulCommentSize; - ULONG ulCommentOffset; - ULONG ulUserUserInfoSize; - ULONG ulUserUserInfoOffset; - ULONG ulHighLevelCompSize; - ULONG ulHighLevelCompOffset; - ULONG ulLowLevelCompSize; - ULONG ulLowLevelCompOffset; - ULONG ulDevSpecificSize; - ULONG ulDevSpecificOffset; + ULONG ulTotalSize; + ULONG ulBearerMode; + ULONG ulMinRate; + ULONG ulMaxRate; + ULONG ulMediaMode; + ULONG ulCallParamFlags; + ULONG ulAddressMode; + ULONG ulAddressID; + LINE_DIAL_PARAMS DialParams; + ULONG ulOrigAddressSize; + ULONG ulOrigAddressOffset; + ULONG ulDisplayableAddressSize; + ULONG ulDisplayableAddressOffset; + ULONG ulCalledPartySize; + ULONG ulCalledPartyOffset; + ULONG ulCommentSize; + ULONG ulCommentOffset; + ULONG ulUserUserInfoSize; + ULONG ulUserUserInfoOffset; + ULONG ulHighLevelCompSize; + ULONG ulHighLevelCompOffset; + ULONG ulLowLevelCompSize; + ULONG ulLowLevelCompOffset; + ULONG ulDevSpecificSize; + ULONG ulDevSpecificOffset; #if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000) - ULONG ulPredictiveAutoTransferStates; - ULONG ulTargetAddressSize; - ULONG ulTargetAddressOffset; - ULONG ulSendingFlowspecSize; - ULONG ulSendingFlowspecOffset; - ULONG ulReceivingFlowspecSize; - ULONG ulReceivingFlowspecOffset; - ULONG ulDeviceClassSize; - ULONG ulDeviceClassOffset; - ULONG ulDeviceConfigSize; - ULONG ulDeviceConfigOffset; - ULONG ulCallDataSize; - ULONG ulCallDataOffset; - ULONG ulNoAnswerTimeout; - ULONG ulCallingPartyIDSize; - ULONG ulCallingPartyIDOffset; + ULONG ulPredictiveAutoTransferStates; + ULONG ulTargetAddressSize; + ULONG ulTargetAddressOffset; + ULONG ulSendingFlowspecSize; + ULONG ulSendingFlowspecOffset; + ULONG ulReceivingFlowspecSize; + ULONG ulReceivingFlowspecOffset; + ULONG ulDeviceClassSize; + ULONG ulDeviceClassOffset; + ULONG ulDeviceConfigSize; + ULONG ulDeviceConfigOffset; + ULONG ulCallDataSize; + ULONG ulCallDataOffset; + ULONG ulNoAnswerTimeout; + ULONG ulCallingPartyIDSize; + ULONG ulCallingPartyIDOffset; #endif #if (NDIS_TAPI_CURRENT_VERSION >= 0x00030000) - ULONG ulAddressType; + ULONG ulAddressType; #endif } LINE_CALL_PARAMS, *PLINE_CALL_PARAMS; typedef struct _LINE_CALL_STATUS { - ULONG ulTotalSize; - ULONG ulNeededSize; - ULONG ulUsedSize; - ULONG ulCallState; - ULONG ulCallStateMode; - ULONG ulCallPrivilege; - ULONG ulCallFeatures; - ULONG ulDevSpecificSize; - ULONG ulDevSpecificOffset; + ULONG ulTotalSize; + ULONG ulNeededSize; + ULONG ulUsedSize; + ULONG ulCallState; + ULONG ulCallStateMode; + ULONG ulCallPrivilege; + ULONG ulCallFeatures; + ULONG ulDevSpecificSize; + ULONG ulDevSpecificOffset; } LINE_CALL_STATUS, *PLINE_CALL_STATUS; typedef struct _LINE_DEV_CAPS { - ULONG ulTotalSize; - ULONG ulNeededSize; - ULONG ulUsedSize; - ULONG ulProviderInfoSize; - ULONG ulProviderInfoOffset; - ULONG ulSwitchInfoSize; - ULONG ulSwitchInfoOffset; - ULONG ulPermanentLineID; - ULONG ulLineNameSize; - ULONG ulLineNameOffset; - ULONG ulStringFormat; - ULONG ulAddressModes; - ULONG ulNumAddresses; - ULONG ulBearerModes; - ULONG ulMaxRate; - ULONG ulMediaModes; - ULONG ulGenerateToneModes; - ULONG ulGenerateToneMaxNumFreq; - ULONG ulGenerateDigitModes; - ULONG ulMonitorToneMaxNumFreq; - ULONG ulMonitorToneMaxNumEntries; - ULONG ulMonitorDigitModes; - ULONG ulGatherDigitsMinTimeout; - ULONG ulGatherDigitsMaxTimeout; - ULONG ulMedCtlDigitMaxListSize; - ULONG ulMedCtlMediaMaxListSize; - ULONG ulMedCtlToneMaxListSize; - ULONG ulMedCtlCallStateMaxListSize; - ULONG ulDevCapFlags; - ULONG ulMaxNumActiveCalls; - ULONG ulAnswerMode; - ULONG ulRingModes; - ULONG ulLineStates; - ULONG ulUUIAcceptSize; - ULONG ulUUIAnswerSize; - ULONG ulUUIMakeCallSize; - ULONG ulUUIDropSize; - ULONG ulUUISendUserUserInfoSize; - ULONG ulUUICallInfoSize; - LINE_DIAL_PARAMS MinDialParams; - LINE_DIAL_PARAMS MaxDialParams; - LINE_DIAL_PARAMS DefaultDialParams; - ULONG ulNumTerminals; - ULONG ulTerminalCapsSize; - ULONG ulTerminalCapsOffset; - ULONG ulTerminalTextEntrySize; - ULONG ulTerminalTextSize; - ULONG ulTerminalTextOffset; - ULONG ulDevSpecificSize; - ULONG ulDevSpecificOffset; + ULONG ulTotalSize; + ULONG ulNeededSize; + ULONG ulUsedSize; + ULONG ulProviderInfoSize; + ULONG ulProviderInfoOffset; + ULONG ulSwitchInfoSize; + ULONG ulSwitchInfoOffset; + ULONG ulPermanentLineID; + ULONG ulLineNameSize; + ULONG ulLineNameOffset; + ULONG ulStringFormat; + ULONG ulAddressModes; + ULONG ulNumAddresses; + ULONG ulBearerModes; + ULONG ulMaxRate; + ULONG ulMediaModes; + ULONG ulGenerateToneModes; + ULONG ulGenerateToneMaxNumFreq; + ULONG ulGenerateDigitModes; + ULONG ulMonitorToneMaxNumFreq; + ULONG ulMonitorToneMaxNumEntries; + ULONG ulMonitorDigitModes; + ULONG ulGatherDigitsMinTimeout; + ULONG ulGatherDigitsMaxTimeout; + ULONG ulMedCtlDigitMaxListSize; + ULONG ulMedCtlMediaMaxListSize; + ULONG ulMedCtlToneMaxListSize; + ULONG ulMedCtlCallStateMaxListSize; + ULONG ulDevCapFlags; + ULONG ulMaxNumActiveCalls; + ULONG ulAnswerMode; + ULONG ulRingModes; + ULONG ulLineStates; + ULONG ulUUIAcceptSize; + ULONG ulUUIAnswerSize; + ULONG ulUUIMakeCallSize; + ULONG ulUUIDropSize; + ULONG ulUUISendUserUserInfoSize; + ULONG ulUUICallInfoSize; + LINE_DIAL_PARAMS MinDialParams; + LINE_DIAL_PARAMS MaxDialParams; + LINE_DIAL_PARAMS DefaultDialParams; + ULONG ulNumTerminals; + ULONG ulTerminalCapsSize; + ULONG ulTerminalCapsOffset; + ULONG ulTerminalTextEntrySize; + ULONG ulTerminalTextSize; + ULONG ulTerminalTextOffset; + ULONG ulDevSpecificSize; + ULONG ulDevSpecificOffset; #if (NDIS_TAPI_CURRENT_VERSION >= 0x00010004) - ULONG ulLineFeatures; + ULONG ulLineFeatures; #endif #if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000) - ULONG ulSettableDevStatus; - ULONG ulDeviceClassesSize; - ULONG ulDeviceClassesOffset; + ULONG ulSettableDevStatus; + ULONG ulDeviceClassesSize; + ULONG ulDeviceClassesOffset; #endif #if (NDIS_TAPI_CURRENT_VERSION >= 0x00020002) - GUID PermanentLineGuid; + GUID PermanentLineGuid; #endif #if (NDIS_TAPI_CURRENT_VERSION >= 0x00030000) - ULONG ulAddressTypes; - GUID ProtocolGuid; - ULONG ulAvailableTracking; + ULONG ulAddressTypes; + GUID ProtocolGuid; + ULONG ulAvailableTracking; #endif } LINE_DEV_CAPS, *PLINE_DEV_CAPS; typedef struct _LINE_DEV_STATUS { - ULONG ulTotalSize; - ULONG ulNeededSize; - ULONG ulUsedSize; - ULONG ulNumOpens; - ULONG ulOpenMediaModes; - ULONG ulNumActiveCalls; - ULONG ulNumOnHoldCalls; - ULONG ulNumOnHoldPendCalls; - ULONG ulLineFeatures; - ULONG ulNumCallCompletions; - ULONG ulRingMode; - ULONG ulSignalLevel; - ULONG ulBatteryLevel; - ULONG ulRoamMode; - ULONG ulDevStatusFlags; - ULONG ulTerminalModesSize; - ULONG ulTerminalModesOffset; - ULONG ulDevSpecificSize; - ULONG ulDevSpecificOffset; + ULONG ulTotalSize; + ULONG ulNeededSize; + ULONG ulUsedSize; + ULONG ulNumOpens; + ULONG ulOpenMediaModes; + ULONG ulNumActiveCalls; + ULONG ulNumOnHoldCalls; + ULONG ulNumOnHoldPendCalls; + ULONG ulLineFeatures; + ULONG ulNumCallCompletions; + ULONG ulRingMode; + ULONG ulSignalLevel; + ULONG ulBatteryLevel; + ULONG ulRoamMode; + ULONG ulDevStatusFlags; + ULONG ulTerminalModesSize; + ULONG ulTerminalModesOffset; + ULONG ulDevSpecificSize; + ULONG ulDevSpecificOffset; } LINE_DEV_STATUS, *PLINE_DEV_STATUS; typedef struct _LINE_EXTENSION_ID { - ULONG ulExtensionID0; - ULONG ulExtensionID1; - ULONG ulExtensionID2; - ULONG ulExtensionID3; + ULONG ulExtensionID0; + ULONG ulExtensionID1; + ULONG ulExtensionID2; + ULONG ulExtensionID3; } LINE_EXTENSION_ID, *PLINE_EXTENSION_ID; typedef struct _VAR_STRING { - ULONG ulTotalSize; - ULONG ulNeededSize; - ULONG ulUsedSize; - ULONG ulStringFormat; - ULONG ulStringSize; - ULONG ulStringOffset; + ULONG ulTotalSize; + ULONG ulNeededSize; + ULONG ulUsedSize; + ULONG ulStringFormat; + ULONG ulStringSize; + ULONG ulStringOffset; } VAR_STRING, *PVAR_STRING; typedef struct _NDIS_TAPI_ANSWER { - IN ULONG ulRequestID; - IN HDRV_CALL hdCall; - IN ULONG ulUserUserInfoSize; - IN UCHAR UserUserInfo[1]; + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; + IN ULONG ulUserUserInfoSize; + IN UCHAR UserUserInfo[1]; } NDIS_TAPI_ANSWER, *PNDIS_TAPI_ANSWER; typedef struct _NDIS_TAPI_CLOSE { - IN ULONG ulRequestID; - IN HDRV_LINE hdLine; + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; } NDIS_TAPI_CLOSE, *PNDIS_TAPI_CLOSE; typedef struct _NDIS_TAPI_CLOSE_CALL { - IN ULONG ulRequestID; - IN HDRV_CALL hdCall; + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; } NDIS_TAPI_CLOSE_CALL, *PNDIS_TAPI_CLOSE_CALL; typedef struct _NDIS_TAPI_CONDITIONAL_MEDIA_DETECTION { - IN ULONG ulRequestID; - IN HDRV_LINE hdLine; - IN ULONG ulMediaModes; - IN LINE_CALL_PARAMS LineCallParams; + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; + IN ULONG ulMediaModes; + IN LINE_CALL_PARAMS LineCallParams; } NDIS_TAPI_CONDITIONAL_MEDIA_DETECTION, *PNDIS_TAPI_CONDITIONAL_MEDIA_DETECTION; typedef struct _NDIS_TAPI_DROP { - IN ULONG ulRequestID; - IN HDRV_CALL hdCall; - IN ULONG ulUserUserInfoSize; - IN UCHAR UserUserInfo[1]; + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; + IN ULONG ulUserUserInfoSize; + IN UCHAR UserUserInfo[1]; } NDIS_TAPI_DROP, *PNDIS_TAPI_DROP; typedef struct _NDIS_TAPI_PROVIDER_SHUTDOWN { - IN ULONG ulRequestID; + IN ULONG ulRequestID; } NDIS_TAPI_PROVIDER_SHUTDOWN, *PNDIS_TAPI_PROVIDER_SHUTDOWN; typedef struct _NDIS_TAPI_SET_APP_SPECIFIC { - IN ULONG ulRequestID; - IN HDRV_CALL hdCall; - IN ULONG ulAppSpecific; + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; + IN ULONG ulAppSpecific; } NDIS_TAPI_SET_APP_SPECIFIC, *PNDIS_TAPI_SET_APP_SPECIFIC; typedef struct _NDIS_TAPI_SET_CALL_PARAMS { - IN ULONG ulRequestID; - IN HDRV_CALL hdCall; - IN ULONG ulBearerMode; - IN ULONG ulMinRate; - IN ULONG ulMaxRate; - IN BOOLEAN bSetLineDialParams; - IN LINE_DIAL_PARAMS LineDialParams; + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; + IN ULONG ulBearerMode; + IN ULONG ulMinRate; + IN ULONG ulMaxRate; + IN BOOLEAN bSetLineDialParams; + IN LINE_DIAL_PARAMS LineDialParams; } NDIS_TAPI_SET_CALL_PARAMS, *PNDIS_TAPI_SET_CALL_PARAMS; typedef struct _NDIS_TAPI_SET_DEFAULT_MEDIA_DETECTION { - IN ULONG ulRequestID; - IN HDRV_LINE hdLine; - IN ULONG ulMediaModes; + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; + IN ULONG ulMediaModes; } NDIS_TAPI_SET_DEFAULT_MEDIA_DETECTION, *PNDIS_TAPI_SET_DEFAULT_MEDIA_DETECTION; typedef struct _NDIS_TAPI_SET_DEV_CONFIG { - IN ULONG ulRequestID; - IN ULONG ulDeviceID; - IN ULONG ulDeviceClassSize; - IN ULONG ulDeviceClassOffset; - IN ULONG ulDeviceConfigSize; - IN UCHAR DeviceConfig[1]; + IN ULONG ulRequestID; + IN ULONG ulDeviceID; + IN ULONG ulDeviceClassSize; + IN ULONG ulDeviceClassOffset; + IN ULONG ulDeviceConfigSize; + IN UCHAR DeviceConfig[1]; } NDIS_TAPI_SET_DEV_CONFIG, *PNDIS_TAPI_SET_DEV_CONFIG; typedef struct _NDIS_TAPI_SET_MEDIA_MODE { - IN ULONG ulRequestID; - IN HDRV_CALL hdCall; - IN ULONG ulMediaMode; + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; + IN ULONG ulMediaMode; } NDIS_TAPI_SET_MEDIA_MODE, *PNDIS_TAPI_SET_MEDIA_MODE; typedef struct _NDIS_TAPI_SET_STATUS_MESSAGES { - IN ULONG ulRequestID; - IN HDRV_LINE hdLine; - IN ULONG ulLineStates; - IN ULONG ulAddressStates; + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; + IN ULONG ulLineStates; + IN ULONG ulAddressStates; } NDIS_TAPI_SET_STATUS_MESSAGES, *PNDIS_TAPI_SET_STATUS_MESSAGES; typedef struct _NDIS_TAPI_ACCEPT { - IN ULONG ulRequestID; - IN HDRV_CALL hdCall; - IN ULONG ulUserUserInfoSize; - IN UCHAR UserUserInfo[1]; + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; + IN ULONG ulUserUserInfoSize; + IN UCHAR UserUserInfo[1]; } NDIS_TAPI_ACCEPT, *PNDIS_TAPI_ACCEPT; typedef struct _NDIS_TAPI_DIAL { - IN ULONG ulRequestID; - IN HDRV_CALL hdCall; - IN ULONG ulDestAddressSize; - IN CHAR szDestAddress[1]; + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; + IN ULONG ulDestAddressSize; + IN CHAR szDestAddress[1]; } NDIS_TAPI_DIAL, *PNDIS_TAPI_DIAL; typedef struct _NDIS_TAPI_EVENT { - IN HTAPI_LINE htLine; - IN HTAPI_CALL htCall; - IN ULONG ulMsg; - IN ULONG ulParam1; - IN ULONG ulParam2; - IN ULONG ulParam3; + IN HTAPI_LINE htLine; + IN HTAPI_CALL htCall; + IN ULONG ulMsg; + IN ULONG ulParam1; + IN ULONG ulParam2; + IN ULONG ulParam3; } NDIS_TAPI_EVENT, *PNDIS_TAPI_EVENT; typedef struct _NDIS_TAPI_OPEN { - IN ULONG ulRequestID; - IN ULONG ulDeviceID; - IN HTAPI_LINE htLine; - OUT HDRV_LINE hdLine; + IN ULONG ulRequestID; + IN ULONG ulDeviceID; + IN HTAPI_LINE htLine; + OUT HDRV_LINE hdLine; } NDIS_TAPI_OPEN, *PNDIS_TAPI_OPEN; typedef struct _NDIS_TAPI_SECURE_CALL { - IN ULONG ulRequestID; - IN HDRV_CALL hdCall; + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; } NDIS_TAPI_SECURE_CALL, *PNDIS_TAPI_SECURE_CALL; typedef struct _NDIS_TAPI_SELECT_EXT_VERSION { - IN ULONG ulRequestID; - IN HDRV_LINE hdLine; - IN ULONG ulExtVersion; + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; + IN ULONG ulExtVersion; } NDIS_TAPI_SELECT_EXT_VERSION, *PNDIS_TAPI_SELECT_EXT_VERSION; typedef struct _NDIS_TAPI_SEND_USER_USER_INFO { - IN ULONG ulRequestID; - IN HDRV_CALL hdCall; - IN ULONG ulUserUserInfoSize; - IN UCHAR UserUserInfo[1]; + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; + IN ULONG ulUserUserInfoSize; + IN UCHAR UserUserInfo[1]; } NDIS_TAPI_SEND_USER_USER_INFO, *PNDIS_TAPI_SEND_USER_USER_INFO; - typedef struct _NDIS_TAPI_CONFIG_DIALOG { - IN ULONG ulRequestID; - IN ULONG ulDeviceID; - IN ULONG ulDeviceClassSize; - IN ULONG ulDeviceClassOffset; - IN ULONG ulLibraryNameTotalSize; + IN ULONG ulRequestID; + IN ULONG ulDeviceID; + IN ULONG ulDeviceClassSize; + IN ULONG ulDeviceClassOffset; + IN ULONG ulLibraryNameTotalSize; OUT ULONG ulLibraryNameNeededSize; - OUT CHAR szLibraryName[1]; + OUT CHAR szLibraryName[1]; } NDIS_TAPI_CONFIG_DIALOG, *PNDIS_TAPI_CONFIG_DIALOG; typedef struct _NDIS_TAPI_DEV_SPECIFIC { - IN ULONG ulRequestID; - IN HDRV_LINE hdLine; - IN ULONG ulAddressID; - IN HDRV_CALL hdCall; - IN OUT ULONG ulParamsSize; - IN OUT UCHAR Params[1]; + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; + IN ULONG ulAddressID; + IN HDRV_CALL hdCall; + IN OUT ULONG ulParamsSize; + IN OUT UCHAR Params[1]; } NDIS_TAPI_DEV_SPECIFIC, *PNDIS_TAPI_DEV_SPECIFIC; typedef struct _NDIS_TAPI_GET_ADDRESS_CAPS { - IN ULONG ulRequestID; - IN ULONG ulDeviceID; - IN ULONG ulAddressID; - IN ULONG ulExtVersion; - OUT LINE_ADDRESS_CAPS LineAddressCaps; + IN ULONG ulRequestID; + IN ULONG ulDeviceID; + IN ULONG ulAddressID; + IN ULONG ulExtVersion; + OUT LINE_ADDRESS_CAPS LineAddressCaps; } NDIS_TAPI_GET_ADDRESS_CAPS, *PNDIS_TAPI_GET_ADDRESS_CAPS; typedef struct _NDIS_TAPI_GET_ADDRESS_ID { - IN ULONG ulRequestID; - IN HDRV_LINE hdLine; - OUT ULONG ulAddressID; - IN ULONG ulAddressMode; - IN ULONG ulAddressSize; - IN CHAR szAddress[1]; + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; + OUT ULONG ulAddressID; + IN ULONG ulAddressMode; + IN ULONG ulAddressSize; + IN CHAR szAddress[1]; } NDIS_TAPI_GET_ADDRESS_ID, *PNDIS_TAPI_GET_ADDRESS_ID; typedef struct _NDIS_TAPI_GET_ADDRESS_STATUS { - IN ULONG ulRequestID; - IN HDRV_LINE hdLine; - IN ULONG ulAddressID; - OUT LINE_ADDRESS_STATUS LineAddressStatus; + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; + IN ULONG ulAddressID; + OUT LINE_ADDRESS_STATUS LineAddressStatus; } NDIS_TAPI_GET_ADDRESS_STATUS, *PNDIS_TAPI_GET_ADDRESS_STATUS; typedef struct _NDIS_TAPI_GET_CALL_ADDRESS_ID { - IN ULONG ulRequestID; - IN HDRV_CALL hdCall; - OUT ULONG ulAddressID; + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; + OUT ULONG ulAddressID; } NDIS_TAPI_GET_CALL_ADDRESS_ID, *PNDIS_TAPI_GET_CALL_ADDRESS_ID; typedef struct _NDIS_TAPI_GET_CALL_INFO { - ULONG ulRequestID; - IN HDRV_CALL hdCall; - OUT LINE_CALL_INFO LineCallInfo; + ULONG ulRequestID; + IN HDRV_CALL hdCall; + OUT LINE_CALL_INFO LineCallInfo; } NDIS_TAPI_GET_CALL_INFO, *PNDIS_TAPI_GET_CALL_INFO; typedef struct _NDIS_TAPI_GET_CALL_STATUS { - IN ULONG ulRequestID; - IN HDRV_CALL hdCall; - OUT LINE_CALL_STATUS LineCallStatus; + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; + OUT LINE_CALL_STATUS LineCallStatus; } NDIS_TAPI_GET_CALL_STATUS, *PNDIS_TAPI_GET_CALL_STATUS; typedef struct _NDIS_TAPI_GET_DEV_CAPS { - IN ULONG ulRequestID; - IN ULONG ulDeviceID; - IN ULONG ulExtVersion; - OUT LINE_DEV_CAPS LineDevCaps; + IN ULONG ulRequestID; + IN ULONG ulDeviceID; + IN ULONG ulExtVersion; + OUT LINE_DEV_CAPS LineDevCaps; } NDIS_TAPI_GET_DEV_CAPS, *PNDIS_TAPI_GET_DEV_CAPS; typedef struct _NDIS_TAPI_GET_DEV_CONFIG { - IN ULONG ulRequestID; - IN ULONG ulDeviceID; - IN ULONG ulDeviceClassSize; - IN ULONG ulDeviceClassOffset; - OUT VAR_STRING DeviceConfig; + IN ULONG ulRequestID; + IN ULONG ulDeviceID; + IN ULONG ulDeviceClassSize; + IN ULONG ulDeviceClassOffset; + OUT VAR_STRING DeviceConfig; } NDIS_TAPI_GET_DEV_CONFIG, *PNDIS_TAPI_GET_DEV_CONFIG; typedef struct _NDIS_TAPI_GET_EXTENSION_ID { - IN ULONG ulRequestID; - IN ULONG ulDeviceID; - OUT LINE_EXTENSION_ID LineExtensionID; + IN ULONG ulRequestID; + IN ULONG ulDeviceID; + OUT LINE_EXTENSION_ID LineExtensionID; } NDIS_TAPI_GET_EXTENSION_ID, *PNDIS_TAPI_GET_EXTENSION_ID; typedef struct _NDIS_TAPI_GET_ID { - IN ULONG ulRequestID; - IN HDRV_LINE hdLine; - IN ULONG ulAddressID; - IN HDRV_CALL hdCall; - IN ULONG ulSelect; - IN ULONG ulDeviceClassSize; - IN ULONG ulDeviceClassOffset; - OUT VAR_STRING DeviceID; + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; + IN ULONG ulAddressID; + IN HDRV_CALL hdCall; + IN ULONG ulSelect; + IN ULONG ulDeviceClassSize; + IN ULONG ulDeviceClassOffset; + OUT VAR_STRING DeviceID; } NDIS_TAPI_GET_ID, *PNDIS_TAPI_GET_ID; typedef struct _NDIS_TAPI_GET_LINE_DEV_STATUS { - IN ULONG ulRequestID; - IN HDRV_LINE hdLine; - OUT LINE_DEV_STATUS LineDevStatus; + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; + OUT LINE_DEV_STATUS LineDevStatus; } NDIS_TAPI_GET_LINE_DEV_STATUS, *PNDIS_TAPI_GET_LINE_DEV_STATUS; typedef struct _NDIS_TAPI_MAKE_CALL { - IN ULONG ulRequestID; - IN HDRV_LINE hdLine; - IN HTAPI_CALL htCall; - OUT HDRV_CALL hdCall; - IN ULONG ulDestAddressSize; - IN ULONG ulDestAddressOffset; - IN BOOLEAN bUseDefaultLineCallParams; - IN LINE_CALL_PARAMS LineCallParams; + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; + IN HTAPI_CALL htCall; + OUT HDRV_CALL hdCall; + IN ULONG ulDestAddressSize; + IN ULONG ulDestAddressOffset; + IN BOOLEAN bUseDefaultLineCallParams; + IN LINE_CALL_PARAMS LineCallParams; } NDIS_TAPI_MAKE_CALL, *PNDIS_TAPI_MAKE_CALL; typedef struct _NDIS_TAPI_NEGOTIATE_EXT_VERSION { - IN ULONG ulRequestID; - IN ULONG ulDeviceID; - IN ULONG ulLowVersion; - IN ULONG ulHighVersion; - OUT ULONG ulExtVersion; + IN ULONG ulRequestID; + IN ULONG ulDeviceID; + IN ULONG ulLowVersion; + IN ULONG ulHighVersion; + OUT ULONG ulExtVersion; } NDIS_TAPI_NEGOTIATE_EXT_VERSION, *PNDIS_TAPI_NEGOTIATE_EXT_VERSION; typedef struct _NDIS_TAPI_PROVIDER_INITIALIZE { - IN ULONG ulRequestID; - IN ULONG ulDeviceIDBase; - OUT ULONG ulNumLineDevs; - OUT ULONG ulProviderID; + IN ULONG ulRequestID; + IN ULONG ulDeviceIDBase; + OUT ULONG ulNumLineDevs; + OUT ULONG ulProviderID; } NDIS_TAPI_PROVIDER_INITIALIZE, *PNDIS_TAPI_PROVIDER_INITIALIZE; - #define CO_TAPI_VERSION NDIS_TAPI_CURRENT_VERSION #define CO_TAPI_FLAG_OUTGOING_CALL 0x00000001 @@ -1221,50 +1220,49 @@ typedef struct _NDIS_TAPI_PROVIDER_INITIALIZE { #define AF_TAPI_SAP_TYPE 0x00008000 typedef struct _CO_TAPI_ADDRESS_CAPS { - IN ULONG ulLineID; - IN ULONG ulAddressID; - OUT ULONG ulFlags; - OUT LINE_ADDRESS_CAPS LineAddressCaps; + IN ULONG ulLineID; + IN ULONG ulAddressID; + OUT ULONG ulFlags; + OUT LINE_ADDRESS_CAPS LineAddressCaps; } CO_TAPI_ADDRESS_CAPS, *PCO_TAPI_ADDRESS_CAPS; /* CO_TAPI_CM_CAPS.ulFlags constants */ #define CO_TAPI_FLAG_PER_LINE_CAPS 0x00000001 typedef struct _CO_TAPI_CM_CAPS { - OUT ULONG ulCoTapiVersion; - OUT ULONG ulNumLines; - OUT ULONG ulFlags; + OUT ULONG ulCoTapiVersion; + OUT ULONG ulNumLines; + OUT ULONG ulFlags; } CO_TAPI_CM_CAPS, *PCO_TAPI_CM_CAPS; typedef struct _CO_TAPI_CALL_DIAGNOSTICS { - OUT ULONG ulOrigin; - OUT ULONG ulReason; - OUT NDIS_VAR_DATA_DESC DiagInfo; + OUT ULONG ulOrigin; + OUT ULONG ulReason; + OUT NDIS_VAR_DATA_DESC DiagInfo; } CO_TAPI_CALL_DIAGNOSTICS, *PCO_TAPI_CALL_DIAGNOSTICS; - /* CO_TAPI_LINE_CAPS.ulFlags constants */ #define CO_TAPI_FLAG_PER_ADDRESS_CAPS 0x00000001 typedef struct _CO_TAPI_LINE_CAPS { - IN ULONG ulLineID; - OUT ULONG ulFlags; - OUT LINE_DEV_CAPS LineDevCaps; + IN ULONG ulLineID; + OUT ULONG ulFlags; + OUT LINE_DEV_CAPS LineDevCaps; } CO_TAPI_LINE_CAPS, *PCO_TAPI_LINE_CAPS; typedef struct _CO_TAPI_TRANSLATE_NDIS_CALLPARAMS { - IN ULONG ulFlags; - IN NDIS_VAR_DATA_DESC NdisCallParams; - OUT NDIS_VAR_DATA_DESC LineCallInfo; + IN ULONG ulFlags; + IN NDIS_VAR_DATA_DESC NdisCallParams; + OUT NDIS_VAR_DATA_DESC LineCallInfo; } CO_TAPI_TRANSLATE_NDIS_CALLPARAMS, *PCO_TAPI_TRANSLATE_NDIS_CALLPARAMS; typedef struct _CO_TAPI_TRANSLATE_TAPI_CALLPARAMS { - IN ULONG ulLineID; - IN ULONG ulAddressID; - IN ULONG ulFlags; - IN NDIS_VAR_DATA_DESC DestAddress; - IN NDIS_VAR_DATA_DESC LineCallParams; - OUT NDIS_VAR_DATA_DESC NdisCallParams; + IN ULONG ulLineID; + IN ULONG ulAddressID; + IN ULONG ulFlags; + IN NDIS_VAR_DATA_DESC DestAddress; + IN NDIS_VAR_DATA_DESC LineCallParams; + OUT NDIS_VAR_DATA_DESC NdisCallParams; } CO_TAPI_TRANSLATE_TAPI_CALLPARAMS, *PCO_TAPI_TRANSLATE_TAPI_CALLPARAMS; /* CO_TAPI_TRANSLATE_SAP.ulLineID constants */ @@ -1274,31 +1272,31 @@ typedef struct _CO_TAPI_TRANSLATE_TAPI_CALLPARAMS { #define CO_TAPI_ADDRESS_ID_UNSPECIFIED 0xFFFFFFFF typedef struct _CO_TAPI_TRANSLATE_SAP { - IN ULONG ulLineID; - IN ULONG ulAddressID; - IN ULONG ulMediaModes; - IN ULONG Reserved; - OUT ULONG NumberOfSaps; - OUT NDIS_VAR_DATA_DESC NdisSapParams[1]; + IN ULONG ulLineID; + IN ULONG ulAddressID; + IN ULONG ulMediaModes; + IN ULONG Reserved; + OUT ULONG NumberOfSaps; + OUT NDIS_VAR_DATA_DESC NdisSapParams[1]; } CO_AF_TAPI_SAP, *PCO_AF_TAPI_SAP; typedef struct _CO_AF_TAPI_INCOMING_CALL_PARAMETERS { - IN ULONG ulLineID; - IN ULONG ulAddressID; - IN ULONG ulFlags; - IN NDIS_VAR_DATA_DESC LineCallInfo; + IN ULONG ulLineID; + IN ULONG ulAddressID; + IN ULONG ulFlags; + IN NDIS_VAR_DATA_DESC LineCallInfo; } CO_AF_TAPI_INCOMING_CALL_PARAMETERS, *PCO_AF_TAPI_INCOMING_CALL_PARAMETERS; typedef struct _CO_AF_TAPI_MAKE_CALL_PARAMETERS { - IN ULONG ulLineID; - IN ULONG ulAddressID; - IN ULONG ulFlags; - IN NDIS_VAR_DATA_DESC DestAddress; - IN NDIS_VAR_DATA_DESC LineCallParams; + IN ULONG ulLineID; + IN ULONG ulAddressID; + IN ULONG ulFlags; + IN NDIS_VAR_DATA_DESC DestAddress; + IN NDIS_VAR_DATA_DESC LineCallParams; } CO_AF_TAPI_MAKE_CALL_PARAMETERS, *PCO_AF_TAPI_MAKE_CALL_PARAMETERS; #ifdef __cplusplus } #endif -#endif /* __NDISTAPI_H */ +#endif /* _NDIS_TAPI_ */ diff --git a/include/ddk/ndiswan.h b/include/ddk/ndiswan.h index 924c49f0386..5fa5322958e 100644 --- a/include/ddk/ndiswan.h +++ b/include/ddk/ndiswan.h @@ -22,6 +22,9 @@ #pragma once +#ifndef _NDIS_WAN_ +#define _NDIS_WAN_ + #ifdef __cplusplus extern "C" { #endif @@ -352,3 +355,6 @@ typedef struct _WAN_CO_MTULINKPARAMS { #ifdef __cplusplus } #endif + +#endif /* _NDIS_WAN_ */ + diff --git a/include/ddk/ntddbeep.h b/include/ddk/ntddbeep.h deleted file mode 100644 index 9e10b0682c0..00000000000 --- a/include/ddk/ntddbeep.h +++ /dev/null @@ -1,26 +0,0 @@ - -#ifndef _NTDDBEEP_ -#define _NTDDBEEP_ - - -#ifdef __cplusplus -extern "C" { -#endif - -#define DD_BEEP_DEVICE_NAME "\\Device\\Beep" -#define DD_BEEP_DEVICE_NAME_U L"\\Device\\Beep" -#define BEEP_FREQUENCY_MINIMUM 0x25 -#define BEEP_FREQUENCY_MAXIMUM 0x7FFF -#define IOCTL_BEEP_SET CTL_CODE(FILE_DEVICE_BEEP, 0, METHOD_BUFFERED, FILE_ANY_ACCESS) - -typedef struct _BEEP_SET_PARAMETERS -{ - ULONG Frequency; - ULONG Duration; -} BEEP_SET_PARAMETERS, *PBEEP_SET_PARAMETERS; - -#ifdef __cplusplus -} -#endif -#endif - diff --git a/include/ddk/ntddpcm.h b/include/ddk/ntddpcm.h index 7c6e55c41f4..139ec96992a 100644 --- a/include/ddk/ntddpcm.h +++ b/include/ddk/ntddpcm.h @@ -20,8 +20,8 @@ * */ -#ifndef __NTDDPCM_H -#define __NTDDPCM_H +#ifndef _NTDDPCMH_ +#define _NTDDPCMH_ #ifdef __cplusplus extern "C" { @@ -156,4 +156,4 @@ typedef struct _PCMCIA_INTERFACE_STANDARD { } #endif -#endif /* __NTDDPCM_H */ +#endif /* _NTDDPCMH_ */ diff --git a/include/ddk/ntddsnd.h b/include/ddk/ntddsnd.h index 0de798e37b2..bee1310fa47 100644 --- a/include/ddk/ntddsnd.h +++ b/include/ddk/ntddsnd.h @@ -32,7 +32,6 @@ #define SOUND_MAX_DEVICES 100 #define SOUND_MAX_DEVICE_NAME 80 - /* Base control codes */ @@ -43,80 +42,78 @@ #define IOCTL_AUX_BASE 0x0100 #define IOCTL_MIX_BASE 0x0180 - /* Helper macros for defining control codes */ #define WAVE_CTL_CODE(subcode, iomethod, access) \ - CTL_CODE(FILE_DEVICE_SOUND, IOCTL_WAVE_BASE + subcode, iomethod, access) + CTL_CODE(FILE_DEVICE_SOUND, IOCTL_WAVE_BASE + subcode, iomethod, access) #define MIDI_CTL_CODE(subcode, iomethod, access) \ - CTL_CODE(FILE_DEVICE_SOUND, IOCTL_MIDI_BASE + subcode, iomethod, access) + CTL_CODE(FILE_DEVICE_SOUND, IOCTL_MIDI_BASE + subcode, iomethod, access) #define MIX_CTL_CODE(subcode, iomethod, access) \ - CTL_CODE(FILE_DEVICE_SOUND, IOCTL_MIX_BASE + subcode, iomethod, access) + CTL_CODE(FILE_DEVICE_SOUND, IOCTL_MIX_BASE + subcode, iomethod, access) #define AUX_CTL_CODE(subcode, iomethod, access) \ - CTL_CODE(FILE_DEVICE_SOUND, IOCTL_AUX_BASE + subcode, iomethod, access) - + CTL_CODE(FILE_DEVICE_SOUND, IOCTL_AUX_BASE + subcode, iomethod, access) /* Wave device control codes */ #define IOCTL_WAVE_QUERY_FORMAT \ - WAVE_CTL_CODE(0x0001, METHOD_BUFFERED, FILE_READ_ACCESS) + WAVE_CTL_CODE(0x0001, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_WAVE_SET_FORMAT \ - WAVE_CTL_CODE(0x0002, METHOD_BUFFERED, FILE_WRITE_ACCESS) + WAVE_CTL_CODE(0x0002, METHOD_BUFFERED, FILE_WRITE_ACCESS) #define IOCTL_WAVE_GET_CAPABILITIES \ - WAVE_CTL_CODE(0x0003, METHOD_BUFFERED, FILE_READ_ACCESS) + WAVE_CTL_CODE(0x0003, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_WAVE_SET_STATE \ - WAVE_CTL_CODE(0x0004, METHOD_BUFFERED, FILE_WRITE_ACCESS) + WAVE_CTL_CODE(0x0004, METHOD_BUFFERED, FILE_WRITE_ACCESS) #define IOCTL_WAVE_GET_STATE \ - WAVE_CTL_CODE(0x0005, METHOD_BUFFERED, FILE_WRITE_ACCESS) + WAVE_CTL_CODE(0x0005, METHOD_BUFFERED, FILE_WRITE_ACCESS) #define IOCTL_WAVE_GET_POSITION \ - WAVE_CTL_CODE(0x0006, METHOD_BUFFERED, FILE_WRITE_ACCESS) + WAVE_CTL_CODE(0x0006, METHOD_BUFFERED, FILE_WRITE_ACCESS) #define IOCTL_WAVE_SET_VOLUME \ - WAVE_CTL_CODE(0x0007, METHOD_BUFFERED, FILE_READ_ACCESS) + WAVE_CTL_CODE(0x0007, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_WAVE_GET_VOLUME \ - WAVE_CTL_CODE(0x0008, METHOD_BUFFERED, FILE_READ_ACCESS) + WAVE_CTL_CODE(0x0008, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_WAVE_SET_PITCH \ - WAVE_CTL_CODE(0x0009, METHOD_BUFFERED, FILE_WRITE_ACCESS) + WAVE_CTL_CODE(0x0009, METHOD_BUFFERED, FILE_WRITE_ACCESS) #define IOCTL_WAVE_GET_PITCH \ - WAVE_CTL_CODE(0x000A, METHOD_BUFFERED, FILE_WRITE_ACCESS) + WAVE_CTL_CODE(0x000A, METHOD_BUFFERED, FILE_WRITE_ACCESS) #define IOCTL_WAVE_SET_PLAYBACK_RATE \ - WAVE_CTL_CODE(0x000B, METHOD_BUFFERED, FILE_WRITE_ACCESS) + WAVE_CTL_CODE(0x000B, METHOD_BUFFERED, FILE_WRITE_ACCESS) #define IOCTL_WAVE_GET_PLAYBACK_RATE \ - WAVE_CTL_CODE(0x000C, METHOD_BUFFERED, FILE_WRITE_ACCESS) + WAVE_CTL_CODE(0x000C, METHOD_BUFFERED, FILE_WRITE_ACCESS) #define IOCTL_WAVE_PLAY \ - WAVE_CTL_CODE(0x000D, METHOD_IN_DIRECT, FILE_WRITE_ACCESS) + WAVE_CTL_CODE(0x000D, METHOD_IN_DIRECT, FILE_WRITE_ACCESS) #define IOCTL_WAVE_RECORD \ - WAVE_CTL_CODE(0x000E, METHOD_OUT_DIRECT, FILE_WRITE_ACCESS) + WAVE_CTL_CODE(0x000E, METHOD_OUT_DIRECT, FILE_WRITE_ACCESS) #define IOCTL_WAVE_BREAK_LOOP \ - WAVE_CTL_CODE(0x000F, METHOD_BUFFERED, FILE_WRITE_ACCESS) + WAVE_CTL_CODE(0x000F, METHOD_BUFFERED, FILE_WRITE_ACCESS) #define IOCTL_WAVE_SET_LOW_PRIORITY \ - WAVE_CTL_CODE(0x0010, METHOD_BUFFERED, FILE_WRITE_ACCESS) + WAVE_CTL_CODE(0x0010, METHOD_BUFFERED, FILE_WRITE_ACCESS) #if DBG - /* Debug-only control code */ - #define IOCTL_WAVE_SET_DEBUG_LEVEL \ - WAVE_CTL_CODE(0x0040, METHOD_BUFFERED, FILE_READ_ACCESS) +/* Debug-only control code */ +#define IOCTL_WAVE_SET_DEBUG_LEVEL \ + WAVE_CTL_CODE(0x0040, METHOD_BUFFERED, FILE_READ_ACCESS) #endif @@ -125,72 +122,69 @@ */ #define IOCTL_MIDI_GET_CAPABILITIES \ - MIDI_CTL_CODE(0x0001, METHOD_BUFFERED, FILE_READ_ACCESS) + MIDI_CTL_CODE(0x0001, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_MIDI_SET_STATE \ - MIDI_CTL_CODE(0x0002, METHOD_BUFFERED, FILE_WRITE_ACCESS) + MIDI_CTL_CODE(0x0002, METHOD_BUFFERED, FILE_WRITE_ACCESS) #define IOCTL_MIDI_GET_STATE \ - MIDI_CTL_CODE(0x0003, METHOD_BUFFERED, FILE_WRITE_ACCESS) + MIDI_CTL_CODE(0x0003, METHOD_BUFFERED, FILE_WRITE_ACCESS) #define IOCTL_MIDI_SET_VOLUME \ - MIDI_CTL_CODE(0x0004, METHOD_BUFFERED, FILE_READ_ACCESS) + MIDI_CTL_CODE(0x0004, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_MIDI_GET_VOLUME \ - MIDI_CTL_CODE(0x0005, METHOD_BUFFERED, FILE_READ_ACCESS) + MIDI_CTL_CODE(0x0005, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_MIDI_PLAY \ - MIDI_CTL_CODE(0x0006, METHOD_NEITHER, FILE_WRITE_ACCESS) + MIDI_CTL_CODE(0x0006, METHOD_NEITHER, FILE_WRITE_ACCESS) #define IOCTL_MIDI_RECORD \ - MIDI_CTL_CODE(0x0007, METHOD_BUFFERED, FILE_WRITE_ACCESS) + MIDI_CTL_CODE(0x0007, METHOD_BUFFERED, FILE_WRITE_ACCESS) #define IOCTL_MIDI_CACHE_PATCHES \ - MIDI_CTL_CODE(0x0008, METHOD_BUFFERED, FILE_WRITE_ACCESS) + MIDI_CTL_CODE(0x0008, METHOD_BUFFERED, FILE_WRITE_ACCESS) #define IOCTL_MIDI_CACHE_DRUM_PATCHES \ - MIDI_CTL_CODE(0x0009, METHOD_BUFFERED, FILE_WRITE_ACCESS) + MIDI_CTL_CODE(0x0009, METHOD_BUFFERED, FILE_WRITE_ACCESS) #if DBG - /* Debug-only control code */ - #define IOCTL_MIDI_SET_DEBUG_LEVEL \ - WAVE_CTL_CODE(0x0040, METHOD_BUFFERED, FILE_READ_ACCESS) +/* Debug-only control code */ +#define IOCTL_MIDI_SET_DEBUG_LEVEL \ + WAVE_CTL_CODE(0x0040, METHOD_BUFFERED, FILE_READ_ACCESS) #endif - /* Mixer device control codes */ #define IOCTL_MIX_GET_CONFIGURATION \ - MIX_CTL_CODE(0x0001, METHOD_BUFFERED, FILE_READ_ACCESS) + MIX_CTL_CODE(0x0001, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_MIX_GET_CONTROL_DATA \ - MIX_CTL_CODE(0x0002, METHOD_BUFFERED, FILE_READ_ACCESS) + MIX_CTL_CODE(0x0002, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_MIX_GET_LINE_DATA \ - MIX_CTL_CODE(0x0003, METHOD_BUFFERED, FILE_READ_ACCESS) + MIX_CTL_CODE(0x0003, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_MIX_REQUEST_NOTIFY \ - MIX_CTL_CODE(0x0004, METHOD_BUFFERED, FILE_READ_ACCESS) - + MIX_CTL_CODE(0x0004, METHOD_BUFFERED, FILE_READ_ACCESS) /* Auxiliary device control codes */ #define IOCTL_AUX_GET_CAPABILITIES \ - AUX_CTL_CODE(0x0001, METHOD_BUFFERED, FILE_READ_ACCESS) + AUX_CTL_CODE(0x0001, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_AUX_SET_VOLUME \ - AUX_CTL_CODE(0x0002, METHOD_BUFFERED, FILE_READ_ACCESS) + AUX_CTL_CODE(0x0002, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_AUX_GET_VOLUME \ - AUX_CTL_CODE(0x0003, METHOD_BUFFERED, FILE_READ_ACCESS) + AUX_CTL_CODE(0x0003, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_SOUND_GET_CHANGED_VOLUME \ - AUX_CTL_CODE(0x0004, METHOD_BUFFERED, FILE_READ_ACCESS) - + AUX_CTL_CODE(0x0004, METHOD_BUFFERED, FILE_READ_ACCESS) /* Wave structures & states @@ -198,20 +192,17 @@ #define WAVE_DD_MAX_VOLUME 0xFFFFFFFF -typedef struct _WAVE_DD_VOLUME -{ - ULONG Left; - ULONG Right; +typedef struct _WAVE_DD_VOLUME { + ULONG Left; + ULONG Right; } WAVE_DD_VOLUME, *PWAVE_DD_VOLUME; -typedef struct _WAVE_DD_PITCH -{ - ULONG Pitch; +typedef struct _WAVE_DD_PITCH { + ULONG Pitch; } WAVE_DD_PITCH, *PWAVE_DD_PITCH; -typedef struct _WAVE_DD_PLAYBACK_RATE -{ - ULONG Rate; +typedef struct _WAVE_DD_PLAYBACK_RATE { + ULONG Rate; } WAVE_DD_PLAYBACK_RATE, *PWAVE_DD_PLAYBACK_RATE; /* IOCTL_WAVE_SET_STATE commands */ @@ -226,35 +217,30 @@ typedef struct _WAVE_DD_PLAYBACK_RATE #define WAVE_DD_PLAYING 0x0002 #define WAVE_DD_RECORDING 0x0003 - /* MIDI structures & states */ -typedef struct _MIDI_DD_INPUT_DATA -{ - LARGE_INTEGER Time; - UCHAR Data[sizeof(ULONG)]; +typedef struct _MIDI_DD_INPUT_DATA { + LARGE_INTEGER Time; + UCHAR Data[sizeof(ULONG)]; } MIDI_DD_INPUT_DATA, *PMIDI_DD_INPUT_DATA; -typedef struct _MIDI_DD_VOLUME -{ - ULONG Left; - ULONG Right; +typedef struct _MIDI_DD_VOLUME { + ULONG Left; + ULONG Right; } MIDI_DD_VOLUME, *PMIDI_DD_VOLUME; -typedef struct _MIDI_DD_CACHE_PATCHES -{ - ULONG Bank; - ULONG Flags; - ULONG Patches[128]; +typedef struct _MIDI_DD_CACHE_PATCHES { + ULONG Bank; + ULONG Flags; + ULONG Patches[128]; } MIDI_DD_CACHE_PATCHES, *PMIDI_DD_CACHE_PATCHES; -typedef struct _MIDI_DD_CACHE_DRUM_PATCHES -{ - ULONG Patch; - ULONG Flags; - ULONG DrumPatches[128]; +typedef struct _MIDI_DD_CACHE_DRUM_PATCHES { + ULONG Patch; + ULONG Flags; + ULONG DrumPatches[128]; } MIDI_DD_CACHE_DRUM_PATCHES, *PMIDI_DD_CACHE_DRUM_PATCHES; /* IOCTL_MIDI_SET_STATE commands */ @@ -269,34 +255,29 @@ typedef struct _MIDI_DD_CACHE_DRUM_PATCHES #define MIDI_DD_PLAYING 0x0002 #define MIDI_DD_RECORDING 0x0003 - /* Mixer structures TODO: This is incomplete (see NTDDMIX.H in NT4 DDK) */ -typedef struct _MIXER_DD_READ_DATA -{ - ULONG Id; +typedef struct _MIXER_DD_READ_DATA { + ULONG Id; } MIXER_DD_READ_DATA, *PMIXER_DD_READ_DATA; -typedef struct _MIXER_DD_LINE_DATA -{ - ULONG fdwLine; +typedef struct _MIXER_DD_LINE_DATA { + ULONG fdwLine; } MIXER_DD_LINE_DATA, *PMIXER_DD_LINE_DATA; - /* Auxiliary structures */ #define AUX_DD_MAX_VOLUME 0xFFFFFFFF -typedef struct _AUX_DD_VOLUME -{ - ULONG Left; - ULONG Right; +typedef struct _AUX_DD_VOLUME { + ULONG Left; + ULONG Right; } AUX_DD_VOLUME, *PAUX_DD_VOLUME; -#endif +#endif /* NTDDSND_H */ diff --git a/include/ddk/ntimage.h b/include/ddk/ntimage.h index 8df984763f7..2dac14a3053 100644 --- a/include/ddk/ntimage.h +++ b/include/ddk/ntimage.h @@ -43,115 +43,108 @@ #define IMAGE_FILE_MACHINE_CEF 0x0CEF - // // DOS Image Header Format // #include typedef struct _IMAGE_DOS_HEADER { - USHORT e_magic; - USHORT e_cblp; - USHORT e_cp; - USHORT e_crlc; - USHORT e_cparhdr; - USHORT e_minalloc; - USHORT e_maxalloc; - USHORT e_ss; - USHORT e_sp; - USHORT e_csum; - USHORT e_ip; - USHORT e_cs; - USHORT e_lfarlc; - USHORT e_ovno; - USHORT e_res[4]; - USHORT e_oemid; - USHORT e_oeminfo; - USHORT e_res2[10]; - LONG e_lfanew; + USHORT e_magic; + USHORT e_cblp; + USHORT e_cp; + USHORT e_crlc; + USHORT e_cparhdr; + USHORT e_minalloc; + USHORT e_maxalloc; + USHORT e_ss; + USHORT e_sp; + USHORT e_csum; + USHORT e_ip; + USHORT e_cs; + USHORT e_lfarlc; + USHORT e_ovno; + USHORT e_res[4]; + USHORT e_oemid; + USHORT e_oeminfo; + USHORT e_res2[10]; + LONG e_lfanew; } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER; #include - - // // Export/Import Format // #include typedef struct _IMAGE_EXPORT_DIRECTORY { - ULONG Characteristics; - ULONG TimeDateStamp; - USHORT MajorVersion; - USHORT MinorVersion; - ULONG Name; - ULONG Base; - ULONG NumberOfFunctions; - ULONG NumberOfNames; - ULONG AddressOfFunctions; - ULONG AddressOfNames; - ULONG AddressOfNameOrdinals; + ULONG Characteristics; + ULONG TimeDateStamp; + USHORT MajorVersion; + USHORT MinorVersion; + ULONG Name; + ULONG Base; + ULONG NumberOfFunctions; + ULONG NumberOfNames; + ULONG AddressOfFunctions; + ULONG AddressOfNames; + ULONG AddressOfNameOrdinals; } IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY; - - // // Resource Data Entry Format // typedef struct _IMAGE_RESOURCE_DATA_ENTRY { - ULONG OffsetToData; - ULONG Size; - ULONG CodePage; - ULONG Reserved; + ULONG OffsetToData; + ULONG Size; + ULONG CodePage; + ULONG Reserved; } IMAGE_RESOURCE_DATA_ENTRY, *PIMAGE_RESOURCE_DATA_ENTRY; - - // // Load Configuration Directory Entry Format // typedef struct { - ULONG Size; - ULONG TimeDateStamp; - USHORT MajorVersion; - USHORT MinorVersion; - ULONG GlobalFlagsClear; - ULONG GlobalFlagsSet; - ULONG CriticalSectionDefaultTimeout; - ULONG DeCommitFreeBlockThreshold; - ULONG DeCommitTotalFreeThreshold; - ULONG LockPrefixTable; - ULONG MaximumAllocationSize; - ULONG VirtualMemoryThreshold; - ULONG ProcessHeapFlags; - ULONG ProcessAffinityMask; - USHORT CSDVersion; - USHORT Reserved1; - ULONG EditList; - ULONG SecurityCookie; - ULONG SEHandlerTable; - ULONG SEHandlerCount; + ULONG Size; + ULONG TimeDateStamp; + USHORT MajorVersion; + USHORT MinorVersion; + ULONG GlobalFlagsClear; + ULONG GlobalFlagsSet; + ULONG CriticalSectionDefaultTimeout; + ULONG DeCommitFreeBlockThreshold; + ULONG DeCommitTotalFreeThreshold; + ULONG LockPrefixTable; + ULONG MaximumAllocationSize; + ULONG VirtualMemoryThreshold; + ULONG ProcessHeapFlags; + ULONG ProcessAffinityMask; + USHORT CSDVersion; + USHORT Reserved1; + ULONG EditList; + ULONG SecurityCookie; + ULONG SEHandlerTable; + ULONG SEHandlerCount; } IMAGE_LOAD_CONFIG_DIRECTORY32, *PIMAGE_LOAD_CONFIG_DIRECTORY32; typedef struct { - ULONG Size; - ULONG TimeDateStamp; - USHORT MajorVersion; - USHORT MinorVersion; - ULONG GlobalFlagsClear; - ULONG GlobalFlagsSet; - ULONG CriticalSectionDefaultTimeout; - ULONGLONG DeCommitFreeBlockThreshold; - ULONGLONG DeCommitTotalFreeThreshold; - ULONGLONG LockPrefixTable; - ULONGLONG MaximumAllocationSize; - ULONGLONG VirtualMemoryThreshold; - ULONGLONG ProcessAffinityMask; - ULONG ProcessHeapFlags; - USHORT CSDVersion; - USHORT Reserved1; - ULONGLONG EditList; - ULONGLONG SecurityCookie; - ULONGLONG SEHandlerTable; - ULONGLONG SEHandlerCount; + ULONG Size; + ULONG TimeDateStamp; + USHORT MajorVersion; + USHORT MinorVersion; + ULONG GlobalFlagsClear; + ULONG GlobalFlagsSet; + ULONG CriticalSectionDefaultTimeout; + ULONGLONG DeCommitFreeBlockThreshold; + ULONGLONG DeCommitTotalFreeThreshold; + ULONGLONG LockPrefixTable; + ULONGLONG MaximumAllocationSize; + ULONGLONG VirtualMemoryThreshold; + ULONGLONG ProcessAffinityMask; + ULONG ProcessHeapFlags; + USHORT CSDVersion; + USHORT Reserved1; + ULONGLONG EditList; + ULONGLONG SecurityCookie; + ULONGLONG SEHandlerTable; + ULONGLONG SEHandlerCount; } IMAGE_LOAD_CONFIG_DIRECTORY64, *PIMAGE_LOAD_CONFIG_DIRECTORY64; #ifdef _WIN64 @@ -162,36 +155,31 @@ typedef IMAGE_LOAD_CONFIG_DIRECTORY32 IMAGE_LOAD_CONFIG_DIRECTORY; typedef PIMAGE_LOAD_CONFIG_DIRECTORY32 PIMAGE_LOAD_CONFIG_DIRECTORY; #endif - // // Base Relocation Format // typedef struct _IMAGE_BASE_RELOCATION { - ULONG VirtualAddress; - ULONG SizeOfBlock; + ULONG VirtualAddress; + ULONG SizeOfBlock; } IMAGE_BASE_RELOCATION, *PIMAGE_BASE_RELOCATION; - - // // Resource Format // typedef struct _IMAGE_RESOURCE_DIRECTORY { - ULONG Characteristics; - ULONG TimeDateStamp; - USHORT MajorVersion; - USHORT MinorVersion; - USHORT NumberOfNamedEntries; - USHORT NumberOfIdEntries; + ULONG Characteristics; + ULONG TimeDateStamp; + USHORT MajorVersion; + USHORT MinorVersion; + USHORT NumberOfNamedEntries; + USHORT NumberOfIdEntries; } IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY; typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING { - USHORT Length; - CHAR NameString[ANYSIZE_ARRAY]; + USHORT Length; + CHAR NameString[ANYSIZE_ARRAY]; } IMAGE_RESOURCE_DIRECTORY_STRING, *PIMAGE_RESOURCE_DIRECTORY_STRING; - - // // Section Header Format // @@ -199,20 +187,19 @@ typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING { #define IMAGE_SIZEOF_SECTION_HEADER 40 typedef struct _IMAGE_SECTION_HEADER { - UCHAR Name[IMAGE_SIZEOF_SHORT_NAME]; - union - { - ULONG PhysicalAddress; - ULONG VirtualSize; - } Misc; - ULONG VirtualAddress; - ULONG SizeOfRawData; - ULONG PointerToRawData; - ULONG PointerToRelocations; - ULONG PointerToLinenumbers; - USHORT NumberOfRelocations; - USHORT NumberOfLinenumbers; - ULONG Characteristics; + UCHAR Name[IMAGE_SIZEOF_SHORT_NAME]; + union { + ULONG PhysicalAddress; + ULONG VirtualSize; + } Misc; + ULONG VirtualAddress; + ULONG SizeOfRawData; + ULONG PointerToRawData; + ULONG PointerToRelocations; + ULONG PointerToLinenumbers; + USHORT NumberOfRelocations; + USHORT NumberOfLinenumbers; + ULONG Characteristics; } IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER; // @@ -231,21 +218,19 @@ typedef struct _IMAGE_SECTION_HEADER { #define IMAGE_SCN_MEM_READ 0x40000000 #define IMAGE_SCN_MEM_WRITE 0x80000000 - - // // File Header Format // #define IMAGE_SIZEOF_FILE_HEADER 20 typedef struct _IMAGE_FILE_HEADER { - USHORT Machine; - USHORT NumberOfSections; - ULONG TimeDateStamp; - ULONG PointerToSymbolTable; - ULONG NumberOfSymbols; - USHORT SizeOfOptionalHeader; - USHORT Characteristics; + USHORT Machine; + USHORT NumberOfSections; + ULONG TimeDateStamp; + ULONG PointerToSymbolTable; + ULONG NumberOfSymbols; + USHORT SizeOfOptionalHeader; + USHORT Characteristics; } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; // @@ -267,104 +252,100 @@ typedef struct _IMAGE_FILE_HEADER { #define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000 #define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 - - // // Directory format. // #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 typedef struct _IMAGE_DATA_DIRECTORY { - ULONG VirtualAddress; - ULONG Size; + ULONG VirtualAddress; + ULONG Size; } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; - - // // Optional Header Formats // typedef struct _IMAGE_OPTIONAL_HEADER { - USHORT Magic; - UCHAR MajorLinkerVersion; - UCHAR MinorLinkerVersion; - ULONG SizeOfCode; - ULONG SizeOfInitializedData; - ULONG SizeOfUninitializedData; - ULONG AddressOfEntryPoint; - ULONG BaseOfCode; - ULONG BaseOfData; - ULONG ImageBase; - ULONG SectionAlignment; - ULONG FileAlignment; - USHORT MajorOperatingSystemVersion; - USHORT MinorOperatingSystemVersion; - USHORT MajorImageVersion; - USHORT MinorImageVersion; - USHORT MajorSubsystemVersion; - USHORT MinorSubsystemVersion; - ULONG Win32VersionValue; - ULONG SizeOfImage; - ULONG SizeOfHeaders; - ULONG CheckSum; - USHORT Subsystem; - USHORT DllCharacteristics; - ULONG SizeOfStackReserve; - ULONG SizeOfStackCommit; - ULONG SizeOfHeapReserve; - ULONG SizeOfHeapCommit; - ULONG LoaderFlags; - ULONG NumberOfRvaAndSizes; - IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; + USHORT Magic; + UCHAR MajorLinkerVersion; + UCHAR MinorLinkerVersion; + ULONG SizeOfCode; + ULONG SizeOfInitializedData; + ULONG SizeOfUninitializedData; + ULONG AddressOfEntryPoint; + ULONG BaseOfCode; + ULONG BaseOfData; + ULONG ImageBase; + ULONG SectionAlignment; + ULONG FileAlignment; + USHORT MajorOperatingSystemVersion; + USHORT MinorOperatingSystemVersion; + USHORT MajorImageVersion; + USHORT MinorImageVersion; + USHORT MajorSubsystemVersion; + USHORT MinorSubsystemVersion; + ULONG Win32VersionValue; + ULONG SizeOfImage; + ULONG SizeOfHeaders; + ULONG CheckSum; + USHORT Subsystem; + USHORT DllCharacteristics; + ULONG SizeOfStackReserve; + ULONG SizeOfStackCommit; + ULONG SizeOfHeapReserve; + ULONG SizeOfHeapCommit; + ULONG LoaderFlags; + ULONG NumberOfRvaAndSizes; + IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; } IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32; typedef struct _IMAGE_ROM_OPTIONAL_HEADER { - USHORT Magic; - UCHAR MajorLinkerVersion; - UCHAR MinorLinkerVersion; - ULONG SizeOfCode; - ULONG SizeOfInitializedData; - ULONG SizeOfUninitializedData; - ULONG AddressOfEntryPoint; - ULONG BaseOfCode; - ULONG BaseOfData; - ULONG BaseOfBss; - ULONG GprMask; - ULONG CprMask[4]; - ULONG GpValue; + USHORT Magic; + UCHAR MajorLinkerVersion; + UCHAR MinorLinkerVersion; + ULONG SizeOfCode; + ULONG SizeOfInitializedData; + ULONG SizeOfUninitializedData; + ULONG AddressOfEntryPoint; + ULONG BaseOfCode; + ULONG BaseOfData; + ULONG BaseOfBss; + ULONG GprMask; + ULONG CprMask[4]; + ULONG GpValue; } IMAGE_ROM_OPTIONAL_HEADER, *PIMAGE_ROM_OPTIONAL_HEADER; typedef struct _IMAGE_OPTIONAL_HEADER64 { - USHORT Magic; - UCHAR MajorLinkerVersion; - UCHAR MinorLinkerVersion; - ULONG SizeOfCode; - ULONG SizeOfInitializedData; - ULONG SizeOfUninitializedData; - ULONG AddressOfEntryPoint; - ULONG BaseOfCode; - ULONGLONG ImageBase; - ULONG SectionAlignment; - ULONG FileAlignment; - USHORT MajorOperatingSystemVersion; - USHORT MinorOperatingSystemVersion; - USHORT MajorImageVersion; - USHORT MinorImageVersion; - USHORT MajorSubsystemVersion; - USHORT MinorSubsystemVersion; - ULONG Win32VersionValue; - ULONG SizeOfImage; - ULONG SizeOfHeaders; - ULONG CheckSum; - USHORT Subsystem; - USHORT DllCharacteristics; - ULONGLONG SizeOfStackReserve; - ULONGLONG SizeOfStackCommit; - ULONGLONG SizeOfHeapReserve; - ULONGLONG SizeOfHeapCommit; - ULONG LoaderFlags; - ULONG NumberOfRvaAndSizes; - IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; + USHORT Magic; + UCHAR MajorLinkerVersion; + UCHAR MinorLinkerVersion; + ULONG SizeOfCode; + ULONG SizeOfInitializedData; + ULONG SizeOfUninitializedData; + ULONG AddressOfEntryPoint; + ULONG BaseOfCode; + ULONGLONG ImageBase; + ULONG SectionAlignment; + ULONG FileAlignment; + USHORT MajorOperatingSystemVersion; + USHORT MinorOperatingSystemVersion; + USHORT MajorImageVersion; + USHORT MinorImageVersion; + USHORT MajorSubsystemVersion; + USHORT MinorSubsystemVersion; + ULONG Win32VersionValue; + ULONG SizeOfImage; + ULONG SizeOfHeaders; + ULONG CheckSum; + USHORT Subsystem; + USHORT DllCharacteristics; + ULONGLONG SizeOfStackReserve; + ULONGLONG SizeOfStackCommit; + ULONGLONG SizeOfHeapReserve; + ULONGLONG SizeOfHeapCommit; + ULONG LoaderFlags; + ULONG NumberOfRvaAndSizes; + IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; } IMAGE_OPTIONAL_HEADER64, *PIMAGE_OPTIONAL_HEADER64; // @@ -374,7 +355,6 @@ typedef struct _IMAGE_OPTIONAL_HEADER64 { #define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b #define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107 - #ifdef _WIN64 typedef IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER; typedef PIMAGE_OPTIONAL_HEADER64 PIMAGE_OPTIONAL_HEADER; @@ -385,21 +365,19 @@ typedef PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER; #define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR32_MAGIC #endif - - // // Nt Header Formats // typedef struct _IMAGE_NT_HEADERS64 { - ULONG Signature; - IMAGE_FILE_HEADER FileHeader; - IMAGE_OPTIONAL_HEADER64 OptionalHeader; + ULONG Signature; + IMAGE_FILE_HEADER FileHeader; + IMAGE_OPTIONAL_HEADER64 OptionalHeader; } IMAGE_NT_HEADERS64; typedef struct _IMAGE_NT_HEADERS { - ULONG Signature; - IMAGE_FILE_HEADER FileHeader; - IMAGE_OPTIONAL_HEADER32 OptionalHeader; + ULONG Signature; + IMAGE_FILE_HEADER FileHeader; + IMAGE_OPTIONAL_HEADER32 OptionalHeader; } IMAGE_NT_HEADERS32; #ifdef _WIN64 @@ -424,11 +402,10 @@ typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS; // // Retreives the first image section header from the Nt Header // -#define IMAGE_FIRST_SECTION( NtHeader ) ((PIMAGE_SECTION_HEADER) \ - ((ULONG_PTR)(NtHeader) + \ - FIELD_OFFSET( IMAGE_NT_HEADERS, OptionalHeader ) + \ - ((NtHeader))->FileHeader.SizeOfOptionalHeader \ - )) +#define IMAGE_FIRST_SECTION( NtHeader ) \ + ((PIMAGE_SECTION_HEADER) ((ULONG_PTR)(NtHeader) + \ + FIELD_OFFSET( IMAGE_NT_HEADERS, OptionalHeader ) + \ + ((NtHeader))->FileHeader.SizeOfOptionalHeader)) // // Dll Characteristics @@ -461,34 +438,32 @@ typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS; #define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13 #define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14 - - // // Import Formats // typedef struct _IMAGE_IMPORT_BY_NAME { - USHORT Hint; - UCHAR Name[1]; + USHORT Hint; + UCHAR Name[1]; } IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME; #include typedef struct _IMAGE_THUNK_DATA64 { - union { - ULONGLONG ForwarderString; - ULONGLONG Function; - ULONGLONG Ordinal; - ULONGLONG AddressOfData; - } u1; + union { + ULONGLONG ForwarderString; + ULONGLONG Function; + ULONGLONG Ordinal; + ULONGLONG AddressOfData; + } u1; } IMAGE_THUNK_DATA64, *PIMAGE_THUNK_DATA64; #include typedef struct _IMAGE_THUNK_DATA32 { - union { - ULONG ForwarderString; - ULONG Function; - ULONG Ordinal; - ULONG AddressOfData; - } u1; + union { + ULONG ForwarderString; + ULONG Function; + ULONG Ordinal; + ULONG AddressOfData; + } u1; } IMAGE_THUNK_DATA32, *PIMAGE_THUNK_DATA32; #define IMAGE_ORDINAL_FLAG64 0x8000000000000000ULL @@ -498,35 +473,32 @@ typedef struct _IMAGE_THUNK_DATA32 { #define IMAGE_SNAP_BY_ORDINAL64(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG64) != 0) #define IMAGE_SNAP_BY_ORDINAL32(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG32) != 0) - - // // Thread Local Storage (TLS) // typedef VOID (NTAPI *PIMAGE_TLS_CALLBACK) ( - PVOID DllHandle, - ULONG Reason, - PVOID Reserved -); + PVOID DllHandle, + ULONG Reason, + PVOID Reserved); typedef struct _IMAGE_TLS_DIRECTORY64 { - ULONGLONG StartAddressOfRawData; - ULONGLONG EndAddressOfRawData; - ULONGLONG AddressOfIndex; - ULONGLONG AddressOfCallBacks; - ULONG SizeOfZeroFill; - ULONG Characteristics; + ULONGLONG StartAddressOfRawData; + ULONGLONG EndAddressOfRawData; + ULONGLONG AddressOfIndex; + ULONGLONG AddressOfCallBacks; + ULONG SizeOfZeroFill; + ULONG Characteristics; } IMAGE_TLS_DIRECTORY64, *PIMAGE_TLS_DIRECTORY64; typedef struct _IMAGE_TLS_DIRECTORY32 { - ULONG StartAddressOfRawData; - ULONG EndAddressOfRawData; - ULONG AddressOfIndex; - ULONG AddressOfCallBacks; - ULONG SizeOfZeroFill; - ULONG Characteristics; + ULONG StartAddressOfRawData; + ULONG EndAddressOfRawData; + ULONG AddressOfIndex; + ULONG AddressOfCallBacks; + ULONG SizeOfZeroFill; + ULONG Characteristics; } IMAGE_TLS_DIRECTORY32, *PIMAGE_TLS_DIRECTORY32; #ifdef _WIN64 @@ -548,18 +520,16 @@ typedef PIMAGE_TLS_DIRECTORY32 PIMAGE_TLS_DIRECTORY; #endif typedef struct _IMAGE_IMPORT_DESCRIPTOR { - _ANONYMOUS_UNION union { - ULONG Characteristics; - ULONG OriginalFirstThunk; - } DUMMYUNIONNAME; - ULONG TimeDateStamp; - ULONG ForwarderChain; - ULONG Name; - ULONG FirstThunk; + _ANONYMOUS_UNION union { + ULONG Characteristics; + ULONG OriginalFirstThunk; + } DUMMYUNIONNAME; + ULONG TimeDateStamp; + ULONG ForwarderChain; + ULONG Name; + ULONG FirstThunk; } IMAGE_IMPORT_DESCRIPTOR, *PIMAGE_IMPORT_DESCRIPTOR; #include - - -#endif +#endif /* _NTIMAGE_ */ diff --git a/include/ddk/ntnls.h b/include/ddk/ntnls.h index aa75009a7c0..688b3de4492 100644 --- a/include/ddk/ntnls.h +++ b/include/ddk/ntnls.h @@ -2,38 +2,37 @@ #ifndef _NTNLS_ #define _NTNLS_ - #ifdef __cplusplus extern "C" { #endif + #define MAXIMUM_LEADBYTES 12 /* Some documentation can be found here: http://www.ping.uio.no/~ovehk/nls/ */ -typedef struct _CPTABLEINFO -{ - USHORT CodePage; - USHORT MaximumCharacterSize; /* 1 = SBCS, 2 = DBCS */ - USHORT DefaultChar; /* Default MultiByte Character for the CP->Unicode conversion */ - USHORT UniDefaultChar; /* Default Unicode Character for the CP->Unicode conversion */ - USHORT TransDefaultChar; /* Default MultiByte Character for the Unicode->CP conversion */ - USHORT TransUniDefaultChar; /* Default Unicode Character for the Unicode->CP conversion */ - USHORT DBCSCodePage; - UCHAR LeadByte[MAXIMUM_LEADBYTES]; - PUSHORT MultiByteTable; /* Table for CP->Unicode conversion */ - PVOID WideCharTable; /* Table for Unicode->CP conversion */ - PUSHORT DBCSRanges; - PUSHORT DBCSOffsets; +typedef struct _CPTABLEINFO { + USHORT CodePage; + USHORT MaximumCharacterSize; /* 1 = SBCS, 2 = DBCS */ + USHORT DefaultChar; /* Default MultiByte Character for the CP->Unicode conversion */ + USHORT UniDefaultChar; /* Default Unicode Character for the CP->Unicode conversion */ + USHORT TransDefaultChar; /* Default MultiByte Character for the Unicode->CP conversion */ + USHORT TransUniDefaultChar; /* Default Unicode Character for the Unicode->CP conversion */ + USHORT DBCSCodePage; + UCHAR LeadByte[MAXIMUM_LEADBYTES]; + PUSHORT MultiByteTable; /* Table for CP->Unicode conversion */ + PVOID WideCharTable; /* Table for Unicode->CP conversion */ + PUSHORT DBCSRanges; + PUSHORT DBCSOffsets; } CPTABLEINFO, *PCPTABLEINFO; -typedef struct _NLSTABLEINFO -{ - CPTABLEINFO OemTableInfo; - CPTABLEINFO AnsiTableInfo; - PUSHORT UpperCaseTable; - PUSHORT LowerCaseTable; +typedef struct _NLSTABLEINFO { + CPTABLEINFO OemTableInfo; + CPTABLEINFO AnsiTableInfo; + PUSHORT UpperCaseTable; + PUSHORT LowerCaseTable; } NLSTABLEINFO, *PNLSTABLEINFO; #ifdef __cplusplus } #endif -#endif + +#endif /* _NTNLS_ */ diff --git a/include/ddk/ntpoapi.h b/include/ddk/ntpoapi.h index c4a4b28ec6f..ae1665610ba 100644 --- a/include/ddk/ntpoapi.h +++ b/include/ddk/ntpoapi.h @@ -32,29 +32,30 @@ extern "C" { /* Power States/Levels */ typedef enum _SYSTEM_POWER_STATE { - PowerSystemUnspecified, - PowerSystemWorking, - PowerSystemSleeping1, - PowerSystemSleeping2, - PowerSystemSleeping3, - PowerSystemHibernate, - PowerSystemShutdown, - PowerSystemMaximum + PowerSystemUnspecified, + PowerSystemWorking, + PowerSystemSleeping1, + PowerSystemSleeping2, + PowerSystemSleeping3, + PowerSystemHibernate, + PowerSystemShutdown, + PowerSystemMaximum } SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE; + #define POWER_SYSTEM_MAXIMUM PowerSystemMaximum typedef enum _DEVICE_POWER_STATE { - PowerDeviceUnspecified, - PowerDeviceD0, - PowerDeviceD1, - PowerDeviceD2, - PowerDeviceD3, - PowerDeviceMaximum + PowerDeviceUnspecified, + PowerDeviceD0, + PowerDeviceD1, + PowerDeviceD2, + PowerDeviceD3, + PowerDeviceMaximum } DEVICE_POWER_STATE, *PDEVICE_POWER_STATE; typedef union _POWER_STATE { - SYSTEM_POWER_STATE SystemState; - DEVICE_POWER_STATE DeviceState; + SYSTEM_POWER_STATE SystemState; + DEVICE_POWER_STATE DeviceState; } POWER_STATE, *PPOWER_STATE; typedef enum _POWER_STATE_TYPE { @@ -63,76 +64,76 @@ typedef enum _POWER_STATE_TYPE { } POWER_STATE_TYPE, *PPOWER_STATE_TYPE; typedef enum _POWER_INFORMATION_LEVEL { - SystemPowerPolicyAc, - SystemPowerPolicyDc, - VerifySystemPolicyAc, - VerifySystemPolicyDc, - SystemPowerCapabilities, - SystemBatteryState, - SystemPowerStateHandler, - ProcessorStateHandler, - SystemPowerPolicyCurrent, - AdministratorPowerPolicy, - SystemReserveHiberFile, - ProcessorInformation, - SystemPowerInformation, - ProcessorStateHandler2, - LastWakeTime, - LastSleepTime, - SystemExecutionState, - SystemPowerStateNotifyHandler, - ProcessorPowerPolicyAc, - ProcessorPowerPolicyDc, - VerifyProcessorPowerPolicyAc, - VerifyProcessorPowerPolicyDc, - ProcessorPowerPolicyCurrent, - SystemPowerStateLogging, - SystemPowerLoggingEntry, - SetPowerSettingValue, - NotifyUserPowerSetting, - PowerInformationLevelUnused0, - PowerInformationLevelUnused1, - SystemVideoState, - TraceApplicationPowerMessage, - TraceApplicationPowerMessageEnd, - ProcessorPerfStates, - ProcessorIdleStates, - ProcessorCap, - SystemWakeSource, - SystemHiberFileInformation, - TraceServicePowerMessage, - ProcessorLoad, - PowerShutdownNotification, - MonitorCapabilities, - SessionPowerInit, - SessionDisplayState, - PowerRequestCreate, - PowerRequestAction, - GetPowerRequestList, - ProcessorInformationEx, - NotifyUserModeLegacyPowerEvent, - GroupPark, - ProcessorIdleDomains, - WakeTimerList, - SystemHiberFileSize, - PowerInformationLevelMaximum + SystemPowerPolicyAc, + SystemPowerPolicyDc, + VerifySystemPolicyAc, + VerifySystemPolicyDc, + SystemPowerCapabilities, + SystemBatteryState, + SystemPowerStateHandler, + ProcessorStateHandler, + SystemPowerPolicyCurrent, + AdministratorPowerPolicy, + SystemReserveHiberFile, + ProcessorInformation, + SystemPowerInformation, + ProcessorStateHandler2, + LastWakeTime, + LastSleepTime, + SystemExecutionState, + SystemPowerStateNotifyHandler, + ProcessorPowerPolicyAc, + ProcessorPowerPolicyDc, + VerifyProcessorPowerPolicyAc, + VerifyProcessorPowerPolicyDc, + ProcessorPowerPolicyCurrent, + SystemPowerStateLogging, + SystemPowerLoggingEntry, + SetPowerSettingValue, + NotifyUserPowerSetting, + PowerInformationLevelUnused0, + PowerInformationLevelUnused1, + SystemVideoState, + TraceApplicationPowerMessage, + TraceApplicationPowerMessageEnd, + ProcessorPerfStates, + ProcessorIdleStates, + ProcessorCap, + SystemWakeSource, + SystemHiberFileInformation, + TraceServicePowerMessage, + ProcessorLoad, + PowerShutdownNotification, + MonitorCapabilities, + SessionPowerInit, + SessionDisplayState, + PowerRequestCreate, + PowerRequestAction, + GetPowerRequestList, + ProcessorInformationEx, + NotifyUserModeLegacyPowerEvent, + GroupPark, + ProcessorIdleDomains, + WakeTimerList, + SystemHiberFileSize, + PowerInformationLevelMaximum } POWER_INFORMATION_LEVEL; typedef enum { - PowerActionNone, - PowerActionReserved, - PowerActionSleep, - PowerActionHibernate, - PowerActionShutdown, - PowerActionShutdownReset, - PowerActionShutdownOff, - PowerActionWarmEject + PowerActionNone, + PowerActionReserved, + PowerActionSleep, + PowerActionHibernate, + PowerActionShutdown, + PowerActionShutdownReset, + PowerActionShutdownOff, + PowerActionWarmEject } POWER_ACTION, *PPOWER_ACTION; #if (NTDDI_VERSION >= NTDDI_WINXP) || !defined(_BATCLASS_) typedef struct { - ULONG Granularity; - ULONG Capacity; + ULONG Granularity; + ULONG Capacity; } BATTERY_REPORTING_SCALE, *PBATTERY_REPORTING_SCALE; #endif /* (NTDDI_VERSION >= NTDDI_WINXP) || !defined(_BATCLASS_) */ @@ -144,9 +145,9 @@ typedef struct { #define PERCENT_TO_PERF_LEVEL(x) (((x) * POWER_PERF_SCALE * 10) / 1000) typedef struct _PROCESSOR_IDLE_TIMES { - ULONGLONG StartTime; - ULONGLONG EndTime; - ULONG IdleHandlerReserved[4]; + ULONGLONG StartTime; + ULONGLONG EndTime; + ULONG IdleHandlerReserved[4]; } PROCESSOR_IDLE_TIMES, *PPROCESSOR_IDLE_TIMES; typedef BOOLEAN @@ -154,133 +155,133 @@ typedef BOOLEAN IN OUT PPROCESSOR_IDLE_TIMES IdleTimes); typedef struct _PROCESSOR_IDLE_HANDLER_INFO { - ULONG HardwareLatency; - PPROCESSOR_IDLE_HANDLER Handler; + ULONG HardwareLatency; + PPROCESSOR_IDLE_HANDLER Handler; } PROCESSOR_IDLE_HANDLER_INFO, *PPROCESSOR_IDLE_HANDLER_INFO; typedef VOID (FASTCALL*PSET_PROCESSOR_THROTTLE)( - IN UCHAR Throttle); + IN UCHAR Throttle); typedef NTSTATUS (FASTCALL*PSET_PROCESSOR_THROTTLE2)( - IN UCHAR Throttle); + IN UCHAR Throttle); #define MAX_IDLE_HANDLERS 3 typedef struct _PROCESSOR_STATE_HANDLER { - UCHAR ThrottleScale; - BOOLEAN ThrottleOnIdle; - PSET_PROCESSOR_THROTTLE SetThrottle; - ULONG NumIdleHandlers; - PROCESSOR_IDLE_HANDLER_INFO IdleHandler[MAX_IDLE_HANDLERS]; + UCHAR ThrottleScale; + BOOLEAN ThrottleOnIdle; + PSET_PROCESSOR_THROTTLE SetThrottle; + ULONG NumIdleHandlers; + PROCESSOR_IDLE_HANDLER_INFO IdleHandler[MAX_IDLE_HANDLERS]; } PROCESSOR_STATE_HANDLER, *PPROCESSOR_STATE_HANDLER; typedef enum _POWER_STATE_HANDLER_TYPE { - PowerStateSleeping1, - PowerStateSleeping2, - PowerStateSleeping3, - PowerStateSleeping4, - PowerStateSleeping4Firmware, - PowerStateShutdownReset, - PowerStateShutdownOff, - PowerStateMaximum + PowerStateSleeping1, + PowerStateSleeping2, + PowerStateSleeping3, + PowerStateSleeping4, + PowerStateSleeping4Firmware, + PowerStateShutdownReset, + PowerStateShutdownOff, + PowerStateMaximum } POWER_STATE_HANDLER_TYPE, *PPOWER_STATE_HANDLER_TYPE; typedef NTSTATUS (NTAPI*PENTER_STATE_SYSTEM_HANDLER)( - IN PVOID SystemContext); + IN PVOID SystemContext); typedef NTSTATUS (NTAPI*PENTER_STATE_HANDLER)( - IN PVOID Context, - IN PENTER_STATE_SYSTEM_HANDLER SystemHandler OPTIONAL, - IN PVOID SystemContext, - IN LONG NumberProcessors, + IN PVOID Context, + IN PENTER_STATE_SYSTEM_HANDLER SystemHandler OPTIONAL, + IN PVOID SystemContext, + IN LONG NumberProcessors, IN LONG volatile *Number); typedef struct _POWER_STATE_HANDLER { - POWER_STATE_HANDLER_TYPE Type; - BOOLEAN RtcWake; - UCHAR Spare[3]; - PENTER_STATE_HANDLER Handler; - PVOID Context; + POWER_STATE_HANDLER_TYPE Type; + BOOLEAN RtcWake; + UCHAR Spare[3]; + PENTER_STATE_HANDLER Handler; + PVOID Context; } POWER_STATE_HANDLER, *PPOWER_STATE_HANDLER; typedef NTSTATUS (NTAPI*PENTER_STATE_NOTIFY_HANDLER)( - IN POWER_STATE_HANDLER_TYPE State, - IN PVOID Context, - IN BOOLEAN Entering); + IN POWER_STATE_HANDLER_TYPE State, + IN PVOID Context, + IN BOOLEAN Entering); typedef struct _POWER_STATE_NOTIFY_HANDLER { - PENTER_STATE_NOTIFY_HANDLER Handler; - PVOID Context; + PENTER_STATE_NOTIFY_HANDLER Handler; + PVOID Context; } POWER_STATE_NOTIFY_HANDLER, *PPOWER_STATE_NOTIFY_HANDLER; NTSYSCALLAPI NTSTATUS NTAPI NtPowerInformation( - IN POWER_INFORMATION_LEVEL InformationLevel, - IN PVOID InputBuffer OPTIONAL, - IN ULONG InputBufferLength, - OUT PVOID OutputBuffer OPTIONAL, - IN ULONG OutputBufferLength); + IN POWER_INFORMATION_LEVEL InformationLevel, + IN PVOID InputBuffer OPTIONAL, + IN ULONG InputBufferLength, + OUT PVOID OutputBuffer OPTIONAL, + IN ULONG OutputBufferLength); #define PROCESSOR_STATE_TYPE_PERFORMANCE 1 #define PROCESSOR_STATE_TYPE_THROTTLE 2 typedef struct _PROCESSOR_PERF_LEVEL { - UCHAR PercentFrequency; - UCHAR Reserved; - USHORT Flags; + UCHAR PercentFrequency; + UCHAR Reserved; + USHORT Flags; } PROCESSOR_PERF_LEVEL, *PPROCESSOR_PERF_LEVEL; typedef struct _PROCESSOR_PERF_STATE { - UCHAR PercentFrequency; - UCHAR MinCapacity; - USHORT Power; - UCHAR IncreaseLevel; - UCHAR DecreaseLevel; - USHORT Flags; - ULONG IncreaseTime; - ULONG DecreaseTime; - ULONG IncreaseCount; - ULONG DecreaseCount; - ULONGLONG PerformanceTime; + UCHAR PercentFrequency; + UCHAR MinCapacity; + USHORT Power; + UCHAR IncreaseLevel; + UCHAR DecreaseLevel; + USHORT Flags; + ULONG IncreaseTime; + ULONG DecreaseTime; + ULONG IncreaseCount; + ULONG DecreaseCount; + ULONGLONG PerformanceTime; } PROCESSOR_PERF_STATE, *PPROCESSOR_PERF_STATE; typedef struct _PROCESSOR_STATE_HANDLER2 { - ULONG NumIdleHandlers; - PROCESSOR_IDLE_HANDLER_INFO IdleHandler[MAX_IDLE_HANDLERS]; - PSET_PROCESSOR_THROTTLE2 SetPerfLevel; - ULONG HardwareLatency; - UCHAR NumPerfStates; - PROCESSOR_PERF_LEVEL PerfLevel[1]; + ULONG NumIdleHandlers; + PROCESSOR_IDLE_HANDLER_INFO IdleHandler[MAX_IDLE_HANDLERS]; + PSET_PROCESSOR_THROTTLE2 SetPerfLevel; + ULONG HardwareLatency; + UCHAR NumPerfStates; + PROCESSOR_PERF_LEVEL PerfLevel[1]; } PROCESSOR_STATE_HANDLER2, *PPROCESSOR_STATE_HANDLER2; NTSYSCALLAPI NTSTATUS NTAPI NtSetThreadExecutionState( - IN EXECUTION_STATE esFlags, - OUT EXECUTION_STATE *PreviousFlags); + IN EXECUTION_STATE esFlags, + OUT EXECUTION_STATE *PreviousFlags); NTSYSCALLAPI NTSTATUS NTAPI NtRequestWakeupLatency( - IN LATENCY_TIME latency); + IN LATENCY_TIME latency); NTSYSCALLAPI NTSTATUS NTAPI NtInitiatePowerAction( - IN POWER_ACTION SystemAction, - IN SYSTEM_POWER_STATE MinSystemState, - IN ULONG Flags, - IN BOOLEAN Asynchronous); + IN POWER_ACTION SystemAction, + IN SYSTEM_POWER_STATE MinSystemState, + IN ULONG Flags, + IN BOOLEAN Asynchronous); NTSYSCALLAPI NTSTATUS @@ -294,93 +295,92 @@ NTSYSCALLAPI NTSTATUS NTAPI NtGetDevicePowerState( - IN HANDLE Device, - OUT DEVICE_POWER_STATE *State); + IN HANDLE Device, + OUT DEVICE_POWER_STATE *State); NTSYSCALLAPI NTSTATUS NTAPI NtCancelDeviceWakeupRequest( - IN HANDLE Device); + IN HANDLE Device); NTSYSCALLAPI BOOLEAN NTAPI -NtIsSystemResumeAutomatic( - VOID); +NtIsSystemResumeAutomatic(VOID); NTSYSCALLAPI NTSTATUS NTAPI NtRequestDeviceWakeup( - IN HANDLE Device); + IN HANDLE Device); #define WINLOGON_LOCK_ON_SLEEP 0x00000001 typedef struct { - BOOLEAN PowerButtonPresent; - BOOLEAN SleepButtonPresent; - BOOLEAN LidPresent; - BOOLEAN SystemS1; - BOOLEAN SystemS2; - BOOLEAN SystemS3; - BOOLEAN SystemS4; - BOOLEAN SystemS5; - BOOLEAN HiberFilePresent; - BOOLEAN FullWake; - BOOLEAN VideoDimPresent; - BOOLEAN ApmPresent; - BOOLEAN UpsPresent; - BOOLEAN ThermalControl; - BOOLEAN ProcessorThrottle; - UCHAR ProcessorMinThrottle; + BOOLEAN PowerButtonPresent; + BOOLEAN SleepButtonPresent; + BOOLEAN LidPresent; + BOOLEAN SystemS1; + BOOLEAN SystemS2; + BOOLEAN SystemS3; + BOOLEAN SystemS4; + BOOLEAN SystemS5; + BOOLEAN HiberFilePresent; + BOOLEAN FullWake; + BOOLEAN VideoDimPresent; + BOOLEAN ApmPresent; + BOOLEAN UpsPresent; + BOOLEAN ThermalControl; + BOOLEAN ProcessorThrottle; + UCHAR ProcessorMinThrottle; #if (NTDDI_VERSION < NTDDI_WINXP) - UCHAR ProcessorThrottleScale; - UCHAR spare2[4]; + UCHAR ProcessorThrottleScale; + UCHAR spare2[4]; #else - UCHAR ProcessorMaxThrottle; - BOOLEAN FastSystemS4; - UCHAR spare2[3]; -#endif // (NTDDI_VERSION < NTDDI_WINXP) - BOOLEAN DiskSpinDown; - UCHAR spare3[8]; - BOOLEAN SystemBatteriesPresent; - BOOLEAN BatteriesAreShortTerm; - BATTERY_REPORTING_SCALE BatteryScale[3]; - SYSTEM_POWER_STATE AcOnLineWake; - SYSTEM_POWER_STATE SoftLidWake; - SYSTEM_POWER_STATE RtcWake; - SYSTEM_POWER_STATE MinDeviceWakeState; - SYSTEM_POWER_STATE DefaultLowLatencyWake; + UCHAR ProcessorMaxThrottle; + BOOLEAN FastSystemS4; + UCHAR spare2[3]; +#endif /* (NTDDI_VERSION < NTDDI_WINXP) */ + BOOLEAN DiskSpinDown; + UCHAR spare3[8]; + BOOLEAN SystemBatteriesPresent; + BOOLEAN BatteriesAreShortTerm; + BATTERY_REPORTING_SCALE BatteryScale[3]; + SYSTEM_POWER_STATE AcOnLineWake; + SYSTEM_POWER_STATE SoftLidWake; + SYSTEM_POWER_STATE RtcWake; + SYSTEM_POWER_STATE MinDeviceWakeState; + SYSTEM_POWER_STATE DefaultLowLatencyWake; } SYSTEM_POWER_CAPABILITIES, *PSYSTEM_POWER_CAPABILITIES; typedef struct { - BOOLEAN AcOnLine; - BOOLEAN BatteryPresent; - BOOLEAN Charging; - BOOLEAN Discharging; - BOOLEAN Spare1[4]; - ULONG MaxCapacity; - ULONG RemainingCapacity; - ULONG Rate; - ULONG EstimatedTime; - ULONG DefaultAlert1; - ULONG DefaultAlert2; + BOOLEAN AcOnLine; + BOOLEAN BatteryPresent; + BOOLEAN Charging; + BOOLEAN Discharging; + BOOLEAN Spare1[4]; + ULONG MaxCapacity; + ULONG RemainingCapacity; + ULONG Rate; + ULONG EstimatedTime; + ULONG DefaultAlert1; + ULONG DefaultAlert2; } SYSTEM_BATTERY_STATE, *PSYSTEM_BATTERY_STATE; typedef struct _PROCESSOR_POWER_INFORMATION { - ULONG Number; - ULONG MaxMhz; - ULONG CurrentMhz; - ULONG MhzLimit; - ULONG MaxIdleState; - ULONG CurrentIdleState; + ULONG Number; + ULONG MaxMhz; + ULONG CurrentMhz; + ULONG MhzLimit; + ULONG MaxIdleState; + ULONG CurrentIdleState; } PROCESSOR_POWER_INFORMATION, *PPROCESSOR_POWER_INFORMATION; typedef struct _POWER_ACTION_POLICY { - POWER_ACTION Action; - ULONG Flags; - ULONG EventCode; + POWER_ACTION Action; + ULONG Flags; + ULONG EventCode; } POWER_ACTION_POLICY, *PPOWER_ACTION_POLICY; /* POWER_ACTION_POLICY.Flags constants */ @@ -400,15 +400,15 @@ typedef struct _POWER_ACTION_POLICY { #define POWER_USER_NOTIFY_SHUTDOWN 0x00000010 #define POWER_FORCE_TRIGGER_RESET 0x80000000 -#define DISCHARGE_POLICY_CRITICAL 0 -#define DISCHARGE_POLICY_LOW 1 -#define NUM_DISCHARGE_POLICIES 4 +#define DISCHARGE_POLICY_CRITICAL 0 +#define DISCHARGE_POLICY_LOW 1 +#define NUM_DISCHARGE_POLICIES 4 -#define PO_THROTTLE_NONE 0 -#define PO_THROTTLE_CONSTANT 1 -#define PO_THROTTLE_DEGRADE 2 -#define PO_THROTTLE_ADAPTIVE 3 -#define PO_THROTTLE_MAXIMUM 4 +#define PO_THROTTLE_NONE 0 +#define PO_THROTTLE_CONSTANT 1 +#define PO_THROTTLE_DEGRADE 2 +#define PO_THROTTLE_ADAPTIVE 3 +#define PO_THROTTLE_MAXIMUM 4 #ifdef __cplusplus } diff --git a/include/ddk/ntstrsafe.h b/include/ddk/ntstrsafe.h index 447a3a5265c..f7fc9f39355 100644 --- a/include/ddk/ntstrsafe.h +++ b/include/ddk/ntstrsafe.h @@ -33,7 +33,7 @@ typedef unsigned long DWORD; /* PRIVATE FUNCTIONS *********************************************************/ -__inline +static __inline NTSTATUS NTAPI RtlStringLengthWorkerA(IN LPCSTR String, @@ -66,7 +66,7 @@ RtlStringLengthWorkerA(IN LPCSTR String, return Status; } -__inline +static __inline NTSTATUS NTAPI RtlStringValidateDestA(IN LPSTR Destination, @@ -95,7 +95,7 @@ RtlStringValidateDestA(IN LPSTR Destination, return Status; } -__inline +static __inline NTSTATUS NTAPI RtlStringExValidateDestA(IN OUT LPSTR *Destination, @@ -111,7 +111,7 @@ RtlStringExValidateDestA(IN OUT LPSTR *Destination, MaxLength); } -__inline +static __inline NTSTATUS NTAPI RtlStringExValidateSrcA(IN OUT LPCSTR *Source OPTIONAL, @@ -130,7 +130,7 @@ RtlStringExValidateSrcA(IN OUT LPCSTR *Source OPTIONAL, return Status; } -__inline +static __inline NTSTATUS NTAPI RtlStringVPrintfWorkerA(OUT LPSTR Destination, @@ -171,7 +171,7 @@ RtlStringVPrintfWorkerA(OUT LPSTR Destination, return Status; } -__inline +static __inline NTSTATUS NTAPI RtlStringCopyWorkerA(OUT LPSTR Destination, @@ -208,7 +208,7 @@ RtlStringCopyWorkerA(OUT LPSTR Destination, /* PUBLIC FUNCTIONS **********************************************************/ -__inline +static __inline NTSTATUS NTAPI RtlStringCchCopyA(IN LPSTR Destination, @@ -219,7 +219,7 @@ RtlStringCchCopyA(IN LPSTR Destination, return STATUS_NOT_IMPLEMENTED; } -__inline +static __inline NTSTATUS NTAPI RtlStringCbPrintfA(OUT LPSTR Destination, @@ -249,7 +249,7 @@ RtlStringCbPrintfA(OUT LPSTR Destination, return Status; } -__inline +static __inline NTSTATUS NTAPI RtlStringCbPrintfExA(OUT LPSTR Destination, @@ -330,7 +330,7 @@ RtlStringCbPrintfExA(OUT LPSTR Destination, return Status; } -__inline +static __inline NTSTATUS NTAPI RtlStringCbCopyExA(OUT LPSTR Destination, @@ -407,7 +407,7 @@ RtlStringCbCopyExA(OUT LPSTR Destination, return Status; } -__inline +static __inline NTSTATUS NTAPI RtlStringCbPrintfW( @@ -420,7 +420,7 @@ RtlStringCbPrintfW( return STATUS_NOT_IMPLEMENTED; } -__inline +static __inline NTSTATUS NTAPI RtlStringCbCatExA(IN OUT LPSTR Destination, @@ -494,7 +494,7 @@ RtlStringCbCatExA(IN OUT LPSTR Destination, return Status; } -__inline +static __inline NTSTATUS NTAPI RtlStringCbCopyA(OUT LPSTR Destination, @@ -520,4 +520,4 @@ RtlStringCbCopyA(OUT LPSTR Destination, return Status; } -#endif +#endif /* _NTSTRSAFE_H_INCLUDED_ */ diff --git a/include/ddk/oprghdlr.h b/include/ddk/oprghdlr.h index 5301730ad85..838b4e95fba 100644 --- a/include/ddk/oprghdlr.h +++ b/include/ddk/oprghdlr.h @@ -40,4 +40,4 @@ DeRegisterOpRegionHandler (IN PDEVICE_OBJECT DeviceObject, #define ACPI_OPREGION_REGION_SPACE_SMB 0x4 #define ACPI_OPREGION_READ 0x0 #define ACPI_OPREGION_WRITE 0x1 -#define ACPI_OPREGION_ACCESS_AT_HIGH_LEVEL 0x1 \ No newline at end of file +#define ACPI_OPREGION_ACCESS_AT_HIGH_LEVEL 0x1 diff --git a/include/ddk/portcls.h b/include/ddk/portcls.h index 97becb4f51d..0a6573293c6 100644 --- a/include/ddk/portcls.h +++ b/include/ddk/portcls.h @@ -126,12 +126,11 @@ #define PORTCLS_H #ifdef __cplusplus -extern "C" -{ - #include +extern "C" { +#include } #else - #include +#include #endif #include @@ -146,12 +145,11 @@ extern "C" #include #ifdef __cplusplus -extern "C" -{ - #include +extern "C" { +#include } #else - #include +#include #endif #ifndef PC_NO_IMPORTS @@ -213,24 +211,22 @@ DEFINE_GUID(CLSID_MiniportDriverFmSynthWithVol, 0xe5a3c139L, 0xf0f2, 0x11d1, 0x8 IoIsWdmVersionAvailable may also be used by older drivers. */ -enum -{ - kVersionInvalid = -1, - - kVersionWin98, - kVersionWin98SE, - kVersionWin2K, - kVersionWin98SE_QFE2, - kVersionWin2K_SP2, - kVersionWinME, - kVersionWin98SE_QFE3, - kVersionWinME_QFE1, - kVersionWinXP, - kVersionWinXPSP1, - kVersionWinServer2003, - kVersionWin2K_UAAQFE, /* These support IUnregister* interface */ - kVersionWinXP_UAAQFE, - kVersionWinServer2003_UAAQFE +enum { + kVersionInvalid = -1, + kVersionWin98, + kVersionWin98SE, + kVersionWin2K, + kVersionWin98SE_QFE2, + kVersionWin2K_SP2, + kVersionWinME, + kVersionWin98SE_QFE3, + kVersionWinME_QFE1, + kVersionWinXP, + kVersionWinXPSP1, + kVersionWinServer2003, + kVersionWin2K_UAAQFE, /* These support IUnregister* interface */ + kVersionWinXP_UAAQFE, + kVersionWinServer2003_UAAQFE }; /* =============================================================== @@ -241,164 +237,151 @@ struct _PCPROPERTY_REQUEST; typedef struct _PCPROPERTY_REQUEST PCPROPERTY_REQUEST, *PPCPROPERTY_REQUEST; -typedef NTSTATUS (NTAPI *PCPFNPROPERTY_HANDLER)( - IN PPCPROPERTY_REQUEST PropertyRequest); +typedef NTSTATUS +(NTAPI *PCPFNPROPERTY_HANDLER)( + IN PPCPROPERTY_REQUEST PropertyRequest); -typedef struct -{ - const GUID * Set; - ULONG Id; - ULONG Flags; +typedef struct { + const GUID *Set; + ULONG Id; + ULONG Flags; #define PCPROPERTY_ITEM_FLAG_GET KSPROPERTY_TYPE_GET #define PCPROPERTY_ITEM_FLAG_SET KSPROPERTY_TYPE_SET #define PCPROPERTY_ITEM_FLAG_BASICSUPPORT KSPROPERTY_TYPE_BASICSUPPORT -//not supported #define PCPROPERTY_ITEM_FLAG_RELATIONS KSPROPERTY_TYPE_RELATIONS + //not supported #define PCPROPERTY_ITEM_FLAG_RELATIONS KSPROPERTY_TYPE_RELATIONS #define PCPROPERTY_ITEM_FLAG_SERIALIZERAW KSPROPERTY_TYPE_SERIALIZERAW #define PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW KSPROPERTY_TYPE_UNSERIALIZERAW #define PCPROPERTY_ITEM_FLAG_SERIALIZESIZE KSPROPERTY_TYPE_SERIALIZESIZE #define PCPROPERTY_ITEM_FLAG_SERIALIZE\ - (PCPROPERTY_ITEM_FLAG_SERIALIZERAW\ - |PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW\ - |PCPROPERTY_ITEM_FLAG_SERIALIZESIZE\ - ) + (PCPROPERTY_ITEM_FLAG_SERIALIZERAW\ + |PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW\ + |PCPROPERTY_ITEM_FLAG_SERIALIZESIZE\ + ) #define PCPROPERTY_ITEM_FLAG_DEFAULTVALUES KSPROPERTY_TYPE_DEFAULTVALUES - PCPFNPROPERTY_HANDLER Handler; + PCPFNPROPERTY_HANDLER Handler; } PCPROPERTY_ITEM, *PPCPROPERTY_ITEM; - -struct _PCPROPERTY_REQUEST -{ - PUNKNOWN MajorTarget; - PUNKNOWN MinorTarget; - ULONG Node; - const PCPROPERTY_ITEM * PropertyItem; - ULONG Verb; - ULONG InstanceSize; - PVOID Instance; - ULONG ValueSize; - PVOID Value; - PIRP Irp; +struct _PCPROPERTY_REQUEST { + PUNKNOWN MajorTarget; + PUNKNOWN MinorTarget; + ULONG Node; + const PCPROPERTY_ITEM *PropertyItem; + ULONG Verb; + ULONG InstanceSize; + PVOID Instance; + ULONG ValueSize; + PVOID Value; + PIRP Irp; }; struct _PCEVENT_REQUEST; -typedef NTSTATUS (NTAPI *PCPFNEVENT_HANDLER)( - IN struct _PCEVENT_REQUEST* EventRequest); +typedef NTSTATUS +(NTAPI *PCPFNEVENT_HANDLER)( + IN struct _PCEVENT_REQUEST* EventRequest); -typedef struct _PCEVENT_ITEM -{ - const GUID* Set; - ULONG Id; - ULONG Flags; - PCPFNEVENT_HANDLER Handler; +typedef struct _PCEVENT_ITEM { + const GUID* Set; + ULONG Id; + ULONG Flags; + PCPFNEVENT_HANDLER Handler; } PCEVENT_ITEM, *PPCEVENT_ITEM; -typedef struct _PCEVENT_REQUEST -{ - PUNKNOWN MajorTarget; - PUNKNOWN MinorTarget; - ULONG Node; - const PCEVENT_ITEM* EventItem; - PKSEVENT_ENTRY EventEntry; - ULONG Verb; - PIRP Irp; +typedef struct _PCEVENT_REQUEST { + PUNKNOWN MajorTarget; + PUNKNOWN MinorTarget; + ULONG Node; + const PCEVENT_ITEM* EventItem; + PKSEVENT_ENTRY EventEntry; + ULONG Verb; + PIRP Irp; } PCEVENT_REQUEST, *PPCEVENT_REQUEST; - - struct _PCMETHOD_REQUEST; -typedef NTSTATUS (NTAPI *PCPFNMETHOD_HANDLER)( - IN struct _PCMETHOD_REQUEST* MethodRequest); +typedef NTSTATUS +(NTAPI *PCPFNMETHOD_HANDLER)( + IN struct _PCMETHOD_REQUEST* MethodRequest); -typedef struct _PCMETHOD_ITEM -{ - const GUID* Set; - ULONG Id; - ULONG Flags; - PCPFNMETHOD_HANDLER Handler; +typedef struct _PCMETHOD_ITEM { + const GUID* Set; + ULONG Id; + ULONG Flags; + PCPFNMETHOD_HANDLER Handler; } PCMETHOD_ITEM, *PPCMETHOD_ITEM; -typedef struct _PCMETHOD_REQUEST -{ - PUNKNOWN MajorTarget; - PUNKNOWN MinorTarget; - ULONG Node; - const PCMETHOD_ITEM* MethodItem; - ULONG Verb; +typedef struct _PCMETHOD_REQUEST { + PUNKNOWN MajorTarget; + PUNKNOWN MinorTarget; + ULONG Node; + const PCMETHOD_ITEM* MethodItem; + ULONG Verb; } PCMETHOD_REQUEST, *PPCMETHOD_REQUEST; - /* =============================================================== Structures (unsorted) */ -typedef struct -{ - ULONG PropertyItemSize; - ULONG PropertyCount; - const PCPROPERTY_ITEM* Properties; - ULONG MethodItemSize; - ULONG MethodCount; - const PCMETHOD_ITEM* Methods; - ULONG EventItemSize; - ULONG EventCount; - const PCEVENT_ITEM* Events; - ULONG Reserved; +typedef struct { + ULONG PropertyItemSize; + ULONG PropertyCount; + const PCPROPERTY_ITEM* Properties; + ULONG MethodItemSize; + ULONG MethodCount; + const PCMETHOD_ITEM* Methods; + ULONG EventItemSize; + ULONG EventCount; + const PCEVENT_ITEM* Events; + ULONG Reserved; } PCAUTOMATION_TABLE, *PPCAUTOMATION_TABLE; -typedef struct -{ - ULONG FromNode; - ULONG FromNodePin; - ULONG ToNode; - ULONG ToNodePin; +typedef struct { + ULONG FromNode; + ULONG FromNodePin; + ULONG ToNode; + ULONG ToNodePin; } PCCONNECTION_DESCRIPTOR, *PPCCONNECTIONDESCRIPTOR; -typedef struct -{ - ULONG MaxGlobalInstanceCount; - ULONG MaxFilterInstanceCount; - ULONG MinFilterInstanceCount; - const PCAUTOMATION_TABLE* AutomationTable; - KSPIN_DESCRIPTOR KsPinDescriptor; +typedef struct { + ULONG MaxGlobalInstanceCount; + ULONG MaxFilterInstanceCount; + ULONG MinFilterInstanceCount; + const PCAUTOMATION_TABLE* AutomationTable; + KSPIN_DESCRIPTOR KsPinDescriptor; } PCPIN_DESCRIPTOR, *PPCPIN_DESCRIPTOR; -typedef struct -{ - ULONG Flags; - const PCAUTOMATION_TABLE* AutomationTable; - const GUID* Type; - const GUID* Name; +typedef struct { + ULONG Flags; + const PCAUTOMATION_TABLE* AutomationTable; + const GUID* Type; + const GUID* Name; } PCNODE_DESCRIPTOR, *PPCNODE_DESCRIPTOR; -typedef struct -{ - ULONG Version; - const PCAUTOMATION_TABLE* AutomationTable; - ULONG PinSize; - ULONG PinCount; - const PCPIN_DESCRIPTOR* Pins; - ULONG NodeSize; - ULONG NodeCount; - const PCNODE_DESCRIPTOR* Nodes; - ULONG ConnectionCount; - const PCCONNECTION_DESCRIPTOR* Connections; - ULONG CategoryCount; - const GUID* Categories; +typedef struct { + ULONG Version; + const PCAUTOMATION_TABLE* AutomationTable; + ULONG PinSize; + ULONG PinCount; + const PCPIN_DESCRIPTOR* Pins; + ULONG NodeSize; + ULONG NodeCount; + const PCNODE_DESCRIPTOR* Nodes; + ULONG ConnectionCount; + const PCCONNECTION_DESCRIPTOR* Connections; + ULONG CategoryCount; + const GUID* Categories; } PCFILTER_DESCRIPTOR, *PPCFILTER_DESCRIPTOR; -#define DEFINE_PCAUTOMATION_TABLE_PROP(AutomationTable,PropertyTable)\ -const PCAUTOMATION_TABLE AutomationTable =\ -{\ - sizeof(PropertyTable[0]),\ - SIZEOF_ARRAY(PropertyTable),\ - (const PCPROPERTY_ITEM *) PropertyTable,\ - 0,0,NULL,\ - 0,0,NULL,\ - 0\ -} +#define DEFINE_PCAUTOMATION_TABLE_PROP(AutomationTable,PropertyTable) \ + const PCAUTOMATION_TABLE AutomationTable = { \ + sizeof(PropertyTable[0]), \ + SIZEOF_ARRAY(PropertyTable), \ + (const PCPROPERTY_ITEM *) PropertyTable, \ + 0,0,NULL, \ + 0,0,NULL, \ + 0 \ + } /* =============================================================== IResourceList Interface @@ -409,34 +392,33 @@ const PCAUTOMATION_TABLE AutomationTable =\ DEFINE_GUID(IID_IResourceList, 0x22C6AC60L, 0x851B, 0x11D0, 0x9A, 0x7F, 0x00, 0xAA, 0x00, 0x38, 0xAC, 0xFE); -DECLARE_INTERFACE_(IResourceList, IUnknown) -{ - DEFINE_ABSTRACT_UNKNOWN() +DECLARE_INTERFACE_(IResourceList, IUnknown) { + DEFINE_ABSTRACT_UNKNOWN() - STDMETHOD_(ULONG, NumberOfEntries)( THIS ) PURE; + STDMETHOD_(ULONG, NumberOfEntries)( THIS ) PURE; - STDMETHOD_(ULONG, NumberOfEntriesOfType)( THIS_ - IN CM_RESOURCE_TYPE Type) PURE; + STDMETHOD_(ULONG, NumberOfEntriesOfType)( THIS_ + IN CM_RESOURCE_TYPE Type) PURE; - STDMETHOD_(PCM_PARTIAL_RESOURCE_DESCRIPTOR, FindTranslatedEntry)( THIS_ - IN CM_RESOURCE_TYPE Type, - IN ULONG Index) PURE; + STDMETHOD_(PCM_PARTIAL_RESOURCE_DESCRIPTOR, FindTranslatedEntry)( THIS_ + IN CM_RESOURCE_TYPE Type, + IN ULONG Index) PURE; - STDMETHOD_(PCM_PARTIAL_RESOURCE_DESCRIPTOR, FindUntranslatedEntry)( THIS_ - IN CM_RESOURCE_TYPE Type, - IN ULONG Index) PURE; + STDMETHOD_(PCM_PARTIAL_RESOURCE_DESCRIPTOR, FindUntranslatedEntry)( THIS_ + IN CM_RESOURCE_TYPE Type, + IN ULONG Index) PURE; - STDMETHOD_(NTSTATUS, AddEntry)( THIS_ - IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Translated, - IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Untranslated) PURE; + STDMETHOD_(NTSTATUS, AddEntry)( THIS_ + IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Translated, + IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Untranslated) PURE; - STDMETHOD_(NTSTATUS, AddEntryFromParent)( THIS_ - IN IResourceList* Parent, - IN CM_RESOURCE_TYPE Type, - IN ULONG Index) PURE; + STDMETHOD_(NTSTATUS, AddEntryFromParent)( THIS_ + IN IResourceList* Parent, + IN CM_RESOURCE_TYPE Type, + IN ULONG Index) PURE; - STDMETHOD_(PCM_RESOURCE_LIST, TranslatedList)( THIS ) PURE; - STDMETHOD_(PCM_RESOURCE_LIST, UntranslatedList)( THIS ) PURE; + STDMETHOD_(PCM_RESOURCE_LIST, TranslatedList)( THIS ) PURE; + STDMETHOD_(PCM_RESOURCE_LIST, UntranslatedList)( THIS ) PURE; }; #define IMP_IResourceList \ @@ -468,116 +450,115 @@ DECLARE_INTERFACE_(IResourceList, IUnknown) typedef IResourceList *PRESOURCELIST; #define NumberOfPorts() \ - NumberOfEntriesOfType(CmResourceTypePort) + NumberOfEntriesOfType(CmResourceTypePort) #define FindTranslatedPort(n) \ - FindTranslatedEntry(CmResourceTypePort, (n)) + FindTranslatedEntry(CmResourceTypePort, (n)) #define FindUntranslatedPort(n) \ - FindUntranslatedEntry(CmResourceTypePort, (n)) + FindUntranslatedEntry(CmResourceTypePort, (n)) #define AddPortFromParent(p, n) \ - AddEntryFromParent((p), CmResourceTypePort, (n)) + AddEntryFromParent((p), CmResourceTypePort, (n)) #define NumberOfInterrupts() \ - NumberOfEntriesOfType(CmResourceTypeInterrupt) + NumberOfEntriesOfType(CmResourceTypeInterrupt) #define FindTranslatedInterrupt(n) \ - FindTranslatedEntry(CmResourceTypeInterrupt, (n)) + FindTranslatedEntry(CmResourceTypeInterrupt, (n)) #define FindUntranslatedInterrupt(n) \ - FindUntranslatedEntry(CmResourceTypeInterrupt, (n)) + FindUntranslatedEntry(CmResourceTypeInterrupt, (n)) #define AddInterruptFromParent(p, n) \ - AddEntryFromParent((p), CmResourceTypeInterrupt, (n)) + AddEntryFromParent((p), CmResourceTypeInterrupt, (n)) #define NumberOfMemories() \ - NumberOfEntriesOfType(CmResourceTypeMemory) + NumberOfEntriesOfType(CmResourceTypeMemory) #define FindTranslatedMemory(n) \ - FindTranslatedEntry(CmResourceTypeMemory, (n)) + FindTranslatedEntry(CmResourceTypeMemory, (n)) #define FindUntranslatedMemory(n) \ - FindUntranslatedEntry(CmResourceTypeMemory, (n)) + FindUntranslatedEntry(CmResourceTypeMemory, (n)) #define AddMemoryFromParent(p, n) \ - AddEntryFromParent((p), CmResourceTypeMemory, (n)) + AddEntryFromParent((p), CmResourceTypeMemory, (n)) #define NumberOfDmas() \ - NumberOfEntriesOfType(CmResourceTypeDma) + NumberOfEntriesOfType(CmResourceTypeDma) #define FindTranslatedDma(n) \ - FindTranslatedEntry(CmResourceTypeDma, (n)) + FindTranslatedEntry(CmResourceTypeDma, (n)) #define FindUntranslatedDma(n) \ - FindUntranslatedEntry(CmResourceTypeDma, (n)) + FindUntranslatedEntry(CmResourceTypeDma, (n)) #define AddDmaFromParent(p, n) \ - AddEntryFromParent((p), CmResourceTypeInterrupt, (n)) + AddEntryFromParent((p), CmResourceTypeInterrupt, (n)) #define NumberOfDeviceSpecifics() \ - NumberOfEntriesOfType(CmResourceTypeDeviceSpecific) + NumberOfEntriesOfType(CmResourceTypeDeviceSpecific) #define FindTranslatedDeviceSpecific(n) \ - FindTranslatedEntry(CmResourceTypeDeviceSpecific, (n)) + FindTranslatedEntry(CmResourceTypeDeviceSpecific, (n)) #define FindUntranslatedDeviceSpecific(n) \ - FindUntranslatedEntry(CmResourceTypeDeviceSpecific, (n)) + FindUntranslatedEntry(CmResourceTypeDeviceSpecific, (n)) #define AddDeviceSpecificFromParent(p, n) \ - AddEntryFromParent((p), CmResourceTypeDeviceSpecific, (n)) + AddEntryFromParent((p), CmResourceTypeDeviceSpecific, (n)) #define NumberOfBusNumbers() \ - NumberOfEntriesOfType(CmResourceTypeBusNumber) + NumberOfEntriesOfType(CmResourceTypeBusNumber) #define FindTranslatedBusNumber(n) \ - FindTranslatedEntry(CmResourceTypeBusNumber, (n)) + FindTranslatedEntry(CmResourceTypeBusNumber, (n)) #define FindUntranslatedBusNumber(n) \ - FindUntranslatedEntry(CmResourceTypeBusNumber, (n)) + FindUntranslatedEntry(CmResourceTypeBusNumber, (n)) #define AddBusNumberFromParent(p, n) \ - AddEntryFromParent((p), CmResourceTypeBusNumber, (n)) + AddEntryFromParent((p), CmResourceTypeBusNumber, (n)) #define NumberOfDevicePrivates() \ - NumberOfEntriesOfType(CmResourceTypeDevicePrivate) + NumberOfEntriesOfType(CmResourceTypeDevicePrivate) #define FindTranslatedDevicePrivate(n) \ - FindTranslatedEntry(CmResourceTypeDevicePrivate, (n)) + FindTranslatedEntry(CmResourceTypeDevicePrivate, (n)) #define FindUntranslatedDevicePrivate(n) \ - FindUntranslatedEntry(CmResourceTypeDevicePrivate, (n)) + FindUntranslatedEntry(CmResourceTypeDevicePrivate, (n)) #define AddDevicePrivateFromParent(p, n) \ - AddEntryFromParent((p), CmResourceTypeDevicePrivate, (n)) + AddEntryFromParent((p), CmResourceTypeDevicePrivate, (n)) #define NumberOfAssignedResources() \ - NumberOfEntriesOfType(CmResourceTypeAssignedResource) + NumberOfEntriesOfType(CmResourceTypeAssignedResource) #define FindTranslatedAssignedResource(n) \ - FindTranslatedEntry(CmResourceTypeAssignedResource, (n)) + FindTranslatedEntry(CmResourceTypeAssignedResource, (n)) #define FindUntranslatedAssignedResource(n) \ - FindUntranslatedEntry(CmResourceTypeAssignedResource, (n)) + FindUntranslatedEntry(CmResourceTypeAssignedResource, (n)) #define AddAssignedResourceFromParent(p, n) \ - AddEntryFromParent((p), CmResourceTypeAssignedResource, (n)) + AddEntryFromParent((p), CmResourceTypeAssignedResource, (n)) #define NumberOfSubAllocateFroms() \ - NumberOfEntriesOfType(CmResourceTypeSubAllocateFrom) + NumberOfEntriesOfType(CmResourceTypeSubAllocateFrom) #define FindTranslatedSubAllocateFrom(n) \ - FindTranslatedEntry(CmResourceTypeSubAllocateFrom, (n)) + FindTranslatedEntry(CmResourceTypeSubAllocateFrom, (n)) #define FindUntranslatedSubAllocateFrom(n) \ - FindUntranslatedEntry(CmResourceTypeSubAllocateFrom, (n)) + FindUntranslatedEntry(CmResourceTypeSubAllocateFrom, (n)) #define AddSubAllocateFromFromParent(p, n) \ - AddEntryFromParent((p), CmResourceTypeSubAllocateFrom, (n)) + AddEntryFromParent((p), CmResourceTypeSubAllocateFrom, (n)) #undef INTERFACE - /* =============================================================== IServiceSink Interface */ @@ -585,18 +566,16 @@ typedef IResourceList *PRESOURCELIST; DEFINE_GUID(IID_IServiceSink, 0x22C6AC64L, 0x851B, 0x11D0, 0x9A, 0x7F, 0x00, 0xAA, 0x00, 0x38, 0xAC, 0xFE); -DECLARE_INTERFACE_(IServiceSink, IUnknown) -{ - DEFINE_ABSTRACT_UNKNOWN() - STDMETHOD_(void, RequestService)( THIS ) PURE; +DECLARE_INTERFACE_(IServiceSink, IUnknown) { + DEFINE_ABSTRACT_UNKNOWN() + STDMETHOD_(void, RequestService)( THIS ) PURE; }; #define IMP_IServiceSink \ - STDMETHODIMP_(void) RequestService(void); + STDMETHODIMP_(void) RequestService(void); typedef IServiceSink *PSERVICESINK; - /* =============================================================== IServiceGroup Interface */ @@ -605,24 +584,23 @@ typedef IServiceSink *PSERVICESINK; DEFINE_GUID(IID_IServiceGroup, 0x22C6AC65L, 0x851B, 0x11D0, 0x9A, 0x7F, 0x00, 0xAA, 0x00, 0x38, 0xAC, 0xFE); -DECLARE_INTERFACE_(IServiceGroup, IServiceSink) -{ - DEFINE_ABSTRACT_UNKNOWN() +DECLARE_INTERFACE_(IServiceGroup, IServiceSink) { + DEFINE_ABSTRACT_UNKNOWN() - STDMETHOD_(void, RequestService)( THIS ) PURE; /* IServiceSink */ + STDMETHOD_(void, RequestService)( THIS ) PURE; /* IServiceSink */ - STDMETHOD_(NTSTATUS, AddMember)( THIS_ - IN PSERVICESINK pServiceSink) PURE; + STDMETHOD_(NTSTATUS, AddMember)( THIS_ + IN PSERVICESINK pServiceSink) PURE; - STDMETHOD_(void, RemoveMember)( THIS_ - IN PSERVICESINK pServiceSink) PURE; + STDMETHOD_(void, RemoveMember)( THIS_ + IN PSERVICESINK pServiceSink) PURE; - STDMETHOD_(void, SupportDelayedService)( THIS ) PURE; + STDMETHOD_(void, SupportDelayedService)( THIS ) PURE; - STDMETHOD_(void, RequestDelayedService)( THIS_ - IN ULONGLONG ullDelay) PURE; + STDMETHOD_(void, RequestDelayedService)( THIS_ + IN ULONGLONG ullDelay) PURE; - STDMETHOD_(void, CancelDelayedService)( THIS ) PURE; + STDMETHOD_(void, CancelDelayedService)( THIS ) PURE; }; #define IMP_IServiceGroup \ @@ -654,21 +632,20 @@ DEFINE_GUID(IID_IUnregisterSubdevice, 0x16738177L, 0xe199, 0x41f9, 0x9a, 0x87, 0 #undef INTERFACE #define INTERFACE IUnregisterSubdevice -DECLARE_INTERFACE_(IUnregisterSubdevice,IUnknown) -{ - DEFINE_ABSTRACT_UNKNOWN() +DECLARE_INTERFACE_(IUnregisterSubdevice,IUnknown) { + DEFINE_ABSTRACT_UNKNOWN() - STDMETHOD_(NTSTATUS,UnregisterSubdevice)(THIS_ - IN PDEVICE_OBJECT DeviceObject, - IN PUNKNOWN Unknown)PURE; + STDMETHOD_(NTSTATUS,UnregisterSubdevice)(THIS_ + IN PDEVICE_OBJECT DeviceObject, + IN PUNKNOWN Unknown) PURE; }; typedef IUnregisterSubdevice *PUNREGISTERSUBDEVICE; -#define IMP_IUnregisterSubdevice \ - STDMETHODIMP_(NTSTATUS) UnregisterSubdevice(THIS_ \ - IN PDEVICE_OBJECT DeviceObject, \ - IN PUNKNOWN Unknown) +#define IMP_IUnregisterSubdevice \ + STDMETHODIMP_(NTSTATUS) UnregisterSubdevice(THIS_ \ + IN PDEVICE_OBJECT DeviceObject, \ + IN PUNKNOWN Unknown) /* =============================================================== IUnregisterPhysicalConnection Interface @@ -2189,16 +2166,15 @@ typedef IPortClsVersion *PPORTCLSVERSION; IPreFetchOffset Interface */ - - /* =============================================================== PortCls API Functions */ -typedef NTSTATUS (NTAPI *PCPFNSTARTDEVICE)( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp, - IN PRESOURCELIST ResourceList); +typedef NTSTATUS +(NTAPI *PCPFNSTARTDEVICE)( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PRESOURCELIST ResourceList); /* This is in NTDDK.H */ /* @@ -2209,18 +2185,17 @@ typedef NTSTATUS (*PDRIVER_ADD_DEVICE)( PORTCLASSAPI NTSTATUS NTAPI PcAddAdapterDevice( - IN PDRIVER_OBJECT DriverObject, - IN PDEVICE_OBJECT PhysicalDeviceObject, - IN PCPFNSTARTDEVICE StartDevice, - IN ULONG MaxObjects, - IN ULONG DeviceExtensionSize); + IN PDRIVER_OBJECT DriverObject, + IN PDEVICE_OBJECT PhysicalDeviceObject, + IN PCPFNSTARTDEVICE StartDevice, + IN ULONG MaxObjects, + IN ULONG DeviceExtensionSize); PORTCLASSAPI NTSTATUS NTAPI PcInitializeAdapterDriver( - IN PDRIVER_OBJECT DriverObject, - IN PUNICODE_STRING RegistryPathName, - IN PDRIVER_ADD_DEVICE AddDevice); - + IN PDRIVER_OBJECT DriverObject, + IN PUNICODE_STRING RegistryPathName, + IN PDRIVER_ADD_DEVICE AddDevice); /* =============================================================== Factories (TODO: Move elsewhere) @@ -2228,62 +2203,62 @@ PcInitializeAdapterDriver( PORTCLASSAPI NTSTATUS NTAPI PcNewDmaChannel( - OUT PDMACHANNEL* OutDmaChannel, - IN PUNKNOWN OuterUnknown OPTIONAL, - IN POOL_TYPE PoolType, - IN PDEVICE_DESCRIPTION DeviceDescription, - IN PDEVICE_OBJECT DeviceObject); + OUT PDMACHANNEL* OutDmaChannel, + IN PUNKNOWN OuterUnknown OPTIONAL, + IN POOL_TYPE PoolType, + IN PDEVICE_DESCRIPTION DeviceDescription, + IN PDEVICE_OBJECT DeviceObject); PORTCLASSAPI NTSTATUS NTAPI PcNewInterruptSync( - OUT PINTERRUPTSYNC* OUtInterruptSync, - IN PUNKNOWN OuterUnknown OPTIONAL, - IN PRESOURCELIST ResourceList, - IN ULONG ResourceIndex, - IN INTERRUPTSYNCMODE Mode); + OUT PINTERRUPTSYNC* OUtInterruptSync, + IN PUNKNOWN OuterUnknown OPTIONAL, + IN PRESOURCELIST ResourceList, + IN ULONG ResourceIndex, + IN INTERRUPTSYNCMODE Mode); PORTCLASSAPI NTSTATUS NTAPI PcNewMiniport( - OUT PMINIPORT* OutMiniport, - IN REFCLSID ClassId); + OUT PMINIPORT* OutMiniport, + IN REFCLSID ClassId); PORTCLASSAPI NTSTATUS NTAPI PcNewPort( - OUT PPORT* OutPort, - IN REFCLSID ClassId); + OUT PPORT* OutPort, + IN REFCLSID ClassId); PORTCLASSAPI NTSTATUS NTAPI PcNewRegistryKey( - OUT PREGISTRYKEY* OutRegistryKey, - IN PUNKNOWN OuterUnknown OPTIONAL, - IN ULONG RegistryKeyType, - IN ACCESS_MASK DesiredAccess, - IN PVOID DeviceObject OPTIONAL, - IN PVOID SubDevice OPTIONAL, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN ULONG CreateOptions OPTIONAL, - OUT PULONG Disposition OPTIONAL); + OUT PREGISTRYKEY* OutRegistryKey, + IN PUNKNOWN OuterUnknown OPTIONAL, + IN ULONG RegistryKeyType, + IN ACCESS_MASK DesiredAccess, + IN PVOID DeviceObject OPTIONAL, + IN PVOID SubDevice OPTIONAL, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN ULONG CreateOptions OPTIONAL, + OUT PULONG Disposition OPTIONAL); PORTCLASSAPI NTSTATUS NTAPI PcNewResourceList( - OUT PRESOURCELIST* OutResourceList, - IN PUNKNOWN OuterUnknown OPTIONAL, - IN POOL_TYPE PoolType, - IN PCM_RESOURCE_LIST TranslatedResources, - IN PCM_RESOURCE_LIST UntranslatedResources); + OUT PRESOURCELIST* OutResourceList, + IN PUNKNOWN OuterUnknown OPTIONAL, + IN POOL_TYPE PoolType, + IN PCM_RESOURCE_LIST TranslatedResources, + IN PCM_RESOURCE_LIST UntranslatedResources); PORTCLASSAPI NTSTATUS NTAPI PcNewResourceSublist( - OUT PRESOURCELIST* OutResourceList, - IN PUNKNOWN OuterUnknown OPTIONAL, - IN POOL_TYPE PoolType, - IN PRESOURCELIST ParentList, - IN ULONG MaximumEntries); + OUT PRESOURCELIST* OutResourceList, + IN PUNKNOWN OuterUnknown OPTIONAL, + IN POOL_TYPE PoolType, + IN PRESOURCELIST ParentList, + IN ULONG MaximumEntries); PORTCLASSAPI NTSTATUS NTAPI PcNewServiceGroup( - OUT PSERVICEGROUP* OutServiceGroup, - IN PUNKNOWN OuterUnknown OPTIONAL); + OUT PSERVICEGROUP* OutServiceGroup, + IN PUNKNOWN OuterUnknown OPTIONAL); /* =============================================================== @@ -2292,20 +2267,19 @@ PcNewServiceGroup( PORTCLASSAPI NTSTATUS NTAPI PcDispatchIrp( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp); + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp); PORTCLASSAPI NTSTATUS NTAPI PcCompleteIrp( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp, - IN NTSTATUS Status); + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN NTSTATUS Status); PORTCLASSAPI NTSTATUS NTAPI PcForwardIrpSynchronous( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp); - + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp); /* =============================================================== Power Management @@ -2313,14 +2287,13 @@ PcForwardIrpSynchronous( PORTCLASSAPI NTSTATUS NTAPI PcRegisterAdapterPowerManagement( - IN PUNKNOWN pUnknown, - IN PVOID pvContext1); + IN PUNKNOWN pUnknown, + IN PVOID pvContext1); PORTCLASSAPI NTSTATUS NTAPI PcRequestNewPowerState( - IN PDEVICE_OBJECT pDeviceObject, - IN DEVICE_POWER_STATE RequestedNewState); - + IN PDEVICE_OBJECT pDeviceObject, + IN DEVICE_POWER_STATE RequestedNewState); /* =============================================================== Properties @@ -2328,17 +2301,16 @@ PcRequestNewPowerState( PORTCLASSAPI NTSTATUS NTAPI PcGetDeviceProperty( - IN PVOID DeviceObject, - IN DEVICE_REGISTRY_PROPERTY DeviceProperty, - IN ULONG BufferLength, - OUT PVOID PropertyBuffer, - OUT PULONG ResultLength); + IN PVOID DeviceObject, + IN DEVICE_REGISTRY_PROPERTY DeviceProperty, + IN ULONG BufferLength, + OUT PVOID PropertyBuffer, + OUT PULONG ResultLength); PORTCLASSAPI NTSTATUS NTAPI PcCompletePendingPropertyRequest( - IN PPCPROPERTY_REQUEST PropertyRequest, - IN NTSTATUS NtStatus); - + IN PPCPROPERTY_REQUEST PropertyRequest, + IN NTSTATUS NtStatus); /* =============================================================== I/O Timeouts @@ -2346,16 +2318,15 @@ PcCompletePendingPropertyRequest( PORTCLASSAPI NTSTATUS NTAPI PcRegisterIoTimeout( - IN PDEVICE_OBJECT pDeviceObject, - IN PIO_TIMER_ROUTINE pTimerRoutine, - IN PVOID pContext); + IN PDEVICE_OBJECT pDeviceObject, + IN PIO_TIMER_ROUTINE pTimerRoutine, + IN PVOID pContext); PORTCLASSAPI NTSTATUS NTAPI PcUnregisterIoTimeout( - IN PDEVICE_OBJECT pDeviceObject, - IN PIO_TIMER_ROUTINE pTimerRoutine, - IN PVOID pContext); - + IN PDEVICE_OBJECT pDeviceObject, + IN PIO_TIMER_ROUTINE pTimerRoutine, + IN PVOID pContext); /* =============================================================== Physical Connections @@ -2363,28 +2334,27 @@ PcUnregisterIoTimeout( PORTCLASSAPI NTSTATUS NTAPI PcRegisterPhysicalConnection( - IN PDEVICE_OBJECT DeviceObject, - IN PUNKNOWN FromUnknown, - IN ULONG FromPin, - IN PUNKNOWN ToUnknown, - IN ULONG ToPin); + IN PDEVICE_OBJECT DeviceObject, + IN PUNKNOWN FromUnknown, + IN ULONG FromPin, + IN PUNKNOWN ToUnknown, + IN ULONG ToPin); PORTCLASSAPI NTSTATUS NTAPI PcRegisterPhysicalConnectionFromExternal( - IN PDEVICE_OBJECT DeviceObject, - IN PUNICODE_STRING FromString, - IN ULONG FromPin, - IN PUNKNOWN ToUnknown, - IN ULONG ToPin); + IN PDEVICE_OBJECT DeviceObject, + IN PUNICODE_STRING FromString, + IN ULONG FromPin, + IN PUNKNOWN ToUnknown, + IN ULONG ToPin); PORTCLASSAPI NTSTATUS NTAPI PcRegisterPhysicalConnectionToExternal( - IN PDEVICE_OBJECT DeviceObject, - IN PUNKNOWN FromUnknown, - IN ULONG FromPin, - IN PUNICODE_STRING ToString, - IN ULONG ToPin); - + IN PDEVICE_OBJECT DeviceObject, + IN PUNKNOWN FromUnknown, + IN ULONG FromPin, + IN PUNICODE_STRING ToString, + IN ULONG ToPin); /* =============================================================== Misc @@ -2392,14 +2362,13 @@ PcRegisterPhysicalConnectionToExternal( PORTCLASSAPI ULONGLONG NTAPI PcGetTimeInterval( - IN ULONGLONG Since); + IN ULONGLONG Since); PORTCLASSAPI NTSTATUS NTAPI PcRegisterSubdevice( - IN PDEVICE_OBJECT DeviceObject, - IN PWCHAR Name, - IN PUNKNOWN Unknown); - + IN PDEVICE_OBJECT DeviceObject, + IN PWCHAR Name, + IN PUNKNOWN Unknown); /* =============================================================== Digital Rights Management Functions @@ -2408,41 +2377,40 @@ PcRegisterSubdevice( PORTCLASSAPI NTSTATUS NTAPI PcAddContentHandlers( - IN ULONG ContentId, - IN PVOID *paHandlers, - IN ULONG NumHandlers); + IN ULONG ContentId, + IN PVOID *paHandlers, + IN ULONG NumHandlers); PORTCLASSAPI NTSTATUS NTAPI PcCreateContentMixed( - IN PULONG paContentId, - IN ULONG cContentId, - OUT PULONG pMixedContentId); + IN PULONG paContentId, + IN ULONG cContentId, + OUT PULONG pMixedContentId); PORTCLASSAPI NTSTATUS NTAPI PcDestroyContent( - IN ULONG ContentId); + IN ULONG ContentId); PORTCLASSAPI NTSTATUS NTAPI PcForwardContentToDeviceObject( - IN ULONG ContentId, - IN PVOID Reserved, - IN PCDRMFORWARD DrmForward); + IN ULONG ContentId, + IN PVOID Reserved, + IN PCDRMFORWARD DrmForward); PORTCLASSAPI NTSTATUS NTAPI PcForwardContentToFileObject( - IN ULONG ContentId, - IN PFILE_OBJECT FileObject); + IN ULONG ContentId, + IN PFILE_OBJECT FileObject); PORTCLASSAPI NTSTATUS NTAPI PcForwardContentToInterface( - IN ULONG ContentId, - IN PUNKNOWN pUnknown, - IN ULONG NumMethods); + IN ULONG ContentId, + IN PUNKNOWN pUnknown, + IN ULONG NumMethods); PORTCLASSAPI NTSTATUS NTAPI PcGetContentRights( - IN ULONG ContentId, - OUT PDRMRIGHTS DrmRights); + IN ULONG ContentId, + OUT PDRMRIGHTS DrmRights); - -#endif +#endif /* PORTCLS_H */ diff --git a/include/ddk/punknown.h b/include/ddk/punknown.h index bac87bd652c..9b801f71e4e 100644 --- a/include/ddk/punknown.h +++ b/include/ddk/punknown.h @@ -21,69 +21,61 @@ extern "C" { #include #ifdef PUT_GUIDS_HERE - #include +#include #endif - /* =============================================================== IUnknown */ #ifndef __IUnknown_INTERFACE_DEFINED__ #define __IUnknown_INTERFACE_DEFINED__ -DEFINE_GUID( - IID_IUnknown, - 0x00000000, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46); + +DEFINE_GUID(IID_IUnknown, + 0x00000000, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46); #undef INTERFACE #define INTERFACE IUnknown -DECLARE_INTERFACE(IUnknown) -{ - STDMETHOD_(NTSTATUS, QueryInterface)( THIS_ - IN REFIID, - OUT PVOID*) - PURE; +DECLARE_INTERFACE(IUnknown) { + STDMETHOD_(NTSTATUS, QueryInterface)( THIS_ + IN REFIID, + OUT PVOID*) PURE; - STDMETHOD_(ULONG, AddRef)( THIS ) - PURE; + STDMETHOD_(ULONG, AddRef)( THIS ) PURE; - STDMETHOD_(ULONG, Release)( THIS ) - PURE; + STDMETHOD_(ULONG, Release)( THIS ) PURE; }; -#endif + +#endif /* __IUnknown_INTERFACE_DEFINED__ */ #undef INTERFACE typedef IUnknown *PUNKNOWN; - /* =============================================================== IUnknown definition Boilerplate code macro for use in subclassed interfaces */ -#define DEFINE_ABSTRACT_UNKNOWN() \ - STDMETHOD_(NTSTATUS, QueryInterface)( THIS_ \ - REFIID InterfaceId, \ - PVOID* Interface) \ - PURE; \ -\ - STDMETHOD_(ULONG, AddRef)(THIS) \ - PURE; \ -\ - STDMETHOD_(ULONG, Release)(THIS) \ - PURE; - +#define DEFINE_ABSTRACT_UNKNOWN() \ + STDMETHOD_(NTSTATUS, QueryInterface)( THIS_ \ + REFIID InterfaceId, \ + PVOID* Interface) PURE; \ + \ + STDMETHOD_(ULONG, AddRef)(THIS) PURE; \ + \ + STDMETHOD_(ULONG, Release)(THIS) PURE; /* =============================================================== Constructor callback definition */ -typedef HRESULT (NTAPI *PFNCREATEINSTANCE)( - OUT PUNKNOWN* Unknown, - IN REFCLSID ClassId, - IN PUNKNOWN OuterUnknown, - IN POOL_TYPE PoolType); +typedef HRESULT +(NTAPI *PFNCREATEINSTANCE)( + OUT PUNKNOWN* Unknown, + IN REFCLSID ClassId, + IN PUNKNOWN OuterUnknown, + IN POOL_TYPE PoolType); -#endif +#endif /* _UNKNOWN_H_ */ diff --git a/include/ddk/smbus.h b/include/ddk/smbus.h index fd07c72556f..e1cc0eef6cc 100644 --- a/include/ddk/smbus.h +++ b/include/ddk/smbus.h @@ -28,9 +28,9 @@ extern "C" { #endif #if !defined(SMBCLASS) - #define SMBCLASSAPI DECLSPEC_IMPORT +#define SMBCLASSAPI DECLSPEC_IMPORT #else - #define SMBCLASSAPI +#define SMBCLASSAPI #endif #define SMB_BUS_REQUEST \ @@ -74,25 +74,25 @@ struct _SMB_CLASS; #define SMB_MAXIMUM_PROTOCOL 0x0A typedef struct _SMB_REQUEST { - UCHAR Status; - UCHAR Protocol; - UCHAR Address; - UCHAR Command; - UCHAR BlockLength; - UCHAR Data[SMB_MAX_DATA_SIZE]; + UCHAR Status; + UCHAR Protocol; + UCHAR Address; + UCHAR Command; + UCHAR BlockLength; + UCHAR Data[SMB_MAX_DATA_SIZE]; } SMB_REQUEST, *PSMB_REQUEST; typedef VOID (NTAPI *SMB_ALARM_NOTIFY)( - PVOID Context, - UCHAR Address, - USHORT Data); + PVOID Context, + UCHAR Address, + USHORT Data); typedef struct _SMB_REGISTER_ALARM { - UCHAR MinAddress; - UCHAR MaxAddress; - SMB_ALARM_NOTIFY NotifyFunction; - PVOID NotifyContext; + UCHAR MinAddress; + UCHAR MaxAddress; + SMB_ALARM_NOTIFY NotifyFunction; + PVOID NotifyContext; } SMB_REGISTER_ALARM, *PSMB_REGISTER_ALARM; /* SMB_CLASS.XxxVersion constants */ @@ -101,83 +101,83 @@ typedef struct _SMB_REGISTER_ALARM { typedef NTSTATUS (NTAPI *SMB_RESET_DEVICE)( - IN struct _SMB_CLASS *SmbClass, - IN PVOID SmbMiniport); + IN struct _SMB_CLASS *SmbClass, + IN PVOID SmbMiniport); typedef VOID (NTAPI *SMB_START_IO)( - IN struct _SMB_CLASS *SmbClass, - IN PVOID SmbMiniport); + IN struct _SMB_CLASS *SmbClass, + IN PVOID SmbMiniport); typedef NTSTATUS (NTAPI *SMB_STOP_DEVICE)( - IN struct _SMB_CLASS *SmbClass, - IN PVOID SmbMiniport); + IN struct _SMB_CLASS *SmbClass, + IN PVOID SmbMiniport); typedef struct _SMB_CLASS { - USHORT MajorVersion; - USHORT MinorVersion; - PVOID Miniport; - PDEVICE_OBJECT DeviceObject; - PDEVICE_OBJECT PDO; - PDEVICE_OBJECT LowerDeviceObject; - PIRP CurrentIrp; - PSMB_REQUEST CurrentSmb; - SMB_RESET_DEVICE ResetDevice; - SMB_START_IO StartIo; - SMB_STOP_DEVICE StopDevice; + USHORT MajorVersion; + USHORT MinorVersion; + PVOID Miniport; + PDEVICE_OBJECT DeviceObject; + PDEVICE_OBJECT PDO; + PDEVICE_OBJECT LowerDeviceObject; + PIRP CurrentIrp; + PSMB_REQUEST CurrentSmb; + SMB_RESET_DEVICE ResetDevice; + SMB_START_IO StartIo; + SMB_STOP_DEVICE StopDevice; } SMB_CLASS, *PSMB_CLASS; SMBCLASSAPI VOID NTAPI SmbClassAlarm( - IN PSMB_CLASS SmbClass, - IN UCHAR Address, - IN USHORT Data); + IN PSMB_CLASS SmbClass, + IN UCHAR Address, + IN USHORT Data); SMBCLASSAPI VOID NTAPI SmbClassCompleteRequest( - IN PSMB_CLASS SmbClass); + IN PSMB_CLASS SmbClass); typedef NTSTATUS (NTAPI *PSMB_INITIALIZE_MINIPORT)( - IN PSMB_CLASS SmbClass, - IN PVOID MiniportExtension, - IN PVOID MiniportContext); + IN PSMB_CLASS SmbClass, + IN PVOID MiniportExtension, + IN PVOID MiniportContext); SMBCLASSAPI NTSTATUS NTAPI SmbClassCreateFdo( - IN PDRIVER_OBJECT DriverObject, - IN PDEVICE_OBJECT PDO, - IN ULONG MiniportExtensionSize, - IN PSMB_INITIALIZE_MINIPORT MiniportInitialize, - IN PVOID MiniportContext, - OUT PDEVICE_OBJECT *FDO); + IN PDRIVER_OBJECT DriverObject, + IN PDEVICE_OBJECT PDO, + IN ULONG MiniportExtensionSize, + IN PSMB_INITIALIZE_MINIPORT MiniportInitialize, + IN PVOID MiniportContext, + OUT PDEVICE_OBJECT *FDO); SMBCLASSAPI NTSTATUS NTAPI SmbClassInitializeDevice( - IN ULONG MajorVersion, - IN ULONG MinorVersion, - IN PDRIVER_OBJECT DriverObject); + IN ULONG MajorVersion, + IN ULONG MinorVersion, + IN PDRIVER_OBJECT DriverObject); SMBCLASSAPI VOID NTAPI SmbClassLockDevice( - IN PSMB_CLASS SmbClass); + IN PSMB_CLASS SmbClass); SMBCLASSAPI VOID NTAPI SmbClassUnlockDevice( - IN PSMB_CLASS SmbClass); + IN PSMB_CLASS SmbClass); #ifdef __cplusplus } diff --git a/include/ddk/stdunk.h b/include/ddk/stdunk.h index c50e5b1c1b0..6f95270aa4d 100644 --- a/include/ddk/stdunk.h +++ b/include/ddk/stdunk.h @@ -13,15 +13,6 @@ #include -/* Helper macro to enable gcc's extension. */ -#ifndef __GNU_EXTENSION -#ifdef __GNUC__ -#define __GNU_EXTENSION __extension__ -#else -#define __GNU_EXTENSION -#endif -#endif - /* =============================================================== INonDelegatingUnknown interface */ diff --git a/include/ddk/storport.h b/include/ddk/storport.h index fd8cf9b19ae..f993b64bf1b 100644 --- a/include/ddk/storport.h +++ b/include/ddk/storport.h @@ -30,134 +30,132 @@ extern "C" { #endif #if defined(_STORPORT_) - #define STORPORTAPI +#define STORPORTAPI #else - #define STORPORTAPI DECLSPEC_IMPORT +#define STORPORTAPI DECLSPEC_IMPORT #endif - typedef PHYSICAL_ADDRESS STOR_PHYSICAL_ADDRESS; typedef struct _STOR_SCATTER_GATHER_ELEMENT { - STOR_PHYSICAL_ADDRESS PhysicalAddress; - ULONG Length; - ULONG_PTR Reserved; + STOR_PHYSICAL_ADDRESS PhysicalAddress; + ULONG Length; + ULONG_PTR Reserved; } STOR_SCATTER_GATHER_ELEMENT, *PSTOR_SCATTER_GATHER_ELEMENT; typedef struct _STOR_SCATTER_GATHER_LIST { - ULONG NumberOfElements; - ULONG_PTR Reserved; - STOR_SCATTER_GATHER_ELEMENT List[0]; + ULONG NumberOfElements; + ULONG_PTR Reserved; + STOR_SCATTER_GATHER_ELEMENT List[0]; } STOR_SCATTER_GATHER_LIST, *PSTOR_SCATTER_GATHER_LIST; typedef struct _SCSI_WMI_REQUEST_BLOCK { - USHORT Length; - UCHAR Function; - UCHAR SrbStatus; - UCHAR WMISubFunction; - UCHAR PathId; - UCHAR TargetId; - UCHAR Lun; - UCHAR Reserved1; - UCHAR WMIFlags; - UCHAR Reserved2[2]; - ULONG SrbFlags; - ULONG DataTransferLength; - ULONG TimeOutValue; - PVOID DataBuffer; - PVOID DataPath; - PVOID Reserved3; - PVOID OriginalRequest; - PVOID SrbExtension; - ULONG Reserved4; - UCHAR Reserved5[16]; + USHORT Length; + UCHAR Function; + UCHAR SrbStatus; + UCHAR WMISubFunction; + UCHAR PathId; + UCHAR TargetId; + UCHAR Lun; + UCHAR Reserved1; + UCHAR WMIFlags; + UCHAR Reserved2[2]; + ULONG SrbFlags; + ULONG DataTransferLength; + ULONG TimeOutValue; + PVOID DataBuffer; + PVOID DataPath; + PVOID Reserved3; + PVOID OriginalRequest; + PVOID SrbExtension; + ULONG Reserved4; + UCHAR Reserved5[16]; } SCSI_WMI_REQUEST_BLOCK, *PSCSI_WMI_REQUEST_BLOCK; - STORPORTAPI ULONG NTAPI StorPortInitialize( - IN PVOID Argument1, - IN PVOID Argument2, - IN PHW_INITIALIZATION_DATA HwInitializationData, - IN PVOID Unused); + IN PVOID Argument1, + IN PVOID Argument2, + IN PHW_INITIALIZATION_DATA HwInitializationData, + IN PVOID Unused); STORPORTAPI VOID NTAPI StorPortFreeDeviceBase( - IN PVOID HwDeviceExtension, - IN PVOID MappedAddress); + IN PVOID HwDeviceExtension, + IN PVOID MappedAddress); STORPORTAPI ULONG NTAPI StorPortGetBusData( - IN PVOID DeviceExtension, - IN ULONG BusDataType, - IN ULONG SystemIoBusNumber, - IN ULONG SlotNumber, - IN PVOID Buffer, - IN ULONG Length); + IN PVOID DeviceExtension, + IN ULONG BusDataType, + IN ULONG SystemIoBusNumber, + IN ULONG SlotNumber, + IN PVOID Buffer, + IN ULONG Length); STORPORTAPI ULONG NTAPI StorPortSetBusDataByOffset( - IN PVOID DeviceExtension, - IN ULONG BusDataType, - IN ULONG SystemIoBusNumber, - IN ULONG SlotNumber, - IN PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); + IN PVOID DeviceExtension, + IN ULONG BusDataType, + IN ULONG SystemIoBusNumber, + IN ULONG SlotNumber, + IN PVOID Buffer, + IN ULONG Offset, + IN ULONG Length); STORPORTAPI PVOID NTAPI StorPortGetDeviceBase( - IN PVOID HwDeviceExtension, - IN INTERFACE_TYPE BusType, - IN ULONG SystemIoBusNumber, - IN SCSI_PHYSICAL_ADDRESS IoAddress, - IN ULONG NumberOfBytes, - IN BOOLEAN InIoSpace); + IN PVOID HwDeviceExtension, + IN INTERFACE_TYPE BusType, + IN ULONG SystemIoBusNumber, + IN SCSI_PHYSICAL_ADDRESS IoAddress, + IN ULONG NumberOfBytes, + IN BOOLEAN InIoSpace); STORPORTAPI PVOID NTAPI StorPortGetLogicalUnit( - IN PVOID HwDeviceExtension, - IN UCHAR PathId, - IN UCHAR TargetId, - IN UCHAR Lun); + IN PVOID HwDeviceExtension, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun); STORPORTAPI PSCSI_REQUEST_BLOCK NTAPI StorPortGetSrb( - IN PVOID DeviceExtension, - IN UCHAR PathId, - IN UCHAR TargetId, - IN UCHAR Lun, - IN LONG QueueTag); + IN PVOID DeviceExtension, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun, + IN LONG QueueTag); STORPORTAPI STOR_PHYSICAL_ADDRESS NTAPI StorPortGetPhysicalAddress( - IN PVOID HwDeviceExtension, - IN PSCSI_REQUEST_BLOCK Srb, - IN PVOID VirtualAddress, - OUT ULONG *Length); + IN PVOID HwDeviceExtension, + IN PSCSI_REQUEST_BLOCK Srb, + IN PVOID VirtualAddress, + OUT ULONG *Length); STORPORTAPI PVOID NTAPI StorPortGetVirtualAddress( - IN PVOID HwDeviceExtension, - IN STOR_PHYSICAL_ADDRESS PhysicalAddress); + IN PVOID HwDeviceExtension, + IN STOR_PHYSICAL_ADDRESS PhysicalAddress); STORPORTAPI PVOID @@ -171,238 +169,238 @@ STORPORTAPI VOID __cdecl StorPortNotification( - IN SCSI_NOTIFICATION_TYPE NotificationType, - IN PVOID HwDeviceExtension, + IN SCSI_NOTIFICATION_TYPE NotificationType, + IN PVOID HwDeviceExtension, IN ...); STORPORTAPI VOID NTAPI StorPortLogError( - IN PVOID HwDeviceExtension, - IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, - IN UCHAR PathId, - IN UCHAR TargetId, - IN UCHAR Lun, - IN ULONG ErrorCode, - IN ULONG UniqueId); + IN PVOID HwDeviceExtension, + IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun, + IN ULONG ErrorCode, + IN ULONG UniqueId); STORPORTAPI VOID NTAPI StorPortCompleteRequest( - IN PVOID HwDeviceExtension, - IN UCHAR PathId, - IN UCHAR TargetId, - IN UCHAR Lun, - IN UCHAR SrbStatus); + IN PVOID HwDeviceExtension, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun, + IN UCHAR SrbStatus); STORPORTAPI VOID NTAPI StorPortMoveMemory( - IN PVOID WriteBuffer, - IN PVOID ReadBuffer, - IN ULONG Length); + IN PVOID WriteBuffer, + IN PVOID ReadBuffer, + IN ULONG Length); STORPORTAPI VOID NTAPI StorPortStallExecution( - IN ULONG Delay); + IN ULONG Delay); STORPORTAPI STOR_PHYSICAL_ADDRESS NTAPI StorPortConvertUlong64ToPhysicalAddress( - IN ULONG64 UlongAddress); + IN ULONG64 UlongAddress); STORPORTAPI ULONG64 NTAPI StorPortConvertPhysicalAddressToUlong64( - IN STOR_PHYSICAL_ADDRESS Address); + IN STOR_PHYSICAL_ADDRESS Address); STORPORTAPI BOOLEAN NTAPI StorPortValidateRange( - IN PVOID HwDeviceExtension, - IN INTERFACE_TYPE BusType, - IN ULONG SystemIoBusNumber, - IN STOR_PHYSICAL_ADDRESS IoAddress, - IN ULONG NumberOfBytes, - IN BOOLEAN InIoSpace); + IN PVOID HwDeviceExtension, + IN INTERFACE_TYPE BusType, + IN ULONG SystemIoBusNumber, + IN STOR_PHYSICAL_ADDRESS IoAddress, + IN ULONG NumberOfBytes, + IN BOOLEAN InIoSpace); STORPORTAPI VOID __cdecl StorPortDebugPrint( - IN ULONG DebugPrintLevel, - IN PCCHAR DebugMessage, + IN ULONG DebugPrintLevel, + IN PCCHAR DebugMessage, IN ...); STORPORTAPI UCHAR NTAPI StorPortReadPortUchar( - IN PUCHAR Port); + IN PUCHAR Port); STORPORTAPI ULONG NTAPI StorPortReadPortUlong( - IN PULONG Port); + IN PULONG Port); STORPORTAPI USHORT NTAPI StorPortReadPortUshort( - IN PUSHORT Port); + IN PUSHORT Port); STORPORTAPI UCHAR NTAPI StorPortReadRegisterUchar( - IN PUCHAR Register); + IN PUCHAR Register); STORPORTAPI ULONG NTAPI StorPortReadRegisterUlong( - IN PULONG Register); + IN PULONG Register); STORPORTAPI USHORT NTAPI StorPortReadRegisterUshort( - IN PUSHORT Register); + IN PUSHORT Register); STORPORTAPI VOID NTAPI StorPortWritePortUchar( - IN PUCHAR Port, - IN UCHAR Value); + IN PUCHAR Port, + IN UCHAR Value); STORPORTAPI VOID NTAPI StorPortWritePortUlong( - IN PULONG Port, - IN ULONG Value); + IN PULONG Port, + IN ULONG Value); STORPORTAPI VOID NTAPI StorPortWritePortUshort( - IN PUSHORT Port, - IN USHORT Value); + IN PUSHORT Port, + IN USHORT Value); STORPORTAPI VOID NTAPI StorPortWriteRegisterUchar( - IN PUCHAR Port, - IN UCHAR Value); + IN PUCHAR Port, + IN UCHAR Value); STORPORTAPI VOID NTAPI StorPortWriteRegisterUlong( - IN PULONG Port, - IN ULONG Value); + IN PULONG Port, + IN ULONG Value); STORPORTAPI VOID NTAPI StorPortWriteRegisterUshort( - IN PUSHORT Port, - IN USHORT Value); + IN PUSHORT Port, + IN USHORT Value); STORPORTAPI BOOLEAN NTAPI StorPortPauseDevice( - IN PVOID HwDeviceExtension, - IN UCHAR PathId, - IN UCHAR TargetId, - IN UCHAR Lun, - IN ULONG TimeOut); + IN PVOID HwDeviceExtension, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun, + IN ULONG TimeOut); STORPORTAPI BOOLEAN NTAPI StorPortResumeDevice( - IN PVOID HwDeviceExtension, - IN UCHAR PathId, - IN UCHAR TargetId, - IN UCHAR Lun); + IN PVOID HwDeviceExtension, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun); STORPORTAPI BOOLEAN NTAPI StorPortPause( - IN PVOID HwDeviceExtension, - IN ULONG TimeOut); + IN PVOID HwDeviceExtension, + IN ULONG TimeOut); STORPORTAPI BOOLEAN NTAPI StorPortResume( - IN PVOID HwDeviceExtension); + IN PVOID HwDeviceExtension); STORPORTAPI BOOLEAN NTAPI StorPortDeviceBusy( - IN PVOID HwDeviceExtension, - IN UCHAR PathId, - IN UCHAR TargetId, - IN UCHAR Lun, - IN ULONG RequestsToComplete); + IN PVOID HwDeviceExtension, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun, + IN ULONG RequestsToComplete); STORPORTAPI BOOLEAN NTAPI StorPortDeviceReady( - IN PVOID HwDeviceExtension, - IN UCHAR PathId, - IN UCHAR TargetId, - IN UCHAR Lun); + IN PVOID HwDeviceExtension, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun); STORPORTAPI BOOLEAN NTAPI StorPortBusy( - IN PVOID HwDeviceExtension, - IN ULONG RequestsToComplete); + IN PVOID HwDeviceExtension, + IN ULONG RequestsToComplete); STORPORTAPI BOOLEAN NTAPI StorPortReady( - IN PVOID HwDeviceExtension); + IN PVOID HwDeviceExtension); STORPORTAPI PSTOR_SCATTER_GATHER_LIST NTAPI StorPortGetScatterGatherList( - IN PVOID DeviceExtension, - IN PSCSI_REQUEST_BLOCK Srb); + IN PVOID DeviceExtension, + IN PSCSI_REQUEST_BLOCK Srb); typedef BOOLEAN (NTAPI *PSTOR_SYNCHRONIZED_ACCESS)( - IN PVOID HwDeviceExtension, - IN PVOID Context); + IN PVOID HwDeviceExtension, + IN PVOID Context); STORPORTAPI VOID NTAPI StorPortSynchronizeAccess( - IN PVOID HwDeviceExtension, - IN PSTOR_SYNCHRONIZED_ACCESS SynchronizedAccessRoutine, - IN PVOID Context); + IN PVOID HwDeviceExtension, + IN PSTOR_SYNCHRONIZED_ACCESS SynchronizedAccessRoutine, + IN PVOID Context); #if DBG #define DebugPrint(x) StorPortDebugPrint x diff --git a/include/ddk/strmini.h b/include/ddk/strmini.h index f0a72f52ac3..ffd3c771bb5 100644 --- a/include/ddk/strmini.h +++ b/include/ddk/strmini.h @@ -5,38 +5,27 @@ #include #include -/* Helper macro to enable gcc's extension. */ -#ifndef __GNU_EXTENSION -#ifdef __GNUC__ -#define __GNU_EXTENSION __extension__ -#else -#define __GNU_EXTENSION -#endif -#endif - #define STREAMAPI __stdcall #define STREAM_SYSTEM_TIME_MASK ((STREAM_SYSTEM_TIME)0x00000001FFFFFFFF) -typedef enum -{ - DebugLevelFatal = 0, - DebugLevelError, - DebugLevelWarning, - DebugLevelInfo, - DebugLevelTrace, - DebugLevelVerbose, - DebugLevelMaximum -}STREAM_DEBUG_LEVEL; - +typedef enum { + DebugLevelFatal = 0, + DebugLevelError, + DebugLevelWarning, + DebugLevelInfo, + DebugLevelTrace, + DebugLevelVerbose, + DebugLevelMaximum +} STREAM_DEBUG_LEVEL; #if DBG #define DebugPrint(x) StreamClassDebugPrint x #define DEBUG_BREAKPOINT() DbgBreakPoint() #define DEBUG_ASSERT(exp) \ - if ( !(exp) ) { \ - StreamClassDebugAssert( __FILE__, __LINE__, #exp, exp); \ - } + if ( !(exp) ) { \ + StreamClassDebugAssert( __FILE__, __LINE__, #exp, exp); \ + } #else #define DebugPrint(x) @@ -49,538 +38,484 @@ typedef PHYSICAL_ADDRESS STREAM_PHYSICAL_ADDRESS, *PSTREAM_PHYSICAL_ADDRESS; __GNU_EXTENSION typedef unsigned __int64 STREAM_SYSTEM_TIME, *PSTREAM_SYSTEM_TIME; __GNU_EXTENSION typedef unsigned __int64 STREAM_TIMESTAMP, *PSTREAM_TIMESTAMP; -typedef enum -{ - TIME_GET_STREAM_TIME, - TIME_READ_ONBOARD_CLOCK, - TIME_SET_ONBOARD_CLOCK -}TIME_FUNCTION; +typedef enum { + TIME_GET_STREAM_TIME, + TIME_READ_ONBOARD_CLOCK, + TIME_SET_ONBOARD_CLOCK +} TIME_FUNCTION; -typedef struct _HW_TIME_CONTEXT -{ - struct _HW_DEVICE_EXTENSION *HwDeviceExtension; - struct _HW_STREAM_OBJECT *HwStreamObject; - TIME_FUNCTION Function; - ULONGLONG Time; - ULONGLONG SystemTime; -}HW_TIME_CONTEXT, *PHW_TIME_CONTEXT; +typedef struct _HW_TIME_CONTEXT { + struct _HW_DEVICE_EXTENSION *HwDeviceExtension; + struct _HW_STREAM_OBJECT *HwStreamObject; + TIME_FUNCTION Function; + ULONGLONG Time; + ULONGLONG SystemTime; +} HW_TIME_CONTEXT, *PHW_TIME_CONTEXT; -typedef struct _HW_EVENT_DESCRIPTOR -{ - BOOLEAN Enable; - PKSEVENT_ENTRY EventEntry; - PKSEVENTDATA EventData; - __GNU_EXTENSION union - { - struct _HW_STREAM_OBJECT * StreamObject; - struct _HW_DEVICE_EXTENSION *DeviceExtension; - }; - ULONG EnableEventSetIndex; - PVOID HwInstanceExtension; - ULONG Reserved; +typedef struct _HW_EVENT_DESCRIPTOR { + BOOLEAN Enable; + PKSEVENT_ENTRY EventEntry; + PKSEVENTDATA EventData; + __GNU_EXTENSION union { + struct _HW_STREAM_OBJECT * StreamObject; + struct _HW_DEVICE_EXTENSION *DeviceExtension; + }; + ULONG EnableEventSetIndex; + PVOID HwInstanceExtension; + ULONG Reserved; } HW_EVENT_DESCRIPTOR, *PHW_EVENT_DESCRIPTOR; struct _HW_STREAM_REQUEST_BLOCK; -typedef VOID (STREAMAPI * PHW_RECEIVE_STREAM_DATA_SRB) (IN struct _HW_STREAM_REQUEST_BLOCK * SRB); -typedef VOID (STREAMAPI * PHW_RECEIVE_STREAM_CONTROL_SRB) (IN struct _HW_STREAM_REQUEST_BLOCK * SRB); -typedef NTSTATUS (STREAMAPI * PHW_EVENT_ROUTINE) (IN PHW_EVENT_DESCRIPTOR EventDescriptor); -typedef VOID (STREAMAPI * PHW_CLOCK_FUNCTION) (IN PHW_TIME_CONTEXT HwTimeContext); +typedef VOID (STREAMAPI *PHW_RECEIVE_STREAM_DATA_SRB) (IN struct _HW_STREAM_REQUEST_BLOCK *SRB); +typedef VOID (STREAMAPI *PHW_RECEIVE_STREAM_CONTROL_SRB) (IN struct _HW_STREAM_REQUEST_BLOCK *SRB); +typedef NTSTATUS (STREAMAPI *PHW_EVENT_ROUTINE) (IN PHW_EVENT_DESCRIPTOR EventDescriptor); +typedef VOID (STREAMAPI *PHW_CLOCK_FUNCTION) (IN PHW_TIME_CONTEXT HwTimeContext); -typedef struct _HW_CLOCK_OBJECT -{ - PHW_CLOCK_FUNCTION HwClockFunction; - ULONG ClockSupportFlags; - ULONG Reserved[2]; +typedef struct _HW_CLOCK_OBJECT { + PHW_CLOCK_FUNCTION HwClockFunction; + ULONG ClockSupportFlags; + ULONG Reserved[2]; } HW_CLOCK_OBJECT, *PHW_CLOCK_OBJECT; -#define CLOCK_SUPPORT_CAN_SET_ONBOARD_CLOCK 0x1 +#define CLOCK_SUPPORT_CAN_SET_ONBOARD_CLOCK 0x1 #define CLOCK_SUPPORT_CAN_READ_ONBOARD_CLOCK 0x2 #define CLOCK_SUPPORT_CAN_RETURN_STREAM_TIME 0x4 -typedef struct _HW_STREAM_OBJECT -{ - ULONG SizeOfThisPacket; - ULONG StreamNumber; - PVOID HwStreamExtension; - PHW_RECEIVE_STREAM_DATA_SRB ReceiveDataPacket; - PHW_RECEIVE_STREAM_CONTROL_SRB ReceiveControlPacket; - HW_CLOCK_OBJECT HwClockObject; - BOOLEAN Dma; - BOOLEAN Pio; - PVOID HwDeviceExtension; - ULONG StreamHeaderMediaSpecific; - ULONG StreamHeaderWorkspace; - BOOLEAN Allocator; - PHW_EVENT_ROUTINE HwEventRoutine; - ULONG Reserved[2]; +typedef struct _HW_STREAM_OBJECT { + ULONG SizeOfThisPacket; + ULONG StreamNumber; + PVOID HwStreamExtension; + PHW_RECEIVE_STREAM_DATA_SRB ReceiveDataPacket; + PHW_RECEIVE_STREAM_CONTROL_SRB ReceiveControlPacket; + HW_CLOCK_OBJECT HwClockObject; + BOOLEAN Dma; + BOOLEAN Pio; + PVOID HwDeviceExtension; + ULONG StreamHeaderMediaSpecific; + ULONG StreamHeaderWorkspace; + BOOLEAN Allocator; + PHW_EVENT_ROUTINE HwEventRoutine; + ULONG Reserved[2]; } HW_STREAM_OBJECT, *PHW_STREAM_OBJECT; -typedef struct _HW_STREAM_HEADER -{ - ULONG NumberOfStreams; - ULONG SizeOfHwStreamInformation; - ULONG NumDevPropArrayEntries; - PKSPROPERTY_SET DevicePropertiesArray; - ULONG NumDevEventArrayEntries; - PKSEVENT_SET DeviceEventsArray; - PKSTOPOLOGY Topology; - PHW_EVENT_ROUTINE DeviceEventRoutine; - LONG NumDevMethodArrayEntries; - PKSMETHOD_SET DeviceMethodsArray; -}HW_STREAM_HEADER, *PHW_STREAM_HEADER; +typedef struct _HW_STREAM_HEADER { + ULONG NumberOfStreams; + ULONG SizeOfHwStreamInformation; + ULONG NumDevPropArrayEntries; + PKSPROPERTY_SET DevicePropertiesArray; + ULONG NumDevEventArrayEntries; + PKSEVENT_SET DeviceEventsArray; + PKSTOPOLOGY Topology; + PHW_EVENT_ROUTINE DeviceEventRoutine; + LONG NumDevMethodArrayEntries; + PKSMETHOD_SET DeviceMethodsArray; +} HW_STREAM_HEADER, *PHW_STREAM_HEADER; -typedef struct _HW_STREAM_INFORMATION -{ - ULONG NumberOfPossibleInstances; - KSPIN_DATAFLOW DataFlow; - BOOLEAN DataAccessible; - ULONG NumberOfFormatArrayEntries; - PKSDATAFORMAT* StreamFormatsArray; - PVOID ClassReserved[4]; - ULONG NumStreamPropArrayEntries; - PKSPROPERTY_SET StreamPropertiesArray; - ULONG NumStreamEventArrayEntries; - PKSEVENT_SET StreamEventsArray; - GUID* Category; - GUID* Name; - ULONG MediumsCount; - const KSPIN_MEDIUM* Mediums; - BOOLEAN BridgeStream; - ULONG Reserved[2]; -}HW_STREAM_INFORMATION, *PHW_STREAM_INFORMATION; +typedef struct _HW_STREAM_INFORMATION { + ULONG NumberOfPossibleInstances; + KSPIN_DATAFLOW DataFlow; + BOOLEAN DataAccessible; + ULONG NumberOfFormatArrayEntries; + PKSDATAFORMAT* StreamFormatsArray; + PVOID ClassReserved[4]; + ULONG NumStreamPropArrayEntries; + PKSPROPERTY_SET StreamPropertiesArray; + ULONG NumStreamEventArrayEntries; + PKSEVENT_SET StreamEventsArray; + GUID* Category; + GUID* Name; + ULONG MediumsCount; + const KSPIN_MEDIUM* Mediums; + BOOLEAN BridgeStream; + ULONG Reserved[2]; +} HW_STREAM_INFORMATION, *PHW_STREAM_INFORMATION; - -typedef struct _HW_STREAM_DESCRIPTOR -{ - HW_STREAM_HEADER StreamHeader; - HW_STREAM_INFORMATION StreamInfo; +typedef struct _HW_STREAM_DESCRIPTOR { + HW_STREAM_HEADER StreamHeader; + HW_STREAM_INFORMATION StreamInfo; } HW_STREAM_DESCRIPTOR, *PHW_STREAM_DESCRIPTOR; -typedef struct _STREAM_TIME_REFERENCE -{ - STREAM_TIMESTAMP CurrentOnboardClockValue; - LARGE_INTEGER OnboardClockFrequency; - LARGE_INTEGER CurrentSystemTime; - ULONG Reserved[2]; -}STREAM_TIME_REFERENCE, *PSTREAM_TIME_REFERENCE; +typedef struct _STREAM_TIME_REFERENCE { + STREAM_TIMESTAMP CurrentOnboardClockValue; + LARGE_INTEGER OnboardClockFrequency; + LARGE_INTEGER CurrentSystemTime; + ULONG Reserved[2]; +} STREAM_TIME_REFERENCE, *PSTREAM_TIME_REFERENCE; -typedef struct _STREAM_DATA_INTERSECT_INFO -{ - ULONG StreamNumber; - PKSDATARANGE DataRange; - PVOID DataFormatBuffer; - ULONG SizeOfDataFormatBuffer; +typedef struct _STREAM_DATA_INTERSECT_INFO { + ULONG StreamNumber; + PKSDATARANGE DataRange; + PVOID DataFormatBuffer; + ULONG SizeOfDataFormatBuffer; +} STREAM_DATA_INTERSECT_INFO, *PSTREAM_DATA_INTERSECT_INFO; -}STREAM_DATA_INTERSECT_INFO, *PSTREAM_DATA_INTERSECT_INFO; +typedef struct _STREAM_PROPERTY_DESCRIPTOR { + PKSPROPERTY Property; + ULONG PropertySetID; + PVOID PropertyInfo; + ULONG PropertyInputSize; + ULONG PropertyOutputSize; +} STREAM_PROPERTY_DESCRIPTOR, *PSTREAM_PROPERTY_DESCRIPTOR; -typedef struct _STREAM_PROPERTY_DESCRIPTOR -{ - PKSPROPERTY Property; - ULONG PropertySetID; - PVOID PropertyInfo; - ULONG PropertyInputSize; - ULONG PropertyOutputSize; -}STREAM_PROPERTY_DESCRIPTOR, *PSTREAM_PROPERTY_DESCRIPTOR; - -typedef struct _STREAM_METHOD_DESCRIPTOR -{ - ULONG MethodSetID; - PKSMETHOD Method; - PVOID MethodInfo; - LONG MethodInputSize; - LONG MethodOutputSize; +typedef struct _STREAM_METHOD_DESCRIPTOR { + ULONG MethodSetID; + PKSMETHOD Method; + PVOID MethodInfo; + LONG MethodInputSize; + LONG MethodOutputSize; } STREAM_METHOD_DESCRIPTOR, *PSTREAM_METHOD_DESCRIPTOR; #define STREAM_REQUEST_BLOCK_SIZE sizeof(STREAM_REQUEST_BLOCK) -typedef enum _SRB_COMMAND -{ - SRB_READ_DATA, - SRB_WRITE_DATA, - SRB_GET_STREAM_STATE, - SRB_SET_STREAM_STATE, - SRB_SET_STREAM_PROPERTY, - SRB_GET_STREAM_PROPERTY, - SRB_OPEN_MASTER_CLOCK, +typedef enum _SRB_COMMAND { + SRB_READ_DATA, + SRB_WRITE_DATA, + SRB_GET_STREAM_STATE, + SRB_SET_STREAM_STATE, + SRB_SET_STREAM_PROPERTY, + SRB_GET_STREAM_PROPERTY, + SRB_OPEN_MASTER_CLOCK, - SRB_INDICATE_MASTER_CLOCK, - SRB_UNKNOWN_STREAM_COMMAND, - SRB_SET_STREAM_RATE, - SRB_PROPOSE_DATA_FORMAT, - SRB_CLOSE_MASTER_CLOCK, - SRB_PROPOSE_STREAM_RATE, - SRB_SET_DATA_FORMAT, - SRB_GET_DATA_FORMAT, - SRB_BEGIN_FLUSH, - SRB_END_FLUSH, + SRB_INDICATE_MASTER_CLOCK, + SRB_UNKNOWN_STREAM_COMMAND, + SRB_SET_STREAM_RATE, + SRB_PROPOSE_DATA_FORMAT, + SRB_CLOSE_MASTER_CLOCK, + SRB_PROPOSE_STREAM_RATE, + SRB_SET_DATA_FORMAT, + SRB_GET_DATA_FORMAT, + SRB_BEGIN_FLUSH, + SRB_END_FLUSH, - SRB_GET_STREAM_INFO = 0x100, - SRB_OPEN_STREAM, - SRB_CLOSE_STREAM, - SRB_OPEN_DEVICE_INSTANCE, - SRB_CLOSE_DEVICE_INSTANCE, - SRB_GET_DEVICE_PROPERTY, - SRB_SET_DEVICE_PROPERTY, - SRB_INITIALIZE_DEVICE, - SRB_CHANGE_POWER_STATE, - SRB_UNINITIALIZE_DEVICE, - SRB_UNKNOWN_DEVICE_COMMAND, - SRB_PAGING_OUT_DRIVER, - SRB_GET_DATA_INTERSECTION, - SRB_INITIALIZATION_COMPLETE, - SRB_SURPRISE_REMOVAL + SRB_GET_STREAM_INFO = 0x100, + SRB_OPEN_STREAM, + SRB_CLOSE_STREAM, + SRB_OPEN_DEVICE_INSTANCE, + SRB_CLOSE_DEVICE_INSTANCE, + SRB_GET_DEVICE_PROPERTY, + SRB_SET_DEVICE_PROPERTY, + SRB_INITIALIZE_DEVICE, + SRB_CHANGE_POWER_STATE, + SRB_UNINITIALIZE_DEVICE, + SRB_UNKNOWN_DEVICE_COMMAND, + SRB_PAGING_OUT_DRIVER, + SRB_GET_DATA_INTERSECTION, + SRB_INITIALIZATION_COMPLETE, + SRB_SURPRISE_REMOVAL #if (NTDDI_VERSION >= NTDDI_WINXP) - - ,SRB_DEVICE_METHOD - ,SRB_STREAM_METHOD - + ,SRB_DEVICE_METHOD + ,SRB_STREAM_METHOD #if ( (NTDDI_VERSION >= NTDDI_WINXPSP2) && (NTDDI_VERSION < NTDDI_WS03) ) || (NTDDI_VERSION >= NTDDI_WS03SP1) - - ,SRB_NOTIFY_IDLE_STATE - + ,SRB_NOTIFY_IDLE_STATE #endif - #endif +} SRB_COMMAND; -}SRB_COMMAND; - -typedef struct -{ - PHYSICAL_ADDRESS PhysicalAddress; - ULONG Length; +typedef struct { + PHYSICAL_ADDRESS PhysicalAddress; + ULONG Length; } KSSCATTER_GATHER, *PKSSCATTER_GATHER; -typedef struct _HW_STREAM_REQUEST_BLOCK -{ - ULONG SizeOfThisPacket; - SRB_COMMAND Command; - NTSTATUS Status; - PHW_STREAM_OBJECT StreamObject; - PVOID HwDeviceExtension; - PVOID SRBExtension; +typedef struct _HW_STREAM_REQUEST_BLOCK { + ULONG SizeOfThisPacket; + SRB_COMMAND Command; + NTSTATUS Status; + PHW_STREAM_OBJECT StreamObject; + PVOID HwDeviceExtension; + PVOID SRBExtension; - union _CommandData - { - PKSSTREAM_HEADER DataBufferArray; - PHW_STREAM_DESCRIPTOR StreamBuffer; - KSSTATE StreamState; - PSTREAM_TIME_REFERENCE TimeReference; - PSTREAM_PROPERTY_DESCRIPTOR PropertyInfo; - PKSDATAFORMAT OpenFormat; - struct _PORT_CONFIGURATION_INFORMATION *ConfigInfo; - HANDLE MasterClockHandle; - DEVICE_POWER_STATE DeviceState; - PSTREAM_DATA_INTERSECT_INFO IntersectInfo; + union _CommandData { + PKSSTREAM_HEADER DataBufferArray; + PHW_STREAM_DESCRIPTOR StreamBuffer; + KSSTATE StreamState; + PSTREAM_TIME_REFERENCE TimeReference; + PSTREAM_PROPERTY_DESCRIPTOR PropertyInfo; + PKSDATAFORMAT OpenFormat; + struct _PORT_CONFIGURATION_INFORMATION *ConfigInfo; + HANDLE MasterClockHandle; + DEVICE_POWER_STATE DeviceState; + PSTREAM_DATA_INTERSECT_INFO IntersectInfo; #if (NTDDI_VERSION >= NTDDI_WINXP) - PVOID MethodInfo; - LONG FilterTypeIndex; + PVOID MethodInfo; + LONG FilterTypeIndex; #if ( (NTDDI_VERSION >= NTDDI_WINXPSP2) && (NTDDI_VERSION < NTDDI_WS03) ) || (NTDDI_VERSION >= NTDDI_WS03SP1) - BOOLEAN Idle; + BOOLEAN Idle; #endif #endif + } CommandData; - }CommandData; + ULONG NumberOfBuffers; + ULONG TimeoutCounter; + ULONG TimeoutOriginal; + struct _HW_STREAM_REQUEST_BLOCK *NextSRB; - ULONG NumberOfBuffers; - ULONG TimeoutCounter; - ULONG TimeoutOriginal; - struct _HW_STREAM_REQUEST_BLOCK *NextSRB; + PIRP Irp; + ULONG Flags; + PVOID HwInstanceExtension; - PIRP Irp; - ULONG Flags; - PVOID HwInstanceExtension; + __GNU_EXTENSION union { + ULONG NumberOfBytesToTransfer; + ULONG ActualBytesTransferred; + }; - __GNU_EXTENSION union - { - ULONG NumberOfBytesToTransfer; - ULONG ActualBytesTransferred; - }; - - PKSSCATTER_GATHER ScatterGatherBuffer; - ULONG NumberOfPhysicalPages; - ULONG NumberOfScatterGatherElements; - ULONG Reserved[1]; - -}HW_STREAM_REQUEST_BLOCK, *PHW_STREAM_REQUEST_BLOCK; + PKSSCATTER_GATHER ScatterGatherBuffer; + ULONG NumberOfPhysicalPages; + ULONG NumberOfScatterGatherElements; + ULONG Reserved[1]; +} HW_STREAM_REQUEST_BLOCK, *PHW_STREAM_REQUEST_BLOCK; #define SRB_HW_FLAGS_DATA_TRANSFER 0x01 #define SRB_HW_FLAGS_STREAM_REQUEST 0x2 -typedef enum -{ - PerRequestExtension, - DmaBuffer, - SRBDataBuffer -}STREAM_BUFFER_TYPE; +typedef enum { + PerRequestExtension, + DmaBuffer, + SRBDataBuffer +} STREAM_BUFFER_TYPE; -typedef struct _ACCESS_RANGE -{ - STREAM_PHYSICAL_ADDRESS RangeStart; - ULONG RangeLength; - BOOLEAN RangeInMemory; - ULONG Reserved; -}ACCESS_RANGE, *PACCESS_RANGE; +typedef struct _ACCESS_RANGE { + STREAM_PHYSICAL_ADDRESS RangeStart; + ULONG RangeLength; + BOOLEAN RangeInMemory; + ULONG Reserved; +} ACCESS_RANGE, *PACCESS_RANGE; -typedef struct _PORT_CONFIGURATION_INFORMATION -{ - ULONG SizeOfThisPacket; - PVOID HwDeviceExtension; - PDEVICE_OBJECT ClassDeviceObject; - PDEVICE_OBJECT PhysicalDeviceObject; - ULONG SystemIoBusNumber; - INTERFACE_TYPE AdapterInterfaceType; - ULONG BusInterruptLevel; - ULONG BusInterruptVector; - KINTERRUPT_MODE InterruptMode; - ULONG DmaChannel; - ULONG NumberOfAccessRanges; - PACCESS_RANGE AccessRanges; - ULONG StreamDescriptorSize; - PIRP Irp; - PKINTERRUPT InterruptObject; - PADAPTER_OBJECT DmaAdapterObject; - PDEVICE_OBJECT RealPhysicalDeviceObject; - ULONG Reserved[1]; -}PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION; +typedef struct _PORT_CONFIGURATION_INFORMATION { + ULONG SizeOfThisPacket; + PVOID HwDeviceExtension; + PDEVICE_OBJECT ClassDeviceObject; + PDEVICE_OBJECT PhysicalDeviceObject; + ULONG SystemIoBusNumber; + INTERFACE_TYPE AdapterInterfaceType; + ULONG BusInterruptLevel; + ULONG BusInterruptVector; + KINTERRUPT_MODE InterruptMode; + ULONG DmaChannel; + ULONG NumberOfAccessRanges; + PACCESS_RANGE AccessRanges; + ULONG StreamDescriptorSize; + PIRP Irp; + PKINTERRUPT InterruptObject; + PADAPTER_OBJECT DmaAdapterObject; + PDEVICE_OBJECT RealPhysicalDeviceObject; + ULONG Reserved[1]; +} PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION; -typedef VOID (STREAMAPI * PHW_RECEIVE_DEVICE_SRB) (IN PHW_STREAM_REQUEST_BLOCK SRB); -typedef VOID (STREAMAPI * PHW_CANCEL_SRB) (IN PHW_STREAM_REQUEST_BLOCK SRB); -typedef VOID (STREAMAPI * PHW_REQUEST_TIMEOUT_HANDLER) (IN PHW_STREAM_REQUEST_BLOCK SRB); -typedef BOOLEAN (STREAMAPI * PHW_INTERRUPT) (IN PVOID DeviceExtension); -typedef VOID (STREAMAPI * PHW_TIMER_ROUTINE) (IN PVOID Context); -typedef VOID (STREAMAPI * PHW_PRIORITY_ROUTINE) (IN PVOID Context); -typedef VOID (STREAMAPI * PHW_QUERY_CLOCK_ROUTINE) (IN PHW_TIME_CONTEXT TimeContext); -typedef BOOLEAN (STREAMAPI * PHW_RESET_ADAPTER) (IN PVOID DeviceExtension); +typedef VOID (STREAMAPI *PHW_RECEIVE_DEVICE_SRB) (IN PHW_STREAM_REQUEST_BLOCK SRB); +typedef VOID (STREAMAPI *PHW_CANCEL_SRB) (IN PHW_STREAM_REQUEST_BLOCK SRB); +typedef VOID (STREAMAPI *PHW_REQUEST_TIMEOUT_HANDLER) (IN PHW_STREAM_REQUEST_BLOCK SRB); +typedef BOOLEAN (STREAMAPI *PHW_INTERRUPT) (IN PVOID DeviceExtension); +typedef VOID (STREAMAPI *PHW_TIMER_ROUTINE) (IN PVOID Context); +typedef VOID (STREAMAPI *PHW_PRIORITY_ROUTINE) (IN PVOID Context); +typedef VOID (STREAMAPI *PHW_QUERY_CLOCK_ROUTINE) (IN PHW_TIME_CONTEXT TimeContext); +typedef BOOLEAN (STREAMAPI *PHW_RESET_ADAPTER) (IN PVOID DeviceExtension); -typedef enum _STREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE -{ - ReadyForNextStreamDataRequest, - ReadyForNextStreamControlRequest, - HardwareStarved, - StreamRequestComplete, - SignalMultipleStreamEvents, - SignalStreamEvent, - DeleteStreamEvent, - StreamNotificationMaximum -}STREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE, *PSTREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE; +typedef enum _STREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE { + ReadyForNextStreamDataRequest, + ReadyForNextStreamControlRequest, + HardwareStarved, + StreamRequestComplete, + SignalMultipleStreamEvents, + SignalStreamEvent, + DeleteStreamEvent, + StreamNotificationMaximum +} STREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE, *PSTREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE; -typedef enum _STREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE -{ - ReadyForNextDeviceRequest, - DeviceRequestComplete, - SignalMultipleDeviceEvents, - SignalDeviceEvent, - DeleteDeviceEvent, +typedef enum _STREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE { + ReadyForNextDeviceRequest, + DeviceRequestComplete, + SignalMultipleDeviceEvents, + SignalDeviceEvent, + DeleteDeviceEvent, #if (NTDDI_VERSION >= NTDDI_WINXP) - SignalMultipleDeviceInstanceEvents, + SignalMultipleDeviceInstanceEvents, #endif - DeviceNotificationMaximum + DeviceNotificationMaximum } STREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE, *PSTREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE; #define STREAM_CLASS_VERSION_20 0x0200 typedef struct _HW_INITIALIZATION_DATA { #if (NTDDI_VERSION >= NTDDI_WINXP) - __GNU_EXTENSION union - { - ULONG HwInitializationDataSize; - __GNU_EXTENSION struct - { - USHORT SizeOfThisPacket; - USHORT StreamClassVersion; - }; + __GNU_EXTENSION union { + ULONG HwInitializationDataSize; + __GNU_EXTENSION struct { + USHORT SizeOfThisPacket; + USHORT StreamClassVersion; }; + }; #else - ULONG HwInitializationDataSize; -#endif + ULONG HwInitializationDataSize; +#endif /* NTDDI_VERSION >= NTDDI_WINXP */ - PHW_INTERRUPT HwInterrupt; - PHW_RECEIVE_DEVICE_SRB HwReceivePacket; - PHW_CANCEL_SRB HwCancelPacket; - PHW_REQUEST_TIMEOUT_HANDLER HwRequestTimeoutHandler; - ULONG DeviceExtensionSize; - ULONG PerRequestExtensionSize; - ULONG PerStreamExtensionSize; - ULONG FilterInstanceExtensionSize; - BOOLEAN BusMasterDMA; - BOOLEAN Dma24BitAddresses; - ULONG BufferAlignment; - BOOLEAN TurnOffSynchronization; - ULONG DmaBufferSize; + PHW_INTERRUPT HwInterrupt; + PHW_RECEIVE_DEVICE_SRB HwReceivePacket; + PHW_CANCEL_SRB HwCancelPacket; + PHW_REQUEST_TIMEOUT_HANDLER HwRequestTimeoutHandler; + ULONG DeviceExtensionSize; + ULONG PerRequestExtensionSize; + ULONG PerStreamExtensionSize; + ULONG FilterInstanceExtensionSize; + BOOLEAN BusMasterDMA; + BOOLEAN Dma24BitAddresses; + ULONG BufferAlignment; + BOOLEAN TurnOffSynchronization; + ULONG DmaBufferSize; #if (NTDDI_VERSION >= NTDDI_WINXP) - ULONG NumNameExtensions; - PWCHAR *NameExtensionArray; + ULONG NumNameExtensions; + PWCHAR *NameExtensionArray; #else - ULONG Reserved[2]; + ULONG Reserved[2]; #endif } HW_INITIALIZATION_DATA, *PHW_INITIALIZATION_DATA; -typedef enum _STREAM_PRIORITY -{ - High, - Dispatch, - Low, - LowToHigh -}STREAM_PRIORITY, *PSTREAM_PRIORITY; +typedef enum _STREAM_PRIORITY { + High, + Dispatch, + Low, + LowToHigh +} STREAM_PRIORITY, *PSTREAM_PRIORITY; VOID StreamClassAbortOutstandingRequests( - IN PVOID HwDeviceExtension, - IN PHW_STREAM_OBJECT HwStreamObject, - IN NTSTATUS Status -); + IN PVOID HwDeviceExtension, + IN PHW_STREAM_OBJECT HwStreamObject, + IN NTSTATUS Status); VOID STREAMAPI StreamClassCallAtNewPriority( - IN PHW_STREAM_OBJECT StreamObject, - IN PVOID HwDeviceExtension, - IN STREAM_PRIORITY Priority, - IN PHW_PRIORITY_ROUTINE PriorityRoutine, - IN PVOID Context - ); - + IN PHW_STREAM_OBJECT StreamObject, + IN PVOID HwDeviceExtension, + IN STREAM_PRIORITY Priority, + IN PHW_PRIORITY_ROUTINE PriorityRoutine, + IN PVOID Context); + VOID STREAMAPI StreamClassCompleteRequestAndMarkQueueReady( - IN PHW_STREAM_REQUEST_BLOCK Srb -); + IN PHW_STREAM_REQUEST_BLOCK Srb); VOID STREAMAPI StreamClassDebugAssert( - IN PCHAR File, - IN ULONG Line, - IN PCHAR AssertText, - IN ULONG AssertValue -); + IN PCHAR File, + IN ULONG Line, + IN PCHAR AssertText, + IN ULONG AssertValue); VOID __cdecl StreamClassDebugPrint( - IN STREAM_DEBUG_LEVEL DebugPrintLevel, - IN PCCHAR DebugMessage, - ... -); + IN STREAM_DEBUG_LEVEL DebugPrintLevel, + IN PCCHAR DebugMessage, + ...); VOID __cdecl StreamClassDeviceNotification( - IN STREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE NotificationType, - IN PVOID HwDeviceExtension, - IN PHW_STREAM_REQUEST_BLOCK pSrb, - IN PKSEVENT_ENTRY EventEntry, - IN GUID *EventSet, - IN ULONG EventId -); + IN STREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE NotificationType, + IN PVOID HwDeviceExtension, + IN PHW_STREAM_REQUEST_BLOCK pSrb, + IN PKSEVENT_ENTRY EventEntry, + IN GUID *EventSet, + IN ULONG EventId); VOID STREAMAPI StreamClassFilterReenumerateStreams( - IN PVOID HwInstanceExtension, - IN ULONG StreamDescriptorSize -); + IN PVOID HwInstanceExtension, + IN ULONG StreamDescriptorSize); PVOID STREAMAPI StreamClassGetDmaBuffer( - IN PVOID HwDeviceExtension -); + IN PVOID HwDeviceExtension); PKSEVENT_ENTRY StreamClassGetNextEvent( - IN PVOID HwInstanceExtension_OR_HwDeviceExtension, - IN PHW_STREAM_OBJECT HwStreamObject, - IN GUID * EventGuid, - IN ULONG EventItem, - IN PKSEVENT_ENTRY CurrentEvent -); + IN PVOID HwInstanceExtension_OR_HwDeviceExtension, + IN PHW_STREAM_OBJECT HwStreamObject, + IN GUID * EventGuid, + IN ULONG EventItem, + IN PKSEVENT_ENTRY CurrentEvent); STREAM_PHYSICAL_ADDRESS STREAMAPI StreamClassGetPhysicalAddress( - IN PVOID HwDeviceExtension, - IN PHW_STREAM_REQUEST_BLOCK HwSRB, - IN PVOID VirtualAddress, - IN STREAM_BUFFER_TYPE Type, - IN ULONG * Length -); + IN PVOID HwDeviceExtension, + IN PHW_STREAM_REQUEST_BLOCK HwSRB, + IN PVOID VirtualAddress, + IN STREAM_BUFFER_TYPE Type, + IN ULONG *Length); VOID StreamClassQueryMasterClock( - IN PHW_STREAM_OBJECT HwStreamObject, - IN HANDLE MasterClockHandle, - IN TIME_FUNCTION TimeFunction, - IN PHW_QUERY_CLOCK_ROUTINE ClockCallbackRoutine -); + IN PHW_STREAM_OBJECT HwStreamObject, + IN HANDLE MasterClockHandle, + IN TIME_FUNCTION TimeFunction, + IN PHW_QUERY_CLOCK_ROUTINE ClockCallbackRoutine); VOID STREAMAPI StreamClassQueryMasterClockSync( - IN HANDLE MasterClockHandle, - IN PHW_TIME_CONTEXT TimeContext -); + IN HANDLE MasterClockHandle, + IN PHW_TIME_CONTEXT TimeContext); BOOLEAN STREAMAPI -StreamClassReadWriteConfig( - IN PVOID HwDeviceExtension, - IN BOOLEAN Read, - IN PVOID Buffer, - IN ULONG Offset, - IN ULONG Length -); +StreamClassReadWriteConfig( + IN PVOID HwDeviceExtension, + IN BOOLEAN Read, + IN PVOID Buffer, + IN ULONG Offset, + IN ULONG Length); VOID STREAMAPI StreamClassReenumerateStreams( - IN PVOID HwDeviceExtension, - IN ULONG StreamDescriptorSize -); + IN PVOID HwDeviceExtension, + IN ULONG StreamDescriptorSize); NTSTATUS STREAMAPI StreamClassRegisterAdapter( - IN PVOID Argument1, - IN PVOID Argument2, - IN PHW_INITIALIZATION_DATA HwInitializationData -); + IN PVOID Argument1, + IN PVOID Argument2, + IN PHW_INITIALIZATION_DATA HwInitializationData); #define StreamClassRegisterMinidriver StreamClassRegisterAdapter NTSTATUS -StreamClassRegisterFilterWithNoKSPins( - IN PDEVICE_OBJECT DeviceObject, - IN const GUID * InterfaceClassGUID, - IN ULONG PinCount, - IN BOOLEAN * PinDirection, - IN KSPIN_MEDIUM * MediumList, - IN GUID * CategoryList -); +StreamClassRegisterFilterWithNoKSPins( + IN PDEVICE_OBJECT DeviceObject, + IN const GUID *InterfaceClassGUID, + IN ULONG PinCount, + IN BOOLEAN *PinDirection, + IN KSPIN_MEDIUM *MediumList, + IN GUID *CategoryList); VOID STREAMAPI StreamClassScheduleTimer( - IN PHW_STREAM_OBJECT StreamObject, - IN PVOID HwDeviceExtension, - IN ULONG NumberOfMicroseconds, - IN PHW_TIMER_ROUTINE TimerRoutine, - IN PVOID Context -); + IN PHW_STREAM_OBJECT StreamObject, + IN PVOID HwDeviceExtension, + IN ULONG NumberOfMicroseconds, + IN PHW_TIMER_ROUTINE TimerRoutine, + IN PVOID Context); VOID __cdecl StreamClassStreamNotification( - IN STREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE NotificationType, - IN PHW_STREAM_OBJECT StreamObject, - IN ... -); + IN STREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE NotificationType, + IN PHW_STREAM_OBJECT StreamObject, + IN ...); -#endif +#endif /* _STREAM_H */ diff --git a/include/ddk/swenum.h b/include/ddk/swenum.h index 1ce3388f417..b6a82bed893 100644 --- a/include/ddk/swenum.h +++ b/include/ddk/swenum.h @@ -6,10 +6,9 @@ #define IOCTL_SWENUM_GET_BUS_ID CTL_CODE(FILE_DEVICE_BUS_EXTENDER, 0x002, METHOD_NEITHER, FILE_READ_ACCESS) typedef struct _SWENUM_INSTALL_INTERFACE { - GUID DeviceId; - GUID InterfaceId; - WCHAR ReferenceString[1]; - + GUID DeviceId; + GUID InterfaceId; + WCHAR ReferenceString[1]; } SWENUM_INSTALL_INTERFACE, *PSWENUM_INSTALL_INTERFACE; #if defined(_KS_) @@ -17,28 +16,24 @@ typedef struct _SWENUM_INSTALL_INTERFACE { #define BUSID_SoftwareDeviceEnumerator KSMEDIUMSETID_Standard #else #define STATIC_BUSID_SoftwareDeviceEnumerator \ - 0x4747B320L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -#endif + 0x4747B320L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +#endif /* _KS_ */ #if defined(_NTDDK_) - #if !defined(_KS_) - typedef VOID (NTAPI *PFNREFERENCEDEVICEOBJECT)(PVOID Context); typedef VOID (NTAPI *PFNDEREFERENCEDEVICEOBJECT)(PVOID Context); typedef NTSTATUS (NTAPI *PFNQUERYREFERENCESTRING)(PVOID Context, PWCHAR *String); - -#endif +#endif /* _KS_ */ #define BUS_INTERFACE_SWENUM_VERSION 0x100 -typedef struct _BUS_INTERFACE_SWENUM -{ - INTERFACE Interface; - PFNREFERENCEDEVICEOBJECT ReferenceDeviceObject; - PFNDEREFERENCEDEVICEOBJECT DereferenceDeviceObject; - PFNQUERYREFERENCESTRING QueryReferenceString; +typedef struct _BUS_INTERFACE_SWENUM { + INTERFACE Interface; + PFNREFERENCEDEVICEOBJECT ReferenceDeviceObject; + PFNDEREFERENCEDEVICEOBJECT DereferenceDeviceObject; + PFNQUERYREFERENCESTRING QueryReferenceString; } BUS_INTERFACE_SWENUM, *PBUS_INTERFACE_SWENUM; #if defined(__cplusplus) @@ -51,103 +46,91 @@ KSDDKAPI NTSTATUS NTAPI KsQuerySoftwareBusInterface( - IN PDEVICE_OBJECT PnpDeviceObject, - OUT PBUS_INTERFACE_SWENUM BusInterface -); + IN PDEVICE_OBJECT PnpDeviceObject, + OUT PBUS_INTERFACE_SWENUM BusInterface); KSDDKAPI NTSTATUS NTAPI KsReferenceSoftwareBusObject( - IN KSDEVICE_HEADER Header -); + IN KSDEVICE_HEADER Header); KSDDKAPI VOID NTAPI KsDereferenceSoftwareBusObject( - IN KSDEVICE_HEADER Header -); + IN KSDEVICE_HEADER Header); KSDDKAPI NTSTATUS NTAPI KsCreateBusEnumObject( - IN PWSTR BusIdentifier, - IN PDEVICE_OBJECT BusDeviceObject, - IN PDEVICE_OBJECT PhysicalDeviceObject, - IN PDEVICE_OBJECT PnpDeviceObject, - IN REFGUID InterfaceGuid, - IN PWSTR ServiceRelativePath -); + IN PWSTR BusIdentifier, + IN PDEVICE_OBJECT BusDeviceObject, + IN PDEVICE_OBJECT PhysicalDeviceObject, + IN PDEVICE_OBJECT PnpDeviceObject, + IN REFGUID InterfaceGuid, + IN PWSTR ServiceRelativePath); KSDDKAPI NTSTATUS NTAPI KsGetBusEnumIdentifier( - IN OUT PIRP Irp -); + IN OUT PIRP Irp); KSDDKAPI NTSTATUS NTAPI KsGetBusEnumPnpDeviceObject( - IN PDEVICE_OBJECT DeviceObject, - OUT PDEVICE_OBJECT *PnpDeviceObject -); + IN PDEVICE_OBJECT DeviceObject, + OUT PDEVICE_OBJECT *PnpDeviceObject); KSDDKAPI NTSTATUS NTAPI KsInstallBusEnumInterface( - IN PIRP Irp -); + IN PIRP Irp); KSDDKAPI NTSTATUS NTAPI KsIsBusEnumChildDevice( - IN PDEVICE_OBJECT DeviceObject, - OUT PBOOLEAN ChildDevice -); - + IN PDEVICE_OBJECT DeviceObject, + OUT PBOOLEAN ChildDevice); KSDDKAPI NTSTATUS NTAPI KsRemoveBusEnumInterface( - IN PIRP Irp -); + IN PIRP Irp); KSDDKAPI NTSTATUS NTAPI KsServiceBusEnumPnpRequest( - IN PDEVICE_OBJECT DeviceObject, - IN OUT PIRP Irp -); + IN PDEVICE_OBJECT DeviceObject, + IN OUT PIRP Irp); KSDDKAPI NTSTATUS NTAPI KsServiceBusEnumCreateRequest( - IN PDEVICE_OBJECT DeviceObject, - IN OUT PIRP Irp -); + IN PDEVICE_OBJECT DeviceObject, + IN OUT PIRP Irp); KSDDKAPI NTSTATUS NTAPI KsGetBusEnumParentFDOFromChildPDO( - IN PDEVICE_OBJECT DeviceObject, - OUT PDEVICE_OBJECT *FunctionalDeviceObject -); + IN PDEVICE_OBJECT DeviceObject, + OUT PDEVICE_OBJECT *FunctionalDeviceObject); -#endif +#endif /* _KS_ */ #if defined(__cplusplus) } #endif -#endif -#endif +#endif /* _NTDDK_ */ + +#endif /* _SWENUM_ */ diff --git a/include/ddk/tdikrnl.h b/include/ddk/tdikrnl.h index b6a30118b96..6ed38d67fc0 100644 --- a/include/ddk/tdikrnl.h +++ b/include/ddk/tdikrnl.h @@ -30,17 +30,17 @@ extern "C" { #endif #if defined(_TDI_) - #define TDIKRNLAPI +#define TDIKRNLAPI #else - #define TDIKRNLAPI DECLSPEC_IMPORT +#define TDIKRNLAPI DECLSPEC_IMPORT #endif typedef struct _TDI_REQUEST_KERNEL { - ULONG RequestFlags; - PTDI_CONNECTION_INFORMATION RequestConnectionInformation; - PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; - PVOID RequestSpecific; + ULONG RequestFlags; + PTDI_CONNECTION_INFORMATION RequestConnectionInformation; + PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; + PVOID RequestSpecific; } TDI_REQUEST_KERNEL, *PTDI_REQUEST_KERNEL; /* Request codes */ @@ -72,7 +72,7 @@ typedef struct _TDI_REQUEST_KERNEL { /* TdiAssociateAddress */ typedef struct _TDI_REQUEST_KERNEL_ASSOCIATE { - HANDLE AddressHandle; + HANDLE AddressHandle; } TDI_REQUEST_KERNEL_ASSOCIATE, *PTDI_REQUEST_KERNEL_ASSOCIATE; /* TdiDisassociateAddress */ @@ -81,8 +81,8 @@ typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_DISASSOCIATE, /* TdiAccept */ typedef struct _TDI_REQUEST_KERNEL_ACCEPT { - PTDI_CONNECTION_INFORMATION RequestConnectionInformation; - PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; + PTDI_CONNECTION_INFORMATION RequestConnectionInformation; + PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; } TDI_REQUEST_KERNEL_ACCEPT, *PTDI_REQUEST_KERNEL_ACCEPT; /* TdiConnect */ @@ -99,50 +99,49 @@ typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_LISTEN, /* TdiReceive */ typedef struct _TDI_REQUEST_KERNEL_RECEIVE { - ULONG ReceiveLength; - ULONG ReceiveFlags; + ULONG ReceiveLength; + ULONG ReceiveFlags; } TDI_REQUEST_KERNEL_RECEIVE, *PTDI_REQUEST_KERNEL_RECEIVE; /* TdiReceiveDatagram */ typedef struct _TDI_REQUEST_KERNEL_RECEIVEDG { - ULONG ReceiveLength; - PTDI_CONNECTION_INFORMATION ReceiveDatagramInformation; - PTDI_CONNECTION_INFORMATION ReturnDatagramInformation; - ULONG ReceiveFlags; + ULONG ReceiveLength; + PTDI_CONNECTION_INFORMATION ReceiveDatagramInformation; + PTDI_CONNECTION_INFORMATION ReturnDatagramInformation; + ULONG ReceiveFlags; } TDI_REQUEST_KERNEL_RECEIVEDG, *PTDI_REQUEST_KERNEL_RECEIVEDG; /* TdiSend */ typedef struct _TDI_REQUEST_KERNEL_SEND { - ULONG SendLength; - ULONG SendFlags; + ULONG SendLength; + ULONG SendFlags; } TDI_REQUEST_KERNEL_SEND, *PTDI_REQUEST_KERNEL_SEND; /* TdiSendDatagram */ typedef struct _TDI_REQUEST_KERNEL_SENDDG { - ULONG SendLength; - PTDI_CONNECTION_INFORMATION SendDatagramInformation; + ULONG SendLength; + PTDI_CONNECTION_INFORMATION SendDatagramInformation; } TDI_REQUEST_KERNEL_SENDDG, *PTDI_REQUEST_KERNEL_SENDDG; /* TdiSetEventHandler */ typedef struct _TDI_REQUEST_KERNEL_SET_EVENT { - LONG EventType; - PVOID EventHandler; - PVOID EventContext; + LONG EventType; + PVOID EventHandler; + PVOID EventContext; } TDI_REQUEST_KERNEL_SET_EVENT, *PTDI_REQUEST_KERNEL_SET_EVENT; /* TdiQueryInformation */ typedef struct _TDI_REQUEST_KERNEL_QUERY_INFO { - LONG QueryType; - PTDI_CONNECTION_INFORMATION RequestConnectionInformation; + LONG QueryType; + PTDI_CONNECTION_INFORMATION RequestConnectionInformation; } TDI_REQUEST_KERNEL_QUERY_INFORMATION, *PTDI_REQUEST_KERNEL_QUERY_INFORMATION; /* TdiSetInformation */ typedef struct _TDI_REQUEST_KERNEL_SET_INFO { - LONG SetType; - PTDI_CONNECTION_INFORMATION RequestConnectionInformation; + LONG SetType; + PTDI_CONNECTION_INFORMATION RequestConnectionInformation; } TDI_REQUEST_KERNEL_SET_INFORMATION, *PTDI_REQUEST_KERNEL_SET_INFORMATION; - /* Event types */ #define TDI_EVENT_CONNECT 0 #define TDI_EVENT_DISCONNECT 1 @@ -158,133 +157,133 @@ typedef struct _TDI_REQUEST_KERNEL_SET_INFO { typedef NTSTATUS (NTAPI *PTDI_IND_CONNECT)( - IN PVOID TdiEventContext, - IN LONG RemoteAddressLength, - IN PVOID RemoteAddress, - IN LONG UserDataLength, - IN PVOID UserData, - IN LONG OptionsLength, - IN PVOID Options, - OUT CONNECTION_CONTEXT *ConnectionContext, - OUT PIRP *AcceptIrp); + IN PVOID TdiEventContext, + IN LONG RemoteAddressLength, + IN PVOID RemoteAddress, + IN LONG UserDataLength, + IN PVOID UserData, + IN LONG OptionsLength, + IN PVOID Options, + OUT CONNECTION_CONTEXT *ConnectionContext, + OUT PIRP *AcceptIrp); TDIKRNLAPI NTSTATUS NTAPI TdiDefaultConnectHandler( - IN PVOID TdiEventContext, - IN LONG RemoteAddressLength, - IN PVOID RemoteAddress, - IN LONG UserDataLength, - IN PVOID UserData, - IN LONG OptionsLength, - IN PVOID Options, + IN PVOID TdiEventContext, + IN LONG RemoteAddressLength, + IN PVOID RemoteAddress, + IN LONG UserDataLength, + IN PVOID UserData, + IN LONG OptionsLength, + IN PVOID Options, OUT CONNECTION_CONTEXT *ConnectionContext, - OUT PIRP *AcceptIrp); + OUT PIRP *AcceptIrp); typedef NTSTATUS (NTAPI *PTDI_IND_DISCONNECT)( - IN PVOID TdiEventContext, - IN CONNECTION_CONTEXT ConnectionContext, - IN LONG DisconnectDataLength, - IN PVOID DisconnectData, - IN LONG DisconnectInformationLength, - IN PVOID DisconnectInformation, - IN ULONG DisconnectFlags); + IN PVOID TdiEventContext, + IN CONNECTION_CONTEXT ConnectionContext, + IN LONG DisconnectDataLength, + IN PVOID DisconnectData, + IN LONG DisconnectInformationLength, + IN PVOID DisconnectInformation, + IN ULONG DisconnectFlags); TDIKRNLAPI NTSTATUS NTAPI TdiDefaultDisconnectHandler( - IN PVOID TdiEventContext, - IN CONNECTION_CONTEXT ConnectionContext, - IN LONG DisconnectDataLength, - IN PVOID DisconnectData, - IN LONG DisconnectInformationLength, - IN PVOID DisconnectInformation, - IN ULONG DisconnectFlags); + IN PVOID TdiEventContext, + IN CONNECTION_CONTEXT ConnectionContext, + IN LONG DisconnectDataLength, + IN PVOID DisconnectData, + IN LONG DisconnectInformationLength, + IN PVOID DisconnectInformation, + IN ULONG DisconnectFlags); typedef NTSTATUS (NTAPI *PTDI_IND_ERROR)( - IN PVOID TdiEventContext, - IN NTSTATUS Status); + IN PVOID TdiEventContext, + IN NTSTATUS Status); typedef NTSTATUS (NTAPI *PTDI_IND_ERROR_EX)( - IN PVOID TdiEventContext, - IN NTSTATUS Status, - IN PVOID Buffer); + IN PVOID TdiEventContext, + IN NTSTATUS Status, + IN PVOID Buffer); TDIKRNLAPI NTSTATUS NTAPI TdiDefaultErrorHandler( - IN PVOID TdiEventContext, - IN NTSTATUS Status); + IN PVOID TdiEventContext, + IN NTSTATUS Status); typedef NTSTATUS (NTAPI *PTDI_IND_RECEIVE)( - IN PVOID TdiEventContext, - IN CONNECTION_CONTEXT ConnectionContext, - IN ULONG ReceiveFlags, - IN ULONG BytesIndicated, - IN ULONG BytesAvailable, - OUT ULONG *BytesTaken, - IN PVOID Tsdu, - OUT PIRP *IoRequestPacket); + IN PVOID TdiEventContext, + IN CONNECTION_CONTEXT ConnectionContext, + IN ULONG ReceiveFlags, + IN ULONG BytesIndicated, + IN ULONG BytesAvailable, + OUT ULONG *BytesTaken, + IN PVOID Tsdu, + OUT PIRP *IoRequestPacket); TDIKRNLAPI NTSTATUS NTAPI TdiDefaultReceiveHandler( - IN PVOID TdiEventContext, - IN CONNECTION_CONTEXT ConnectionContext, - IN ULONG ReceiveFlags, - IN ULONG BytesIndicated, - IN ULONG BytesAvailable, - OUT ULONG *BytesTaken, - IN PVOID Tsdu, - OUT PIRP *IoRequestPacket); + IN PVOID TdiEventContext, + IN CONNECTION_CONTEXT ConnectionContext, + IN ULONG ReceiveFlags, + IN ULONG BytesIndicated, + IN ULONG BytesAvailable, + OUT ULONG *BytesTaken, + IN PVOID Tsdu, + OUT PIRP *IoRequestPacket); typedef NTSTATUS (NTAPI *PTDI_IND_RECEIVE_DATAGRAM)( - IN PVOID TdiEventContext, - IN LONG SourceAddressLength, - IN PVOID SourceAddress, - IN LONG OptionsLength, - IN PVOID Options, - IN ULONG ReceiveDatagramFlags, - IN ULONG BytesIndicated, - IN ULONG BytesAvailable, - OUT ULONG *BytesTaken, - IN PVOID Tsdu, - OUT PIRP *IoRequestPacket); + IN PVOID TdiEventContext, + IN LONG SourceAddressLength, + IN PVOID SourceAddress, + IN LONG OptionsLength, + IN PVOID Options, + IN ULONG ReceiveDatagramFlags, + IN ULONG BytesIndicated, + IN ULONG BytesAvailable, + OUT ULONG *BytesTaken, + IN PVOID Tsdu, + OUT PIRP *IoRequestPacket); TDIKRNLAPI NTSTATUS NTAPI TdiDefaultRcvDatagramHandler( - IN PVOID TdiEventContext, - IN LONG SourceAddressLength, - IN PVOID SourceAddress, - IN LONG OptionsLength, - IN PVOID Options, - IN ULONG ReceiveDatagramFlags, - IN ULONG BytesIndicated, - IN ULONG BytesAvailable, - OUT ULONG *BytesTaken, - IN PVOID Tsdu, - OUT PIRP *IoRequestPacket); + IN PVOID TdiEventContext, + IN LONG SourceAddressLength, + IN PVOID SourceAddress, + IN LONG OptionsLength, + IN PVOID Options, + IN ULONG ReceiveDatagramFlags, + IN ULONG BytesIndicated, + IN ULONG BytesAvailable, + OUT ULONG *BytesTaken, + IN PVOID Tsdu, + OUT PIRP *IoRequestPacket); typedef NTSTATUS (NTAPI *PTDI_IND_RECEIVE_EXPEDITED)( - IN PVOID TdiEventContext, - IN CONNECTION_CONTEXT ConnectionContext, - IN ULONG ReceiveFlags, - IN ULONG BytesIndicated, - IN ULONG BytesAvailable, - OUT ULONG *BytesTaken, - IN PVOID Tsdu, - OUT PIRP *IoRequestPacket); + IN PVOID TdiEventContext, + IN CONNECTION_CONTEXT ConnectionContext, + IN ULONG ReceiveFlags, + IN ULONG BytesIndicated, + IN ULONG BytesAvailable, + OUT ULONG *BytesTaken, + IN PVOID Tsdu, + OUT PIRP *IoRequestPacket); TDIKRNLAPI NTSTATUS diff --git a/include/ddk/tdistat.h b/include/ddk/tdistat.h index f145c30cf33..5490d986814 100644 --- a/include/ddk/tdistat.h +++ b/include/ddk/tdistat.h @@ -59,7 +59,7 @@ extern "C" { #define TDI_REQ_ABORTED STATUS_REQUEST_ABORTED #define TDI_BUFFER_TOO_SMALL STATUS_BUFFER_TOO_SMALL #define TDI_CANCELLED STATUS_CANCELLED -#define TDI_BUFFER_TOO_BIG STATUS_INVALID_BUFFER_SIZE +#define TDI_BUFFER_TOO_BIG STATUS_INVALID_BUFFER_SIZE #define TDI_INVALID_REQUEST STATUS_INVALID_DEVICE_REQUEST #define TDI_PENDING STATUS_PENDING #define TDI_ITEM_NOT_FOUND STATUS_OBJECT_NAME_NOT_FOUND @@ -67,10 +67,10 @@ extern "C" { #define TDI_STATUS_BAD_VERSION 0xC0010004L #define TDI_STATUS_BAD_CHARACTERISTICS 0xC0010005L -#define TDI_OPTION_EOL 0 +#define TDI_OPTION_EOL 0 -#define TDI_ADDRESS_OPTION_REUSE 1 -#define TDI_ADDRESS_OPTION_DHCP 2 +#define TDI_ADDRESS_OPTION_REUSE 1 +#define TDI_ADDRESS_OPTION_DHCP 2 #ifdef __cplusplus } diff --git a/include/ddk/upssvc.h b/include/ddk/upssvc.h index 8672519694b..e766f6913a6 100644 --- a/include/ddk/upssvc.h +++ b/include/ddk/upssvc.h @@ -28,9 +28,9 @@ extern "C" { #endif #if defined(_APCUPS_) - #define UPSAPI +#define UPSAPI #else - #define UPSAPI DECLSPEC_IMPORT +#define UPSAPI DECLSPEC_IMPORT #endif @@ -72,14 +72,14 @@ UPSAPI VOID NTAPI UPSTurnOff( - IN DWORD aTurnOffDelay); + IN DWORD aTurnOffDelay); UPSAPI VOID NTAPI UPSWaitForStateChange( - IN DWORD aCurrentState, - IN DWORD anInterval); + IN DWORD aCurrentState, + IN DWORD anInterval); #ifdef __cplusplus } diff --git a/include/ddk/usbbusif.h b/include/ddk/usbbusif.h index 3d1c1f3a337..04297e97d62 100644 --- a/include/ddk/usbbusif.h +++ b/include/ddk/usbbusif.h @@ -8,7 +8,7 @@ #if (NTDDI_VERSION >= NTDDI_WINXP) -#if !defined(_USBBUSIF_) +#if !defined(_HUBBUSIF_) typedef PVOID PUSB_DEVICE_HANDLE; #endif @@ -67,8 +67,8 @@ typedef BOOLEAN #define USB_BUSIF_USBDI_VERSION_2 0x0002 #define USB_BUSIF_USBDI_VERSION_3 0x0003 -DEFINE_GUID(USB_BUS_INTERFACE_USBDI_GUID, -0xb1a96a13, 0x3de0, 0x4574, 0x9b, 0x1, 0xc0, 0x8f, 0xea, 0xb3, 0x18, 0xd6); +DEFINE_GUID(USB_BUS_INTERFACE_USBDI_GUID, + 0xb1a96a13, 0x3de0, 0x4574, 0x9b, 0x1, 0xc0, 0x8f, 0xea, 0xb3, 0x18, 0xd6); typedef struct _USB_BUS_INTERFACE_USBDI_V0 { USHORT Size; @@ -109,7 +109,7 @@ typedef struct _USB_BUS_INTERFACE_USBDI_V2 { PUSB_BUSIFFN_ENUM_LOG_ENTRY EnumLogEntry; } USB_BUS_INTERFACE_USBDI_V2, *PUSB_BUS_INTERFACE_USBDI_V2; -#endif +#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ #if (NTDDI_VERSION >= NTDDI_VISTA) @@ -145,8 +145,8 @@ typedef struct _USB_BUS_INTERFACE_USBDI_V3 { PUSB_BUSIFFN_QUERY_CONTROLLER_TYPE QueryControllerType; } USB_BUS_INTERFACE_USBDI_V3, *PUSB_BUS_INTERFACE_USBDI_V3; -DEFINE_GUID(USB_BUS_INTERFACE_USBC_CONFIGURATION_GUID, -0x893b6a96, 0xb7f, 0x4d4d, 0xbd, 0xb4, 0xbb, 0xd4, 0xce, 0xeb, 0xb3, 0x1c); +DEFINE_GUID(USB_BUS_INTERFACE_USBC_CONFIGURATION_GUID, + 0x893b6a96, 0xb7f, 0x4d4d, 0xbd, 0xb4, 0xbb, 0xd4, 0xce, 0xeb, 0xb3, 0x1c); #define USBC_FUNCTION_FLAG_APPEND_ID 0x1 @@ -194,4 +194,5 @@ typedef struct _USBC_DEVICE_CONFIGURATION_INTERFACE_V1 { PVOID Reserved[7]; } USBC_DEVICE_CONFIGURATION_INTERFACE_V1, *PUSBC_DEVICE_CONFIGURATION_INTERFACE_V1; -#endif +#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ + diff --git a/include/ddk/usbdlib.h b/include/ddk/usbdlib.h index 7f21da67b51..abfa06272d8 100644 --- a/include/ddk/usbdlib.h +++ b/include/ddk/usbdlib.h @@ -5,116 +5,108 @@ typedef struct _USBD_INTERFACE_LIST_ENTRY { PUSBD_INTERFACE_INFORMATION Interface; } USBD_INTERFACE_LIST_ENTRY, *PUSBD_INTERFACE_LIST_ENTRY; -#define UsbBuildInterruptOrBulkTransferRequest(urb,length, pipeHandle, transferBuffer, transferBufferMDL, transferBufferLength, transferFlags, link) \ -{ \ - (urb)->UrbHeader.Function = URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER; \ - (urb)->UrbHeader.Length = (length); \ - (urb)->UrbBulkOrInterruptTransfer.PipeHandle = (pipeHandle); \ - (urb)->UrbBulkOrInterruptTransfer.TransferBufferLength = (transferBufferLength); \ - (urb)->UrbBulkOrInterruptTransfer.TransferBufferMDL = (transferBufferMDL); \ - (urb)->UrbBulkOrInterruptTransfer.TransferBuffer = (transferBuffer); \ - (urb)->UrbBulkOrInterruptTransfer.TransferFlags = (transferFlags); \ - (urb)->UrbBulkOrInterruptTransfer.UrbLink = (link); \ +#define UsbBuildInterruptOrBulkTransferRequest(urb,length, pipeHandle, transferBuffer, transferBufferMDL, transferBufferLength, transferFlags, link) { \ + (urb)->UrbHeader.Function = URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER; \ + (urb)->UrbHeader.Length = (length); \ + (urb)->UrbBulkOrInterruptTransfer.PipeHandle = (pipeHandle); \ + (urb)->UrbBulkOrInterruptTransfer.TransferBufferLength = (transferBufferLength); \ + (urb)->UrbBulkOrInterruptTransfer.TransferBufferMDL = (transferBufferMDL); \ + (urb)->UrbBulkOrInterruptTransfer.TransferBuffer = (transferBuffer); \ + (urb)->UrbBulkOrInterruptTransfer.TransferFlags = (transferFlags); \ + (urb)->UrbBulkOrInterruptTransfer.UrbLink = (link); \ } -#define UsbBuildGetDescriptorRequest(urb, length, descriptorType, descriptorIndex, languageId, transferBuffer, transferBufferMDL, transferBufferLength, link) \ -{ \ - (urb)->UrbHeader.Function = URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE; \ - (urb)->UrbHeader.Length = (length); \ - (urb)->UrbControlDescriptorRequest.TransferBufferLength = (transferBufferLength); \ - (urb)->UrbControlDescriptorRequest.TransferBufferMDL = (transferBufferMDL); \ - (urb)->UrbControlDescriptorRequest.TransferBuffer = (transferBuffer); \ - (urb)->UrbControlDescriptorRequest.DescriptorType = (descriptorType); \ - (urb)->UrbControlDescriptorRequest.Index = (descriptorIndex); \ - (urb)->UrbControlDescriptorRequest.LanguageId = (languageId); \ - (urb)->UrbControlDescriptorRequest.UrbLink = (link); \ +#define UsbBuildGetDescriptorRequest(urb, length, descriptorType, descriptorIndex, languageId, transferBuffer, transferBufferMDL, transferBufferLength, link) { \ + (urb)->UrbHeader.Function = URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE; \ + (urb)->UrbHeader.Length = (length); \ + (urb)->UrbControlDescriptorRequest.TransferBufferLength = (transferBufferLength); \ + (urb)->UrbControlDescriptorRequest.TransferBufferMDL = (transferBufferMDL); \ + (urb)->UrbControlDescriptorRequest.TransferBuffer = (transferBuffer); \ + (urb)->UrbControlDescriptorRequest.DescriptorType = (descriptorType); \ + (urb)->UrbControlDescriptorRequest.Index = (descriptorIndex); \ + (urb)->UrbControlDescriptorRequest.LanguageId = (languageId); \ + (urb)->UrbControlDescriptorRequest.UrbLink = (link); \ } -#define UsbBuildGetStatusRequest(urb, op, index, transferBuffer, transferBufferMDL, link) \ -{ \ - (urb)->UrbHeader.Function = (op); \ - (urb)->UrbHeader.Length = sizeof(struct _URB_CONTROL_GET_STATUS_REQUEST); \ - (urb)->UrbControlGetStatusRequest.TransferBufferLength = sizeof(USHORT); \ - (urb)->UrbControlGetStatusRequest.TransferBufferMDL = (transferBufferMDL); \ - (urb)->UrbControlGetStatusRequest.TransferBuffer = (transferBuffer); \ - (urb)->UrbControlGetStatusRequest.Index = (index); \ - (urb)->UrbControlGetStatusRequest.UrbLink = (link); \ +#define UsbBuildGetStatusRequest(urb, op, index, transferBuffer, transferBufferMDL, link) { \ + (urb)->UrbHeader.Function = (op); \ + (urb)->UrbHeader.Length = sizeof(struct _URB_CONTROL_GET_STATUS_REQUEST); \ + (urb)->UrbControlGetStatusRequest.TransferBufferLength = sizeof(USHORT); \ + (urb)->UrbControlGetStatusRequest.TransferBufferMDL = (transferBufferMDL); \ + (urb)->UrbControlGetStatusRequest.TransferBuffer = (transferBuffer); \ + (urb)->UrbControlGetStatusRequest.Index = (index); \ + (urb)->UrbControlGetStatusRequest.UrbLink = (link); \ } -#define UsbBuildFeatureRequest(urb, op, featureSelector, index, link) \ -{ \ - (urb)->UrbHeader.Function = (op); \ - (urb)->UrbHeader.Length = sizeof(struct _URB_CONTROL_FEATURE_REQUEST); \ - (urb)->UrbControlFeatureRequest.FeatureSelector = (featureSelector); \ - (urb)->UrbControlFeatureRequest.Index = (index); \ - (urb)->UrbControlFeatureRequest.UrbLink = (link); \ +#define UsbBuildFeatureRequest(urb, op, featureSelector, index, link) { \ + (urb)->UrbHeader.Function = (op); \ + (urb)->UrbHeader.Length = sizeof(struct _URB_CONTROL_FEATURE_REQUEST); \ + (urb)->UrbControlFeatureRequest.FeatureSelector = (featureSelector); \ + (urb)->UrbControlFeatureRequest.Index = (index); \ + (urb)->UrbControlFeatureRequest.UrbLink = (link); \ } -#define UsbBuildSelectConfigurationRequest(urb, length, configurationDescriptor) \ -{ \ - (urb)->UrbHeader.Function = URB_FUNCTION_SELECT_CONFIGURATION; \ - (urb)->UrbHeader.Length = (length); \ - (urb)->UrbSelectConfiguration.ConfigurationDescriptor = (configurationDescriptor); \ +#define UsbBuildSelectConfigurationRequest(urb, length, configurationDescriptor) { \ + (urb)->UrbHeader.Function = URB_FUNCTION_SELECT_CONFIGURATION; \ + (urb)->UrbHeader.Length = (length); \ + (urb)->UrbSelectConfiguration.ConfigurationDescriptor = (configurationDescriptor); \ } -#define UsbBuildSelectInterfaceRequest(urb, length, configurationHandle, interfaceNumber, alternateSetting) \ -{ \ - (urb)->UrbHeader.Function = URB_FUNCTION_SELECT_INTERFACE; \ - (urb)->UrbHeader.Length = (length); \ - (urb)->UrbSelectInterface.Interface.AlternateSetting = (alternateSetting); \ - (urb)->UrbSelectInterface.Interface.InterfaceNumber = (interfaceNumber); \ - (urb)->UrbSelectInterface.Interface.Length = (length - sizeof(struct _URB_HEADER) - sizeof(USBD_CONFIGURATION_HANDLE)); \ - (urb)->UrbSelectInterface.ConfigurationHandle = (configurationHandle); \ +#define UsbBuildSelectInterfaceRequest(urb, length, configurationHandle, interfaceNumber, alternateSetting) { \ + (urb)->UrbHeader.Function = URB_FUNCTION_SELECT_INTERFACE; \ + (urb)->UrbHeader.Length = (length); \ + (urb)->UrbSelectInterface.Interface.AlternateSetting = (alternateSetting); \ + (urb)->UrbSelectInterface.Interface.InterfaceNumber = (interfaceNumber); \ + (urb)->UrbSelectInterface.Interface.Length = (length - sizeof(struct _URB_HEADER) - sizeof(USBD_CONFIGURATION_HANDLE)); \ + (urb)->UrbSelectInterface.ConfigurationHandle = (configurationHandle); \ } -#define UsbBuildVendorRequest(urb, cmd, length, transferFlags, reservedbits, request, value, index, transferBuffer, transferBufferMDL, transferBufferLength, link) \ -{ \ - (urb)->UrbHeader.Function = cmd; \ - (urb)->UrbHeader.Length = (length); \ - (urb)->UrbControlVendorClassRequest.TransferBufferLength = (transferBufferLength); \ - (urb)->UrbControlVendorClassRequest.TransferBufferMDL = (transferBufferMDL); \ - (urb)->UrbControlVendorClassRequest.TransferBuffer = (transferBuffer); \ - (urb)->UrbControlVendorClassRequest.RequestTypeReservedBits = (reservedbits); \ - (urb)->UrbControlVendorClassRequest.Request = (request); \ - (urb)->UrbControlVendorClassRequest.Value = (value); \ - (urb)->UrbControlVendorClassRequest.Index = (index); \ - (urb)->UrbControlVendorClassRequest.TransferFlags = (transferFlags); \ - (urb)->UrbControlVendorClassRequest.UrbLink = (link); \ +#define UsbBuildVendorRequest(urb, cmd, length, transferFlags, reservedbits, request, value, index, transferBuffer, transferBufferMDL, transferBufferLength, link) { \ + (urb)->UrbHeader.Function = cmd; \ + (urb)->UrbHeader.Length = (length); \ + (urb)->UrbControlVendorClassRequest.TransferBufferLength = (transferBufferLength); \ + (urb)->UrbControlVendorClassRequest.TransferBufferMDL = (transferBufferMDL); \ + (urb)->UrbControlVendorClassRequest.TransferBuffer = (transferBuffer); \ + (urb)->UrbControlVendorClassRequest.RequestTypeReservedBits = (reservedbits); \ + (urb)->UrbControlVendorClassRequest.Request = (request); \ + (urb)->UrbControlVendorClassRequest.Value = (value); \ + (urb)->UrbControlVendorClassRequest.Index = (index); \ + (urb)->UrbControlVendorClassRequest.TransferFlags = (transferFlags); \ + (urb)->UrbControlVendorClassRequest.UrbLink = (link); \ } #if (NTDDI_VERSION >= NTDDI_WINXP) -#define UsbBuildOsFeatureDescriptorRequest(urb, length, interface, index, transferBuffer, transferBufferMDL, transferBufferLength, link) \ -{ \ - (urb)->UrbHeader.Function = URB_FUNCTION_GET_MS_FEATURE_DESCRIPTOR; \ - (urb)->UrbHeader.Length = (length); \ - (urb)->UrbOSFeatureDescriptorRequest.TransferBufferLength = (transferBufferLength); \ - (urb)->UrbOSFeatureDescriptorRequest.TransferBufferMDL = (transferBufferMDL); \ - (urb)->UrbOSFeatureDescriptorRequest.TransferBuffer = (transferBuffer); \ - (urb)->UrbOSFeatureDescriptorRequest.InterfaceNumber = (interface); \ - (urb)->UrbOSFeatureDescriptorRequest.MS_FeatureDescriptorIndex = (index); \ - (urb)->UrbOSFeatureDescriptorRequest.UrbLink = (link); \ +#define UsbBuildOsFeatureDescriptorRequest(urb, length, interface, index, transferBuffer, transferBufferMDL, transferBufferLength, link) { \ + (urb)->UrbHeader.Function = URB_FUNCTION_GET_MS_FEATURE_DESCRIPTOR; \ + (urb)->UrbHeader.Length = (length); \ + (urb)->UrbOSFeatureDescriptorRequest.TransferBufferLength = (transferBufferLength); \ + (urb)->UrbOSFeatureDescriptorRequest.TransferBufferMDL = (transferBufferMDL); \ + (urb)->UrbOSFeatureDescriptorRequest.TransferBuffer = (transferBuffer); \ + (urb)->UrbOSFeatureDescriptorRequest.InterfaceNumber = (interface); \ + (urb)->UrbOSFeatureDescriptorRequest.MS_FeatureDescriptorIndex = (index); \ + urb)->UrbOSFeatureDescriptorRequest.UrbLink = (link); \ } -#endif +#endif /* NTDDI_VERSION >= NTDDI_WINXP */ -#define URB_STATUS(urb) ((urb)->UrbHeader.Status) +#define URB_STATUS(urb) ((urb)->UrbHeader.Status) -#define GET_SELECT_CONFIGURATION_REQUEST_SIZE(totalInterfaces, totalPipes) \ - (sizeof(struct _URB_SELECT_CONFIGURATION) + \ - ((totalInterfaces-1) * sizeof(USBD_INTERFACE_INFORMATION)) + \ - ((totalPipes-totalInterfaces)*sizeof(USBD_PIPE_INFORMATION))) +#define GET_SELECT_CONFIGURATION_REQUEST_SIZE(totalInterfaces, totalPipes) \ + (sizeof(struct _URB_SELECT_CONFIGURATION) + \ + ((totalInterfaces-1) * sizeof(USBD_INTERFACE_INFORMATION)) + \ + ((totalPipes-totalInterfaces)*sizeof(USBD_PIPE_INFORMATION))) -#define GET_SELECT_INTERFACE_REQUEST_SIZE(totalPipes) \ - (sizeof(struct _URB_SELECT_INTERFACE) + \ - ((totalPipes-1)*sizeof(USBD_PIPE_INFORMATION))) +#define GET_SELECT_INTERFACE_REQUEST_SIZE(totalPipes) \ + (sizeof(struct _URB_SELECT_INTERFACE) + \ + ((totalPipes-1)*sizeof(USBD_PIPE_INFORMATION))) -#define GET_USBD_INTERFACE_SIZE(numEndpoints) (sizeof(USBD_INTERFACE_INFORMATION) + \ - (sizeof(USBD_PIPE_INFORMATION)*(numEndpoints)) \ - - sizeof(USBD_PIPE_INFORMATION)) +#define GET_USBD_INTERFACE_SIZE(numEndpoints) \ + (sizeof(USBD_INTERFACE_INFORMATION) + \ + (sizeof(USBD_PIPE_INFORMATION)*(numEndpoints)) - sizeof(USBD_PIPE_INFORMATION)) -#define GET_ISO_URB_SIZE(n) (sizeof(struct _URB_ISOCH_TRANSFER)+ \ - sizeof(USBD_ISO_PACKET_DESCRIPTOR)*n) +#define GET_ISO_URB_SIZE(n) (sizeof(struct _URB_ISOCH_TRANSFER)+ \ + sizeof(USBD_ISO_PACKET_DESCRIPTOR)*n) #ifndef _USBD_ @@ -224,4 +216,5 @@ USBD_ValidateConfigurationDescriptor( #endif -#endif +#endif /* ! _USBD_ */ + diff --git a/include/ddk/usbprotocoldefs.h b/include/ddk/usbprotocoldefs.h index 9a25a1bc745..bd750cb2f8b 100644 --- a/include/ddk/usbprotocoldefs.h +++ b/include/ddk/usbprotocoldefs.h @@ -31,9 +31,9 @@ #define USB_SPEC 0x0200 #define HID_SPEC 0x0101 -#define USB_20_SPEC 0x0200 -#define USB_11_SPEC 0x0110 -#define USB_10_SPEC 0x0100 +#define USB_20_SPEC 0x0200 +#define USB_11_SPEC 0x0110 +#define USB_10_SPEC 0x0100 #define HID_MAX_PACKET_SIZE0 0x08 #define MICROSOFT_VENDOR_ID 0x045E @@ -81,7 +81,9 @@ #define RCPT_RPIPE 5 #if !defined(MIDL_PASS) -#define USB_MAKE_REQUEST_TYPE(direction, type, recipient) (BYTE)( ((BYTE)direction << 7) | ((BYTE)type << 5) | ((BYTE)recipient & 0x07) ) +#define USB_MAKE_REQUEST_TYPE(direction, type, recipient) \ + (BYTE)( ((BYTE)direction << 7) | \ + ((BYTE)type << 5) | ((BYTE)recipient & 0x07) ) #endif #define GET_STATUS 0 @@ -207,7 +209,8 @@ #define EP_OUT 0 #define EP_IN 1 -#define MAKE_ENDPOINT_ADDRESS(num, dir) ( ((BYTE)(dir) << 7) | ((BYTE)(num) & 0x0F) ) +#define MAKE_ENDPOINT_ADDRESS(num, dir) \ + ( ((BYTE)(dir) << 7) | ((BYTE)(num) & 0x0F) ) #define ENDPOINT_TYPE 0x03 #define CONTROL_ENDPOINT 0 @@ -501,7 +504,8 @@ typedef struct _USBHUBPORTDATA { USBHUBPORTSTATUSCHANGE PortStatusChange; } USBHUBPORTDATA; -#define USB_MAKE_LANGID(lang, sublang) ((((USHORT)(sublang)) << 10) | (USHORT)(lang)) +#define USB_MAKE_LANGID(lang, sublang) \ + ((((USHORT)(sublang)) << 10) | (USHORT)(lang)) #define USB_LANG_RESERVED 0x00 #define USB_LANG_ARABIC 0x01 @@ -672,6 +676,6 @@ typedef struct _USBHUBPORTDATA { #define USB_SUBLANG_HID_VENDOR_DEFINED_3 0x3e #define USB_SUBLANG_HID_VENDOR_DEFINED_4 0x3f -#endif // !defined(MIDL_PASS) +#endif /* !defined(MIDL_PASS) */ #include diff --git a/include/ddk/wdm.h b/include/ddk/wdm.h index 0569076b120..b1475afb4d0 100644 --- a/include/ddk/wdm.h +++ b/include/ddk/wdm.h @@ -1242,7 +1242,7 @@ typedef struct _KDEVICE_QUEUE { CSHORT Size; LIST_ENTRY DeviceListHead; KSPIN_LOCK Lock; - #if defined(_AMD64_) +# if defined(_AMD64_) _ANONYMOUS_UNION union { BOOLEAN Busy; _ANONYMOUS_STRUCT struct { @@ -1250,9 +1250,9 @@ typedef struct _KDEVICE_QUEUE { LONG64 Hint:56; } DUMMYSTRUCTNAME; } DUMMYUNIONNAME; - #else +# else BOOLEAN Busy; - #endif +# endif } KDEVICE_QUEUE, *PKDEVICE_QUEUE, *RESTRICTED_POINTER PRKDEVICE_QUEUE; #define TIMER_EXPIRED_INDEX_BITS 6 @@ -1374,9 +1374,9 @@ typedef struct _KTIMER { ULARGE_INTEGER DueTime; LIST_ENTRY TimerListEntry; struct _KDPC *Dpc; - #if !defined(_X86_) +# if !defined(_X86_) ULONG Processor; - #endif +# endif ULONG Period; } KTIMER, *PKTIMER, *RESTRICTED_POINTER PRKTIMER; @@ -5692,30 +5692,35 @@ typedef struct _SCATTER_GATHER_ELEMENT { ULONG_PTR Reserved; } SCATTER_GATHER_ELEMENT, *PSCATTER_GATHER_ELEMENT; -#if defined(_MSC_EXTENSIONS) +#if defined(_MSC_EXTENSIONS) || defined(__GNUC__) +#if defined(_MSC_VER) #if _MSC_VER >= 1200 #pragma warning(push) #endif #pragma warning(disable:4200) +#endif /* _MSC_VER */ + typedef struct _SCATTER_GATHER_LIST { ULONG NumberOfElements; ULONG_PTR Reserved; SCATTER_GATHER_ELEMENT Elements[1]; } SCATTER_GATHER_LIST, *PSCATTER_GATHER_LIST; +#if defined(_MSC_VER) #if _MSC_VER >= 1200 #pragma warning(pop) #else #pragma warning(default:4200) #endif +#endif /* _MSC_VER */ -#else +#else /* defined(_MSC_EXTENSIONS) || defined(__GNUC__) */ struct _SCATTER_GATHER_LIST; typedef struct _SCATTER_GATHER_LIST SCATTER_GATHER_LIST, *PSCATTER_GATHER_LIST; -#endif +#endif /* defined(_MSC_EXTENSIONS) || defined(__GNUC__) */ typedef NTSTATUS (NTAPI DRIVER_ADD_DEVICE)( @@ -7803,9 +7808,15 @@ _KeQueryTickCount( OUT PLARGE_INTEGER CurrentCount) { for (;;) { +#ifdef NONAMELESSUNION + CurrentCount->s.HighPart = KeTickCount.High1Time; + CurrentCount->s.LowPart = KeTickCount.LowPart; + if (CurrentCount->s.HighPart == KeTickCount.High2Time) break; +#else CurrentCount->HighPart = KeTickCount.High1Time; CurrentCount->LowPart = KeTickCount.LowPart; if (CurrentCount->HighPart == KeTickCount.High2Time) break; +#endif YieldProcessor(); } } @@ -12748,7 +12759,11 @@ IoSkipCurrentIrpStackLocation( { ASSERT(Irp->CurrentLocation <= Irp->StackCount); Irp->CurrentLocation++; +#ifdef NONAMELESSUNION + Irp->Tail.Overlay.s.u.CurrentStackLocation++; +#else Irp->Tail.Overlay.CurrentStackLocation++; +#endif } FORCEINLINE @@ -12758,7 +12773,11 @@ IoSetNextIrpStackLocation( { ASSERT(Irp->CurrentLocation > 0); Irp->CurrentLocation--; +#ifdef NONAMELESSUNION + Irp->Tail.Overlay.s.u.CurrentStackLocation--; +#else Irp->Tail.Overlay.CurrentStackLocation--; +#endif } FORCEINLINE @@ -12767,7 +12786,11 @@ IoGetNextIrpStackLocation( IN PIRP Irp) { ASSERT(Irp->CurrentLocation > 0); +#ifdef NONAMELESSUNION + return ((Irp)->Tail.Overlay.s.u.CurrentStackLocation - 1 ); +#else return ((Irp)->Tail.Overlay.CurrentStackLocation - 1 ); +#endif } FORCEINLINE @@ -12858,7 +12881,11 @@ IoGetCurrentIrpStackLocation( IN PIRP Irp) { ASSERT(Irp->CurrentLocation <= Irp->StackCount + 1); +#ifdef NONAMELESSUNION + return Irp->Tail.Overlay.s.u.CurrentStackLocation; +#else return Irp->Tail.Overlay.CurrentStackLocation; +#endif } FORCEINLINE @@ -13243,7 +13270,11 @@ ExpInterlockedPushEntrySList( #else /* !defined(_WIN64) */ +#ifdef NONAMELESSUNION +#define ExQueryDepthSList(listhead) (listhead)->s.Depth +#else #define ExQueryDepthSList(listhead) (listhead)->Depth +#endif NTKERNELAPI PSINGLE_LIST_ENTRY @@ -13300,6 +13331,15 @@ ExAllocateFromPagedLookasideList( PVOID Entry; Lookaside->L.TotalAllocates++; +#ifdef NONAMELESSUNION + Entry = InterlockedPopEntrySList(&Lookaside->L.u.ListHead); + if (Entry == NULL) { + Lookaside->L.u2.AllocateMisses++; + Entry = (Lookaside->L.u4.Allocate)(Lookaside->L.Type, + Lookaside->L.Size, + Lookaside->L.Tag); + } +#else /* NONAMELESSUNION */ Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead); if (Entry == NULL) { Lookaside->L.AllocateMisses++; @@ -13307,6 +13347,7 @@ ExAllocateFromPagedLookasideList( Lookaside->L.Size, Lookaside->L.Tag); } +#endif /* NONAMELESSUNION */ return Entry; } @@ -13317,12 +13358,21 @@ ExFreeToPagedLookasideList( IN PVOID Entry) { Lookaside->L.TotalFrees++; +#ifdef NONAMELESSUNION + if (ExQueryDepthSList(&Lookaside->L.u.ListHead) >= Lookaside->L.Depth) { + Lookaside->L.u3.FreeMisses++; + (Lookaside->L.u5.Free)(Entry); + } else { + InterlockedPushEntrySList(&Lookaside->L.u.ListHead, (PSLIST_ENTRY)Entry); + } +#else /* NONAMELESSUNION */ if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) { Lookaside->L.FreeMisses++; (Lookaside->L.Free)(Entry); } else { InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry); } +#endif /* NONAMELESSUNION */ } #endif /* _WIN2K_COMPAT_SLIST_USAGE */ @@ -13936,6 +13986,16 @@ ExAllocateFromLookasideListEx( PVOID Entry; Lookaside->L.TotalAllocates += 1; +#ifdef NONAMELESSUNION + Entry = InterlockedPopEntrySList(&Lookaside->L.u.ListHead); + if (Entry == NULL) { + Lookaside->L.u2.AllocateMisses += 1; + Entry = (Lookaside->L.u4.AllocateEx)(Lookaside->L.Type, + Lookaside->L.Size, + Lookaside->L.Tag, + Lookaside); + } +#else /* NONAMELESSUNION */ Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead); if (Entry == NULL) { Lookaside->L.AllocateMisses += 1; @@ -13944,6 +14004,7 @@ ExAllocateFromLookasideListEx( Lookaside->L.Tag, Lookaside); } +#endif /* NONAMELESSUNION */ return Entry; } @@ -13986,6 +14047,20 @@ ExAllocateFromNPagedLookasideList( PVOID Entry; Lookaside->L.TotalAllocates++; +#ifdef NONAMELESSUNION +#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_) + Entry = ExInterlockedPopEntrySList(&Lookaside->L.u.ListHead, + &Lookaside->Lock__ObsoleteButDoNotDelete); +#else + Entry = InterlockedPopEntrySList(&Lookaside->L.u.ListHead); +#endif + if (Entry == NULL) { + Lookaside->L.u2.AllocateMisses++; + Entry = (Lookaside->L.u4.Allocate)(Lookaside->L.Type, + Lookaside->L.Size, + Lookaside->L.Tag); + } +#else /* NONAMELESSUNION */ #if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_) Entry = ExInterlockedPopEntrySList(&Lookaside->L.ListHead, &Lookaside->Lock__ObsoleteButDoNotDelete); @@ -13998,6 +14073,7 @@ ExAllocateFromNPagedLookasideList( Lookaside->L.Size, Lookaside->L.Tag); } +#endif /* NONAMELESSUNION */ return Entry; } @@ -14007,6 +14083,20 @@ ExFreeToNPagedLookasideList( IN PVOID Entry) { Lookaside->L.TotalFrees++; +#ifdef NONAMELESSUNION + if (ExQueryDepthSList(&Lookaside->L.u.ListHead) >= Lookaside->L.Depth) { + Lookaside->L.u3.FreeMisses++; + (Lookaside->L.u5.Free)(Entry); + } else { +#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_) + ExInterlockedPushEntrySList(&Lookaside->L.u.ListHead, + (PSLIST_ENTRY)Entry, + &Lookaside->Lock__ObsoleteButDoNotDelete); +#else + InterlockedPushEntrySList(&Lookaside->L.u.ListHead, (PSLIST_ENTRY)Entry); +#endif + } +#else /* NONAMELESSUNION */ if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) { Lookaside->L.FreeMisses++; (Lookaside->L.Free)(Entry); @@ -14019,6 +14109,7 @@ ExFreeToNPagedLookasideList( InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry); #endif } +#endif /* NONAMELESSUNION */ } /****************************************************************************** @@ -14225,7 +14316,7 @@ WmiTraceMessage( #endif #endif /* RUN_WPP */ - #if (NTDDI_VERSION >= NTDDI_WINXP) +#if (NTDDI_VERSION >= NTDDI_WINXP) NTKERNELAPI NTSTATUS diff --git a/include/ddk/wmilib.h b/include/ddk/wmilib.h index a0a5bdc5f22..85ad7611ab9 100644 --- a/include/ddk/wmilib.h +++ b/include/ddk/wmilib.h @@ -30,7 +30,7 @@ typedef NTSTATUS OUT PUNICODE_STRING *RegistryPath OPTIONAL, IN OUT PUNICODE_STRING MofResourceName, OUT PDEVICE_OBJECT *Pdo OPTIONAL); - + typedef NTSTATUS (NTAPI *PWMI_FUNCTION_CONTROL) ( IN OUT PDEVICE_OBJECT DeviceObject, diff --git a/include/psdk/d3dnthal.h b/include/psdk/d3dnthal.h new file mode 100644 index 00000000000..ff712a70e72 --- /dev/null +++ b/include/psdk/d3dnthal.h @@ -0,0 +1,250 @@ +/* + * d3dnthal.h + * + * Direct3D NT driver interface + * + * Contributors: + * Created by Ge van Geldorp + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __DDK_D3DNTHAL_H +#define __DDK_D3DNTHAL_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +DEFINE_GUID(GUID_D3DCallbacks, 0x7BF06990, 0x8794, 0x11D0, 0x91, 0x39, 0x08, 0x00, 0x36, 0xD2, 0xEF, 0x02); +DEFINE_GUID(GUID_D3DCallbacks3, 0xDDF41230, 0xEC0A, 0x11D0, 0xA9, 0xB6, 0x00, 0xAA, 0x00, 0xC0, 0x99, 0x3E); +DEFINE_GUID(GUID_D3DExtendedCaps, 0x7DE41F80, 0x9D93, 0x11D0, 0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29); +DEFINE_GUID(GUID_D3DParseUnknownCommandCallback, 0x2E04FFA0, 0x98E4, 0x11D1, 0x8C, 0xE1, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8); +DEFINE_GUID(GUID_ZPixelFormats, 0x93869880, 0x36CF, 0x11D1, 0x9B, 0x1B, 0x00, 0xAA, 0x00, 0xBB, 0xB8, 0xAE); +DEFINE_GUID(GUID_DDStereoMode, 0xF828169C, 0xA8E8, 0x11D2, 0xA1, 0xF2, 0x00, 0xA0, 0xC9, 0x83, 0xEA, 0xF6); + +typedef struct _D3DNTHAL_CONTEXTCREATEDATA { + __GNU_EXTENSION union { + PDD_DIRECTDRAW_GLOBAL lpDDGbl; + PDD_DIRECTDRAW_LOCAL lpDDLcl; + }; + __GNU_EXTENSION union { + PDD_SURFACE_LOCAL lpDDS; + PDD_SURFACE_LOCAL lpDDSLcl; + }; + __GNU_EXTENSION union { + PDD_SURFACE_LOCAL lpDDSZ; + PDD_SURFACE_LOCAL lpDDSZLcl; + }; + DWORD dwPID; + ULONG_PTR dwhContext; + HRESULT ddrval; +} D3DNTHAL_CONTEXTCREATEDATA, *LPD3DNTHAL_CONTEXTCREATEDATA; + +typedef struct _D3DNTHAL_CONTEXTDESTROYDATA { + ULONG_PTR dwhContext; + HRESULT ddrval; +} D3DNTHAL_CONTEXTDESTROYDATA, *LPD3DNTHAL_CONTEXTDESTROYDATA; + +typedef struct _D3DNTHAL_CONTEXTDESTROYALLDATA { + DWORD dwPID; + HRESULT ddrval; +} D3DNTHAL_CONTEXTDESTROYALLDATA, *LPD3DNTHAL_CONTEXTDESTROYALLDATA; + +typedef struct _D3DNTHAL_SCENECAPTUREDATA { + ULONG_PTR dwhContext; + DWORD dwFlag; + HRESULT ddrval; +} D3DNTHAL_SCENECAPTUREDATA, *LPD3DNTHAL_SCENECAPTUREDATA; + +typedef struct _D3DNTHAL_TEXTURECREATEDATA { + ULONG_PTR dwhContext; + HANDLE hDDS; + ULONG_PTR dwHandle; + HRESULT ddrval; +} D3DNTHAL_TEXTURECREATEDATA, *LPD3DNTHAL_TEXTURECREATEDATA; + +typedef struct _D3DNTHAL_TEXTUREDESTROYDATA { + ULONG_PTR dwhContext; + ULONG_PTR dwHandle; + HRESULT ddrval; +} D3DNTHAL_TEXTUREDESTROYDATA, *LPD3DNTHAL_TEXTUREDESTROYDATA; + +typedef struct _D3DNTHAL_TEXTURESWAPDATA { + ULONG_PTR dwhContext; + ULONG_PTR dwHandle1; + ULONG_PTR dwHandle2; + HRESULT ddrval; +} D3DNTHAL_TEXTURESWAPDATA, *LPD3DNTHAL_TEXTURESWAPDATA; + +typedef struct _D3DNTHAL_TEXTUREGETSURFDATA { + ULONG_PTR dwhContext; + HANDLE hDDS; + ULONG_PTR dwHandle; + HRESULT ddrval; +} D3DNTHAL_TEXTUREGETSURFDATA, *LPD3DNTHAL_TEXTUREGETSURFDATA; + +typedef DWORD (APIENTRY *LPD3DNTHAL_CONTEXTCREATECB)(LPD3DNTHAL_CONTEXTCREATEDATA); +typedef DWORD (APIENTRY *LPD3DNTHAL_CONTEXTDESTROYCB)(LPD3DNTHAL_CONTEXTDESTROYDATA); +typedef DWORD (APIENTRY *LPD3DNTHAL_CONTEXTDESTROYALLCB)(LPD3DNTHAL_CONTEXTDESTROYALLDATA); +typedef DWORD (APIENTRY *LPD3DNTHAL_SCENECAPTURECB)(LPD3DNTHAL_SCENECAPTUREDATA); +typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTURECREATECB)(LPD3DNTHAL_TEXTURECREATEDATA); +typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTUREDESTROYCB)(LPD3DNTHAL_TEXTUREDESTROYDATA); +typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTURESWAPCB)(LPD3DNTHAL_TEXTURESWAPDATA); +typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTUREGETSURFCB)(LPD3DNTHAL_TEXTUREGETSURFDATA); + +typedef struct _D3DNTHALDeviceDesc_V1 { + DWORD dwSize; + DWORD dwFlags; + D3DCOLORMODEL dcmColorModel; + DWORD dwDevCaps; + D3DTRANSFORMCAPS dtcTransformCaps; + BOOL bClipping; + D3DLIGHTINGCAPS dlcLightingCaps; + D3DPRIMCAPS dpcLineCaps; + D3DPRIMCAPS dpcTriCaps; + DWORD dwDeviceRenderBitDepth; + DWORD dwDeviceZBufferBitDepth; + DWORD dwMaxBufferSize; + DWORD dwMaxVertexCount; +} D3DNTHALDEVICEDESC_V1, *LPD3DNTHALDEVICEDESC_V1; + +typedef struct _D3DNTHAL_GLOBALDRIVERDATA { + DWORD dwSize; + D3DNTHALDEVICEDESC_V1 hwCaps; + DWORD dwNumVertices; + DWORD dwNumClipVertices; + DWORD dwNumTextureFormats; + LPDDSURFACEDESC lpTextureFormats; +} D3DNTHAL_GLOBALDRIVERDATA, *LPD3DNTHAL_GLOBALDRIVERDATA; + +typedef struct _D3DNTHAL_CALLBACKS { + DWORD dwSize; + LPD3DNTHAL_CONTEXTCREATECB ContextCreate; + LPD3DNTHAL_CONTEXTDESTROYCB ContextDestroy; + LPD3DNTHAL_CONTEXTDESTROYALLCB ContextDestroyAll; + LPD3DNTHAL_SCENECAPTURECB SceneCapture; + LPVOID dwReserved10; + LPVOID dwReserved11; + LPVOID dwReserved22; + LPVOID dwReserved23; + ULONG_PTR dwReserved; + LPD3DNTHAL_TEXTURECREATECB TextureCreate; + LPD3DNTHAL_TEXTUREDESTROYCB TextureDestroy; + LPD3DNTHAL_TEXTURESWAPCB TextureSwap; + LPD3DNTHAL_TEXTUREGETSURFCB TextureGetSurf; + LPVOID dwReserved12; + LPVOID dwReserved13; + LPVOID dwReserved14; + LPVOID dwReserved15; + LPVOID dwReserved16; + LPVOID dwReserved17; + LPVOID dwReserved18; + LPVOID dwReserved19; + LPVOID dwReserved20; + LPVOID dwReserved21; + LPVOID dwReserved24; + ULONG_PTR dwReserved0; + ULONG_PTR dwReserved1; + ULONG_PTR dwReserved2; + ULONG_PTR dwReserved3; + ULONG_PTR dwReserved4; + ULONG_PTR dwReserved5; + ULONG_PTR dwReserved6; + ULONG_PTR dwReserved7; + ULONG_PTR dwReserved8; + ULONG_PTR dwReserved9; +} D3DNTHAL_CALLBACKS, *LPD3DNTHAL_CALLBACKS; + +typedef struct _D3DNTHAL_SETRENDERTARGETDATA { + ULONG_PTR dwhContext; + PDD_SURFACE_LOCAL lpDDS; + PDD_SURFACE_LOCAL lpDDSZ; + HRESULT ddrval; +} D3DNTHAL_SETRENDERTARGETDATA, *LPD3DNTHAL_SETRENDERTARGETDATA; + +typedef DWORD (APIENTRY *LPD3DNTHAL_SETRENDERTARGETCB)(LPD3DNTHAL_SETRENDERTARGETDATA); + +typedef struct _D3DNTHAL_CALLBACKS2 { + DWORD dwSize; + DWORD dwFlags; + LPD3DNTHAL_SETRENDERTARGETCB SetRenderTarget; + LPVOID dwReserved1; + LPVOID dwReserved2; + LPVOID dwReserved3; + LPVOID dwReserved4; +} D3DNTHAL_CALLBACKS2, *LPD3DNTHAL_CALLBACKS2; + +typedef struct _D3DNTHAL_CLEAR2DATA { + ULONG_PTR dwhContext; + DWORD dwFlags; + DWORD dwFillColor; + D3DVALUE dvFillDepth; + DWORD dwFillStencil; + LPD3DRECT lpRects; + DWORD dwNumRects; + HRESULT ddrval; +} D3DNTHAL_CLEAR2DATA, FAR *LPD3DNTHAL_CLEAR2DATA; + +typedef struct _D3DNTHAL_VALIDATETEXTURESTAGESTATEDATA { + ULONG_PTR dwhContext; + DWORD dwFlags; + ULONG_PTR dwReserved; + DWORD dwNumPasses; + HRESULT ddrval; +} D3DNTHAL_VALIDATETEXTURESTAGESTATEDATA, FAR *LPD3DNTHAL_VALIDATETEXTURESTAGESTATEDATA; + +typedef struct _D3DNTHAL_DRAWPRIMITIVES2DATA { + ULONG_PTR dwhContext; + DWORD dwFlags; + DWORD dwVertexType; + PDD_SURFACE_LOCAL lpDDCommands; + DWORD dwCommandOffset; + DWORD dwCommandLength; + __GNU_EXTENSION union { + PDD_SURFACE_LOCAL lpDDVertex; + LPVOID lpVertices; + }; + DWORD dwVertexOffset; + DWORD dwVertexLength; + DWORD dwReqVertexBufSize; + DWORD dwReqCommandBufSize; + LPDWORD lpdwRStates; + __GNU_EXTENSION union { + DWORD dwVertexSize; + HRESULT ddrval; + }; + DWORD dwErrorOffset; +} D3DNTHAL_DRAWPRIMITIVES2DATA, FAR *LPD3DNTHAL_DRAWPRIMITIVES2DATA; + +typedef DWORD (APIENTRY *LPD3DNTHAL_CLEAR2CB)(LPD3DNTHAL_CLEAR2DATA); +typedef DWORD (APIENTRY *LPD3DNTHAL_VALIDATETEXTURESTAGESTATECB)(LPD3DNTHAL_VALIDATETEXTURESTAGESTATEDATA); +typedef DWORD (APIENTRY *LPD3DNTHAL_DRAWPRIMITIVES2CB)(LPD3DNTHAL_DRAWPRIMITIVES2DATA); + +typedef struct _D3DNTHAL_CALLBACKS3 { + DWORD dwSize; + DWORD dwFlags; + LPD3DNTHAL_CLEAR2CB Clear2; + LPVOID lpvReserved; + LPD3DNTHAL_VALIDATETEXTURESTAGESTATECB ValidateTextureStageState; + LPD3DNTHAL_DRAWPRIMITIVES2CB DrawPrimitives2; +} D3DNTHAL_CALLBACKS3, *LPD3DNTHAL_CALLBACKS3; + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* __DDK_D3DNTHAL_H */ diff --git a/include/psdk/ddkernel.h b/include/psdk/ddkernel.h new file mode 100644 index 00000000000..8ffedf8165d --- /dev/null +++ b/include/psdk/ddkernel.h @@ -0,0 +1,95 @@ +/* $Id$ + * + * COPYRIGHT: This file is in the public domain. + * PROJECT: ReactOS kernel + * FILE: + * PURPOSE: Directx headers + * PROGRAMMER: Magnus Olsen (greatlrd) + * + */ + +#ifndef __DDKM_INCLUDED__ +#define __DDKM_INCLUDED__ + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined (_WIN32) && !defined (_NO_COM) +DEFINE_GUID (IID_IDirectDrawKernel, 0x8D56C120,0x6A08,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); +DEFINE_GUID (IID_IDirectDrawSurfaceKernel, 0x60755DA0,0x6A40,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); +#endif + +typedef struct _DDKERNELCAPS { + DWORD dwSize; + DWORD dwCaps; + DWORD dwIRQCaps; +} DDKERNELCAPS, *LPDDKERNELCAPS; + +#define DDKERNELCAPS_SKIPFIELDS 0x00000001 +#define DDKERNELCAPS_AUTOFLIP 0x00000002 +#define DDKERNELCAPS_SETSTATE 0x00000004 +#define DDKERNELCAPS_LOCK 0x00000008 +#define DDKERNELCAPS_FLIPVIDEOPORT 0x00000010 +#define DDKERNELCAPS_FLIPOVERLAY 0x00000020 +#define DDKERNELCAPS_CAPTURE_SYSMEM 0x00000040 +#define DDKERNELCAPS_CAPTURE_NONLOCALVIDMEM 0x00000080 +#define DDKERNELCAPS_FIELDPOLARITY 0x00000100 +#define DDKERNELCAPS_CAPTURE_INVERTED 0x00000200 +#define DDIRQ_DISPLAY_VSYNC 0x00000001 +#define DDIRQ_RESERVED1 0x00000002 +#define DDIRQ_VPORT0_VSYNC 0x00000004 +#define DDIRQ_VPORT0_LINE 0x00000008 +#define DDIRQ_VPORT1_VSYNC 0x00000010 +#define DDIRQ_VPORT1_LINE 0x00000020 +#define DDIRQ_VPORT2_VSYNC 0x00000040 +#define DDIRQ_VPORT2_LINE 0x00000080 +#define DDIRQ_VPORT3_VSYNC 0x00000100 +#define DDIRQ_VPORT3_LINE 0x00000200 +#define DDIRQ_VPORT4_VSYNC 0x00000400 +#define DDIRQ_VPORT4_LINE 0x00000800 +#define DDIRQ_VPORT5_VSYNC 0x00001000 +#define DDIRQ_VPORT5_LINE 0x00002000 +#define DDIRQ_VPORT6_VSYNC 0x00004000 +#define DDIRQ_VPORT6_LINE 0x00008000 +#define DDIRQ_VPORT7_VSYNC 0x00010000 +#define DDIRQ_VPORT7_LINE 0x00020000 +#define DDIRQ_VPORT8_VSYNC 0x00040000 +#define DDIRQ_VPORT8_LINE 0x00080000 +#define DDIRQ_VPORT9_VSYNC 0x00010000 +#define DDIRQ_VPORT9_LINE 0x00020000 + +typedef struct IDirectDrawKernel* LPDIRECTDRAWKERNEL; +typedef struct IDirectDrawSurfaceKernel* LPDIRECTDRAWSURFACEKERNEL; + +#if defined(_WIN32) && !defined(_NO_COM) + +#undef INTERFACE +#define INTERFACE IDirectDrawKernel +DECLARE_INTERFACE_ (IDirectDrawKernel, IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(GetKernelHandle) (THIS_ ULONG*) PURE; + STDMETHOD(ReleaseKernelHandle) (THIS) PURE; +}; + +#undef INTERFACE +#define INTERFACE IDirectDrawSurfaceKernel +DECLARE_INTERFACE_ (IDirectDrawSurfaceKernel, IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(GetKernelHandle) (THIS_ ULONG*) PURE; + STDMETHOD(ReleaseKernelHandle) (THIS) PURE; +}; + +#undef INTERFACE +#endif /* defined(_WIN32) && !defined(_NO_COM) */ + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/include/ddk/ddkmapi.h b/include/psdk/ddkmapi.h similarity index 59% rename from include/ddk/ddkmapi.h rename to include/psdk/ddkmapi.h index fdd23a9dc35..5bdedde5258 100644 --- a/include/ddk/ddkmapi.h +++ b/include/psdk/ddkmapi.h @@ -21,23 +21,12 @@ #ifndef __DDKMAPI_INCLUDED__ #define __DDKMAPI_INCLUDED__ -/* Helper macro to enable gcc's extension. */ -#ifndef __GNU_EXTENSION -#ifdef __GNUC__ -#define __GNU_EXTENSION __extension__ -#else -#define __GNU_EXTENSION -#endif -#endif - #if defined(_DXAPI_) - #define DXAPI +#define DXAPI #else - #define DXAPI DECLSPEC_IMPORT +#define DXAPI DECLSPEC_IMPORT #endif - - #define DXAPI_MAJORVERSION 1 #define DXAPI_MINORVERSION 0 @@ -106,234 +95,202 @@ typedef DWORD (PASCAL *LPDXAPI)(DWORD dwFunctionNum, LPVOID lpvInBuffer, DWORD cbInBuffer, LPVOID lpvOutBuffer, DWORD cbOutBuffer); typedef ULONG (PASCAL *LPDD_NOTIFYCALLBACK) (DWORD dwFlags, PVOID pContext, DWORD dwParam1, DWORD dwParam2); -typedef struct _DDCAPBUFFINFO -{ - DWORD dwFieldNumber; - DWORD bPolarity; - LARGE_INTEGER liTimeStamp; - DWORD ddRVal; -} DDCAPBUFFINFO, * LPDDCAPBUFFINFO; +typedef struct _DDCAPBUFFINFO { + DWORD dwFieldNumber; + DWORD bPolarity; + LARGE_INTEGER liTimeStamp; + DWORD ddRVal; +} DDCAPBUFFINFO, *LPDDCAPBUFFINFO; -typedef struct _DDADDVPCAPTUREBUFF -{ - HANDLE hCapture; - DWORD dwFlags; - PMDL pMDL; - PKEVENT pKEvent; - LPDDCAPBUFFINFO lpBuffInfo; -} DDADDVPCAPTUREBUFF, * LPDDADDVPCAPTUREBUFF; +typedef struct _DDADDVPCAPTUREBUFF { + HANDLE hCapture; + DWORD dwFlags; + PMDL pMDL; + PKEVENT pKEvent; + LPDDCAPBUFFINFO lpBuffInfo; +} DDADDVPCAPTUREBUFF, *LPDDADDVPCAPTUREBUFF; -typedef struct _DDCLOSEHANDLE -{ - HANDLE hHandle; +typedef struct _DDCLOSEHANDLE { + HANDLE hHandle; } DDCLOSEHANDLE, *LPDDCLOSEHANDLE; -typedef struct _DDFLIPOVERLAY -{ - HANDLE hDirectDraw; - HANDLE hCurrentSurface; - HANDLE hTargetSurface; - DWORD dwFlags; +typedef struct _DDFLIPOVERLAY { + HANDLE hDirectDraw; + HANDLE hCurrentSurface; + HANDLE hTargetSurface; + DWORD dwFlags; } DDFLIPOVERLAY, *LPDDFLIPOVERLAY; -typedef struct _DDFLIPVIDEOPORT -{ - HANDLE hDirectDraw; - HANDLE hVideoPort; - HANDLE hCurrentSurface; - HANDLE hTargetSurface; - DWORD dwFlags; +typedef struct _DDFLIPVIDEOPORT { + HANDLE hDirectDraw; + HANDLE hVideoPort; + HANDLE hCurrentSurface; + HANDLE hTargetSurface; + DWORD dwFlags; } DDFLIPVIDEOPORT, *LPDDFLIPVIDEOPORT; -typedef struct _DDGETAUTOFLIPIN -{ - HANDLE hDirectDraw; - HANDLE hVideoPort; +typedef struct _DDGETAUTOFLIPIN { + HANDLE hDirectDraw; + HANDLE hVideoPort; } DDGETAUTOFLIPIN, *LPDDGETAUTOFLIPIN; -typedef struct _DDGETAUTOFLIPOUT -{ - DWORD ddRVal; - HANDLE hVideoSurface; - HANDLE hVBISurface; - BOOL bPolarity; +typedef struct _DDGETAUTOFLIPOUT { + DWORD ddRVal; + HANDLE hVideoSurface; + HANDLE hVBISurface; + BOOL bPolarity; } DDGETAUTOFLIPOUT, *LPDDGETAUTOFLIPOUT; -typedef struct _DDGETPOLARITYIN -{ - HANDLE hDirectDraw; - HANDLE hVideoPort; +typedef struct _DDGETPOLARITYIN { + HANDLE hDirectDraw; + HANDLE hVideoPort; } DDGETPOLARITYIN, *LPDDGETPOLARITYIN; -typedef struct _DDGETPOLARITYOUT -{ - DWORD ddRVal; - BOOL bPolarity; +typedef struct _DDGETPOLARITYOUT { + DWORD ddRVal; + BOOL bPolarity; } DDGETPOLARITYOUT, *LPDDGETPOLARITYOUT; -typedef struct _DDGETSURFACESTATEIN -{ - HANDLE hDirectDraw; - HANDLE hSurface; +typedef struct _DDGETSURFACESTATEIN { + HANDLE hDirectDraw; + HANDLE hSurface; } DDGETSURFACESTATEIN, *LPDDGETSURFACESTATEIN; -typedef struct _DDGETSURFACESTATEOUT -{ - DWORD ddRVal; - DWORD dwStateCaps; - DWORD dwStateStatus; +typedef struct _DDGETSURFACESTATEOUT { + DWORD ddRVal; + DWORD dwStateCaps; + DWORD dwStateStatus; } DDGETSURFACESTATEOUT, *LPDDGETSURFACESTATEOUT; -typedef struct _DDGETFIELDNUMIN -{ - HANDLE hDirectDraw; - HANDLE hVideoPort; +typedef struct _DDGETFIELDNUMIN { + HANDLE hDirectDraw; + HANDLE hVideoPort; } DDGETFIELDNUMIN, *LPDDGETFIELDNUMIN; -typedef struct _DDGETFIELDNUMOUT -{ - DWORD ddRVal; - DWORD dwFieldNum; +typedef struct _DDGETFIELDNUMOUT { + DWORD ddRVal; + DWORD dwFieldNum; } DDGETFIELDNUMOUT, *LPDDGETFIELDNUMOUT; -typedef struct _DDGETKERNELCAPSOUT -{ - DWORD ddRVal; - DWORD dwCaps; - DWORD dwIRQCaps; +typedef struct _DDGETKERNELCAPSOUT { + DWORD ddRVal; + DWORD dwCaps; + DWORD dwIRQCaps; } DDGETKERNELCAPSOUT, *LPDDGETKERNELCAPSOUT; -typedef struct _DDGETVERSIONNUMBER -{ - DWORD ddRVal; - DWORD dwMajorVersion; - DWORD dwMinorVersion; +typedef struct _DDGETVERSIONNUMBER { + DWORD ddRVal; + DWORD dwMajorVersion; + DWORD dwMinorVersion; } DDGETVERSIONNUMBER, *LPDDGETVERSIONNUMBER; -typedef struct _DDLOCKIN -{ - HANDLE hDirectDraw; - HANDLE hSurface; +typedef struct _DDLOCKIN { + HANDLE hDirectDraw; + HANDLE hSurface; } DDLOCKIN, *LPDDLOCKIN; -typedef struct _DDLOCKOUT -{ - DWORD ddRVal; - DWORD dwSurfHeight; - DWORD dwSurfWidth; - LONG lSurfPitch; - PVOID lpSurface; - DWORD SurfaceCaps; - DWORD dwFormatFlags; - DWORD dwFormatFourCC; - DWORD dwFormatBitCount; - __GNU_EXTENSION union - { - DWORD dwRBitMask; - DWORD dwYBitMask; +typedef struct _DDLOCKOUT { + DWORD ddRVal; + DWORD dwSurfHeight; + DWORD dwSurfWidth; + LONG lSurfPitch; + PVOID lpSurface; + DWORD SurfaceCaps; + DWORD dwFormatFlags; + DWORD dwFormatFourCC; + DWORD dwFormatBitCount; + __GNU_EXTENSION union { + DWORD dwRBitMask; + DWORD dwYBitMask; }; - __GNU_EXTENSION union - { - DWORD dwGBitMask; - DWORD dwUBitMask; + __GNU_EXTENSION union { + DWORD dwGBitMask; + DWORD dwUBitMask; }; - __GNU_EXTENSION union - { - DWORD dwBBitMask; - DWORD dwVBitMask; + __GNU_EXTENSION union { + DWORD dwBBitMask; + DWORD dwVBitMask; }; } DDLOCKOUT, *LPDDLOCKOUT; -typedef struct _DDOPENDIRECTDRAWIN -{ +typedef struct _DDOPENDIRECTDRAWIN { ULONG_PTR dwDirectDrawHandle; - LPDD_NOTIFYCALLBACK pfnDirectDrawClose; - PVOID pContext; + LPDD_NOTIFYCALLBACK pfnDirectDrawClose; + PVOID pContext; } DDOPENDIRECTDRAWIN, *LPDDOPENDIRECTDRAWIN; -typedef struct _DDOPENDIRECTDRAWOUT -{ - DWORD ddRVal; - HANDLE hDirectDraw; +typedef struct _DDOPENDIRECTDRAWOUT { + DWORD ddRVal; + HANDLE hDirectDraw; } DDOPENDIRECTDRAWOUT, *LPDDOPENDIRECTDRAWOUT; -typedef struct _DDOPENSURFACEIN -{ - HANDLE hDirectDraw; - ULONG_PTR dwSurfaceHandle; - LPDD_NOTIFYCALLBACK pfnSurfaceClose; - PVOID pContext; +typedef struct _DDOPENSURFACEIN { + HANDLE hDirectDraw; + ULONG_PTR dwSurfaceHandle; + LPDD_NOTIFYCALLBACK pfnSurfaceClose; + PVOID pContext; } DDOPENSURFACEIN, *LPDDOPENSURFACEIN; -typedef struct _DDOPENSURFACEOUT -{ - DWORD ddRVal; - HANDLE hSurface; +typedef struct _DDOPENSURFACEOUT { + DWORD ddRVal; + HANDLE hSurface; } DDOPENSURFACEOUT, *LPDDOPENSURFACEOUT; -typedef struct _DDOPENVIDEOPORTIN -{ - HANDLE hDirectDraw; - ULONG dwVideoPortHandle; - LPDD_NOTIFYCALLBACK pfnVideoPortClose; - PVOID pContext; +typedef struct _DDOPENVIDEOPORTIN { + HANDLE hDirectDraw; + ULONG dwVideoPortHandle; + LPDD_NOTIFYCALLBACK pfnVideoPortClose; + PVOID pContext; } DDOPENVIDEOPORTIN, *LPDDOPENVIDEOPORTIN; -typedef struct _DDOPENVIDEOPORTOUT -{ - DWORD ddRVal; - HANDLE hVideoPort; +typedef struct _DDOPENVIDEOPORTOUT { + DWORD ddRVal; + HANDLE hVideoPort; } DDOPENVIDEOPORTOUT, *LPDDOPENVIDEOPORTOUT; -typedef struct _DDOPENVPCAPTUREDEVICEIN -{ - HANDLE hDirectDraw; - HANDLE hVideoPort; - DWORD dwStartLine; - DWORD dwEndLine; - DWORD dwCaptureEveryNFields; - LPDD_NOTIFYCALLBACK pfnCaptureClose; - PVOID pContext; - DWORD dwFlags; -} DDOPENVPCAPTUREDEVICEIN, * LPDDOPENVPCAPTUREDEVICEIN; +typedef struct _DDOPENVPCAPTUREDEVICEIN { + HANDLE hDirectDraw; + HANDLE hVideoPort; + DWORD dwStartLine; + DWORD dwEndLine; + DWORD dwCaptureEveryNFields; + LPDD_NOTIFYCALLBACK pfnCaptureClose; + PVOID pContext; + DWORD dwFlags; +} DDOPENVPCAPTUREDEVICEIN, *LPDDOPENVPCAPTUREDEVICEIN; -typedef struct _DDOPENVPCAPTUREDEVICEOUT -{ - DWORD ddRVal; - HANDLE hCapture; -} DDOPENVPCAPTUREDEVICEOUT, * LPDDOPENVPCAPTUREDEVICEOUT; +typedef struct _DDOPENVPCAPTUREDEVICEOUT { + DWORD ddRVal; + HANDLE hCapture; +} DDOPENVPCAPTUREDEVICEOUT, *LPDDOPENVPCAPTUREDEVICEOUT; -typedef struct _DDREGISTERCALLBACK -{ - HANDLE hDirectDraw; - ULONG dwEvents; - LPDD_NOTIFYCALLBACK pfnCallback; - ULONG_PTR dwParam1; - ULONG_PTR dwParam2; - PVOID pContext; +typedef struct _DDREGISTERCALLBACK { + HANDLE hDirectDraw; + ULONG dwEvents; + LPDD_NOTIFYCALLBACK pfnCallback; + ULONG_PTR dwParam1; + ULONG_PTR dwParam2; + PVOID pContext; } DDREGISTERCALLBACK, *LPDDREGISTERCALLBACK; -typedef struct _DDSETSURFACETATE -{ - HANDLE hDirectDraw; - HANDLE hSurface; - DWORD dwState; - DWORD dwStartField; +typedef struct _DDSETSURFACETATE { + HANDLE hDirectDraw; + HANDLE hSurface; + DWORD dwState; + DWORD dwStartField; } DDSETSURFACESTATE, *LPDDSETSURFACESTATE; -typedef struct _DDSETFIELDNUM -{ - HANDLE hDirectDraw; - HANDLE hVideoPort; - DWORD dwFieldNum; +typedef struct _DDSETFIELDNUM { + HANDLE hDirectDraw; + HANDLE hVideoPort; + DWORD dwFieldNum; } DDSETFIELDNUM, *LPDDSETFIELDNUM; -typedef struct _DDSETSKIPFIELD -{ - HANDLE hDirectDraw; - HANDLE hVideoPort; - DWORD dwStartField; +typedef struct _DDSETSKIPFIELD { + HANDLE hDirectDraw; + HANDLE hVideoPort; + DWORD dwStartField; } DDSETSKIPFIELD, *LPDDSETSKIPFIELD; @@ -346,5 +303,5 @@ DxApi(IN DWORD dwFunctionNum, OUT DWORD cbOutBuffer); - #endif /* __DDKMAPI_INCLUDED__ */ + diff --git a/include/dxsdk/ddraw.h b/include/psdk/ddraw.h similarity index 99% rename from include/dxsdk/ddraw.h rename to include/psdk/ddraw.h index 1e8dbd22af5..7dac04e13d2 100644 --- a/include/dxsdk/ddraw.h +++ b/include/psdk/ddraw.h @@ -1,5 +1,4 @@ - #ifndef __DDRAW_INCLUDED__ #define __DDRAW_INCLUDED__ @@ -44,6 +43,15 @@ #endif #endif +/* Helper macro to enable gcc's extension. */ +#ifndef __GNU_EXTENSION +#ifdef __GNUC__ +#define __GNU_EXTENSION __extension__ +#else +#define __GNU_EXTENSION +#endif +#endif + #ifdef __cplusplus extern "C" { #endif @@ -2561,7 +2569,7 @@ DECLARE_INTERFACE_( IDirectDrawSurface3, IUnknown ) #undef INTERFACE #ifdef __cplusplus -}; +} #endif #ifdef ENABLE_NAMELESS_UNION_PRAGMA @@ -2569,6 +2577,3 @@ DECLARE_INTERFACE_( IDirectDrawSurface3, IUnknown ) #endif #endif - - - diff --git a/include/psdk/ddrawi.h b/include/psdk/ddrawi.h new file mode 100644 index 00000000000..2f676e9b872 --- /dev/null +++ b/include/psdk/ddrawi.h @@ -0,0 +1,2065 @@ +/* + * DirectDraw driver interface + * (DirectX 7 version) + * + * Copyright (C) 2001 Ove Kaaven + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __DDRAWI_INCLUDED__ +#define __DDRAWI_INCLUDED__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define OBJECT_ISROOT 0x80000000 + +#include +#include +#include +#include + +#define DDAPI WINAPI + +#define VALID_ALIGNMENT(align) \ + (!((align==0)||(align%2)!= 0 )) + +/* the DirectDraw versions */ +#define DD_VERSION 0x0200 /* compatibility version */ +#define DD_RUNTIME_VERSION 0x0902 /* actual version */ + +/* the HAL version returned from QUERYESCSUPPORT - DCICOMMAND */ +#define DD_HAL_VERSION 0x0100 + +/* more DCICOMMAND escapes */ +#ifndef DCICOMMAND +#define DCICOMMAND 3075 +#endif + +#define DDCREATEDRIVEROBJECT 10 +#define DDGET32BITDRIVERNAME 11 +#define DDNEWCALLBACKFNS 12 +#define DDVERSIONINFO 13 + +#define DDUNSUPPORTEDMODE ((DWORD) -1) + +#include "dciddi.h" + +#ifndef CCHDEVICENAME +#define CCHDEVICENAME 32 +#endif +#define MAX_DRIVER_NAME CCHDEVICENAME + +#define DDHAL_DRIVER_DLLNAME "DDRAW16.DLL" +#define DDHAL_APP_DLLNAME "DDRAW.DLL" + +/* GUID */ +#ifdef _WIN32 +DEFINE_GUID(GUID_MiscellaneousCallbacks, 0xefd60cc0, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a); +DEFINE_GUID(GUID_VideoPortCallbacks, 0xefd60cc1, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a); +DEFINE_GUID(GUID_ColorControlCallbacks, 0xefd60cc2, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a); +DEFINE_GUID(GUID_VideoPortCaps, 0xefd60cc3, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a); +DEFINE_GUID(GUID_D3DCallbacks2, 0x0ba584e1, 0x70b6, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a); +DEFINE_GUID(GUID_D3DCallbacks3, 0xddf41230, 0xec0a, 0x11d0, 0xa9, 0xb6, 0x00, 0xaa, 0x00, 0xc0, 0x99, 0x3e); +DEFINE_GUID(GUID_NonLocalVidMemCaps, 0x86c4fa80, 0x8d84, 0x11d0, 0x94, 0xe8, 0x00, 0xc0, 0x4f, 0xc3, 0x41, 0x37); +DEFINE_GUID(GUID_KernelCallbacks, 0x80863800, 0x6B06, 0x11D0, 0x9B, 0x06, 0x0, 0xA0, 0xC9, 0x03, 0xA3, 0xB8); +DEFINE_GUID(GUID_KernelCaps, 0xFFAA7540, 0x7AA8, 0x11D0, 0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8); +DEFINE_GUID(GUID_D3DExtendedCaps, 0x7de41f80, 0x9d93, 0x11d0, 0x89, 0xab, 0x0, 0xa0, 0xc9, 0x5, 0x41, 0x29); +DEFINE_GUID(GUID_ZPixelFormats, 0x93869880, 0x36cf, 0x11d1, 0x9b, 0x1b, 0x0, 0xaa, 0x0, 0xbb, 0xb8, 0xae); +DEFINE_GUID(GUID_DDMoreSurfaceCaps, 0x3b8a0466, 0xf269, 0x11d1, 0x88, 0x0b, 0x0, 0xc0, 0x4f, 0xd9, 0x30, 0xc5); +DEFINE_GUID(GUID_DDStereoMode, 0xf828169c, 0xa8e8, 0x11d2, 0xa1, 0xf2, 0x0, 0xa0, 0xc9, 0x83, 0xea, 0xf6); +DEFINE_GUID(GUID_OptSurfaceKmodeInfo, 0xe05c8472, 0x51d4, 0x11d1, 0x8c, 0xce, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); +DEFINE_GUID(GUID_OptSurfaceUmodeInfo, 0x9d792804, 0x5fa8, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); +DEFINE_GUID(GUID_UserModeDriverInfo, 0xf0b0e8e2, 0x5f97, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); +DEFINE_GUID(GUID_UserModeDriverPassword, 0x97f861b6, 0x60a1, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); +DEFINE_GUID(GUID_D3DParseUnknownCommandCallback, 0x2e04ffa0, 0x98e4, 0x11d1, 0x8c, 0xe1, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); +DEFINE_GUID(GUID_MotionCompCallbacks, 0xb1122b40, 0x5dA5, 0x11d1, 0x8f, 0xcF, 0x00, 0xc0, 0x4f, 0xc2, 0x9b, 0x4e); +DEFINE_GUID(GUID_Miscellaneous2Callbacks, 0x406B2F00, 0x3E5A, 0x11D1, 0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A); +#endif + +#ifndef _WIN32 +#undef E_NOTIMPL +#undef E_OUTOFMEMORY +#undef E_INVALIDARG +#undef E_FAIL +#define E_NOTIMPL 0x80004001L +#define E_OUTOFMEMORY 0x8007000EL +#define E_INVALIDARG 0x80070057L +#define E_FAIL 0x80004005L +#endif + +/***************************************************************************** + * Initialization stuff + */ +typedef struct { + char szName[260]; + char szEntryPoint[64]; + DWORD dwContext; +} DD32BITDRIVERDATA,*LPDD32BITDRIVERDATA; + +typedef struct { + DWORD dwHALVersion; + ULONG_PTR dwReserved1; + ULONG_PTR dwReserved2; +} DDVERSIONDATA,*LPDDVERSIONDATA; + +typedef DWORD (PASCAL *LPDD32BITDRIVERINIT)(DWORD dwContext); + +/* predeclare some structures */ +typedef struct _DDHALINFO *LPDDHALINFO; +typedef struct _DDRAWI_DIRECTDRAW_INT *LPDDRAWI_DIRECTDRAW_INT; + +#ifndef DDRAWI_DIRECTDRAW_DEFINED +typedef struct _DDRAWI_DIRECTDRAW_LCL *LPDDRAWI_DIRECTDRAW_LCL; +typedef struct _DDRAWI_DIRECTDRAW_GBL *LPDDRAWI_DIRECTDRAW_GBL; +#define DDRAWI_DIRECTDRAW_DEFINED +#endif + +typedef struct _DDRAWI_DDRAWSURFACE_INT *LPDDRAWI_DDRAWSURFACE_INT; + +#ifndef DDRAWI_DDRAWSURFACE_DEFINED +typedef struct _DDRAWI_DDRAWSURFACE_LCL *LPDDRAWI_DDRAWSURFACE_LCL; +#define DDRAWI_DDRAWSURFACE_DEFINED +#endif + +typedef struct _DDRAWI_DDRAWSURFACE_GBL *LPDDRAWI_DDRAWSURFACE_GBL; +typedef struct _DDRAWI_DDRAWSURFACE_MORE *LPDDRAWI_DDRAWSURFACE_MORE; +typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE *LPDDRAWI_DDRAWSURFACE_GBL_MORE; +typedef struct _DDRAWI_DDRAWPALETTE_INT *LPDDRAWI_DDRAWPALETTE_INT; +typedef struct _DDRAWI_DDRAWPALETTE_LCL *LPDDRAWI_DDRAWPALETTE_LCL; +typedef struct _DDRAWI_DDRAWPALETTE_GBL *LPDDRAWI_DDRAWPALETTE_GBL; +typedef struct _DDRAWI_DDRAWCLIPPER_INT *LPDDRAWI_DDRAWCLIPPER_INT; +typedef struct _DDRAWI_DDRAWCLIPPER_LCL *LPDDRAWI_DDRAWCLIPPER_LCL; +typedef struct _DDRAWI_DDRAWCLIPPER_GBL *LPDDRAWI_DDRAWCLIPPER_GBL; +typedef struct _DDRAWI_DDVIDEOPORT_INT *LPDDRAWI_DDVIDEOPORT_INT; +typedef struct _DDRAWI_DDVIDEOPORT_LCL *LPDDRAWI_DDVIDEOPORT_LCL; +typedef struct _DDRAWI_DDMOTIONCOMP_INT *LPDDRAWI_DDMOTIONCOMP_INT; +typedef struct _DDRAWI_DDMOTIONCOMP_LCL *LPDDRAWI_DDMOTIONCOMP_LCL; + +/***************************************************************************** + * driver->ddraw callbacks + */ +typedef BOOL (DDAPI *LPDDHAL_SETINFO)(LPDDHALINFO lpDDHalInfo, BOOL reset); +typedef FLATPTR (DDAPI *LPDDHAL_VIDMEMALLOC)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, DWORD dwWidth, DWORD dwHeight); +typedef void (DDAPI *LPDDHAL_VIDMEMFREE)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, FLATPTR fpMem); + +typedef struct { + DWORD dwSize; + LPDDHAL_SETINFO lpSetInfo; + LPDDHAL_VIDMEMALLOC lpVidMemAlloc; + LPDDHAL_VIDMEMFREE lpVidMemFree; +} DDHALDDRAWFNS, *LPDDHALDDRAWFNS; + +/***************************************************************************** + * mode info structure + */ +typedef struct _DDHALMODEINFO { + DWORD dwWidth; + DWORD dwHeight; + LONG lPitch; + DWORD dwBPP; + WORD wFlags; + WORD wRefreshRate; + DWORD dwRBitMask; + DWORD dwGBitMask; + DWORD dwBBitMask; + DWORD dwAlphaBitMask; +} DDHALMODEINFO, *LPDDHALMODEINFO; + +#define DDMODEINFO_PALETTIZED 0x0001 +#define DDMODEINFO_MODEX 0x0002 +#define DDMODEINFO_UNSUPPORTED 0x0004 +#define DDMODEINFO_STANDARDVGA 0x0008 +#define DDMODEINFO_MAXREFRESH 0x0010 +#define DDMODEINFO_STEREO 0x0020 + +/***************************************************************************** + * video memory info structure + */ +typedef struct _VIDMEM { + DWORD dwFlags; + FLATPTR fpStart; + __GNU_EXTENSION union { + FLATPTR fpEnd; + DWORD dwWidth; + }; + DDSCAPS ddsCaps; + DDSCAPS ddsCapsAlt; + __GNU_EXTENSION union { + LPVMEMHEAP lpHeap; + DWORD dwHeight; + }; +} VIDMEM; + +#define VIDMEM_ISLINEAR 0x00000001l +#define VIDMEM_ISRECTANGULAR 0x00000002l +#define VIDMEM_ISHEAP 0x00000004l +#define VIDMEM_ISNONLOCAL 0x00000008l +#define VIDMEM_ISWC 0x00000010l +#define VIDMEM_HEAPDISABLED 0x00000020l + +typedef struct _VIDMEMINFO { + FLATPTR fpPrimary; + DWORD dwFlags; + DWORD dwDisplayWidth; + DWORD dwDisplayHeight; + LONG lDisplayPitch; + DDPIXELFORMAT ddpfDisplay; + DWORD dwOffscreenAlign; + DWORD dwOverlayAlign; + DWORD dwTextureAlign; + DWORD dwZBufferAlign; + DWORD dwAlphaAlign; + DWORD dwNumHeaps; + LPVIDMEM pvmList; +} VIDMEMINFO, *LPVIDMEMINFO; + +typedef struct _HEAPALIAS { + FLATPTR fpVidMem; + LPVOID lpAlias; + DWORD dwAliasSize; +} HEAPALIAS, *LPHEAPALIAS; + +typedef struct _HEAPALIASINFO { + DWORD dwRefCnt; + DWORD dwFlags; + DWORD dwNumHeaps; + LPHEAPALIAS lpAliases; +} HEAPALIASINFO, *LPHEAPALIASINFO; + +#define HEAPALIASINFO_MAPPEDREAL 0x00000001 +#define HEAPALIASINFO_MAPPEDDUMMY 0x00000002 + +/***************************************************************************** + * capabilities structures + */ +typedef struct _DDCORECAPS { + DWORD dwSize; + DWORD dwCaps; + DWORD dwCaps2; + DWORD dwCKeyCaps; + DWORD dwFXCaps; + DWORD dwFXAlphaCaps; + DWORD dwPalCaps; + DWORD dwSVCaps; + DWORD dwAlphaBltConstBitDepths; + DWORD dwAlphaBltPixelBitDepths; + DWORD dwAlphaBltSurfaceBitDepths; + DWORD dwAlphaOverlayConstBitDepths; + DWORD dwAlphaOverlayPixelBitDepths; + DWORD dwAlphaOverlaySurfaceBitDepths; + DWORD dwZBufferBitDepths; + DWORD dwVidMemTotal; + DWORD dwVidMemFree; + DWORD dwMaxVisibleOverlays; + DWORD dwCurrVisibleOverlays; + DWORD dwNumFourCCCodes; + DWORD dwAlignBoundarySrc; + DWORD dwAlignSizeSrc; + DWORD dwAlignBoundaryDest; + DWORD dwAlignSizeDest; + DWORD dwAlignStrideAlign; + DWORD dwRops[DD_ROP_SPACE]; + DDSCAPS ddsCaps; + DWORD dwMinOverlayStretch; + DWORD dwMaxOverlayStretch; + DWORD dwMinLiveVideoStretch; + DWORD dwMaxLiveVideoStretch; + DWORD dwMinHwCodecStretch; + DWORD dwMaxHwCodecStretch; + DWORD dwReserved1; + DWORD dwReserved2; + DWORD dwReserved3; + DWORD dwSVBCaps; + DWORD dwSVBCKeyCaps; + DWORD dwSVBFXCaps; + DWORD dwSVBRops[DD_ROP_SPACE]; + DWORD dwVSBCaps; + DWORD dwVSBCKeyCaps; + DWORD dwVSBFXCaps; + DWORD dwVSBRops[DD_ROP_SPACE]; + DWORD dwSSBCaps; + DWORD dwSSBCKeyCaps; + DWORD dwSSBFXCaps; + DWORD dwSSBRops[DD_ROP_SPACE]; + DWORD dwMaxVideoPorts; + DWORD dwCurrVideoPorts; + DWORD dwSVBCaps2; +} DDCORECAPS, *LPDDCORECAPS; + +typedef struct _DDNONLOCALVIDMEMCAPS { + DWORD dwSize; + DWORD dwNLVBCaps; + DWORD dwNLVBCaps2; + DWORD dwNLVBCKeyCaps; + DWORD dwNLVBFXCaps; + DWORD dwNLVBRops[DD_ROP_SPACE]; +} DDNONLOCALVIDMEMCAPS, *LPDDNONLOCALVIDMEMCAPS; + +#define DDSCAPS_EXECUTEBUFFER DDSCAPS_RESERVED2 +#define DDSCAPS2_VERTEXBUFFER DDSCAPS2_RESERVED1 +#define DDSCAPS2_COMMANDBUFFER DDSCAPS2_RESERVED2 + +/***************************************************************************** + * ddraw->driver callbacks + */ +#define DDHAL_DRIVER_NOTHANDLED 0x00000000l +#define DDHAL_DRIVER_HANDLED 0x00000001l +#define DDHAL_DRIVER_NOCKEYHW 0x00000002l + +typedef struct _DDHAL_DESTROYDRIVERDATA *LPDDHAL_DESTROYDRIVERDATA; +typedef struct _DDHAL_CREATESURFACEDATA *LPDDHAL_CREATESURFACEDATA; +typedef struct _DDHAL_DRVSETCOLORKEYDATA *LPDDHAL_DRVSETCOLORKEYDATA; +typedef struct _DDHAL_SETMODEDATA *LPDDHAL_SETMODEDATA; +typedef struct _DDHAL_WAITFORVERTICALBLANKDATA *LPDDHAL_WAITFORVERTICALBLANKDATA; +typedef struct _DDHAL_CANCREATESURFACEDATA *LPDDHAL_CANCREATESURFACEDATA; +typedef struct _DDHAL_CREATEPALETTEDATA *LPDDHAL_CREATEPALETTEDATA; +typedef struct _DDHAL_GETSCANLINEDATA *LPDDHAL_GETSCANLINEDATA; +typedef struct _DDHAL_SETEXCLUSIVEMODEDATA *LPDDHAL_SETEXCLUSIVEMODEDATA; +typedef struct _DDHAL_FLIPTOGDISURFACEDATA *LPDDHAL_FLIPTOGDISURFACEDATA; + +typedef DWORD (PASCAL *LPDDHAL_DESTROYDRIVER) (LPDDHAL_DESTROYDRIVERDATA); +typedef DWORD (PASCAL *LPDDHAL_CREATESURFACE) (LPDDHAL_CREATESURFACEDATA); +typedef DWORD (PASCAL *LPDDHAL_SETCOLORKEY) (LPDDHAL_DRVSETCOLORKEYDATA); +typedef DWORD (PASCAL *LPDDHAL_SETMODE) (LPDDHAL_SETMODEDATA); +typedef DWORD (PASCAL *LPDDHAL_WAITFORVERTICALBLANK)(LPDDHAL_WAITFORVERTICALBLANKDATA); +typedef DWORD (PASCAL *LPDDHAL_CANCREATESURFACE) (LPDDHAL_CANCREATESURFACEDATA ); +typedef DWORD (PASCAL *LPDDHAL_CREATEPALETTE) (LPDDHAL_CREATEPALETTEDATA); +typedef DWORD (PASCAL *LPDDHAL_GETSCANLINE) (LPDDHAL_GETSCANLINEDATA); +typedef DWORD (PASCAL *LPDDHAL_SETEXCLUSIVEMODE) (LPDDHAL_SETEXCLUSIVEMODEDATA); +typedef DWORD (PASCAL *LPDDHAL_FLIPTOGDISURFACE) (LPDDHAL_FLIPTOGDISURFACEDATA); + +typedef struct _DDHAL_DDCALLBACKS { + DWORD dwSize; + DWORD dwFlags; + LPDDHAL_DESTROYDRIVER DestroyDriver; + LPDDHAL_CREATESURFACE CreateSurface; + LPDDHAL_SETCOLORKEY SetColorKey; + LPDDHAL_SETMODE SetMode; + LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank; + LPDDHAL_CANCREATESURFACE CanCreateSurface; + LPDDHAL_CREATEPALETTE CreatePalette; + LPDDHAL_GETSCANLINE GetScanLine; + /* DirectX 2 */ + LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode; + LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface; +} DDHAL_DDCALLBACKS, *LPDDHAL_DDCALLBACKS; + +typedef struct _DDHAL_DESTROYSURFACEDATA *LPDDHAL_DESTROYSURFACEDATA; +typedef struct _DDHAL_FLIPDATA *LPDDHAL_FLIPDATA; +typedef struct _DDHAL_SETCLIPLISTDATA *LPDDHAL_SETCLIPLISTDATA; +typedef struct _DDHAL_LOCKDATA *LPDDHAL_LOCKDATA; +typedef struct _DDHAL_UNLOCKDATA *LPDDHAL_UNLOCKDATA; +typedef struct _DDHAL_BLTDATA *LPDDHAL_BLTDATA; +typedef struct _DDHAL_SETCOLORKEYDATA *LPDDHAL_SETCOLORKEYDATA; +typedef struct _DDHAL_ADDATTACHEDSURFACEDATA *LPDDHAL_ADDATTACHEDSURFACEDATA; +typedef struct _DDHAL_GETBLTSTATUSDATA *LPDDHAL_GETBLTSTATUSDATA; +typedef struct _DDHAL_GETFLIPSTATUSDATA *LPDDHAL_GETFLIPSTATUSDATA; +typedef struct _DDHAL_UPDATEOVERLAYDATA *LPDDHAL_UPDATEOVERLAYDATA; +typedef struct _DDHAL_SETOVERLAYPOSITIONDATA *LPDDHAL_SETOVERLAYPOSITIONDATA; +typedef struct _DDHAL_SETPALETTEDATA *LPDDHAL_SETPALETTEDATA; + +typedef DWORD (PASCAL *LPDDHALSURFCB_DESTROYSURFACE) (LPDDHAL_DESTROYSURFACEDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_FLIP) (LPDDHAL_FLIPDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_SETCLIPLIST) (LPDDHAL_SETCLIPLISTDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_LOCK) (LPDDHAL_LOCKDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_UNLOCK) (LPDDHAL_UNLOCKDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_BLT) (LPDDHAL_BLTDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_SETCOLORKEY) (LPDDHAL_SETCOLORKEYDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_ADDATTACHEDSURFACE)(LPDDHAL_ADDATTACHEDSURFACEDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_GETBLTSTATUS) (LPDDHAL_GETBLTSTATUSDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_GETFLIPSTATUS) (LPDDHAL_GETFLIPSTATUSDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_UPDATEOVERLAY) (LPDDHAL_UPDATEOVERLAYDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_SETOVERLAYPOSITION)(LPDDHAL_SETOVERLAYPOSITIONDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_SETPALETTE) (LPDDHAL_SETPALETTEDATA); + +typedef struct _DDHAL_DDSURFACECALLBACKS { + DWORD dwSize; + DWORD dwFlags; + LPDDHALSURFCB_DESTROYSURFACE DestroySurface; + LPDDHALSURFCB_FLIP Flip; + LPDDHALSURFCB_SETCLIPLIST SetClipList; + LPDDHALSURFCB_LOCK Lock; + LPDDHALSURFCB_UNLOCK Unlock; + LPDDHALSURFCB_BLT Blt; + LPDDHALSURFCB_SETCOLORKEY SetColorKey; + LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface; + LPDDHALSURFCB_GETBLTSTATUS GetBltStatus; + LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus; + LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay; + LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition; + LPVOID reserved4; + LPDDHALSURFCB_SETPALETTE SetPalette; +} DDHAL_DDSURFACECALLBACKS, *LPDDHAL_DDSURFACECALLBACKS; + +typedef struct _DDHAL_DESTROYPALETTEDATA *LPDDHAL_DESTROYPALETTEDATA; +typedef struct _DDHAL_SETENTRIESDATA *LPDDHAL_SETENTRIESDATA; + +typedef DWORD (PASCAL *LPDDHALPALCB_DESTROYPALETTE) (LPDDHAL_DESTROYPALETTEDATA); +typedef DWORD (PASCAL *LPDDHALPALCB_SETENTRIES) (LPDDHAL_SETENTRIESDATA); + +typedef struct _DDHAL_DDPALETTECALLBACKS { + DWORD dwSize; + DWORD dwFlags; + LPDDHALPALCB_DESTROYPALETTE DestroyPalette; + LPDDHALPALCB_SETENTRIES SetEntries; +} DDHAL_DDPALETTECALLBACKS, *LPDDHAL_DDPALETTECALLBACKS; + +typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CANCREATEEXEBUF) (LPDDHAL_CANCREATESURFACEDATA); +typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CREATEEXEBUF) (LPDDHAL_CREATESURFACEDATA); +typedef DWORD (PASCAL *LPDDHALEXEBUFCB_DESTROYEXEBUF) (LPDDHAL_DESTROYSURFACEDATA); +typedef DWORD (PASCAL *LPDDHALEXEBUFCB_LOCKEXEBUF) (LPDDHAL_LOCKDATA); +typedef DWORD (PASCAL *LPDDHALEXEBUFCB_UNLOCKEXEBUF) (LPDDHAL_UNLOCKDATA); + +typedef struct _DDHAL_DDEXEBUFCALLBACKS { + DWORD dwSize; + DWORD dwFlags; + LPDDHALEXEBUFCB_CANCREATEEXEBUF CanCreateExecuteBuffer; + LPDDHALEXEBUFCB_CREATEEXEBUF CreateExecuteBuffer; + LPDDHALEXEBUFCB_DESTROYEXEBUF DestroyExecuteBuffer; + LPDDHALEXEBUFCB_LOCKEXEBUF LockExecuteBuffer; + LPDDHALEXEBUFCB_UNLOCKEXEBUF UnlockExecuteBuffer; +} DDHAL_DDEXEBUFCALLBACKS, *LPDDHAL_DDEXEBUFCALLBACKS; + +typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA *LPDDHAL_GETAVAILDRIVERMEMORYDATA; +typedef struct _DDHAL_UPDATENONLOCALHEAPDATA *LPDDHAL_UPDATENONLOCALHEAPDATA; +typedef struct _DDHAL_GETHEAPALIGNMENTDATA *LPDDHAL_GETHEAPALIGNMENTDATA; + +typedef DWORD (PASCAL *LPDDHAL_GETAVAILDRIVERMEMORY)(LPDDHAL_GETAVAILDRIVERMEMORYDATA); +typedef DWORD (PASCAL *LPDDHAL_UPDATENONLOCALHEAP) (LPDDHAL_UPDATENONLOCALHEAPDATA); +typedef DWORD (PASCAL *LPDDHAL_GETHEAPALIGNMENT) (LPDDHAL_GETHEAPALIGNMENTDATA); + +typedef struct _DDHAL_DDMISCELLANEOUSCALLBACKS { + DWORD dwSize; + DWORD dwFlags; + LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory; + LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap; + LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment; + LPDDHALSURFCB_GETBLTSTATUS GetSysmemBltStatus; +} DDHAL_DDMISCELLANEOUSCALLBACKS, *LPDDHAL_DDMISCELLANEOUSCALLBACKS; + +typedef struct _DDHAL_CREATESURFACEEXDATA *LPDDHAL_CREATESURFACEEXDATA; +typedef struct _DDHAL_GETDRIVERSTATEDATA *LPDDHAL_GETDRIVERSTATEDATA; +typedef struct _DDHAL_DESTROYDDLOCALDATA *LPDDHAL_DESTROYDDLOCALDATA; + +typedef DWORD (PASCAL *LPDDHAL_CREATESURFACEEX)(LPDDHAL_CREATESURFACEEXDATA); +typedef DWORD (PASCAL *LPDDHAL_GETDRIVERSTATE) (LPDDHAL_GETDRIVERSTATEDATA); +typedef DWORD (PASCAL *LPDDHAL_DESTROYDDLOCAL) (LPDDHAL_DESTROYDDLOCALDATA); + +typedef struct _DDHAL_DDMISCELLANEOUS2CALLBACKS { + DWORD dwSize; + DWORD dwFlags; + LPVOID Reserved; + LPDDHAL_CREATESURFACEEX CreateSurfaceEx; + LPDDHAL_GETDRIVERSTATE GetDriverState; + LPDDHAL_DESTROYDDLOCAL DestroyDDLocal; +} DDHAL_DDMISCELLANEOUS2CALLBACKS, *LPDDHAL_DDMISCELLANEOUS2CALLBACKS; + +typedef struct _DDHAL_CANCREATEVPORTDATA *LPDDHAL_CANCREATEVPORTDATA; +typedef struct _DDHAL_CREATEVPORTDATA *LPDDHAL_CREATEVPORTDATA; +typedef struct _DDHAL_FLIPVPORTDATA *LPDDHAL_FLIPVPORTDATA; +typedef struct _DDHAL_GETVPORTCONNECTDATA *LPDDHAL_GETVPORTCONNECTDATA; +typedef struct _DDHAL_GETVPORTBANDWIDTHDATA *LPDDHAL_GETVPORTBANDWIDTHDATA; +typedef struct _DDHAL_GETVPORTINPUTFORMATDATA *LPDDHAL_GETVPORTINPUTFORMATDATA; +typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA *LPDDHAL_GETVPORTOUTPUTFORMATDATA; +typedef struct _DDHAL_GETVPORTFIELDDATA *LPDDHAL_GETVPORTFIELDDATA; +typedef struct _DDHAL_GETVPORTLINEDATA *LPDDHAL_GETVPORTLINEDATA; +typedef struct _DDHAL_DESTROYVPORTDATA *LPDDHAL_DESTROYVPORTDATA; +typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA *LPDDHAL_GETVPORTFLIPSTATUSDATA; +typedef struct _DDHAL_UPDATEVPORTDATA *LPDDHAL_UPDATEVPORTDATA; +typedef struct _DDHAL_WAITFORVPORTSYNCDATA *LPDDHAL_WAITFORVPORTSYNCDATA; +typedef struct _DDHAL_GETVPORTSIGNALDATA *LPDDHAL_GETVPORTSIGNALDATA; +typedef struct _DDHAL_VPORTCOLORDATA *LPDDHAL_VPORTCOLORDATA; + +typedef DWORD (PASCAL *LPDDHALVPORTCB_CANCREATEVIDEOPORT)(LPDDHAL_CANCREATEVPORTDATA); +typedef DWORD (PASCAL *LPDDHALVPORTCB_CREATEVIDEOPORT)(LPDDHAL_CREATEVPORTDATA); +typedef DWORD (PASCAL *LPDDHALVPORTCB_FLIP)(LPDDHAL_FLIPVPORTDATA); +typedef DWORD (PASCAL *LPDDHALVPORTCB_GETBANDWIDTH)(LPDDHAL_GETVPORTBANDWIDTHDATA); +typedef DWORD (PASCAL *LPDDHALVPORTCB_GETINPUTFORMATS)(LPDDHAL_GETVPORTINPUTFORMATDATA); +typedef DWORD (PASCAL *LPDDHALVPORTCB_GETOUTPUTFORMATS)(LPDDHAL_GETVPORTOUTPUTFORMATDATA); +typedef DWORD (PASCAL *LPDDHALVPORTCB_GETFIELD)(LPDDHAL_GETVPORTFIELDDATA); +typedef DWORD (PASCAL *LPDDHALVPORTCB_GETLINE)(LPDDHAL_GETVPORTLINEDATA); +typedef DWORD (PASCAL *LPDDHALVPORTCB_GETVPORTCONNECT)(LPDDHAL_GETVPORTCONNECTDATA); +typedef DWORD (PASCAL *LPDDHALVPORTCB_DESTROYVPORT)(LPDDHAL_DESTROYVPORTDATA); +typedef DWORD (PASCAL *LPDDHALVPORTCB_GETFLIPSTATUS)(LPDDHAL_GETVPORTFLIPSTATUSDATA); +typedef DWORD (PASCAL *LPDDHALVPORTCB_UPDATE)(LPDDHAL_UPDATEVPORTDATA); +typedef DWORD (PASCAL *LPDDHALVPORTCB_WAITFORSYNC)(LPDDHAL_WAITFORVPORTSYNCDATA); +typedef DWORD (PASCAL *LPDDHALVPORTCB_GETSIGNALSTATUS)(LPDDHAL_GETVPORTSIGNALDATA); +typedef DWORD (PASCAL *LPDDHALVPORTCB_COLORCONTROL)(LPDDHAL_VPORTCOLORDATA); + +typedef struct _DDHAL_DDVIDEOPORTCALLBACKS { + DWORD dwSize; + DWORD dwFlags; + LPDDHALVPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort; + LPDDHALVPORTCB_CREATEVIDEOPORT CreateVideoPort; + LPDDHALVPORTCB_FLIP FlipVideoPort; + LPDDHALVPORTCB_GETBANDWIDTH GetVideoPortBandwidth; + LPDDHALVPORTCB_GETINPUTFORMATS GetVideoPortInputFormats; + LPDDHALVPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats; + LPVOID lpReserved1; + LPDDHALVPORTCB_GETFIELD GetVideoPortField; + LPDDHALVPORTCB_GETLINE GetVideoPortLine; + LPDDHALVPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo; + LPDDHALVPORTCB_DESTROYVPORT DestroyVideoPort; + LPDDHALVPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus; + LPDDHALVPORTCB_UPDATE UpdateVideoPort; + LPDDHALVPORTCB_WAITFORSYNC WaitForVideoPortSync; + LPDDHALVPORTCB_GETSIGNALSTATUS GetVideoSignalStatus; + LPDDHALVPORTCB_COLORCONTROL ColorControl; +} DDHAL_DDVIDEOPORTCALLBACKS; + +typedef struct _DDHAL_COLORCONTROLDATA *LPDDHAL_COLORCONTROLDATA; + +typedef DWORD (PASCAL *LPDDHALCOLORCB_COLORCONTROL)(LPDDHAL_COLORCONTROLDATA); + +typedef struct _DDHAL_DDCOLORCONTROLCALLBACKS { + DWORD dwSize; + DWORD dwFlags; + LPDDHALCOLORCB_COLORCONTROL ColorControl; +} DDHAL_DDCOLORCONTROLCALLBACKS; + +typedef struct _DDHAL_SYNCSURFACEDATA *LPDDHAL_SYNCSURFACEDATA; +typedef struct _DDHAL_SYNCVIDEOPORTDATA *LPDDHAL_SYNCVIDEOPORTDATA; + +typedef DWORD (PASCAL *LPDDHALKERNELCB_SYNCSURFACE)(LPDDHAL_SYNCSURFACEDATA); +typedef DWORD (PASCAL *LPDDHALKERNELCB_SYNCVIDEOPORT)(LPDDHAL_SYNCVIDEOPORTDATA); + +typedef struct _DDHAL_DDKERNELCALLBACKS { + DWORD dwSize; + DWORD dwFlags; + LPDDHALKERNELCB_SYNCSURFACE SyncSurfaceData; + LPDDHALKERNELCB_SYNCVIDEOPORT SyncVideoPortData; +} DDHAL_DDKERNELCALLBACKS, *LPDDHAL_DDKERNELCALLBACKS; + +typedef struct _DDHAL_GETMOCOMPGUIDSDATA *LPDDHAL_GETMOCOMPGUIDSDATA; +typedef struct _DDHAL_GETMOCOMPFORMATSDATA *LPDDHAL_GETMOCOMPFORMATSDATA; +typedef struct _DDHAL_CREATEMOCOMPDATA *LPDDHAL_CREATEMOCOMPDATA; +typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA *LPDDHAL_GETMOCOMPCOMPBUFFDATA; +typedef struct _DDHAL_GETINTERNALMOCOMPDATA *LPDDHAL_GETINTERNALMOCOMPDATA; +typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA *LPDDHAL_BEGINMOCOMPFRAMEDATA; +typedef struct _DDHAL_ENDMOCOMPFRAMEDATA *LPDDHAL_ENDMOCOMPFRAMEDATA; +typedef struct _DDHAL_RENDERMOCOMPDATA *LPDDHAL_RENDERMOCOMPDATA; +typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA *LPDDHAL_QUERYMOCOMPSTATUSDATA; +typedef struct _DDHAL_DESTROYMOCOMPDATA *LPDDHAL_DESTROYMOCOMPDATA; + +typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETGUIDS)(LPDDHAL_GETMOCOMPGUIDSDATA); +typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETFORMATS)(LPDDHAL_GETMOCOMPFORMATSDATA); +typedef DWORD (PASCAL *LPDDHALMOCOMPCB_CREATE)(LPDDHAL_CREATEMOCOMPDATA); +typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETCOMPBUFFINFO)(LPDDHAL_GETMOCOMPCOMPBUFFDATA); +typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETINTERNALINFO)(LPDDHAL_GETINTERNALMOCOMPDATA); +typedef DWORD (PASCAL *LPDDHALMOCOMPCB_BEGINFRAME)(LPDDHAL_BEGINMOCOMPFRAMEDATA); +typedef DWORD (PASCAL *LPDDHALMOCOMPCB_ENDFRAME)(LPDDHAL_ENDMOCOMPFRAMEDATA); +typedef DWORD (PASCAL *LPDDHALMOCOMPCB_RENDER)(LPDDHAL_RENDERMOCOMPDATA); +typedef DWORD (PASCAL *LPDDHALMOCOMPCB_QUERYSTATUS)(LPDDHAL_QUERYMOCOMPSTATUSDATA); +typedef DWORD (PASCAL *LPDDHALMOCOMPCB_DESTROY)(LPDDHAL_DESTROYMOCOMPDATA); + +typedef struct _DDHAL_DDMOTIONCOMPCALLBACKS { + DWORD dwSize; + DWORD dwFlags; + LPDDHALMOCOMPCB_GETGUIDS GetMoCompGuids; + LPDDHALMOCOMPCB_GETFORMATS GetMoCompFormats; + LPDDHALMOCOMPCB_CREATE CreateMoComp; + LPDDHALMOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo; + LPDDHALMOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo; + LPDDHALMOCOMPCB_BEGINFRAME BeginMoCompFrame; + LPDDHALMOCOMPCB_ENDFRAME EndMoCompFrame; + LPDDHALMOCOMPCB_RENDER RenderMoComp; + LPDDHALMOCOMPCB_QUERYSTATUS QueryMoCompStatus; + LPDDHALMOCOMPCB_DESTROY DestroyMoComp; +} DDHAL_DDMOTIONCOMPCALLBACKS, *LPDDHAL_DDMOTIONCOMPCALLBACKS; + +typedef HRESULT (WINAPI *LPDDGAMMACALIBRATORPROC)(LPDDGAMMARAMP, LPBYTE); + +/***************************************************************************** + * driver info structure + * + * The HAL is queried for additional callbacks via the GetDriverInfo callback. + */ +typedef struct _DDHAL_GETDRIVERINFODATA *LPDDHAL_GETDRIVERINFODATA; +typedef DWORD (PASCAL *LPDDHAL_GETDRIVERINFO)(LPDDHAL_GETDRIVERINFODATA); + +typedef struct _DDHAL_GETDRIVERINFODATA { + DWORD dwSize; + DWORD dwFlags; + GUID guidInfo; + DWORD dwExpectedSize; + LPVOID lpvData; + DWORD dwActualSize; + HRESULT ddRVal; + ULONG_PTR dwContext; +} DDHAL_GETDRIVERINFODATA; + +typedef struct _DDHALINFO { + DWORD dwSize; + LPDDHAL_DDCALLBACKS lpDDCallbacks; + LPDDHAL_DDSURFACECALLBACKS lpDDSurfaceCallbacks; + LPDDHAL_DDPALETTECALLBACKS lpDDPaletteCallbacks; + VIDMEMINFO vmiData; + DDCORECAPS ddCaps; + DWORD dwMonitorFrequency; + LPDDHAL_GETDRIVERINFO GetDriverInfo; + DWORD dwModeIndex; + LPDWORD lpdwFourCC; + DWORD dwNumModes; + LPDDHALMODEINFO lpModeInfo; + DWORD dwFlags; + LPVOID lpPDevice; + DWORD hInstance; + /* DirectX 2 */ + ULONG_PTR lpD3DGlobalDriverData; + ULONG_PTR lpD3DHALCallbacks; + LPDDHAL_DDEXEBUFCALLBACKS lpDDExeBufCallbacks; +} DDHALINFO; + +#define DDPALETTECALLBACKSSIZE sizeof(DDHAL_DDPALETTECALLBACKS) +#define DDSURFACECALLBACKSSIZE sizeof(DDHAL_DDSURFACECALLBACKS) +#define DDMISCELLANEOUSCALLBACKSSIZE sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS) +#define DDMISCELLANEOUS2CALLBACKSSIZE sizeof(DDHAL_DDMISCELLANEOUS2CALLBACKS) +#define DDEXEBUFCALLBACKSSIZE sizeof(DDHAL_DDEXEBUFCALLBACKS) +#define DDVIDEOPORTCALLBACKSSIZE sizeof(DDHAL_DDVIDEOPORTCALLBACKS) +#define DDCOLORCONTROLCALLBACKSSIZE sizeof(DDHAL_DDCOLORCONTROLCALLBACKS) +#define DDKERNELCALLBACKSSIZE sizeof(DDHAL_DDKERNELCALLBACKS) +#define DDMOTIONCOMPCALLBACKSSIZE sizeof(DDHAL_DDMOTIONCOMPCALLBACKS) + +#define MAX_PALETTE_SIZE 256 + +#define MAX_AUTOFLIP_BUFFERS 10 +#define DDSCAPS2_INDEXBUFFER DDSCAPS2_RESERVED3 +#define DDSCAPS3_VIDEO DDSCAPS3_RESERVED2 +#define D3DFMT_INTERNAL_D32 71 +#define D3DFMT_INTERNAL_S1D15 72 +#define D3DFMT_INTERNAL_D15S1 73 +#define D3DFMT_INTERNAL_S8D24 74 +#define D3DFMT_INTERNAL_D24S8 75 +#define D3DFMT_INTERNAL_X8D24 76 +#define D3DFMT_INTERNAL_D24X8 77 +#define DDHAL_PLEASEALLOC_BLOCKSIZE 0x00000002l +#define DDHAL_PLEASEALLOC_LINEARSIZE 0x00000003l + +#define DDHAL_CB32_DESTROYDRIVER 0x00000001l +#define DDHAL_CB32_CREATESURFACE 0x00000002l +#define DDHAL_CB32_SETCOLORKEY 0x00000004l +#define DDHAL_CB32_SETMODE 0x00000008l +#define DDHAL_CB32_WAITFORVERTICALBLANK 0x00000010l +#define DDHAL_CB32_CANCREATESURFACE 0x00000020l +#define DDHAL_CB32_CREATEPALETTE 0x00000040l +#define DDHAL_CB32_GETSCANLINE 0x00000080l +#define DDHAL_CB32_SETEXCLUSIVEMODE 0x00000100l +#define DDHAL_CB32_FLIPTOGDISURFACE 0x00000200l +#define DDHAL_PALCB32_DESTROYPALETTE 0x00000001l +#define DDHAL_PALCB32_SETENTRIES 0x00000002l +#define DDHALINFO_ISPRIMARYDISPLAY 0x00000001 +#define DDHALINFO_MODEXILLEGAL 0x00000002 +#define DDHALINFO_GETDRIVERINFOSET 0x00000004 +#define DDHALINFO_GETDRIVERINFO2 0x00000008 +#define DDRAWI_VPORTSTART 0x0001 +#define DDRAWI_VPORTSTOP 0x0002 +#define DDRAWI_VPORTUPDATE 0x0003 +#define DDRAWI_VPORTGETCOLOR 0x0001 +#define DDRAWI_VPORTSETCOLOR 0x0002 +#define DDHAL_SURFCB32_DESTROYSURFACE 0x00000001 +#define DDHAL_SURFCB32_FLIP 0x00000002 +#define DDHAL_SURFCB32_SETCLIPLIST 0x00000004 +#define DDHAL_SURFCB32_LOCK 0x00000008 +#define DDHAL_SURFCB32_UNLOCK 0x00000010 +#define DDHAL_SURFCB32_BLT 0x00000020 +#define DDHAL_SURFCB32_SETCOLORKEY 0x00000040 +#define DDHAL_SURFCB32_ADDATTACHEDSURFACE 0x00000080 +#define DDHAL_SURFCB32_GETBLTSTATUS 0x00000100 +#define DDHAL_SURFCB32_GETFLIPSTATUS 0x00000200 +#define DDHAL_SURFCB32_UPDATEOVERLAY 0x00000400 +#define DDHAL_SURFCB32_SETOVERLAYPOSITION 0x00000800 +#define DDHAL_SURFCB32_RESERVED4 0x00001000 +#define DDHAL_SURFCB32_SETPALETTE 0x00002000 +#define DDHAL_MISCCB32_GETAVAILDRIVERMEMORY 0x00000001 +#define DDHAL_MISCCB32_UPDATENONLOCALHEAP 0x00000002 +#define DDHAL_MISCCB32_GETHEAPALIGNMENT 0x00000004 +#define DDHAL_MISCCB32_GETSYSMEMBLTSTATUS 0x00000008 +#define DDHAL_MISC2CB32_ALPHABLT 0x00000001 +#define DDHAL_MISC2CB32_CREATESURFACEEX 0x00000002 +#define DDHAL_MISC2CB32_GETDRIVERSTATE 0x00000004 +#define DDHAL_MISC2CB32_DESTROYDDLOCAL 0x00000008 +#define DDHAL_EXEBUFCB32_CANCREATEEXEBUF 0x00000001l +#define DDHAL_EXEBUFCB32_CREATEEXEBUF 0x00000002l +#define DDHAL_EXEBUFCB32_DESTROYEXEBUF 0x00000004l +#define DDHAL_EXEBUFCB32_LOCKEXEBUF 0x00000008l +#define DDHAL_EXEBUFCB32_UNLOCKEXEBUF 0x00000010l +#define DDHAL_VPORT32_CANCREATEVIDEOPORT 0x00000001 +#define DDHAL_VPORT32_CREATEVIDEOPORT 0x00000002 +#define DDHAL_VPORT32_FLIP 0x00000004 +#define DDHAL_VPORT32_GETBANDWIDTH 0x00000008 +#define DDHAL_VPORT32_GETINPUTFORMATS 0x00000010 +#define DDHAL_VPORT32_GETOUTPUTFORMATS 0x00000020 +#define DDHAL_VPORT32_GETFIELD 0x00000080 +#define DDHAL_VPORT32_GETLINE 0x00000100 +#define DDHAL_VPORT32_GETCONNECT 0x00000200 +#define DDHAL_VPORT32_DESTROY 0x00000400 +#define DDHAL_VPORT32_GETFLIPSTATUS 0x00000800 +#define DDHAL_VPORT32_UPDATE 0x00001000 +#define DDHAL_VPORT32_WAITFORSYNC 0x00002000 +#define DDHAL_VPORT32_GETSIGNALSTATUS 0x00004000 +#define DDHAL_VPORT32_COLORCONTROL 0x00008000 +#define DDHAL_COLOR_COLORCONTROL 0x00000001 +#define DDHAL_KERNEL_SYNCSURFACEDATA 0x00000001l +#define DDHAL_KERNEL_SYNCVIDEOPORTDATA 0x00000002l +#define DDHAL_MOCOMP32_GETGUIDS 0x00000001 +#define DDHAL_MOCOMP32_GETFORMATS 0x00000002 +#define DDHAL_MOCOMP32_CREATE 0x00000004 +#define DDHAL_MOCOMP32_GETCOMPBUFFINFO 0x00000008 +#define DDHAL_MOCOMP32_GETINTERNALINFO 0x00000010 +#define DDHAL_MOCOMP32_BEGINFRAME 0x00000020 +#define DDHAL_MOCOMP32_ENDFRAME 0x00000040 +#define DDHAL_MOCOMP32_RENDER 0x00000080 +#define DDHAL_MOCOMP32_QUERYSTATUS 0x00000100 +#define DDHAL_MOCOMP32_DESTROY 0x00000200 + +/* where the high-level ddraw implementation stores the callbacks */ +typedef struct _DDHAL_CALLBACKS { + DDHAL_DDCALLBACKS cbDDCallbacks; + DDHAL_DDSURFACECALLBACKS cbDDSurfaceCallbacks; + DDHAL_DDPALETTECALLBACKS cbDDPaletteCallbacks; + DDHAL_DDCALLBACKS HALDD; + DDHAL_DDSURFACECALLBACKS HALDDSurface; + DDHAL_DDPALETTECALLBACKS HALDDPalette; + DDHAL_DDCALLBACKS HELDD; + DDHAL_DDSURFACECALLBACKS HELDDSurface; + DDHAL_DDPALETTECALLBACKS HELDDPalette; + DDHAL_DDEXEBUFCALLBACKS cbDDExeBufCallbacks; + DDHAL_DDEXEBUFCALLBACKS HALDDExeBuf; + DDHAL_DDEXEBUFCALLBACKS HELDDExeBuf; + DDHAL_DDVIDEOPORTCALLBACKS cbDDVideoPortCallbacks; + DDHAL_DDVIDEOPORTCALLBACKS HALDDVideoPort; + DDHAL_DDCOLORCONTROLCALLBACKS cbDDColorControlCallbacks; + DDHAL_DDCOLORCONTROLCALLBACKS HALDDColorControl; + DDHAL_DDMISCELLANEOUSCALLBACKS cbDDMiscellaneousCallbacks; + DDHAL_DDMISCELLANEOUSCALLBACKS HALDDMiscellaneous; + DDHAL_DDKERNELCALLBACKS cbDDKernelCallbacks; + DDHAL_DDKERNELCALLBACKS HALDDKernel; + DDHAL_DDMOTIONCOMPCALLBACKS cbDDMotionCompCallbacks; + DDHAL_DDMOTIONCOMPCALLBACKS HALDDMotionComp; +} DDHAL_CALLBACKS, *LPDDHAL_CALLBACKS; + +/***************************************************************************** + * parameter structures + */ +typedef struct _DDHAL_DESTROYDRIVERDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + HRESULT ddRVal; + LPDDHAL_DESTROYDRIVER DestroyDriver; +} DDHAL_DESTROYDRIVERDATA; + +typedef struct _DDHAL_SETMODEDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + DWORD dwModeIndex; + HRESULT ddRVal; + LPDDHAL_SETMODE SetMode; + BOOL inexcl; + BOOL useRefreshRate; +} DDHAL_SETMODEDATA; + +typedef struct _DDHAL_CREATESURFACEDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDSURFACEDESC lpDDSurfaceDesc; + LPDDRAWI_DDRAWSURFACE_LCL *lplpSList; + DWORD dwSCnt; + HRESULT ddRVal; + LPDDHAL_CREATESURFACE CreateSurface; +} DDHAL_CREATESURFACEDATA; + +typedef struct _DDHAL_CANCREATESURFACEDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDSURFACEDESC lpDDSurfaceDesc; + DWORD bIsDifferentPixelFormat; + HRESULT ddRVal; + LPDDHAL_CANCREATESURFACE CanCreateSurface; +} DDHAL_CANCREATESURFACEDATA; + +typedef struct _DDHAL_CREATEPALETTEDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette; + LPPALETTEENTRY lpColorTable; + HRESULT ddRVal; + LPDDHAL_CREATEPALETTE CreatePalette; + BOOL is_excl; +} DDHAL_CREATEPALETTEDATA; + +typedef struct _DDHAL_SETEXCLUSIVEMODEDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + DWORD dwEnterExcl; + DWORD dwReserved; + HRESULT ddRVal; + LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode; +} DDHAL_SETEXCLUSIVEMODEDATA; + +/* surfaces */ +typedef struct _DDHAL_DESTROYSURFACEDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; + HRESULT ddRVal; + LPDDHALSURFCB_DESTROYSURFACE DestroySurface; +} DDHAL_DESTROYSURFACEDATA; + +typedef struct _DDHAL_FLIPDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr; + LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg; + DWORD dwFlags; + HRESULT ddRVal; + LPDDHALSURFCB_FLIP Flip; + LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurrLeft; + LPDDRAWI_DDRAWSURFACE_LCL lpSurfTargLeft; +} DDHAL_FLIPDATA; + +typedef struct _DDHAL_LOCKDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; + DWORD bHasRect; + RECTL rArea; + LPVOID lpSurfData; + HRESULT ddRVal; + LPDDHALSURFCB_LOCK Lock; + DWORD dwFlags; +} DDHAL_LOCKDATA; + +typedef struct _DDHAL_UNLOCKDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; + HRESULT ddRVal; + LPDDHALSURFCB_UNLOCK Unlock; +} DDHAL_UNLOCKDATA; + +typedef struct _DDHAL_BLTDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface; + RECTL rDest; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface; + RECTL rSrc; + DWORD dwFlags; + DWORD dwROPFlags; + DDBLTFX bltFX; + HRESULT ddRVal; + LPDDHALSURFCB_BLT Blt; + BOOL IsClipped; + RECTL rOrigDest; + RECTL rOrigSrc; + DWORD dwRectCnt; + LPRECT prDestRects; +} DDHAL_BLTDATA; + +typedef struct _DDHAL_SETPALETTEDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; + LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette; + HRESULT ddRVal; + LPDDHALSURFCB_SETPALETTE SetPalette; + BOOL Attach; +} DDHAL_SETPALETTEDATA; + +/* palettes */ +typedef struct _DDHAL_DESTROYPALETTEDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette; + HRESULT ddRVal; + LPDDHALPALCB_DESTROYPALETTE DestroyPalette; +} DDHAL_DESTROYPALETTEDATA; + +typedef struct _DDHAL_SETENTRIESDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette; + DWORD dwBase; + DWORD dwNumEntries; + LPPALETTEENTRY lpEntries; + HRESULT ddRVal; + LPDDHALPALCB_SETENTRIES SetEntries; +} DDHAL_SETENTRIESDATA; + +typedef struct _DDHAL_CANCREATEVPORTDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDVIDEOPORTDESC lpDDVideoPortDesc; + HRESULT ddRVal; + LPDDHALVPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort; +} DDHAL_CANCREATEVPORTDATA; + +typedef struct _DDHAL_CREATEVPORTDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDVIDEOPORTDESC lpDDVideoPortDesc; + LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; + HRESULT ddRVal; + LPDDHALVPORTCB_CREATEVIDEOPORT CreateVideoPort; +} DDHAL_CREATEVPORTDATA; + +typedef struct _DDHAL_GETVPORTBANDWIDTHDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; + LPDDPIXELFORMAT lpddpfFormat; + DWORD dwWidth; + DWORD dwHeight; + DWORD dwFlags; + LPDDVIDEOPORTBANDWIDTH lpBandwidth; + HRESULT ddRVal; + LPDDHALVPORTCB_GETBANDWIDTH GetVideoPortBandwidth; +} DDHAL_GETVPORTBANDWIDTHDATA; + +typedef struct _DDHAL_GETVPORTINPUTFORMATDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; + DWORD dwFlags; + LPDDPIXELFORMAT lpddpfFormat; + DWORD dwNumFormats; + HRESULT ddRVal; + LPDDHALVPORTCB_GETINPUTFORMATS GetVideoPortInputFormats; +} DDHAL_GETVPORTINPUTFORMATDATA; + +typedef struct _DDHAL_GETVPORTFIELDDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; + BOOL bField; + HRESULT ddRVal; + LPDDHALVPORTCB_GETFIELD GetVideoPortField; +} DDHAL_GETVPORTFIELDDATA; + +typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; + DWORD dwFlags; + LPDDPIXELFORMAT lpddpfInputFormat; + LPDDPIXELFORMAT lpddpfOutputFormats; + DWORD dwNumFormats; + HRESULT ddRVal; + LPDDHALVPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats; +} DDHAL_GETVPORTOUTPUTFORMATDATA; + +typedef struct _DDHAL_GETVPORTLINEDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; + DWORD dwLine; + HRESULT ddRVal; + LPDDHALVPORTCB_GETLINE GetVideoPortLine; +} DDHAL_GETVPORTLINEDATA; + +typedef struct _DDHAL_DESTROYVPORTDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; + HRESULT ddRVal; + LPDDHALVPORTCB_DESTROYVPORT DestroyVideoPort; +} DDHAL_DESTROYVPORTDATA; + +typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + FLATPTR fpSurface; + HRESULT ddRVal; + LPDDHALVPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus; +} DDHAL_GETVPORTFLIPSTATUSDATA; + +typedef struct _DDHAL_UPDATEVPORTDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; + LPDDRAWI_DDRAWSURFACE_INT *lplpDDSurface; + LPDDRAWI_DDRAWSURFACE_INT *lplpDDVBISurface; + LPDDVIDEOPORTINFO lpVideoInfo; + DWORD dwFlags; + DWORD dwNumAutoflip; + DWORD dwNumVBIAutoflip; + HRESULT ddRVal; + LPDDHALVPORTCB_UPDATE UpdateVideoPort; +} DDHAL_UPDATEVPORTDATA; + +typedef struct _DDHAL_WAITFORVPORTSYNCDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; + DWORD dwFlags; + DWORD dwLine; + DWORD dwTimeOut; + HRESULT ddRVal; + LPDDHALVPORTCB_WAITFORSYNC WaitForVideoPortSync; +} DDHAL_WAITFORVPORTSYNCDATA; + +typedef struct _DDHAL_GETVPORTSIGNALDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; + DWORD dwStatus; + HRESULT ddRVal; + LPDDHALVPORTCB_GETSIGNALSTATUS GetVideoSignalStatus; +} DDHAL_GETVPORTSIGNALDATA; + +typedef struct _DDHAL_VPORTCOLORDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; + DWORD dwFlags; + LPDDCOLORCONTROL lpColorData; + HRESULT ddRVal; + LPDDHALVPORTCB_COLORCONTROL ColorControl; +} DDHAL_VPORTCOLORDATA; + +typedef struct _DDHAL_FLIPVPORTDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; + LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr; + LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg; + HRESULT ddRVal; + LPDDHALVPORTCB_FLIP FlipVideoPort; +} DDHAL_FLIPVPORTDATA; + +typedef struct _DDHAL_GETVPORTCONNECTDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + DWORD dwPortId; + LPDDVIDEOPORTCONNECT lpConnect; + DWORD dwNumEntries; + HRESULT ddRVal; + LPDDHALVPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo; +} DDHAL_GETVPORTCONNECTDATA; + +typedef struct _DDHAL_SYNCSURFACEDATA { + DWORD dwSize; + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; + DWORD dwSurfaceOffset; + ULONG_PTR fpLockPtr; + LONG lPitch; + DWORD dwOverlayOffset; + DWORD dwOverlaySrcWidth; + DWORD dwOverlaySrcHeight; + DWORD dwOverlayDestWidth; + DWORD dwOverlayDestHeight; + ULONG_PTR dwDriverReserved1; + ULONG_PTR dwDriverReserved2; + ULONG_PTR dwDriverReserved3; + HRESULT ddRVal; +} DDHAL_SYNCSURFACEDATA; + +typedef struct _DDHAL_SYNCVIDEOPORTDATA { + DWORD dwSize; + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; + DWORD dwOriginOffset; + DWORD dwHeight; + DWORD dwVBIHeight; + ULONG_PTR dwDriverReserved1; + ULONG_PTR dwDriverReserved2; + ULONG_PTR dwDriverReserved3; + HRESULT ddRVal; +} DDHAL_SYNCVIDEOPORTDATA; + +typedef struct _DDHAL_DESTROYDDLOCALDATA { + DWORD dwFlags; + LPDDRAWI_DIRECTDRAW_LCL pDDLcl; + HRESULT ddRVal; +} DDHAL_DESTROYDDLOCALDATA; + +typedef struct _DDHAL_CREATESURFACEEXDATA { + DWORD dwFlags; + LPDDRAWI_DIRECTDRAW_LCL lpDDLcl; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl; + HRESULT ddRVal; +} DDHAL_CREATESURFACEEXDATA; + +typedef struct _DDHAL_GETHEAPALIGNMENTDATA { + ULONG_PTR dwInstance; + DWORD dwHeap; + HRESULT ddRVal; + LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment; + HEAPALIGNMENT Alignment; +} DDHAL_GETHEAPALIGNMENTDATA; + +typedef struct _DDMORESURFACECAPS { + DWORD dwSize; + DDSCAPSEX ddsCapsMore; + struct tagExtendedHeapRestrictions { + DDSCAPSEX ddsCapsEx; + DDSCAPSEX ddsCapsExAlt; + } ddsExtendedHeapRestrictions[1]; +} DDMORESURFACECAPS, *LPDDMORESURFACECAPS; + +typedef struct _DDSTEREOMODE { + DWORD dwSize; + DWORD dwHeight; + DWORD dwWidth; + DWORD dwBpp; + DWORD dwRefreshRate; + BOOL bSupported; +} DDSTEREOMODE, *LPDDSTEREOMODE; + +/***************************************************************************** + * high-level ddraw implementation structures + */ +typedef struct _IUNKNOWN_LIST { + struct _IUNKNOWN_LIST *lpLink; + LPGUID lpGuid; +#ifndef _NO_COM + IUnknown *lpIUnknown; +#else + LPVOID lpIUnknown; +#endif /* _NO_COM */ +} IUNKNOWN_LIST, *LPIUNKNOWN_LIST; + +typedef struct _PROCESS_LIST { + struct _PROCESS_LIST *lpLink; + DWORD dwProcessId; + DWORD dwRefCnt; + DWORD dwAlphaDepth; + DWORD dwZDepth; +} PROCESS_LIST, *LPPROCESS_LIST; + +typedef struct _ATTACHLIST { + DWORD dwFlags; + struct _ATTACHLIST *lpLink; + LPDDRAWI_DDRAWSURFACE_LCL lpAttached; + LPDDRAWI_DDRAWSURFACE_INT lpIAttached; +} ATTACHLIST, *LPATTACHLIST; + +#define DDAL_IMPLICIT 0x00000001 + +typedef struct _ACCESSRECTLIST { + struct _ACCESSRECTLIST *lpLink; + RECT rDest; + LPDDRAWI_DIRECTDRAW_LCL lpOwner; + LPVOID lpSurfaceData; + DWORD dwFlags; + LPHEAPALIASINFO lpHeapAliasInfo; +} ACCESSRECTLIST, *LPACCESSRECTLIST; + +#define ACCESSRECT_VRAMSTYLE 0x00000001 +#define ACCESSRECT_NOTHOLDINGWIN16LOCK 0x00000002 +#define ACCESSRECT_BROKEN 0x00000004 + +typedef struct _DBLNODE { + struct _DBLNODE *next; + struct _DBLNODE *prev; + LPDDRAWI_DDRAWSURFACE_LCL object; + LPDDRAWI_DDRAWSURFACE_INT object_int; +} DBLNODE, *LPDBLNODE; + +typedef struct _DDRAWI_DIRECTDRAW_INT { + LPVOID lpVtbl; + LPDDRAWI_DIRECTDRAW_LCL lpLcl; + LPDDRAWI_DIRECTDRAW_INT lpLink; + DWORD dwIntRefCnt; +} DDRAWI_DIRECTDRAW_INT; + +typedef struct _DDRAWI_DIRECTDRAW_LCL { + DWORD lpDDMore; + LPDDRAWI_DIRECTDRAW_GBL lpGbl; + DWORD dwUnused0; + DWORD dwLocalFlags; + DWORD dwLocalRefCnt; + DWORD dwProcessId; +#ifndef _NO_COM + IUnknown *pUnkOuter; +#else + PVOID pUnkOuter; +#endif + DWORD dwObsolete1; + ULONG_PTR hWnd; + ULONG_PTR hDC; + DWORD dwErrorMode; + LPDDRAWI_DDRAWSURFACE_INT lpPrimary; + LPDDRAWI_DDRAWSURFACE_INT lpCB; + DWORD dwPreferredMode; + /* DirectX 2 */ + HINSTANCE hD3DInstance; +#ifndef _NO_COM + IUnknown *pD3DIUnknown; +#else + PVOID pD3DIUnknown; +#endif + LPDDHAL_CALLBACKS lpDDCB; + ULONG_PTR hDDVxd; + /* DirectX 5.0 */ + DWORD dwAppHackFlags; + /* DirectX 5.0A */ + ULONG_PTR hFocusWnd; + DWORD dwHotTracking; + DWORD dwIMEState; + /* DirectX 6.0 */ + ULONG_PTR hWndPopup; + ULONG_PTR hDD; + ULONG_PTR hGammaCalibrator; + LPDDGAMMACALIBRATORPROC lpGammaCalibrator; +} DDRAWI_DIRECTDRAW_LCL; + +#define DDRAWILCL_HASEXCLUSIVEMODE 0x00000001 +#define DDRAWILCL_ISFULLSCREEN 0x00000002 +#define DDRAWILCL_SETCOOPCALLED 0x00000004 +#define DDRAWILCL_ACTIVEYES 0x00000008 +#define DDRAWILCL_ACTIVENO 0x00000010 +#define DDRAWILCL_HOOKEDHWND 0x00000020 +#define DDRAWILCL_ALLOWMODEX 0x00000040 +#define DDRAWILCL_V1SCLBEHAVIOUR 0x00000080 +#define DDRAWILCL_MODEHASBEENCHANGED 0x00000100 +#define DDRAWILCL_CREATEDWINDOW 0x00000200 +#define DDRAWILCL_DIRTYDC 0x00000400 +#define DDRAWILCL_DISABLEINACTIVATE 0x00000800 +#define DDRAWILCL_CURSORCLIPPED 0x00001000 +#define DDRAWILCL_EXPLICITMONITOR 0x00002000 +#define DDRAWILCL_MULTITHREADED 0x00004000 +#define DDRAWILCL_FPUSETUP 0x00008000 +#define DDRAWILCL_POWEREDDOWN 0x00010000 +#define DDRAWILCL_DIRECTDRAW7 0x00020000 +#define DDRAWILCL_ATTEMPTEDD3DCONTEXT 0x00040000 +#define DDRAWILCL_FPUPRESERVE 0x00080000 +#define DDRAWILCL_DX8DRIVER 0x00100000 +#define DDRAWILCL_DIRECTDRAW8 0x00200000 + +typedef struct _DDRAWI_DIRECTDRAW_GBL { + DWORD dwRefCnt; + DWORD dwFlags; + FLATPTR fpPrimaryOrig; + DDCORECAPS ddCaps; + DWORD dwInternal1; + DWORD dwUnused1[9]; + LPDDHAL_CALLBACKS lpDDCBtmp; + LPDDRAWI_DDRAWSURFACE_INT dsList; + LPDDRAWI_DDRAWPALETTE_INT palList; + LPDDRAWI_DDRAWCLIPPER_INT clipperList; + LPDDRAWI_DIRECTDRAW_GBL lp16DD; + DWORD dwMaxOverlays; + DWORD dwCurrOverlays; + DWORD dwMonitorFrequency; + DDCORECAPS ddHELCaps; + DWORD dwUnused2[50]; + DDCOLORKEY ddckCKDestOverlay; + DDCOLORKEY ddckCKSrcOverlay; + VIDMEMINFO vmiData; + LPVOID lpDriverHandle; + LPDDRAWI_DIRECTDRAW_LCL lpExclusiveOwner; + DWORD dwModeIndex; + DWORD dwModeIndexOrig; + DWORD dwNumFourCC; + LPDWORD lpdwFourCC; + DWORD dwNumModes; + LPDDHALMODEINFO lpModeInfo; + PROCESS_LIST plProcessList; + DWORD dwSurfaceLockCount; + DWORD dwAliasedLockCnt; + ULONG_PTR dwReserved3; + ULONG_PTR hDD; + char cObsolete[12]; + DWORD dwReserved1; + DWORD dwReserved2; + DBLNODE dbnOverlayRoot; + volatile LPWORD lpwPDeviceFlags; + DWORD dwPDevice; + DWORD dwWin16LockCnt; + DWORD dwUnused3; + DWORD hInstance; + DWORD dwEvent16; + DWORD dwSaveNumModes; + /* DirectX 2 */ + ULONG_PTR lpD3DGlobalDriverData; + ULONG_PTR lpD3DHALCallbacks; + DDCORECAPS ddBothCaps; + /* DirectX 5.0 */ + LPDDVIDEOPORTCAPS lpDDVideoPortCaps; + LPDDRAWI_DDVIDEOPORT_INT dvpList; + ULONG_PTR lpD3DHALCallbacks2; + RECT rectDevice; + DWORD cMonitors; + LPVOID gpbmiSrc; + LPVOID gpbmiDest; + LPHEAPALIASINFO phaiHeapAliases; + ULONG_PTR hKernelHandle; + ULONG_PTR pfnNotifyProc; + LPDDKERNELCAPS lpDDKernelCaps; + LPDDNONLOCALVIDMEMCAPS lpddNLVCaps; + LPDDNONLOCALVIDMEMCAPS lpddNLVHELCaps; + LPDDNONLOCALVIDMEMCAPS lpddNLVBothCaps; + ULONG_PTR lpD3DExtendedCaps; + /* DirectX 5.0A */ + DWORD dwDOSBoxEvent; + RECT rectDesktop; + char cDriverName[MAX_DRIVER_NAME]; + /* DirectX 6.0 */ + ULONG_PTR lpD3DHALCallbacks3; + DWORD dwNumZPixelFormats; + LPDDPIXELFORMAT lpZPixelFormats; + LPDDRAWI_DDMOTIONCOMP_INT mcList; + DWORD hDDVxd; + DDSCAPSEX ddsCapsMore; +} DDRAWI_DIRECTDRAW_GBL; + +#define DDRAWI_xxxxxxxxx1 0x00000001 +#define DDRAWI_xxxxxxxxx2 0x00000002 +#define DDRAWI_VIRTUALDESKTOP 0x00000008 +#define DDRAWI_MODEX 0x00000010 +#define DDRAWI_DISPLAYDRV 0x00000020 +#define DDRAWI_FULLSCREEN 0x00000040 +#define DDRAWI_MODECHANGED 0x00000080 +#define DDRAWI_NOHARDWARE 0x00000100 +#define DDRAWI_PALETTEINIT 0x00000200 +#define DDRAWI_NOEMULATION 0x00000400 +#define DDRAWI_HASCKEYDESTOVERLAY 0x00000800 +#define DDRAWI_HASCKEYSRCOVERLAY 0x00001000 +#define DDRAWI_HASGDIPALETTE 0x00002000 +#define DDRAWI_EMULATIONINITIALIZED 0x00004000 +#define DDRAWI_HASGDIPALETTE_EXCLUSIVE 0x00008000 +#define DDRAWI_MODEXILLEGAL 0x00010000 +#define DDRAWI_FLIPPEDTOGDI 0x00020000 +#define DDRAWI_NEEDSWIN16FORVRAMLOCK 0x00040000 +#define DDRAWI_PDEVICEVRAMBITCLEARED 0x00080000 +#define DDRAWI_STANDARDVGA 0x00100000 +#define DDRAWI_EXTENDEDALIGNMENT 0x00200000 +#define DDRAWI_CHANGINGMODE 0x00400000 +#define DDRAWI_GDIDRV 0x00800000 +#define DDRAWI_ATTACHEDTODESKTOP 0x01000000 +#define DDRAWI_UMODELOADED 0x02000000 +#define DDRAWI_DDRAWDATANOTFETCHED 0x04000000 +#define DDRAWI_SECONDARYDRIVERLOADED 0x08000000 +#define DDRAWI_TESTINGMODES 0x10000000 +#define DDRAWI_DRIVERINFO2 0x20000000 +#define DDRAWI_BADPDEV 0x40000000 + +/* surfaces */ +typedef struct _DDRAWI_DDRAWSURFACE_INT { + LPVOID lpVtbl; + LPDDRAWI_DDRAWSURFACE_LCL lpLcl; + LPDDRAWI_DDRAWSURFACE_INT lpLink; + DWORD dwIntRefCnt; +} DDRAWI_DDRAWSURFACE_INT; + +typedef struct _DDRAWI_DDRAWSURFACE_GBL { + DWORD dwRefCnt; + DWORD dwGlobalFlags; + __GNU_EXTENSION union { + LPACCESSRECTLIST lpRectList; + DWORD dwBlockSizeY; + LONG lSlicePitch; + }; + __GNU_EXTENSION union { + LPVMEMHEAP lpVidMemHeap; + DWORD dwBlockSizeX; + }; + __GNU_EXTENSION union { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPVOID lpDDHandle; + }; + FLATPTR fpVidMem; + __GNU_EXTENSION union { + LONG lPitch; + DWORD dwLinearSize; + }; + WORD wHeight; + WORD wWidth; + DWORD dwUsageCount; + ULONG_PTR dwReserved1; + DDPIXELFORMAT ddpfSurface; +} DDRAWI_DDRAWSURFACE_GBL; + +#define DDRAWISURFGBL_MEMFREE 0x00000001L +#define DDRAWISURFGBL_SYSMEMREQUESTED 0x00000002L +#define DDRAWISURFGBL_ISGDISURFACE 0x00000004L +#define DDRAWISURFGBL_SOFTWAREAUTOFLIP 0x00000008L +#define DDRAWISURFGBL_LOCKNOTHOLDINGWIN16LOCK 0x00000010L +#define DDRAWISURFGBL_LOCKVRAMSTYLE 0x00000020L +#define DDRAWISURFGBL_LOCKBROKEN 0x00000040L +#define DDRAWISURFGBL_IMPLICITHANDLE 0x00000080L +#define DDRAWISURFGBL_ISCLIENTMEM 0x00000100L +#define DDRAWISURFGBL_HARDWAREOPSOURCE 0x00000200L +#define DDRAWISURFGBL_HARDWAREOPDEST 0x00000400L +#define DDRAWISURFGBL_HARDWAREOPSTARTED (DDRAWISURFGBL_HARDWAREOPSOURCE|DDRAWISURFGBL_HARDWAREOPDEST) +#define DDRAWISURFGBL_VPORTINTERLEAVED 0x00000800L +#define DDRAWISURFGBL_VPORTDATA 0x00001000L +#define DDRAWISURFGBL_LATEALLOCATELINEAR 0x00002000L +#define DDRAWISURFGBL_SYSMEMEXECUTEBUFFER 0x00004000L +#define DDRAWISURFGBL_FASTLOCKHELD 0x00008000L +#define DDRAWISURFGBL_READONLYLOCKHELD 0x00010000L +#define DDRAWISURFGBL_DX8SURFACE 0x00080000L +#define DDRAWISURFGBL_DDHELDONTFREE 0x00100000L +#define DDRAWISURFGBL_NOTIFYWHENUNLOCKED 0x00200000L +#define DDRAWISURFGBL_RESERVED0 0x80000000L // Reserved flag + +typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE { + DWORD dwSize; + __GNU_EXTENSION union { + DWORD dwPhysicalPageTable; + FLATPTR fpPhysicalVidMem; + }; + LPDWORD pPageTable; + DWORD cPages; + ULONG_PTR dwSavedDCContext; + FLATPTR fpAliasedVidMem; + ULONG_PTR dwDriverReserved; + ULONG_PTR dwHELReserved; + DWORD cPageUnlocks; + ULONG_PTR hKernelSurface; + DWORD dwKernelRefCnt; + LPDDCOLORCONTROL lpColorInfo; + FLATPTR fpNTAlias; + DWORD dwContentsStamp; + LPVOID lpvUnswappedDriverReserved; + LPVOID lpDDRAWReserved2; + DWORD dwDDRAWReserved1; + DWORD dwDDRAWReserved2; + FLATPTR fpAliasOfVidMem; +} DDRAWI_DDRAWSURFACE_GBL_MORE; + +/* the MS version of this macro was somewhat obfuscated and unreadable + * (possibly because of mediocre MS coders)... so I simplified it... + * (and so I commit no copyright violations either, hah) */ +#define GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl) \ + (*(((LPDDRAWI_DDRAWSURFACE_GBL_MORE *)(psurf_gbl)) - 1)) + +#define SURFACE_PHYSICALVIDMEM( psurf_gbl ) \ + ( GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl )->fpPhysicalVidMem ) + +typedef struct _DISPLAYMODEINFO { + WORD wWidth; + WORD wHeight; + BYTE wBPP; + BYTE wMonitorsAttachedToDesktop; + WORD wRefreshRate; +} DISPLAYMODEINFO, *LPDISPLAYMODEINFO; + +#define EQUAL_DISPLAYMODE ( A, B ) (0 == memcmp(&(A), &(B), sizeof (DISPLAYMODEINFO))) + +typedef struct _DDRAWI_DDRAWSURFACE_MORE { + DWORD dwSize; + IUNKNOWN_LIST *lpIUnknowns; + LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; + DWORD dwPageLockCount; + DWORD dwBytesAllocated; + LPDDRAWI_DIRECTDRAW_INT lpDD_int; + DWORD dwMipMapCount; + LPDDRAWI_DDRAWCLIPPER_INT lpDDIClipper; + /* DirectX 5.0 */ + LPHEAPALIASINFO lpHeapAliasInfo; + DWORD dwOverlayFlags; + VOID *rgjunc; + LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; + LPDDOVERLAYFX lpddOverlayFX; + DDSCAPSEX ddsCapsEx; + DWORD dwTextureStage; + LPVOID lpDDRAWReserved; + LPVOID lpDDRAWReserved2; + LPVOID lpDDrawReserved3; + DWORD dwDDrawReserved4; + LPVOID lpDDrawReserved5; + LPDWORD lpGammaRamp; + LPDWORD lpOriginalGammaRamp; + LPVOID lpDDrawReserved6; +# ifndef WIN95 + DISPLAYMODEINFO dmiDDrawReserved7; +# endif + DWORD dwSurfaceHandle; + DWORD qwDDrawReserved8[2]; + LPVOID lpDDrawReserved9; + DWORD cSurfaces; + LPDDSURFACEDESC2 pCreatedDDSurfaceDesc2; + LPDDRAWI_DDRAWSURFACE_LCL *slist; + DWORD dwFVF; + LPVOID lpVB; +} DDRAWI_DDRAWSURFACE_MORE; + +typedef struct _DDRAWI_DDRAWSURFACE_LCL { + LPDDRAWI_DDRAWSURFACE_MORE lpSurfMore; + LPDDRAWI_DDRAWSURFACE_GBL lpGbl; + ULONG_PTR hDDSurface; + LPATTACHLIST lpAttachList; + LPATTACHLIST lpAttachListFrom; + DWORD dwLocalRefCnt; + DWORD dwProcessId; + DWORD dwFlags; + DDSCAPS ddsCaps; + __GNU_EXTENSION union { + LPDDRAWI_DDRAWPALETTE_INT lpDDPalette; + LPDDRAWI_DDRAWPALETTE_INT lp16DDPalette; + }; + __GNU_EXTENSION union { + LPDDRAWI_DDRAWCLIPPER_LCL lpDDClipper; + LPDDRAWI_DDRAWCLIPPER_INT lp16DDClipper; + }; + DWORD dwModeCreatedIn; + DWORD dwBackBufferCount; + DDCOLORKEY ddckCKDestBlt; + DDCOLORKEY ddckCKSrcBlt; + ULONG_PTR hDC; + ULONG_PTR dwReserved1; + DDCOLORKEY ddckCKSrcOverlay; + DDCOLORKEY ddckCKDestOverlay; + LPDDRAWI_DDRAWSURFACE_INT lpSurfaceOverlaying; + DBLNODE dbnOverlayNode; + RECT rcOverlaySrc; + RECT rcOverlayDest; + DWORD dwClrXparent; + DWORD dwAlpha; + LONG lOverlayX; + LONG lOverlayY; +} DDRAWI_DDRAWSURFACE_LCL; + +#define DDRAWISURF_ATTACHED 0x00000001L +#define DDRAWISURF_IMPLICITCREATE 0x00000002L +#define DDRAWISURF_ISFREE 0x00000004L +#define DDRAWISURF_ATTACHED_FROM 0x00000008L +#define DDRAWISURF_IMPLICITROOT 0x00000010L +#define DDRAWISURF_PARTOFPRIMARYCHAIN 0x00000020L +#define DDRAWISURF_DATAISALIASED 0x00000040L +#define DDRAWISURF_HASDC 0x00000080L +#define DDRAWISURF_HASCKEYDESTOVERLAY 0x00000100L +#define DDRAWISURF_HASCKEYDESTBLT 0x00000200L +#define DDRAWISURF_HASCKEYSRCOVERLAY 0x00000400L +#define DDRAWISURF_HASCKEYSRCBLT 0x00000800L +#define DDRAWISURF_LOCKEXCLUDEDCURSOR 0x00001000L +#define DDRAWISURF_HASPIXELFORMAT 0x00002000L +#define DDRAWISURF_HASOVERLAYDATA 0x00004000L +#define DDRAWISURF_SETGAMMA 0x00008000L +#define DDRAWISURF_SW_CKEYDESTOVERLAY 0x00010000L +#define DDRAWISURF_SW_CKEYDESTBLT 0x00020000L +#define DDRAWISURF_SW_CKEYSRCOVERLAY 0x00040000L +#define DDRAWISURF_SW_CKEYSRCBLT 0x00080000L +#define DDRAWISURF_HW_CKEYDESTOVERLAY 0x00100000L +#define DDRAWISURF_HW_CKEYDESTBLT 0x00200000L +#define DDRAWISURF_HW_CKEYSRCOVERLAY 0x00400000L +#define DDRAWISURF_HW_CKEYSRCBLT 0x00800000L +#define DDRAWISURF_INMASTERSPRITELIST 0x01000000L +#define DDRAWISURF_HELCB 0x02000000L +#define DDRAWISURF_FRONTBUFFER 0x04000000L +#define DDRAWISURF_BACKBUFFER 0x08000000L +#define DDRAWISURF_INVALID 0x10000000L +#define DDRAWISURF_DCIBUSY 0x20000000L +#define DDRAWISURF_GETDCNULL 0x40000000L +#define DDRAWISURF_STEREOSURFACELEFT 0x20000000L +#define DDRAWISURF_DRIVERMANAGED 0x40000000L +#define DDRAWISURF_DCILOCK 0x80000000L + +/* palettes */ +typedef struct _DDRAWI_DDRAWPALETTE_INT { + LPVOID lpVtbl; + LPDDRAWI_DDRAWPALETTE_LCL lpLcl; + LPDDRAWI_DDRAWPALETTE_INT lpLink; + DWORD dwIntRefCnt; +} DDRAWI_DDRAWPALETTE_INT; + +typedef struct _DDRAWI_DDRAWPALETTE_GBL { + DWORD dwRefCnt; + DWORD dwFlags; + LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; + DWORD dwProcessId; + LPPALETTEENTRY lpColorTable; + __GNU_EXTENSION union { + ULONG_PTR dwReserved1; + HPALETTE hHELGDIPalette; + }; + DWORD dwDriverReserved; + DWORD dwContentsStamp; + DWORD dwSaveStamp; + DWORD dwHandle; +} DDRAWI_DDRAWPALETTE_GBL; + +#define DDRAWIPAL_256 0x00000001 +#define DDRAWIPAL_16 0x00000002 +#define DDRAWIPAL_GDI 0x00000004 +#define DDRAWIPAL_STORED_8 0x00000008 +#define DDRAWIPAL_STORED_16 0x00000010 +#define DDRAWIPAL_STORED_24 0x00000020 +#define DDRAWIPAL_EXCLUSIVE 0x00000040 +#define DDRAWIPAL_INHEL 0x00000080 +#define DDRAWIPAL_DIRTY 0x00000100 +#define DDRAWIPAL_ALLOW256 0x00000200 +#define DDRAWIPAL_4 0x00000400 +#define DDRAWIPAL_2 0x00000800 +#define DDRAWIPAL_STORED_8INDEX 0x00001000 +#define DDRAWIPAL_ALPHA 0x00002000 + +#define D3DFORMAT_OP_TEXTURE 0x00000001L +#define D3DFORMAT_OP_VOLUMETEXTURE 0x00000002L +#define D3DFORMAT_OP_CUBETEXTURE 0x00000004L +#define D3DFORMAT_OP_OFFSCREEN_RENDERTARGET 0x00000008L +#define D3DFORMAT_OP_SAME_FORMAT_RENDERTARGET 0x00000010L +#define D3DFORMAT_OP_ZSTENCIL 0x00000040L +#define D3DFORMAT_OP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH 0x00000080L +#define D3DFORMAT_OP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET 0x00000100L +#define D3DFORMAT_OP_DISPLAYMODE 0x00000400L +#define D3DFORMAT_OP_3DACCELERATION 0x00000800L +#define D3DFORMAT_OP_PIXELSIZE 0x00001000L +#define D3DFORMAT_OP_CONVERT_TO_ARGB 0x00002000L +#define D3DFORMAT_OP_OFFSCREENPLAIN 0x00004000L +#define D3DFORMAT_OP_SRGBREAD 0x00008000L +#define D3DFORMAT_OP_BUMPMAP 0x00010000L +#define D3DFORMAT_OP_NOFILTER 0x00040000L +#define DDPF_D3DFORMAT 0x00200000l +#define DDPF_NOVEL_TEXTURE_FORMAT 0x00100000l +#define D3DFORMAT_MEMBEROFGROUP_ARGB 0x00080000L +#define D3DFORMAT_OP_SRGBWRITE 0x00100000L +#define D3DFORMAT_OP_NOALPHABLEND 0x00200000L +#define D3DFORMAT_OP_AUTOGENMIPMAP 0x00400000L +#define D3DFORMAT_OP_VERTEXTEXTURE 0x00800000L +#define D3DFORMAT_OP_NOTEXCOORDWRAPNORMIP 0x01000000L +#define DELETED_OK 0 +#define DELETED_LASTONE 1 +#define DELETED_NOTFOUND 2 +#define DDCALLBACKSSIZE_V1 (offsetof(DDHAL_DDCALLBACKS, SetExclusiveMode)) +#define DDCALLBACKSSIZE sizeof( DDHAL_DDCALLBACKS ) +#define DDRAWICLIP_WATCHWINDOW 0x00000001 +#define DDRAWICLIP_ISINITIALIZED 0x00000002 +#define DDRAWICLIP_INMASTERSPRITELIST 0x00000004 +#define PFINDEX_UNINITIALIZED (0UL) +#define PFINDEX_UNSUPPORTED (~0UL) +#define ROP_HAS_SOURCE 0x00000001l +#define ROP_HAS_PATTERN 0x00000002l +#define ROP_HAS_SOURCEPATTERN ROP_HAS_SOURCE | ROP_HAS_PATTERN +#define DDRAWIVPORT_ON 0x00000001 +#define DDRAWIVPORT_SOFTWARE_AUTOFLIP 0x00000002 +#define DDRAWIVPORT_COLORKEYANDINTERP 0x00000004 +#define DDRAWIVPORT_NOKERNELHANDLES 0x00000008 +#define DDRAWIVPORT_SOFTWARE_BOB 0x00000010 +#define DDRAWIVPORT_VBION 0x00000020 +#define DDRAWIVPORT_VIDEOON 0x00000040 +#define DDRAWI_GETCOLOR 0x0001 +#define DDRAWI_SETCOLOR 0x0002 +#define DDMCQUERY_READ 0x00000001 +#define DDWAITVB_I_TESTVB 0x80000006 + +#define DDBLT_ANYALPHA \ + (DDBLT_ALPHASRCSURFACEOVERRIDE | DDBLT_ALPHASRCCONSTOVERRIDE | \ + DDBLT_ALPHASRC | DDBLT_ALPHADESTSURFACEOVERRIDE | \ + DDBLT_ALPHADESTCONSTOVERRIDE | DDBLT_ALPHADEST) + +#define DDHAL_ALIGNVALIDCAPS (DDSCAPS_OFFSCREENPLAIN | DDSCAPS_EXECUTEBUFFER | \ + DDSCAPS_OVERLAY | DDSCAPS_TEXTURE | \ + DDSCAPS_ZBUFFER | DDSCAPS_ALPHA | DDSCAPS_FLIP ) + +#define DDHALINFOSIZE_V2 sizeof(DDHALINFO) + +#define DDOVER_ANYALPHA \ + (DDOVER_ALPHASRCSURFACEOVERRIDE | DDOVER_ALPHASRCCONSTOVERRIDE | \ + DDOVER_ALPHASRC | DDOVER_ALPHADESTSURFACEOVERRIDE | \ + DDOVER_ALPHADESTCONSTOVERRIDE | DDOVER_ALPHADEST) + +typedef struct _DDRAWI_DDRAWPALETTE_LCL { + DWORD lpPalMore; + LPDDRAWI_DDRAWPALETTE_GBL lpGbl; + ULONG_PTR dwUnused0; + DWORD dwLocalRefCnt; +#ifndef _NO_COM + IUnknown *pUnkOuter; +#else + PVOID pUnkOuter; +#endif + LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; + ULONG_PTR dwReserved1; + /* DirectX 6.0 */ + ULONG_PTR dwDDRAWReserved1; + ULONG_PTR dwDDRAWReserved2; + ULONG_PTR dwDDRAWReserved3; +} DDRAWI_DDRAWPALETTE_LCL; + +typedef struct _DDMCCOMPBUFFERINFO { + DWORD dwSize; + DWORD dwNumCompBuffers; + DWORD dwWidthToCreate; + DWORD dwHeightToCreate; + DWORD dwBytesToAllocate; + DDSCAPS2 ddCompCaps; + DDPIXELFORMAT ddPixelFormat; +} DDMCCOMPBUFFERINFO, *LPDDMCCOMPBUFFERINFO; + +typedef struct _DDMCBUFFERINFO { + DWORD dwSize; + LPDDRAWI_DDRAWSURFACE_LCL lpCompSurface; + DWORD dwDataOffset; + DWORD dwDataSize; + LPVOID lpPrivate; +} DDMCBUFFERINFO, *LPDDMCBUFFERINFO; + +typedef struct _DDHAL_GETDRIVERSTATEDATA { + DWORD dwFlags; + __GNU_EXTENSION union { + ULONG_PTR dwhContext; + }; + LPDWORD lpdwStates; + DWORD dwLength; + HRESULT ddRVal; +} DDHAL_GETDRIVERSTATEDATA; + +typedef struct _DDHAL_ADDATTACHEDSURFACEDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; + LPDDRAWI_DDRAWSURFACE_LCL lpSurfAttached; + HRESULT ddRVal; + LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface; +} DDHAL_ADDATTACHEDSURFACEDATA; + +typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; + LPDDRAWI_DDRAWSURFACE_LCL lpDestSurface; + DWORD dwInputDataSize; + LPVOID lpInputData; + DWORD dwOutputDataSize; + LPVOID lpOutputData; + HRESULT ddRVal; + LPDDHALMOCOMPCB_BEGINFRAME BeginMoCompFrame; +} DDHAL_BEGINMOCOMPFRAMEDATA; + +typedef struct _DDHAL_COLORCONTROLDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; + LPDDCOLORCONTROL lpColorData; + DWORD dwFlags; + HRESULT ddRVal; + LPDDHALCOLORCB_COLORCONTROL ColorControl; +} DDHAL_COLORCONTROLDATA; + +typedef struct _DDHAL_CREATEMOCOMPDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; + LPGUID lpGuid; + DWORD dwUncompWidth; + DWORD dwUncompHeight; + DDPIXELFORMAT ddUncompPixelFormat; + LPVOID lpData; + DWORD dwDataSize; + HRESULT ddRVal; + LPDDHALMOCOMPCB_CREATE CreateMoComp; +} DDHAL_CREATEMOCOMPDATA; + +typedef struct _DDHAL_DESTROYMOCOMPDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; + HRESULT ddRVal; + LPDDHALMOCOMPCB_DESTROY DestroyMoComp; +} DDHAL_DESTROYMOCOMPDATA; + +typedef struct _DDHAL_ENDMOCOMPFRAMEDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; + LPVOID lpInputData; + DWORD dwInputDataSize; + HRESULT ddRVal; + LPDDHALMOCOMPCB_ENDFRAME EndMoCompFrame; +} DDHAL_ENDMOCOMPFRAMEDATA; + +typedef struct _DDHAL_FLIPTOGDISURFACEDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + DWORD dwToGDI; + DWORD dwReserved; + HRESULT ddRVal; + LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface; +} DDHAL_FLIPTOGDISURFACEDATA; + +typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + DDSCAPS DDSCaps; + DWORD dwTotal; + DWORD dwFree; + HRESULT ddRVal; + LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory; + DDSCAPSEX ddsCapsEx; +} DDHAL_GETAVAILDRIVERMEMORYDATA; + +typedef struct _DDHAL_GETBLTSTATUSDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; + DWORD dwFlags; + HRESULT ddRVal; + LPDDHALSURFCB_GETBLTSTATUS GetBltStatus; +} DDHAL_GETBLTSTATUSDATA; + +typedef struct _DDHAL_GETFLIPSTATUSDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; + DWORD dwFlags; + HRESULT ddRVal; + LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus; +} DDHAL_GETFLIPSTATUSDATA; + +typedef struct _DDHAL_GETINTERNALMOCOMPDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPGUID lpGuid; + DWORD dwWidth; + DWORD dwHeight; + DDPIXELFORMAT ddPixelFormat; + DWORD dwScratchMemAlloc; + HRESULT ddRVal; + LPDDHALMOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo; +} DDHAL_GETINTERNALMOCOMPDATA; + +typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPGUID lpGuid; + DWORD dwWidth; + DWORD dwHeight; + DDPIXELFORMAT ddPixelFormat; + DWORD dwNumTypesCompBuffs; + LPDDMCCOMPBUFFERINFO lpCompBuffInfo; + HRESULT ddRVal; + LPDDHALMOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo; +} DDHAL_GETMOCOMPCOMPBUFFDATA; + +typedef struct _DDHAL_GETMOCOMPGUIDSDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + DWORD dwNumGuids; + LPGUID lpGuids; + HRESULT ddRVal; + LPDDHALMOCOMPCB_GETGUIDS GetMoCompGuids; +} DDHAL_GETMOCOMPGUIDSDATA; + +typedef struct _DDHAL_GETMOCOMPFORMATSDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPGUID lpGuid; + DWORD dwNumFormats; + LPDDPIXELFORMAT lpFormats; + HRESULT ddRVal; + LPDDHALMOCOMPCB_GETFORMATS GetMoCompFormats; +} DDHAL_GETMOCOMPFORMATSDATA; + +typedef struct _DDHAL_GETSCANLINEDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + DWORD dwScanLine; + HRESULT ddRVal; + LPDDHAL_GETSCANLINE GetScanLine; +} DDHAL_GETSCANLINEDATA; + +typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; + LPDDRAWI_DDRAWSURFACE_LCL lpSurface; + DWORD dwFlags; + HRESULT ddRVal; + LPDDHALMOCOMPCB_QUERYSTATUS QueryMoCompStatus; +} DDHAL_QUERYMOCOMPSTATUSDATA; + +typedef struct _DDHAL_RENDERMOCOMPDATA { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; + DWORD dwNumBuffers; + LPDDMCBUFFERINFO lpBufferInfo; + DWORD dwFunction; + LPVOID lpInputData; + DWORD dwInputDataSize; + LPVOID lpOutputData; + DWORD dwOutputDataSize; + HRESULT ddRVal; + LPDDHALMOCOMPCB_RENDER RenderMoComp; +} DDHAL_RENDERMOCOMPDATA; + +typedef struct _DDHAL_SETCOLORKEYDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; + DWORD dwFlags; + DDCOLORKEY ckNew; + HRESULT ddRVal; + LPDDHALSURFCB_SETCOLORKEY SetColorKey; +} DDHAL_SETCOLORKEYDATA; + +typedef struct _DDHAL_SETOVERLAYPOSITIONDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface; + LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface; + LONG lXPos; + LONG lYPos; + HRESULT ddRVal; + LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition; +} DDHAL_SETOVERLAYPOSITIONDATA; + +typedef struct _DDHAL_UPDATEOVERLAYDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface; + RECTL rDest; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface; + RECTL rSrc; + DWORD dwFlags; + DDOVERLAYFX overlayFX; + HRESULT ddRVal; + LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay; +} DDHAL_UPDATEOVERLAYDATA; + +typedef struct _DDHAL_WAITFORVERTICALBLANKDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + DWORD dwFlags; + DWORD bIsInVB; + ULONG_PTR hEvent; + HRESULT ddRVal; + LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank; +} DDHAL_WAITFORVERTICALBLANKDATA; + +typedef struct _DDHAL_DRVSETCOLORKEYDATA { + LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; + DWORD dwFlags; + DDCOLORKEY ckNew; + HRESULT ddRVal; + LPDDHAL_SETCOLORKEY SetColorKey; +} DDHAL_DRVSETCOLORKEYDATA; + +typedef struct _DDMONITORINFO { + WORD Manufacturer; + WORD Product; + DWORD SerialNumber; + GUID DeviceIdentifier; + int Mode640x480; + int Mode800x600; + int Mode1024x768; + int Mode1280x1024; + int Mode1600x1200; + int ModeReserved1; + int ModeReserved2; + int ModeReserved3; +} DDMONITORINFO, FAR *LPDDMONITORINFO; + +typedef struct _DDRAWI_DDRAWCLIPPER_INT { + LPVOID lpVtbl; + LPDDRAWI_DDRAWCLIPPER_LCL lpLcl; + LPDDRAWI_DDRAWCLIPPER_INT lpLink; + DWORD dwIntRefCnt; +} DDRAWI_DDRAWCLIPPER_INT; + +typedef struct _DDHAL_UPDATENONLOCALHEAPDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + DWORD dwHeap; + FLATPTR fpGARTLin; + FLATPTR fpGARTDev; + ULONG_PTR ulPolicyMaxBytes; + HRESULT ddRVal; + LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap; +} DDHAL_UPDATENONLOCALHEAPDATA; + +typedef struct _DDHAL_SETCLIPLISTDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; + HRESULT ddRVal; + LPDDHALSURFCB_SETCLIPLIST SetClipList; +} DDHAL_SETCLIPLISTDATA; + +typedef struct _DDRAWI_DDMOTIONCOMP_LCL { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + GUID guid; + DWORD dwUncompWidth; + DWORD dwUncompHeight; + DDPIXELFORMAT ddUncompPixelFormat; + DWORD dwInternalFlags; + DWORD dwRefCnt; + DWORD dwProcessId; + HANDLE hMoComp; + DWORD dwDriverReserved1; + DWORD dwDriverReserved2; + DWORD dwDriverReserved3; + LPVOID lpDriverReserved1; + LPVOID lpDriverReserved2; + LPVOID lpDriverReserved3; +} DDRAWI_DDMOTIONCOMP_LCL; + +typedef struct _DDRAWI_DDMOTIONCOMP_INT { + LPVOID lpVtbl; + LPDDRAWI_DDMOTIONCOMP_LCL lpLcl; + LPDDRAWI_DDMOTIONCOMP_INT lpLink; + DWORD dwIntRefCnt; +} DDRAWI_DDMOTIONCOMP_INT; + +typedef struct _DDRAWI_DDVIDEOPORT_LCL { + LPDDRAWI_DIRECTDRAW_LCL lpDD; + DDVIDEOPORTDESC ddvpDesc; + DDVIDEOPORTINFO ddvpInfo; + LPDDRAWI_DDRAWSURFACE_INT lpSurface; + LPDDRAWI_DDRAWSURFACE_INT lpVBISurface; + LPDDRAWI_DDRAWSURFACE_INT *lpFlipInts; + DWORD dwNumAutoflip; + DWORD dwProcessID; + DWORD dwStateFlags; + DWORD dwFlags; + DWORD dwRefCnt; + FLATPTR fpLastFlip; + ULONG_PTR dwReserved1; + ULONG_PTR dwReserved2; + HANDLE hDDVideoPort; + DWORD dwNumVBIAutoflip; + LPDDVIDEOPORTDESC lpVBIDesc; + LPDDVIDEOPORTDESC lpVideoDesc; + LPDDVIDEOPORTINFO lpVBIInfo; + LPDDVIDEOPORTINFO lpVideoInfo; + DWORD dwVBIProcessID; + LPDDRAWI_DDVIDEOPORT_INT lpVPNotify; +} DDRAWI_DDVIDEOPORT_LCL; + +typedef struct _DDRAWI_DDVIDEOPORT_INT { + LPVOID lpVtbl; + LPDDRAWI_DDVIDEOPORT_LCL lpLcl; + LPDDRAWI_DDVIDEOPORT_INT lpLink; + DWORD dwIntRefCnt; + DWORD dwFlags; +} DDRAWI_DDVIDEOPORT_INT; + +typedef struct _DDRAWI_DDRAWCLIPPER_LCL { + DWORD lpClipMore; + LPDDRAWI_DDRAWCLIPPER_GBL lpGbl; + LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; + DWORD dwLocalRefCnt; +#ifndef _NO_COM + IUnknown *pUnkOuter; +#else + PVOID pUnkOuter; +#endif + LPDDRAWI_DIRECTDRAW_INT lpDD_int; + ULONG_PTR dwReserved1; +#ifndef _NO_COM + IUnknown *pAddrefedThisOwner; +#else + PVOID pAddrefedThisOwner; +#endif +} DDRAWI_DDRAWCLIPPER_LCL; + +typedef struct _DDRAWI_DDRAWCLIPPER_GBL { + DWORD dwRefCnt; + DWORD dwFlags; + LPDDRAWI_DIRECTDRAW_GBL lpDD; + DWORD dwProcessId; + ULONG_PTR dwReserved1; + ULONG_PTR hWnd; + LPRGNDATA lpStaticClipList; +} DDRAWI_DDRAWCLIPPER_GBL; + +typedef BOOL (PASCAL *LPDDHEL_INIT)(LPDDRAWI_DIRECTDRAW_GBL,BOOL); + +extern HRESULT DDAPI +LateAllocateSurfaceMem( + LPDIRECTDRAWSURFACE lpSurface, + DWORD dwPleaseAllocType, + DWORD dwWidthInBytesOrSize, + DWORD dwHeight); + +LPDIRECTDRAWSURFACE GetNextMipMap( + LPDIRECTDRAWSURFACE lpLevel); + +typedef struct IDirectDrawClipperVtbl DIRECTDRAWCLIPPERCALLBACKS; +typedef struct IDirectDrawPaletteVtbl DIRECTDRAWPALETTECALLBACKS; +typedef struct IDirectDrawSurfaceVtbl DIRECTDRAWSURFACECALLBACKS; +typedef struct IDirectDrawSurface2Vtbl DIRECTDRAWSURFACE2CALLBACKS; +typedef struct IDirectDrawSurface3Vtbl DIRECTDRAWSURFACE3CALLBACKS; +typedef struct IDirectDrawSurface4Vtbl DIRECTDRAWSURFACE4CALLBACKS; +typedef struct IDirectDrawSurface7Vtbl DIRECTDRAWSURFACE7CALLBACKS; +typedef struct IDirectDrawColorControlVtbl DIRECTDRAWCOLORCONTROLCALLBACKS; +typedef struct IDirectDrawVtbl DIRECTDRAWCALLBACKS; +typedef struct IDirectDraw2Vtbl DIRECTDRAW2CALLBACKS; +typedef struct IDirectDraw4Vtbl DIRECTDRAW4CALLBACKS; +typedef struct IDirectDraw7Vtbl DIRECTDRAW7CALLBACKS; +typedef struct IDirectDrawKernelVtbl DIRECTDRAWKERNELCALLBACKS; +typedef struct IDirectDrawSurfaceKernelVtbl DIRECTDRAWSURFACEKERNELCALLBACKS; +typedef struct IDirectDrawGammaControlVtbl DIRECTDRAWGAMMACONTROLCALLBACKS; + +typedef DIRECTDRAWCLIPPERCALLBACKS *LPDIRECTDRAWCLIPPERCALLBACKS; +typedef DIRECTDRAWPALETTECALLBACKS *LPDIRECTDRAWPALETTECALLBACKS; +typedef DIRECTDRAWSURFACECALLBACKS *LPDIRECTDRAWSURFACECALLBACKS; +typedef DIRECTDRAWCALLBACKS *LPDIRECTDRAWCALLBACKS; + +HRESULT CALLBACK +D3DParseUnknownCommand ( + LPVOID lpvCommands, + LPVOID *lplpvReturnedCommand); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* __DDRAWI_INCLUDED__ */ diff --git a/include/psdk/ddrawint.h b/include/psdk/ddrawint.h new file mode 100644 index 00000000000..927e7f88690 --- /dev/null +++ b/include/psdk/ddrawint.h @@ -0,0 +1,1336 @@ +/* + * ddrawint.h + * + * DirectDraw NT driver interface + * + * Contributors: + * Created by Ge van Geldorp + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __DD_INCLUDED__ +#define __DD_INCLUDED__ + +DEFINE_GUID( GUID_MiscellaneousCallbacks, 0xEFD60CC0, 0x49e7, 0x11d0, 0x88, 0x9d, 0x0, 0xaa, 0x0, 0xbb, 0xb7, 0x6a); +DEFINE_GUID( GUID_Miscellaneous2Callbacks, 0x406B2F00, 0x3E5A, 0x11D1, 0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A); +DEFINE_GUID( GUID_VideoPortCallbacks, 0xefd60cc1, 0x49e7, 0x11d0, 0x88, 0x9d, 0x0, 0xaa, 0x0, 0xbb, 0xb7, 0x6a); +DEFINE_GUID( GUID_ColorControlCallbacks, 0xefd60cc2, 0x49e7, 0x11d0, 0x88, 0x9d, 0x0, 0xaa, 0x0, 0xbb, 0xb7, 0x6a); +DEFINE_GUID( GUID_MotionCompCallbacks, 0xb1122b40, 0x5dA5, 0x11d1, 0x8f, 0xcF, 0x00, 0xc0, 0x4f, 0xc2, 0x9b, 0x4e); +DEFINE_GUID( GUID_VideoPortCaps, 0xefd60cc3, 0x49e7, 0x11d0, 0x88, 0x9d, 0x0, 0xaa, 0x0, 0xbb, 0xb7, 0x6a); +DEFINE_GUID( GUID_D3DCaps, 0x7bf06991, 0x8794, 0x11d0, 0x91, 0x39, 0x08, 0x00, 0x36, 0xd2, 0xef, 0x02); +DEFINE_GUID( GUID_D3DExtendedCaps, 0x7de41f80, 0x9d93, 0x11d0, 0x89, 0xab, 0x00, 0xa0, 0xc9, 0x05, 0x41, 0x29); +DEFINE_GUID( GUID_D3DCallbacks, 0x7bf06990, 0x8794, 0x11d0, 0x91, 0x39, 0x08, 0x00, 0x36, 0xd2, 0xef, 0x02); +DEFINE_GUID( GUID_D3DCallbacks2, 0xba584e1, 0x70b6, 0x11d0, 0x88, 0x9d, 0x0, 0xaa, 0x0, 0xbb, 0xb7, 0x6a); +DEFINE_GUID( GUID_D3DCallbacks3, 0xddf41230, 0xec0a, 0x11d0, 0xa9, 0xb6, 0x00, 0xaa, 0x00, 0xc0, 0x99, 0x3e); +DEFINE_GUID( GUID_NonLocalVidMemCaps, 0x86c4fa80, 0x8d84, 0x11d0, 0x94, 0xe8, 0x00, 0xc0, 0x4f, 0xc3, 0x41, 0x37); +DEFINE_GUID( GUID_KernelCallbacks, 0x80863800, 0x6B06, 0x11D0, 0x9B, 0x06, 0x0, 0xA0, 0xC9, 0x03, 0xA3, 0xB8); +DEFINE_GUID( GUID_KernelCaps, 0xFFAA7540, 0x7AA8, 0x11D0, 0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8); +DEFINE_GUID( GUID_ZPixelFormats, 0x93869880, 0x36cf, 0x11d1, 0x9b, 0x1b, 0x0, 0xaa, 0x0, 0xbb, 0xb8, 0xae); +DEFINE_GUID( GUID_DDMoreCaps, 0x880baf30, 0xb030, 0x11d0, 0x8e, 0xa7, 0x00, 0x60, 0x97, 0x97, 0xea, 0x5b); +DEFINE_GUID( GUID_D3DParseUnknownCommandCallback, 0x2e04ffa0, 0x98e4, 0x11d1, 0x8c, 0xe1, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); +DEFINE_GUID( GUID_NTCallbacks, 0x6fe9ecde, 0xdf89, 0x11d1, 0x9d, 0xb0, 0x00, 0x60, 0x08, 0x27, 0x71, 0xba); +DEFINE_GUID( GUID_DDMoreSurfaceCaps, 0x3b8a0466, 0xf269, 0x11d1, 0x88, 0x0b, 0x0, 0xc0, 0x4f, 0xd9, 0x30, 0xc5); +DEFINE_GUID( GUID_GetHeapAlignment, 0x42e02f16, 0x7b41, 0x11d2, 0x8b, 0xff, 0x0, 0xa0, 0xc9, 0x83, 0xea, 0xf6); +DEFINE_GUID( GUID_UpdateNonLocalHeap, 0x42e02f17, 0x7b41, 0x11d2, 0x8b, 0xff, 0x0, 0xa0, 0xc9, 0x83, 0xea, 0xf6); +DEFINE_GUID( GUID_NTPrivateDriverCaps, 0xfad16a23, 0x7b66, 0x11d2, 0x83, 0xd7, 0x0, 0xc0, 0x4f, 0x7c, 0xe5, 0x8c); +DEFINE_GUID( GUID_DDStereoMode, 0xf828169c, 0xa8e8, 0x11d2, 0xa1, 0xf2, 0x0, 0xa0, 0xc9, 0x83, 0xea, 0xf6); +DEFINE_GUID( GUID_VPE2Callbacks, 0x52882147, 0x2d47, 0x469a, 0xa0, 0xd1, 0x3, 0x45, 0x58, 0x90, 0xf6, 0xc8); + + +#ifndef GUID_DEFS_ONLY + +#ifndef _NO_DDRAWINT_NO_COM +#ifndef _NO_COM +#define _NO_COM +#include +#include +#undef _NO_COM +#else +#include +#include +#endif +#else +#include +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef MAKE_HRESULT // fixme this if statment should not be here, but MAKE_HRESULT should be here +#define MAKE_HRESULT(sev,fac,code) ((HRESULT) (((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code))) ) +#endif + +#ifndef FLATPTR_DEFINED +typedef ULONG_PTR FLATPTR; +#define FLATPTR_DEFINED +#endif + +typedef struct _DD_VIDEOPORT_LOCAL *PDD_VIDEOPORT_LOCAL; + +/************************************************************************/ +/* _DD_GETHEAPALIGNMENTDATA is defined in dmemmgr.h */ + /************************************************************************/ +struct _DD_GETHEAPALIGNMENTDATA; +#ifndef DD_GETHEAPALIGNMENTDATA_DECLARED +typedef struct _DD_GETHEAPALIGNMENTDATA *PDD_GETHEAPALIGNMENTDATA; +#define DD_GETHEAPALIGNMENTDATA_DECLARED +#endif + +/************************************************************************/ +/* Video memory info structures */ +/************************************************************************/ + +typedef struct _VIDEOMEMORY { + DWORD dwFlags; + FLATPTR fpStart; + __GNU_EXTENSION union { + FLATPTR fpEnd; + DWORD dwWidth; + }; + DDSCAPS ddsCaps; + DDSCAPS ddsCapsAlt; + __GNU_EXTENSION union { + struct _VMEMHEAP *lpHeap; + DWORD dwHeight; + }; +} VIDEOMEMORY, *PVIDEOMEMORY; + +typedef struct _VIDEOMEMORYINFO { + FLATPTR fpPrimary; + DWORD dwFlags; + DWORD dwDisplayWidth; + DWORD dwDisplayHeight; + LONG lDisplayPitch; + DDPIXELFORMAT ddpfDisplay; + DWORD dwOffscreenAlign; + DWORD dwOverlayAlign; + DWORD dwTextureAlign; + DWORD dwZBufferAlign; + DWORD dwAlphaAlign; + PVOID pvPrimary; +} VIDEOMEMORYINFO, *LPVIDEOMEMORYINFO; + +typedef struct _DD_DIRECTDRAW_GLOBAL { + PVOID dhpdev; + ULONG_PTR dwReserved1; + ULONG_PTR dwReserved2; + LPDDVIDEOPORTCAPS lpDDVideoPortCaps; +} DD_DIRECTDRAW_GLOBAL, *PDD_DIRECTDRAW_GLOBAL; + +typedef struct _DD_DIRECTDRAW_LOCAL { + PDD_DIRECTDRAW_GLOBAL lpGbl; +} DD_DIRECTDRAW_LOCAL, *PDD_DIRECTDRAW_LOCAL; + +typedef struct _DD_SURFACE_GLOBAL { + __GNU_EXTENSION union { + DWORD dwBlockSizeY; + LONG lSlicePitch; + }; + __GNU_EXTENSION union { + PVIDEOMEMORY lpVidMemHeap; + DWORD dwBlockSizeX; + DWORD dwUserMemSize; + }; + FLATPTR fpVidMem; + __GNU_EXTENSION union { + LONG lPitch; + DWORD dwLinearSize; + }; + LONG yHint; + LONG xHint; + DWORD wHeight; + DWORD wWidth; + ULONG_PTR dwReserved1; + DDPIXELFORMAT ddpfSurface; + FLATPTR fpHeapOffset; + HANDLE hCreatorProcess; +} DD_SURFACE_GLOBAL, *PDD_SURFACE_GLOBAL; + +typedef struct _DD_SURFACE_MORE { + DWORD dwMipMapCount; + PDD_VIDEOPORT_LOCAL lpVideoPort; + DWORD dwOverlayFlags; + DDSCAPSEX ddsCapsEx; + DWORD dwSurfaceHandle; +} DD_SURFACE_MORE, *PDD_SURFACE_MORE; + +typedef struct _DD_ATTACHLIST *PDD_ATTACHLIST; + +typedef struct _DD_SURFACE_LOCAL { + PDD_SURFACE_GLOBAL lpGbl; + DWORD dwFlags; + DDSCAPS ddsCaps; + ULONG_PTR dwReserved1; + __GNU_EXTENSION union { + DDCOLORKEY ddckCKSrcOverlay; + DDCOLORKEY ddckCKSrcBlt; + }; + __GNU_EXTENSION union { + DDCOLORKEY ddckCKDestOverlay; + DDCOLORKEY ddckCKDestBlt; + }; + PDD_SURFACE_MORE lpSurfMore; + PDD_ATTACHLIST lpAttachList; + PDD_ATTACHLIST lpAttachListFrom; + RECT rcOverlaySrc; +} DD_SURFACE_LOCAL, *PDD_SURFACE_LOCAL; + +typedef struct _DD_ATTACHLIST { + PDD_ATTACHLIST lpLink; + PDD_SURFACE_LOCAL lpAttached; +} DD_ATTACHLIST; + +typedef struct _DD_SURFACE_INT { + PDD_SURFACE_LOCAL lpLcl; +} DD_SURFACE_INT, *PDD_SURFACE_INT; + +/************************************************************************/ +/* DDI representation of the DirectDrawPalette object */ +/************************************************************************/ + +typedef struct _DD_PALETTE_GLOBAL { + ULONG_PTR Reserved1; +} DD_PALETTE_GLOBAL, *PDD_PALETTE_GLOBAL; + +/************************************************************************/ +/* DDI representation of the DirectDrawVideo object */ +/************************************************************************/ + +typedef struct { + PDD_DIRECTDRAW_LOCAL lpDD; + GUID guid; + DWORD dwUncompWidth; + DWORD dwUncompHeight; + DDPIXELFORMAT ddUncompPixelFormat; + DWORD dwDriverReserved1; + DWORD dwDriverReserved2; + DWORD dwDriverReserved3; + LPVOID lpDriverReserved1; + LPVOID lpDriverReserved2; + LPVOID lpDriverReserved3; +} DD_MOTIONCOMP_LOCAL, *PDD_MOTIONCOMP_LOCAL; + +typedef struct _DD_VIDEOPORT_LOCAL { + PDD_DIRECTDRAW_LOCAL lpDD; + DDVIDEOPORTDESC ddvpDesc; + DDVIDEOPORTINFO ddvpInfo; + PDD_SURFACE_INT lpSurface; + PDD_SURFACE_INT lpVBISurface; + DWORD dwNumAutoflip; + DWORD dwNumVBIAutoflip; + ULONG_PTR dwReserved1; + ULONG_PTR dwReserved2; + ULONG_PTR dwReserved3; +} DD_VIDEOPORT_LOCAL; + +/************************************************************************/ +/* IDirectDrawSurface callbacks */ +/************************************************************************/ + +typedef struct _DD_LOCKDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + PDD_SURFACE_LOCAL lpDDSurface; + DWORD bHasRect; + RECTL rArea; + LPVOID lpSurfData; + HRESULT ddRVal; + PVOID Lock; + DWORD dwFlags; + FLATPTR fpProcess; +} DD_LOCKDATA, *PDD_LOCKDATA; +typedef DWORD (WINAPI *PDD_SURFCB_LOCK)(PDD_LOCKDATA); + +typedef struct _DD_UNLOCKDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + PDD_SURFACE_LOCAL lpDDSurface; + HRESULT ddRVal; + PVOID Unlock; +} DD_UNLOCKDATA, *PDD_UNLOCKDATA; +typedef DWORD (WINAPI *PDD_SURFCB_UNLOCK)(PDD_UNLOCKDATA); + +#define DDABLT_SRCOVERDEST 0x00000001 +#define DDBLT_AFLAGS 0x80000000 + +typedef struct _DD_BLTDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + PDD_SURFACE_LOCAL lpDDDestSurface; + RECTL rDest; + PDD_SURFACE_LOCAL lpDDSrcSurface; + RECTL rSrc; + DWORD dwFlags; + DWORD dwROPFlags; + DDBLTFX bltFX; + HRESULT ddRVal; + PVOID Blt; + BOOL IsClipped; + RECTL rOrigDest; + RECTL rOrigSrc; + DWORD dwRectCnt; + LPRECT prDestRects; + DWORD dwAFlags; + DDARGB ddargbScaleFactors; +} DD_BLTDATA, *PDD_BLTDATA; +typedef DWORD (WINAPI *PDD_SURFCB_BLT)(PDD_BLTDATA); + +typedef struct _DD_UPDATEOVERLAYDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + PDD_SURFACE_LOCAL lpDDDestSurface; + RECTL rDest; + PDD_SURFACE_LOCAL lpDDSrcSurface; + RECTL rSrc; + DWORD dwFlags; + DDOVERLAYFX overlayFX; + HRESULT ddRVal; + PVOID UpdateOverlay; +} DD_UPDATEOVERLAYDATA, *PDD_UPDATEOVERLAYDATA; +typedef DWORD (WINAPI *PDD_SURFCB_UPDATEOVERLAY)(PDD_UPDATEOVERLAYDATA); + +typedef struct _DD_SETOVERLAYPOSITIONDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + PDD_SURFACE_LOCAL lpDDSrcSurface; + PDD_SURFACE_LOCAL lpDDDestSurface; + LONG lXPos; + LONG lYPos; + HRESULT ddRVal; + PVOID SetOverlayPosition; +} DD_SETOVERLAYPOSITIONDATA, *PDD_SETOVERLAYPOSITIONDATA; +typedef DWORD (WINAPI *PDD_SURFCB_SETOVERLAYPOSITION)(PDD_SETOVERLAYPOSITIONDATA); + +typedef struct _DD_SETPALETTEDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + PDD_SURFACE_LOCAL lpDDSurface; + PDD_PALETTE_GLOBAL lpDDPalette; + HRESULT ddRVal; + PVOID SetPalette; + BOOL Attach; +} DD_SETPALETTEDATA, *PDD_SETPALETTEDATA; +typedef DWORD (WINAPI *PDD_SURFCB_SETPALETTE)(PDD_SETPALETTEDATA); + +typedef struct _DD_FLIPDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + PDD_SURFACE_LOCAL lpSurfCurr; + PDD_SURFACE_LOCAL lpSurfTarg; + DWORD dwFlags; + HRESULT ddRVal; + PVOID Flip; + PDD_SURFACE_LOCAL lpSurfCurrLeft; + PDD_SURFACE_LOCAL lpSurfTargLeft; +} DD_FLIPDATA, *PDD_FLIPDATA; +typedef DWORD (WINAPI *PDD_SURFCB_FLIP)(PDD_FLIPDATA); + +typedef struct _DD_DESTROYSURFACEDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + PDD_SURFACE_LOCAL lpDDSurface; + HRESULT ddRVal; + PVOID DestroySurface; +} DD_DESTROYSURFACEDATA, *PDD_DESTROYSURFACEDATA; +typedef DWORD (WINAPI *PDD_SURFCB_DESTROYSURFACE)(PDD_DESTROYSURFACEDATA); + +typedef struct _DD_SETCLIPLISTDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + PDD_SURFACE_LOCAL lpDDSurface; + HRESULT ddRVal; + PVOID SetClipList; +} DD_SETCLIPLISTDATA, *PDD_SETCLIPLISTDATA; +typedef DWORD (WINAPI *PDD_SURFCB_SETCLIPLIST)(PDD_SETCLIPLISTDATA); + +typedef struct _DD_ADDATTACHEDSURFACEDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + PDD_SURFACE_LOCAL lpDDSurface; + PDD_SURFACE_LOCAL lpSurfAttached; + HRESULT ddRVal; + PVOID AddAttachedSurface; +} DD_ADDATTACHEDSURFACEDATA, *PDD_ADDATTACHEDSURFACEDATA; +typedef DWORD (WINAPI *PDD_SURFCB_ADDATTACHEDSURFACE)(PDD_ADDATTACHEDSURFACEDATA); + +typedef struct _DD_SETCOLORKEYDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + PDD_SURFACE_LOCAL lpDDSurface; + DWORD dwFlags; + DDCOLORKEY ckNew; + HRESULT ddRVal; + PVOID SetColorKey; +} DD_SETCOLORKEYDATA, *PDD_SETCOLORKEYDATA; +typedef DWORD (WINAPI *PDD_SURFCB_SETCOLORKEY)(PDD_SETCOLORKEYDATA); + +typedef struct _DD_GETBLTSTATUSDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + PDD_SURFACE_LOCAL lpDDSurface; + DWORD dwFlags; + HRESULT ddRVal; + PVOID GetBltStatus; +} DD_GETBLTSTATUSDATA, *PDD_GETBLTSTATUSDATA; +typedef DWORD (WINAPI *PDD_SURFCB_GETBLTSTATUS)(PDD_GETBLTSTATUSDATA); + +typedef struct _DD_GETFLIPSTATUSDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + PDD_SURFACE_LOCAL lpDDSurface; + DWORD dwFlags; + HRESULT ddRVal; + PVOID GetFlipStatus; +} DD_GETFLIPSTATUSDATA, *PDD_GETFLIPSTATUSDATA; +typedef DWORD (WINAPI *PDD_SURFCB_GETFLIPSTATUS)(PDD_GETFLIPSTATUSDATA); + +typedef struct DD_SURFACECALLBACKS { + DWORD dwSize; + DWORD dwFlags; + PDD_SURFCB_DESTROYSURFACE DestroySurface; + PDD_SURFCB_FLIP Flip; + PDD_SURFCB_SETCLIPLIST SetClipList; + PDD_SURFCB_LOCK Lock; + PDD_SURFCB_UNLOCK Unlock; + PDD_SURFCB_BLT Blt; + PDD_SURFCB_SETCOLORKEY SetColorKey; + PDD_SURFCB_ADDATTACHEDSURFACE AddAttachedSurface; + PDD_SURFCB_GETBLTSTATUS GetBltStatus; + PDD_SURFCB_GETFLIPSTATUS GetFlipStatus; + PDD_SURFCB_UPDATEOVERLAY UpdateOverlay; + PDD_SURFCB_SETOVERLAYPOSITION SetOverlayPosition; + PVOID reserved4; + PDD_SURFCB_SETPALETTE SetPalette; +} DD_SURFACECALLBACKS, *PDD_SURFACECALLBACKS; + +#define DDHAL_SURFCB32_DESTROYSURFACE 0x00000001 +#define DDHAL_SURFCB32_FLIP 0x00000002 +#define DDHAL_SURFCB32_SETCLIPLIST 0x00000004 +#define DDHAL_SURFCB32_LOCK 0x00000008 +#define DDHAL_SURFCB32_UNLOCK 0x00000010 +#define DDHAL_SURFCB32_BLT 0x00000020 +#define DDHAL_SURFCB32_SETCOLORKEY 0x00000040 +#define DDHAL_SURFCB32_ADDATTACHEDSURFACE 0x00000080 +#define DDHAL_SURFCB32_GETBLTSTATUS 0x00000100 +#define DDHAL_SURFCB32_GETFLIPSTATUS 0x00000200 +#define DDHAL_SURFCB32_UPDATEOVERLAY 0x00000400 +#define DDHAL_SURFCB32_SETOVERLAYPOSITION 0x00000800 +#define DDHAL_SURFCB32_RESERVED4 0x00001000 +#define DDHAL_SURFCB32_SETPALETTE 0x00002000 + +/************************************************************************/ +/* IDirectDraw callbacks */ +/************************************************************************/ + +typedef struct _DD_CREATESURFACEDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + DDSURFACEDESC *lpDDSurfaceDesc; + PDD_SURFACE_LOCAL *lplpSList; + DWORD dwSCnt; + HRESULT ddRVal; + PVOID CreateSurface; +} DD_CREATESURFACEDATA, *PDD_CREATESURFACEDATA; +typedef DWORD (WINAPI *PDD_CREATESURFACE)(PDD_CREATESURFACEDATA); + +typedef struct _DD_DRVSETCOLORKEYDATA { + PDD_SURFACE_LOCAL lpDDSurface; + DWORD dwFlags; + DDCOLORKEY ckNew; + HRESULT ddRVal; + PVOID SetColorKey; +} DD_DRVSETCOLORKEYDATA, *PDD_DRVSETCOLORKEYDATA; +typedef DWORD (WINAPI *PDD_SETCOLORKEY)(PDD_DRVSETCOLORKEYDATA); + +#define DDWAITVB_I_TESTVB 0x80000006 + +typedef struct _DD_WAITFORVERTICALBLANKDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + DWORD dwFlags; + DWORD bIsInVB; + DWORD hEvent; + HRESULT ddRVal; + PVOID WaitForVerticalBlank; +} DD_WAITFORVERTICALBLANKDATA, *PDD_WAITFORVERTICALBLANKDATA; +typedef DWORD (WINAPI *PDD_WAITFORVERTICALBLANK)(PDD_WAITFORVERTICALBLANKDATA); + +typedef struct _DD_CANCREATESURFACEDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + DDSURFACEDESC *lpDDSurfaceDesc; + DWORD bIsDifferentPixelFormat; + HRESULT ddRVal; + PVOID CanCreateSurface; +} DD_CANCREATESURFACEDATA, *PDD_CANCREATESURFACEDATA; +typedef DWORD (WINAPI *PDD_CANCREATESURFACE)(PDD_CANCREATESURFACEDATA); + +typedef struct _DD_CREATEPALETTEDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + PDD_PALETTE_GLOBAL lpDDPalette; + LPPALETTEENTRY lpColorTable; + HRESULT ddRVal; + PVOID CreatePalette; + BOOL is_excl; +} DD_CREATEPALETTEDATA, *PDD_CREATEPALETTEDATA; +typedef DWORD (WINAPI *PDD_CREATEPALETTE)(PDD_CREATEPALETTEDATA); + +typedef struct _DD_GETSCANLINEDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + DWORD dwScanLine; + HRESULT ddRVal; + PVOID GetScanLine; +} DD_GETSCANLINEDATA, *PDD_GETSCANLINEDATA; +typedef DWORD (WINAPI *PDD_GETSCANLINE)(PDD_GETSCANLINEDATA); + +typedef struct _DD_MAPMEMORYDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + BOOL bMap; + HANDLE hProcess; + FLATPTR fpProcess; + HRESULT ddRVal; +} DD_MAPMEMORYDATA, *PDD_MAPMEMORYDATA; +typedef DWORD (WINAPI *PDD_MAPMEMORY)(PDD_MAPMEMORYDATA); + +typedef struct _DD_DESTROYDRIVERDATA *PDD_DESTROYDRIVERDATA; +typedef struct _DD_SETMODEDATA *PDD_SETMODEDATA; + +typedef DWORD (APIENTRY *PDD_DESTROYDRIVER)(PDD_DESTROYDRIVERDATA); +typedef DWORD (APIENTRY *PDD_SETMODE)(PDD_SETMODEDATA); + +typedef struct DD_CALLBACKS { + DWORD dwSize; + DWORD dwFlags; + PDD_DESTROYDRIVER DestroyDriver; + PDD_CREATESURFACE CreateSurface; + PDD_SETCOLORKEY SetColorKey; + PDD_SETMODE SetMode; + PDD_WAITFORVERTICALBLANK WaitForVerticalBlank; + PDD_CANCREATESURFACE CanCreateSurface; + PDD_CREATEPALETTE CreatePalette; + PDD_GETSCANLINE GetScanLine; + PDD_MAPMEMORY MapMemory; +} DD_CALLBACKS, *PDD_CALLBACKS; + +#define DDHAL_CB32_DESTROYDRIVER 0x00000001l +#define DDHAL_CB32_CREATESURFACE 0x00000002l +#define DDHAL_CB32_SETCOLORKEY 0x00000004l +#define DDHAL_CB32_SETMODE 0x00000008l +#define DDHAL_CB32_WAITFORVERTICALBLANK 0x00000010l +#define DDHAL_CB32_CANCREATESURFACE 0x00000020l +#define DDHAL_CB32_CREATEPALETTE 0x00000040l +#define DDHAL_CB32_GETSCANLINE 0x00000080l +#define DDHAL_CB32_MAPMEMORY 0x80000000l + +typedef struct _DD_GETAVAILDRIVERMEMORYDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + DDSCAPS DDSCaps; + DWORD dwTotal; + DWORD dwFree; + HRESULT ddRVal; + PVOID GetAvailDriverMemory; +} DD_GETAVAILDRIVERMEMORYDATA, *PDD_GETAVAILDRIVERMEMORYDATA; +typedef DWORD (WINAPI *PDD_GETAVAILDRIVERMEMORY)(PDD_GETAVAILDRIVERMEMORYDATA); + +typedef struct _DD_MISCELLANEOUSCALLBACKS { + DWORD dwSize; + DWORD dwFlags; + PDD_GETAVAILDRIVERMEMORY GetAvailDriverMemory; +} DD_MISCELLANEOUSCALLBACKS, *PDD_MISCELLANEOUSCALLBACKS; + +#define DDHAL_MISCCB32_GETAVAILDRIVERMEMORY 0x00000001 + +typedef DWORD (WINAPI *PDD_ALPHABLT)(PDD_BLTDATA); + +typedef struct _DD_CREATESURFACEEXDATA { + DWORD dwFlags; + PDD_DIRECTDRAW_LOCAL lpDDLcl; + PDD_SURFACE_LOCAL lpDDSLcl; + HRESULT ddRVal; +} DD_CREATESURFACEEXDATA, *PDD_CREATESURFACEEXDATA; +typedef DWORD (WINAPI *PDD_CREATESURFACEEX)(PDD_CREATESURFACEEXDATA); + +typedef struct _DD_GETDRIVERSTATEDATA { + DWORD dwFlags; + __GNU_EXTENSION union { + PDD_DIRECTDRAW_GLOBAL lpDD; + DWORD_PTR dwhContext; + }; + LPDWORD lpdwStates; + DWORD dwLength; + HRESULT ddRVal; +} DD_GETDRIVERSTATEDATA, *PDD_GETDRIVERSTATEDATA; +typedef DWORD (WINAPI *PDD_GETDRIVERSTATE)(PDD_GETDRIVERSTATEDATA); + +typedef struct _DD_DESTROYDDLOCALDATA { + DWORD dwFlags; + PDD_DIRECTDRAW_LOCAL pDDLcl; + HRESULT ddRVal; +} DD_DESTROYDDLOCALDATA, *PDD_DESTROYDDLOCALDATA; +typedef DWORD (WINAPI *PDD_DESTROYDDLOCAL)(PDD_DESTROYDDLOCALDATA); + +typedef struct _DD_MISCELLANEOUS2CALLBACKS { + DWORD dwSize; + DWORD dwFlags; + PDD_ALPHABLT AlphaBlt; + PDD_CREATESURFACEEX CreateSurfaceEx; + PDD_GETDRIVERSTATE GetDriverState; + PDD_DESTROYDDLOCAL DestroyDDLocal; +} DD_MISCELLANEOUS2CALLBACKS, *PDD_MISCELLANEOUS2CALLBACKS; + +#define DDHAL_MISC2CB32_ALPHABLT 0x00000001 +#define DDHAL_MISC2CB32_CREATESURFACEEX 0x00000002 +#define DDHAL_MISC2CB32_GETDRIVERSTATE 0x00000004 +#define DDHAL_MISC2CB32_DESTROYDDLOCAL 0x00000008 + +typedef struct _DD_FREEDRIVERMEMORYDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + PDD_SURFACE_LOCAL lpDDSurface; + HRESULT ddRVal; + PVOID FreeDriverMemory; +} DD_FREEDRIVERMEMORYDATA, *PDD_FREEDRIVERMEMORYDATA; +typedef DWORD (WINAPI *PDD_FREEDRIVERMEMORY)(PDD_FREEDRIVERMEMORYDATA); + +typedef struct _DD_SETEXCLUSIVEMODEDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + DWORD dwEnterExcl; + DWORD dwReserved; + HRESULT ddRVal; + PVOID SetExclusiveMode; +} DD_SETEXCLUSIVEMODEDATA, *PDD_SETEXCLUSIVEMODEDATA; +typedef DWORD (WINAPI *PDD_SETEXCLUSIVEMODE)(PDD_SETEXCLUSIVEMODEDATA); + +typedef struct _DD_FLIPTOGDISURFACEDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + DWORD dwToGDI; + DWORD dwReserved; + HRESULT ddRVal; + PVOID FlipToGDISurface; +} DD_FLIPTOGDISURFACEDATA, *PDD_FLIPTOGDISURFACEDATA; +typedef DWORD (WINAPI *PDD_FLIPTOGDISURFACE)(PDD_FLIPTOGDISURFACEDATA); + +typedef struct _DD_NTCALLBACKS { + DWORD dwSize; + DWORD dwFlags; + PDD_FREEDRIVERMEMORY FreeDriverMemory; + PDD_SETEXCLUSIVEMODE SetExclusiveMode; + PDD_FLIPTOGDISURFACE FlipToGDISurface; +} DD_NTCALLBACKS, *PDD_NTCALLBACKS; + +#define DDHAL_NTCB32_FREEDRIVERMEMORY 0x00000001 +#define DDHAL_NTCB32_SETEXCLUSIVEMODE 0x00000002 +#define DDHAL_NTCB32_FLIPTOGDISURFACE 0x00000004 + +/************************************************************************/ +/* IDirectDrawPalette callbacks */ +/************************************************************************/ + +typedef struct _DD_DESTROYPALETTEDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + PDD_PALETTE_GLOBAL lpDDPalette; + HRESULT ddRVal; + PVOID DestroyPalette; +} DD_DESTROYPALETTEDATA, *PDD_DESTROYPALETTEDATA; +typedef DWORD (WINAPI *PDD_PALCB_DESTROYPALETTE)(PDD_DESTROYPALETTEDATA); + +typedef struct _DD_SETENTRIESDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + PDD_PALETTE_GLOBAL lpDDPalette; + DWORD dwBase; + DWORD dwNumEntries; + LPPALETTEENTRY lpEntries; + HRESULT ddRVal; + PVOID SetEntries; +} DD_SETENTRIESDATA, *PDD_SETENTRIESDATA; +typedef DWORD (WINAPI *PDD_PALCB_SETENTRIES)(PDD_SETENTRIESDATA); + +typedef struct DD_PALETTECALLBACKS { + DWORD dwSize; + DWORD dwFlags; + PDD_PALCB_DESTROYPALETTE DestroyPalette; + PDD_PALCB_SETENTRIES SetEntries; +} DD_PALETTECALLBACKS, *PDD_PALETTECALLBACKS; + +#define DDHAL_PALCB32_DESTROYPALETTE 0x00000001l +#define DDHAL_PALCB32_SETENTRIES 0x00000002l + +/************************************************************************/ +/* IDirectDrawVideoport callbacks */ +/************************************************************************/ + +typedef struct _DD_CANCREATEVPORTDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + LPDDVIDEOPORTDESC lpDDVideoPortDesc; + HRESULT ddRVal; + PVOID CanCreateVideoPort; +} DD_CANCREATEVPORTDATA, *PDD_CANCREATEVPORTDATA; +typedef DWORD (WINAPI *PDD_VPORTCB_CANCREATEVIDEOPORT)(PDD_CANCREATEVPORTDATA); + +typedef struct _DD_CREATEVPORTDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + LPDDVIDEOPORTDESC lpDDVideoPortDesc; + PDD_VIDEOPORT_LOCAL lpVideoPort; + HRESULT ddRVal; + PVOID CreateVideoPort; +} DD_CREATEVPORTDATA, *PDD_CREATEVPORTDATA; +typedef DWORD (WINAPI *PDD_VPORTCB_CREATEVIDEOPORT)(PDD_CREATEVPORTDATA); + +typedef struct _DD_FLIPVPORTDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + PDD_VIDEOPORT_LOCAL lpVideoPort; + PDD_SURFACE_LOCAL lpSurfCurr; + PDD_SURFACE_LOCAL lpSurfTarg; + HRESULT ddRVal; + PVOID FlipVideoPort; +} DD_FLIPVPORTDATA, *PDD_FLIPVPORTDATA; +typedef DWORD (WINAPI *PDD_VPORTCB_FLIP)(PDD_FLIPVPORTDATA); + +typedef struct _DD_GETVPORTBANDWIDTHDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + PDD_VIDEOPORT_LOCAL lpVideoPort; + LPDDPIXELFORMAT lpddpfFormat; + DWORD dwWidth; + DWORD dwHeight; + DWORD dwFlags; + LPDDVIDEOPORTBANDWIDTH lpBandwidth; + HRESULT ddRVal; + PVOID GetVideoPortBandwidth; +} DD_GETVPORTBANDWIDTHDATA, *PDD_GETVPORTBANDWIDTHDATA; +typedef DWORD (WINAPI *PDD_VPORTCB_GETBANDWIDTH)(PDD_GETVPORTBANDWIDTHDATA); + +typedef struct _DD_GETVPORTINPUTFORMATDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + PDD_VIDEOPORT_LOCAL lpVideoPort; + DWORD dwFlags; + LPDDPIXELFORMAT lpddpfFormat; + DWORD dwNumFormats; + HRESULT ddRVal; + PVOID GetVideoPortInputFormats; +} DD_GETVPORTINPUTFORMATDATA, *PDD_GETVPORTINPUTFORMATDATA; +typedef DWORD (WINAPI *PDD_VPORTCB_GETINPUTFORMATS)(PDD_GETVPORTINPUTFORMATDATA); + +typedef struct _DD_GETVPORTOUTPUTFORMATDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + PDD_VIDEOPORT_LOCAL lpVideoPort; + DWORD dwFlags; + LPDDPIXELFORMAT lpddpfInputFormat; + LPDDPIXELFORMAT lpddpfOutputFormats; + DWORD dwNumFormats; + HRESULT ddRVal; + PVOID GetVideoPortInputFormats; +} DD_GETVPORTOUTPUTFORMATDATA, *PDD_GETVPORTOUTPUTFORMATDATA; +typedef DWORD (WINAPI *PDD_VPORTCB_GETOUTPUTFORMATS)(PDD_GETVPORTOUTPUTFORMATDATA); + +typedef struct _DD_GETVPORTFIELDDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + PDD_VIDEOPORT_LOCAL lpVideoPort; + BOOL bField; + HRESULT ddRVal; + PVOID GetVideoPortField; +} DD_GETVPORTFIELDDATA, *PDD_GETVPORTFIELDDATA; +typedef DWORD (WINAPI *PDD_VPORTCB_GETFIELD)(PDD_GETVPORTFIELDDATA); + +typedef struct _DD_GETVPORTLINEDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + PDD_VIDEOPORT_LOCAL lpVideoPort; + DWORD dwLine; + HRESULT ddRVal; + PVOID GetVideoPortLine; +} DD_GETVPORTLINEDATA, *PDD_GETVPORTLINEDATA; +typedef DWORD (WINAPI *PDD_VPORTCB_GETLINE)(PDD_GETVPORTLINEDATA); + +typedef struct _DD_GETVPORTCONNECTDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + DWORD dwPortId; + LPDDVIDEOPORTCONNECT lpConnect; + DWORD dwNumEntries; + HRESULT ddRVal; + PVOID GetVideoPortConnectInfo; +} DD_GETVPORTCONNECTDATA, *PDD_GETVPORTCONNECTDATA; +typedef DWORD (WINAPI *PDD_VPORTCB_GETVPORTCONNECT)(PDD_GETVPORTCONNECTDATA); + +typedef struct _DD_DESTROYVPORTDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + PDD_VIDEOPORT_LOCAL lpVideoPort; + HRESULT ddRVal; + PVOID DestroyVideoPort; +} DD_DESTROYVPORTDATA, *PDD_DESTROYVPORTDATA; +typedef DWORD (WINAPI *PDD_VPORTCB_DESTROYVPORT)(PDD_DESTROYVPORTDATA); + +typedef struct _DD_GETVPORTFLIPSTATUSDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + FLATPTR fpSurface; + HRESULT ddRVal; + PVOID GetVideoPortFlipStatus; +} DD_GETVPORTFLIPSTATUSDATA, *PDD_GETVPORTFLIPSTATUSDATA; +typedef DWORD (WINAPI *PDD_VPORTCB_GETFLIPSTATUS)(PDD_GETVPORTFLIPSTATUSDATA); + +typedef struct _DD_UPDATEVPORTDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + PDD_VIDEOPORT_LOCAL lpVideoPort; + PDD_SURFACE_INT *lplpDDSurface; + PDD_SURFACE_INT *lplpDDVBISurface; + LPDDVIDEOPORTINFO lpVideoInfo; + DWORD dwFlags; + DWORD dwNumAutoflip; + DWORD dwNumVBIAutoflip; + HRESULT ddRVal; + PVOID UpdateVideoPort; +} DD_UPDATEVPORTDATA, *PDD_UPDATEVPORTDATA; +typedef DWORD (WINAPI *PDD_VPORTCB_UPDATE)(PDD_UPDATEVPORTDATA); + +typedef struct _DD_WAITFORVPORTSYNCDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + PDD_VIDEOPORT_LOCAL lpVideoPort; + DWORD dwFlags; + DWORD dwLine; + DWORD dwTimeOut; + HRESULT ddRVal; + PVOID UpdateVideoPort; +} DD_WAITFORVPORTSYNCDATA, *PDD_WAITFORVPORTSYNCDATA; +typedef DWORD (WINAPI *PDD_VPORTCB_WAITFORSYNC)(PDD_WAITFORVPORTSYNCDATA); + +typedef struct _DD_GETVPORTSIGNALDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + PDD_VIDEOPORT_LOCAL lpVideoPort; + DWORD dwStatus; + HRESULT ddRVal; + PVOID GetVideoSignalStatus; +} DD_GETVPORTSIGNALDATA, *PDD_GETVPORTSIGNALDATA; +typedef DWORD (WINAPI *PDD_VPORTCB_GETSIGNALSTATUS)(PDD_GETVPORTSIGNALDATA); + +typedef struct _DD_VPORTCOLORDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + PDD_VIDEOPORT_LOCAL lpVideoPort; + DWORD dwFlags; + LPDDCOLORCONTROL lpColorData; + HRESULT ddRVal; + PVOID ColorControl; +} DD_VPORTCOLORDATA, *PDD_VPORTCOLORDATA; +typedef DWORD (WINAPI *PDD_VPORTCB_COLORCONTROL)(PDD_VPORTCOLORDATA); + +typedef struct DD_VIDEOPORTCALLBACKS { + DWORD dwSize; + DWORD dwFlags; + PDD_VPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort; + PDD_VPORTCB_CREATEVIDEOPORT CreateVideoPort; + PDD_VPORTCB_FLIP FlipVideoPort; + PDD_VPORTCB_GETBANDWIDTH GetVideoPortBandwidth; + PDD_VPORTCB_GETINPUTFORMATS GetVideoPortInputFormats; + PDD_VPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats; + PVOID lpReserved1; + PDD_VPORTCB_GETFIELD GetVideoPortField; + PDD_VPORTCB_GETLINE GetVideoPortLine; + PDD_VPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo; + PDD_VPORTCB_DESTROYVPORT DestroyVideoPort; + PDD_VPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus; + PDD_VPORTCB_UPDATE UpdateVideoPort; + PDD_VPORTCB_WAITFORSYNC WaitForVideoPortSync; + PDD_VPORTCB_GETSIGNALSTATUS GetVideoSignalStatus; + PDD_VPORTCB_COLORCONTROL ColorControl; +} DD_VIDEOPORTCALLBACKS, *PDD_VIDEOPORTCALLBACKS; + +#define DDHAL_VPORT32_CANCREATEVIDEOPORT 0x00000001 +#define DDHAL_VPORT32_CREATEVIDEOPORT 0x00000002 +#define DDHAL_VPORT32_FLIP 0x00000004 +#define DDHAL_VPORT32_GETBANDWIDTH 0x00000008 +#define DDHAL_VPORT32_GETINPUTFORMATS 0x00000010 +#define DDHAL_VPORT32_GETOUTPUTFORMATS 0x00000020 +#define DDHAL_VPORT32_GETFIELD 0x00000080 +#define DDHAL_VPORT32_GETLINE 0x00000100 +#define DDHAL_VPORT32_GETCONNECT 0x00000200 +#define DDHAL_VPORT32_DESTROY 0x00000400 +#define DDHAL_VPORT32_GETFLIPSTATUS 0x00000800 +#define DDHAL_VPORT32_UPDATE 0x00001000 +#define DDHAL_VPORT32_WAITFORSYNC 0x00002000 +#define DDHAL_VPORT32_GETSIGNALSTATUS 0x00004000 +#define DDHAL_VPORT32_COLORCONTROL 0x00008000 + + +/************************************************************************/ +/* IDirectDrawColorControl callbacks */ +/************************************************************************/ + +#define DDRAWI_GETCOLOR 0x0001 +#define DDRAWI_SETCOLOR 0x0002 + +typedef struct _DD_COLORCONTROLDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + PDD_SURFACE_LOCAL lpDDSurface; + LPDDCOLORCONTROL lpColorData; + DWORD dwFlags; + HRESULT ddRVal; + PVOID ColorControl; +} DD_COLORCONTROLDATA, *PDD_COLORCONTROLDATA; +typedef DWORD (WINAPI *PDD_COLORCB_COLORCONTROL)(PDD_COLORCONTROLDATA); + +typedef struct _DD_COLORCONTROLCALLBACKS { + DWORD dwSize; + DWORD dwFlags; + PDD_COLORCB_COLORCONTROL ColorControl; +} DD_COLORCONTROLCALLBACKS, *PDD_COLORCONTROLCALLBACKS; + +#define DDHAL_COLOR_COLORCONTROL 0x00000001 + +/************************************************************************/ +/* IDirectDrawVideo callbacks */ +/************************************************************************/ + +typedef struct _DD_GETMOCOMPGUIDSDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + DWORD dwNumGuids; + GUID *lpGuids; + HRESULT ddRVal; +} DD_GETMOCOMPGUIDSDATA, *PDD_GETMOCOMPGUIDSDATA; +typedef DWORD (WINAPI *PDD_MOCOMPCB_GETGUIDS)(PDD_GETMOCOMPGUIDSDATA); + +typedef struct _DD_GETMOCOMPFORMATSDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + GUID *lpGuid; + DWORD dwNumFormats; + LPDDPIXELFORMAT lpFormats; + HRESULT ddRVal; +} DD_GETMOCOMPFORMATSDATA, *PDD_GETMOCOMPFORMATSDATA; +typedef DWORD (WINAPI *PDD_MOCOMPCB_GETFORMATS)(PDD_GETMOCOMPFORMATSDATA); + +typedef struct _DD_CREATEMOCOMPDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + PDD_MOTIONCOMP_LOCAL lpMoComp; + GUID *lpGuid; + DWORD dwUncompWidth; + DWORD dwUncompHeight; + DDPIXELFORMAT ddUncompPixelFormat; + LPVOID lpData; + DWORD dwDataSize; + HRESULT ddRVal; +} DD_CREATEMOCOMPDATA, *PDD_CREATEMOCOMPDATA; +typedef DWORD (WINAPI *PDD_MOCOMPCB_CREATE)(PDD_CREATEMOCOMPDATA); + +typedef struct _DDCOMPBUFFERINFO { + DWORD dwSize; + DWORD dwNumCompBuffers; + DWORD dwWidthToCreate; + DWORD dwHeightToCreate; + DWORD dwBytesToAllocate; + DDSCAPS2 ddCompCaps; + DDPIXELFORMAT ddPixelFormat; +} DDCOMPBUFFERINFO, *LPDDCOMPBUFFERINFO; + +typedef struct _DD_GETMOCOMPCOMPBUFFDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + GUID *lpGuid; + DWORD dwWidth; + DWORD dwHeight; + DDPIXELFORMAT ddPixelFormat; + DWORD dwNumTypesCompBuffs; + LPDDCOMPBUFFERINFO lpCompBuffInfo; + HRESULT ddRVal; +} DD_GETMOCOMPCOMPBUFFDATA, *PDD_GETMOCOMPCOMPBUFFDATA; +typedef DWORD (WINAPI *PDD_MOCOMPCB_GETCOMPBUFFINFO)(PDD_GETMOCOMPCOMPBUFFDATA); + +typedef struct _DD_GETINTERNALMOCOMPDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + GUID *lpGuid; + DWORD dwWidth; + DWORD dwHeight; + DDPIXELFORMAT ddPixelFormat; + DWORD dwScratchMemAlloc; + HRESULT ddRVal; +} DD_GETINTERNALMOCOMPDATA, *PDD_GETINTERNALMOCOMPDATA; +typedef DWORD (WINAPI *PDD_MOCOMPCB_GETINTERNALINFO)(PDD_GETINTERNALMOCOMPDATA); + +typedef struct _DD_BEGINMOCOMPFRAMEDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + PDD_MOTIONCOMP_LOCAL lpMoComp; + PDD_SURFACE_LOCAL lpDestSurface; + DWORD dwInputDataSize; + LPVOID lpInputData; + DWORD dwOutputDataSize; + LPVOID lpOutputData; + HRESULT ddRVal; +} DD_BEGINMOCOMPFRAMEDATA, *PDD_BEGINMOCOMPFRAMEDATA; +typedef DWORD (WINAPI *PDD_MOCOMPCB_BEGINFRAME)(PDD_BEGINMOCOMPFRAMEDATA); + +typedef struct _DD_ENDMOCOMPFRAMEDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + PDD_MOTIONCOMP_LOCAL lpMoComp; + LPVOID lpInputData; + DWORD dwInputDataSize; + HRESULT ddRVal; +} DD_ENDMOCOMPFRAMEDATA, *PDD_ENDMOCOMPFRAMEDATA; +typedef DWORD (WINAPI *PDD_MOCOMPCB_ENDFRAME)(PDD_ENDMOCOMPFRAMEDATA); + +typedef struct _DDMOCOMPBUFFERINFO { + DWORD dwSize; + PDD_SURFACE_LOCAL lpCompSurface; + DWORD dwDataOffset; + DWORD dwDataSize; + LPVOID lpPrivate; +} DDMOCOMPBUFFERINFO, *LPDDMOCOMPBUFFERINFO; + +typedef struct _DD_RENDERMOCOMPDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + PDD_MOTIONCOMP_LOCAL lpMoComp; + DWORD dwNumBuffers; + LPDDMOCOMPBUFFERINFO lpBufferInfo; + DWORD dwFunction; + LPVOID lpInputData; + DWORD dwInputDataSize; + LPVOID lpOutputData; + DWORD dwOutputDataSize; + HRESULT ddRVal; +} DD_RENDERMOCOMPDATA, *PDD_RENDERMOCOMPDATA; +typedef DWORD (WINAPI *PDD_MOCOMPCB_RENDER)(PDD_RENDERMOCOMPDATA); + +#define DDMCQUERY_READ 0x00000001 + +typedef struct _DD_QUERYMOCOMPSTATUSDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + PDD_MOTIONCOMP_LOCAL lpMoComp; + PDD_SURFACE_LOCAL lpSurface; + DWORD dwFlags; + HRESULT ddRVal; +} DD_QUERYMOCOMPSTATUSDATA, *PDD_QUERYMOCOMPSTATUSDATA; +typedef DWORD (WINAPI *PDD_MOCOMPCB_QUERYSTATUS)(PDD_QUERYMOCOMPSTATUSDATA); + +typedef struct _DD_DESTROYMOCOMPDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + PDD_MOTIONCOMP_LOCAL lpMoComp; + HRESULT ddRVal; +} DD_DESTROYMOCOMPDATA, *PDD_DESTROYMOCOMPDATA; +typedef DWORD (WINAPI *PDD_MOCOMPCB_DESTROY)(PDD_DESTROYMOCOMPDATA); + +typedef struct DD_MOTIONCOMPCALLBACKS { + DWORD dwSize; + DWORD dwFlags; + PDD_MOCOMPCB_GETGUIDS GetMoCompGuids; + PDD_MOCOMPCB_GETFORMATS GetMoCompFormats; + PDD_MOCOMPCB_CREATE CreateMoComp; + PDD_MOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo; + PDD_MOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo; + PDD_MOCOMPCB_BEGINFRAME BeginMoCompFrame; + PDD_MOCOMPCB_ENDFRAME EndMoCompFrame; + PDD_MOCOMPCB_RENDER RenderMoComp; + PDD_MOCOMPCB_QUERYSTATUS QueryMoCompStatus; + PDD_MOCOMPCB_DESTROY DestroyMoComp; +} DD_MOTIONCOMPCALLBACKS, *PDD_MOTIONCOMPCALLBACKS; + +#define DDHAL_MOCOMP32_GETGUIDS 0x00000001 +#define DDHAL_MOCOMP32_GETFORMATS 0x00000002 +#define DDHAL_MOCOMP32_CREATE 0x00000004 +#define DDHAL_MOCOMP32_GETCOMPBUFFINFO 0x00000008 +#define DDHAL_MOCOMP32_GETINTERNALINFO 0x00000010 +#define DDHAL_MOCOMP32_BEGINFRAME 0x00000020 +#define DDHAL_MOCOMP32_ENDFRAME 0x00000040 +#define DDHAL_MOCOMP32_RENDER 0x00000080 +#define DDHAL_MOCOMP32_QUERYSTATUS 0x00000100 +#define DDHAL_MOCOMP32_DESTROY 0x00000200 + +/************************************************************************/ +/* D3D buffer callbacks */ +/************************************************************************/ + +typedef struct _DD_D3DBUFCALLBACKS { + DWORD dwSize; + DWORD dwFlags; + PDD_CANCREATESURFACE CanCreateD3DBuffer; + PDD_CREATESURFACE CreateD3DBuffer; + PDD_SURFCB_DESTROYSURFACE DestroyD3DBuffer; + PDD_SURFCB_LOCK LockD3DBuffer; + PDD_SURFCB_UNLOCK UnlockD3DBuffer; +} DD_D3DBUFCALLBACKS, *PDD_D3DBUFCALLBACKS; + +/************************************************************************/ +/* DdGetDriverInfo callback */ +/************************************************************************/ + +typedef struct _DD_GETDRIVERINFODATA { +// Input: + PVOID dhpdev; + DWORD dwSize; + DWORD dwFlags; + GUID guidInfo; + DWORD dwExpectedSize; + PVOID lpvData; +// Output: + DWORD dwActualSize; + HRESULT ddRVal; +} DD_GETDRIVERINFODATA, *PDD_GETDRIVERINFODATA; +typedef DWORD (WINAPI *PDD_GETDRIVERINFO)(PDD_GETDRIVERINFODATA); + +/************************************************************************/ +/* Driver info structures */ +/************************************************************************/ + +typedef struct _DDNTCORECAPS { + DWORD dwSize; + DWORD dwCaps; + DWORD dwCaps2; + DWORD dwCKeyCaps; + DWORD dwFXCaps; + DWORD dwFXAlphaCaps; + DWORD dwPalCaps; + DWORD dwSVCaps; + DWORD dwAlphaBltConstBitDepths; + DWORD dwAlphaBltPixelBitDepths; + DWORD dwAlphaBltSurfaceBitDepths; + DWORD dwAlphaOverlayConstBitDepths; + DWORD dwAlphaOverlayPixelBitDepths; + DWORD dwAlphaOverlaySurfaceBitDepths; + DWORD dwZBufferBitDepths; + DWORD dwVidMemTotal; + DWORD dwVidMemFree; + DWORD dwMaxVisibleOverlays; + DWORD dwCurrVisibleOverlays; + DWORD dwNumFourCCCodes; + DWORD dwAlignBoundarySrc; + DWORD dwAlignSizeSrc; + DWORD dwAlignBoundaryDest; + DWORD dwAlignSizeDest; + DWORD dwAlignStrideAlign; + DWORD dwRops[DD_ROP_SPACE]; + DDSCAPS ddsCaps; + DWORD dwMinOverlayStretch; + DWORD dwMaxOverlayStretch; + DWORD dwMinLiveVideoStretch; + DWORD dwMaxLiveVideoStretch; + DWORD dwMinHwCodecStretch; + DWORD dwMaxHwCodecStretch; + DWORD dwReserved1; + DWORD dwReserved2; + DWORD dwReserved3; + DWORD dwSVBCaps; + DWORD dwSVBCKeyCaps; + DWORD dwSVBFXCaps; + DWORD dwSVBRops[DD_ROP_SPACE]; + DWORD dwVSBCaps; + DWORD dwVSBCKeyCaps; + DWORD dwVSBFXCaps; + DWORD dwVSBRops[DD_ROP_SPACE]; + DWORD dwSSBCaps; + DWORD dwSSBCKeyCaps; + DWORD dwSSBFXCaps; + DWORD dwSSBRops[DD_ROP_SPACE]; + DWORD dwMaxVideoPorts; + DWORD dwCurrVideoPorts; + DWORD dwSVBCaps2; +} DDNTCORECAPS, *PDDNTCORECAPS; + +typedef struct _DD_HALINFO_V4 { + DWORD dwSize; + VIDEOMEMORYINFO vmiData; + DDNTCORECAPS ddCaps; + PDD_GETDRIVERINFO GetDriverInfo; + DWORD dwFlags; +} DD_HALINFO_V4, *PDD_HALINFO_V4; + +typedef struct _DD_HALINFO { + DWORD dwSize; + VIDEOMEMORYINFO vmiData; + DDNTCORECAPS ddCaps; + PDD_GETDRIVERINFO GetDriverInfo; + DWORD dwFlags; + PVOID lpD3DGlobalDriverData; + PVOID lpD3DHALCallbacks; + PDD_D3DBUFCALLBACKS lpD3DBufCallbacks; +} DD_HALINFO, *PDD_HALINFO; + +typedef struct _DD_NONLOCALVIDMEMCAPS { + DWORD dwSize; + DWORD dwNLVBCaps; + DWORD dwNLVBCaps2; + DWORD dwNLVBCKeyCaps; + DWORD dwNLVBFXCaps; + DWORD dwNLVBRops[DD_ROP_SPACE]; +} DD_NONLOCALVIDMEMCAPS, *PDD_NONLOCALVIDMEMCAPS; + +typedef struct _DD_MORESURFACECAPS { + DWORD dwSize; + DDSCAPSEX ddsCapsMore; + struct tagNTExtendedHeapRestrictions { + DDSCAPSEX ddsCapsEx; + DDSCAPSEX ddsCapsExAlt; + } ddsExtendedHeapRestrictions[1]; +} DD_MORESURFACECAPS, *PDD_MORESURFACECAPS; + + +/*********************************************************/ +/* Kernel Callbacks */ +/*********************************************************/ +typedef struct _DD_SYNCSURFACEDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + PDD_SURFACE_LOCAL lpDDSurface; + DWORD dwSurfaceOffset; + ULONG_PTR fpLockPtr; + LONG lPitch; + DWORD dwOverlayOffset; + ULONG dwDriverReserved1; + ULONG dwDriverReserved2; + ULONG dwDriverReserved3; + ULONG dwDriverReserved4; + HRESULT ddRVal; +} DD_SYNCSURFACEDATA, *PDD_SYNCSURFACEDATA; +typedef DWORD (WINAPI *PDD_KERNELCB_SYNCSURFACE)(PDD_SYNCSURFACEDATA); + +typedef struct _DD_SYNCVIDEOPORTDATA { + PDD_DIRECTDRAW_LOCAL lpDD; + PDD_VIDEOPORT_LOCAL lpVideoPort; + DWORD dwOriginOffset; + DWORD dwHeight; + DWORD dwVBIHeight; + ULONG dwDriverReserved1; + ULONG dwDriverReserved2; + ULONG dwDriverReserved3; + HRESULT ddRVal; +} DD_SYNCVIDEOPORTDATA, *PDD_SYNCVIDEOPORTDATA; +typedef DWORD (WINAPI *PDD_KERNELCB_SYNCVIDEOPORT)(PDD_SYNCVIDEOPORTDATA); + +typedef struct DD_NTPRIVATEDRIVERCAPS { + DWORD dwSize; + DWORD dwPrivateCaps; +} DD_NTPRIVATEDRIVERCAPS; + +typedef struct _DD_UPDATENONLOCALHEAPDATA { + PDD_DIRECTDRAW_GLOBAL lpDD; + DWORD dwHeap; + FLATPTR fpGARTLin; + FLATPTR fpGARTDev; + ULONG_PTR ulPolicyMaxBytes; + HRESULT ddRVal; + VOID* UpdateNonLocalHeap; +} DD_UPDATENONLOCALHEAPDATA, *PDD_UPDATENONLOCALHEAPDATA; + +typedef struct _DD_STEREOMODE { + DWORD dwSize; + DWORD dwHeight; + DWORD dwWidth; + DWORD dwBpp; + DWORD dwRefreshRate; + BOOL bSupported; +} DD_STEREOMODE, *PDD_STEREOMODE; + +typedef struct _DD_MORECAPS { + DWORD dwSize; + DWORD dwAlphaCaps; + DWORD dwSVBAlphaCaps; + DWORD dwVSBAlphaCaps; + DWORD dwSSBAlphaCaps; + DWORD dwFilterCaps; + DWORD dwSVBFilterCaps; + DWORD dwVSBFilterCaps; + DWORD dwSSBFilterCaps; +} DD_MORECAPS, *PDD_MORECAPS; + +typedef struct _DD_CLIPPER_GLOBAL { + ULONG_PTR dwReserved1; +} DD_CLIPPER_GLOBAL; + +typedef struct _DD_CLIPPER_LOCAL { + ULONG_PTR dwReserved1; +} DD_CLIPPER_LOCAL; + +typedef struct _DD_PALETTE_LOCAL { + ULONG dwReserved0; + ULONG_PTR dwReserved1; +} DD_PALETTE_LOCAL; + +typedef struct DD_KERNELCALLBACKS { + DWORD dwSize; + DWORD dwFlags; + PDD_KERNELCB_SYNCSURFACE SyncSurfaceData; + PDD_KERNELCB_SYNCVIDEOPORT SyncVideoPortData; +} DD_KERNELCALLBACKS, *PDD_KERNELCALLBACKS; + +#define MAX_AUTOFLIP_BUFFERS 10 +#define DDSCAPS_EXECUTEBUFFER DDSCAPS_RESERVED2 +#define DDSCAPS_COMMANDBUFFER DDSCAPS_RESERVED3 +#define DDSCAPS_VERTEXBUFFER DDSCAPS_RESERVED4 +#define DDPF_D3DFORMAT 0x00200000l +#define D3DFORMAT_OP_TEXTURE 0x00000001L +#define D3DFORMAT_OP_VOLUMETEXTURE 0x00000002L +#define D3DFORMAT_OP_CUBETEXTURE 0x00000004L +#define D3DFORMAT_OP_OFFSCREEN_RENDERTARGET 0x00000008L +#define D3DFORMAT_OP_SAME_FORMAT_RENDERTARGET 0x00000010L +#define D3DFORMAT_OP_ZSTENCIL 0x00000040L +#define D3DFORMAT_OP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH 0x00000080L +#define D3DFORMAT_OP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET 0x00000100L +#define D3DFORMAT_OP_DISPLAYMODE 0x00000400L +#define D3DFORMAT_OP_3DACCELERATION 0x00000800L +#define D3DFORMAT_OP_PIXELSIZE 0x00001000L +#define D3DFORMAT_OP_CONVERT_TO_ARGB 0x00002000L +#define D3DFORMAT_OP_OFFSCREENPLAIN 0x00004000L +#define D3DFORMAT_OP_SRGBREAD 0x00008000L +#define D3DFORMAT_OP_BUMPMAP 0x00010000L +#define D3DFORMAT_OP_DMAP 0x00020000L +#define D3DFORMAT_OP_NOFILTER 0x00040000L +#define D3DFORMAT_MEMBEROFGROUP_ARGB 0x00080000L +#define D3DFORMAT_OP_SRGBWRITE 0x00100000L +#define D3DFORMAT_OP_NOALPHABLEND 0x00200000L +#define D3DFORMAT_OP_AUTOGENMIPMAP 0x00400000L +#define D3DFORMAT_OP_VERTEXTEXTURE 0x00800000L +#define D3DFORMAT_OP_NOTEXCOORDWRAPNORMIP 0x01000000L +#define DDHAL_PLEASEALLOC_BLOCKSIZE 0x00000002l +#define DDHAL_PLEASEALLOC_USERMEM 0x00000004l + +#define VIDMEM_ISLINEAR 0x00000001l +#define VIDMEM_ISRECTANGULAR 0x00000002l +#define VIDMEM_ISHEAP 0x00000004l +#define VIDMEM_ISNONLOCAL 0x00000008l +#define VIDMEM_ISWC 0x00000010l +#define VIDMEM_HEAPDISABLED 0x00000020l + +#define DDHAL_CREATESURFACEEX_SWAPHANDLES 0x00000001l + +#define DDHAL_KERNEL_SYNCSURFACEDATA 0x00000001l +#define DDHAL_KERNEL_SYNCVIDEOPORTDATA 0x00000002l + +#define DDHAL_DRIVER_NOTHANDLED 0x00000000l +#define DDHAL_DRIVER_HANDLED 0x00000001l +#define DDHAL_DRIVER_NOCKEYHW 0x00000002l + +#define DDRAWISURF_HASCKEYSRCBLT 0x00000800L +#define DDRAWISURF_HASPIXELFORMAT 0x00002000L +#define DDRAWISURF_HASOVERLAYDATA 0x00004000L +#define DDRAWISURF_FRONTBUFFER 0x04000000L +#define DDRAWISURF_BACKBUFFER 0x08000000L +#define DDRAWISURF_INVALID 0x10000000L +#define DDRAWISURF_DRIVERMANAGED 0x40000000L + +#define ROP_HAS_SOURCE 0x00000001l +#define ROP_HAS_PATTERN 0x00000002l +#define ROP_HAS_SOURCEPATTERN ROP_HAS_SOURCE | ROP_HAS_PATTERN + +#define DDHAL_EXEBUFCB32_CANCREATEEXEBUF 0x00000001l +#define DDHAL_EXEBUFCB32_CREATEEXEBUF 0x00000002l +#define DDHAL_EXEBUFCB32_DESTROYEXEBUF 0x00000004l +#define DDHAL_EXEBUFCB32_LOCKEXEBUF 0x00000008l +#define DDHAL_EXEBUFCB32_UNLOCKEXEBUF 0x00000010l + +#define DDHAL_D3DBUFCB32_CANCREATED3DBUF DDHAL_EXEBUFCB32_CANCREATEEXEBUF +#define DDHAL_D3DBUFCB32_CREATED3DBUF DDHAL_EXEBUFCB32_CREATEEXEBUF +#define DDHAL_D3DBUFCB32_DESTROYD3DBUF DDHAL_EXEBUFCB32_DESTROYEXEBUF +#define DDHAL_D3DBUFCB32_LOCKD3DBUF DDHAL_EXEBUFCB32_LOCKEXEBUF +#define DDHAL_D3DBUFCB32_UNLOCKD3DBUF DDHAL_EXEBUFCB32_UNLOCKEXEBUF + +#define DDHALINFO_ISPRIMARYDISPLAY 0x00000001 +#define DDHALINFO_MODEXILLEGAL 0x00000002 +#define DDHALINFO_GETDRIVERINFOSET 0x00000004 +#define DDHALINFO_GETDRIVERINFO2 0x00000008 + +#define DDRAWIVPORT_ON 0x00000001 +#define DDRAWIVPORT_SOFTWARE_AUTOFLIP 0x00000002 +#define DDRAWIVPORT_COLORKEYANDINTERP 0x00000004 + +#define DDHAL_PRIVATECAP_ATOMICSURFACECREATION 0x00000001l +#define DDHAL_PRIVATECAP_NOTIFYPRIMARYCREATION 0x00000002l +#define DDHAL_PRIVATECAP_RESERVED1 0x00000004l + +#define DDRAWI_VPORTSTART 0x0001 +#define DDRAWI_VPORTSTOP 0x0002 +#define DDRAWI_VPORTUPDATE 0x0003 +#define DDRAWI_VPORTGETCOLOR 0x0001 +#define DDRAWI_VPORTSETCOLOR 0x0002 + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* GUID_DEFS_ONLY */ + +#endif /* __DD_INCLUDED__ */ diff --git a/include/psdk/dinput.h b/include/psdk/dinput.h index ec4e6ec37f1..6c1a08d844d 100644 --- a/include/psdk/dinput.h +++ b/include/psdk/dinput.h @@ -1975,7 +1975,7 @@ extern const DIDATAFORMAT c_dfDIKeyboard; extern const DIDATAFORMAT c_dfDIJoystick; extern const DIDATAFORMAT c_dfDIJoystick2; #ifdef __cplusplus -}; +} #endif /***************************************************************************** @@ -2285,7 +2285,7 @@ HRESULT WINAPI DirectInputCreateW(HINSTANCE,DWORD,LPDIRECTINPUTW *,LPUNKNOWN); HRESULT WINAPI DirectInputCreateEx(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN); #ifdef __cplusplus -}; +} #endif #endif /* __WINE_DINPUT_H */ diff --git a/include/ddk/diskguid.h b/include/psdk/diskguid.h similarity index 100% rename from include/ddk/diskguid.h rename to include/psdk/diskguid.h diff --git a/include/ddk/dmemmgr.h b/include/psdk/dmemmgr.h similarity index 99% rename from include/ddk/dmemmgr.h rename to include/psdk/dmemmgr.h index 3d11f0b559c..5a637f73de7 100644 --- a/include/ddk/dmemmgr.h +++ b/include/psdk/dmemmgr.h @@ -166,7 +166,7 @@ extern FLATPTR WINAPI #ifdef __cplusplus -}; +} #endif #endif diff --git a/include/ddk/dmksctrl.h b/include/psdk/dmksctrl.h similarity index 66% rename from include/ddk/dmksctrl.h rename to include/psdk/dmksctrl.h index 185ed0ee6fc..0420d1baa45 100644 --- a/include/ddk/dmksctrl.h +++ b/include/psdk/dmksctrl.h @@ -1,3 +1,21 @@ +/* + * dmksctrl.h + * + * Contributors: + * Created by Johannes Anderwald + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + #ifndef _IKsControl_ #define _IKsControl_ @@ -38,6 +56,3 @@ DECLARE_INTERFACE_(IKsControl, IUnknown) }; #endif - - - diff --git a/include/ddk/driverspecs.h b/include/psdk/driverspecs.h similarity index 95% rename from include/ddk/driverspecs.h rename to include/psdk/driverspecs.h index abbf042ac41..c2b0b5abf6c 100644 --- a/include/ddk/driverspecs.h +++ b/include/psdk/driverspecs.h @@ -26,4 +26,4 @@ #define __inout -#define __deref_out_ecount(Size) \ No newline at end of file +#define __deref_out_ecount(Size) diff --git a/include/ddk/dvp.h b/include/psdk/dvp.h similarity index 99% rename from include/ddk/dvp.h rename to include/psdk/dvp.h index 1a0826f76c5..0e79d3ea62a 100644 --- a/include/ddk/dvp.h +++ b/include/psdk/dvp.h @@ -367,7 +367,7 @@ typedef HRESULT (*LPDDENUMVIDEOCALLBACK)(LPDDVIDEOPORTCAPS, LPVOID); #endif #ifdef __cplusplus -}; +} #endif #endif #endif diff --git a/include/ddk/hidpi.h b/include/psdk/hidpi.h similarity index 100% rename from include/ddk/hidpi.h rename to include/psdk/hidpi.h diff --git a/include/ddk/hidusage.h b/include/psdk/hidusage.h similarity index 100% rename from include/ddk/hidusage.h rename to include/psdk/hidusage.h diff --git a/include/ddk/ieverp.h b/include/psdk/ieverp.h similarity index 100% rename from include/ddk/ieverp.h rename to include/psdk/ieverp.h diff --git a/include/psdk/imm.h b/include/psdk/imm.h index 57658def7d9..07c2cc38a38 100644 --- a/include/psdk/imm.h +++ b/include/psdk/imm.h @@ -119,7 +119,6 @@ typedef struct tagIMEMENUITEMINFOW DECL_WINELIB_TYPE_AW(IMEMENUITEMINFO) DECL_WINELIB_TYPE_AW(LPIMEMENUITEMINFO) - typedef struct _tagCOMPOSITIONFORM { DWORD dwStyle; @@ -127,6 +126,125 @@ typedef struct _tagCOMPOSITIONFORM RECT rcArea; } COMPOSITIONFORM, *LPCOMPOSITIONFORM; +typedef struct _tagIMEINFO { + DWORD dwPrivateDataSize; + DWORD fdwProperty; + DWORD fdwConversionCaps; + DWORD fdwSentenceCaps; + DWORD fdwUICaps; + DWORD fdwSCSCaps; + DWORD fdwSelectCaps; +} IMEINFO, *LPIMEINFO; + +typedef struct tagCOMPOSITIONSTRING { + DWORD dwSize; + DWORD dwCompReadAttrLen; + DWORD dwCompReadAttrOffset; + DWORD dwCompReadClauseLen; + DWORD dwCompReadClauseOffset; + DWORD dwCompReadStrLen; + DWORD dwCompReadStrOffset; + DWORD dwCompAttrLen; + DWORD dwCompAttrOffset; + DWORD dwCompClauseLen; + DWORD dwCompClauseOffset; + DWORD dwCompStrLen; + DWORD dwCompStrOffset; + DWORD dwCursorPos; + DWORD dwDeltaStart; + DWORD dwResultReadClauseLen; + DWORD dwResultReadClauseOffset; + DWORD dwResultReadStrLen; + DWORD dwResultReadStrOffset; + DWORD dwResultClauseLen; + DWORD dwResultClauseOffset; + DWORD dwResultStrLen; + DWORD dwResultStrOffset; + DWORD dwPrivateSize; + DWORD dwPrivateOffset; +} COMPOSITIONSTRING, *LPCOMPOSITIONSTRING; + +typedef struct tagGUIDELINE { + DWORD dwSize; + DWORD dwLevel; + DWORD dwIndex; + DWORD dwStrLen; + DWORD dwStrOffset; + DWORD dwPrivateSize; + DWORD dwPrivateOffset; +} GUIDELINE, *LPGUIDELINE; + +typedef struct tagCANDIDATEINFO { + DWORD dwSize; + DWORD dwCount; + DWORD dwOffset[32]; + DWORD dwPrivateSize; + DWORD dwPrivateOffset; +} CANDIDATEINFO, *LPCANDIDATEINFO; + +#define IMMGWL_IMC 0 +#define IMMGWL_PRIVATE (sizeof(LONG)) + +/* IME Property bits */ +#define IME_PROP_END_UNLOAD 0x0001 +#define IME_PROP_KBD_CHAR_FIRST 0x0002 +#define IME_PROP_IGNORE_UPKEYS 0x0004 +#define IME_PROP_NEED_ALTKEY 0x0008 +#define IME_PROP_NO_KEYS_ON_CLOSE 0x0010 + +/* for NI_CONTEXTUPDATED */ +#define IMC_SETCONVERSIONMODE 0x0002 +#define IMC_SETSENTENCEMODE 0x0004 +#define IMC_SETOPENSTATUS 0x0006 + +/* dwAction for ImmNotifyIME */ +#define NI_CONTEXTUPDATED 0x0003 +#define NI_OPENCANDIDATE 0x0010 +#define NI_CLOSECANDIDATE 0x0011 +#define NI_SELECTCANDIDATESTR 0x0012 +#define NI_CHANGECANDIDATELIST 0x0013 +#define NI_FINALIZECONVERSIONRESULT 0x0014 +#define NI_COMPOSITIONSTR 0x0015 +#define NI_SETCANDIDATE_PAGESTART 0x0016 +#define NI_SETCANDIDATE_PAGESIZE 0x0017 +#define NI_IMEMENUSELECTED 0x0018 + +BOOL WINAPI ImmUnlockIMC(HIMC); +DWORD WINAPI ImmGetIMCLockCount(HIMC); +HIMCC WINAPI ImmCreateIMCC(DWORD); +HIMCC WINAPI ImmDestroyIMCC(HIMCC); +LPVOID WINAPI ImmLockIMCC(HIMCC); +BOOL WINAPI ImmUnlockIMCC(HIMCC); +DWORD WINAPI ImmGetIMCCLockCount(HIMCC); +HIMCC WINAPI ImmReSizeIMCC(HIMCC, DWORD); +DWORD WINAPI ImmGetIMCCSize(HIMCC); + +BOOL WINAPI ImmGenerateMessage(HIMC); +LRESULT WINAPI ImmRequestMessageA(HIMC, WPARAM, LPARAM); +LRESULT WINAPI ImmRequestMessageW(HIMC, WPARAM, LPARAM); +#define ImmRequestMessage WINELIB_NAME_AW(ImmRequestMessage); +BOOL WINAPI ImmTranslateMessage(HWND, UINT, WPARAM, LPARAM); +HWND WINAPI ImmCreateSoftKeyboard(UINT, UINT, int, int); +BOOL WINAPI ImmDestroySoftKeyboard(HWND); +BOOL WINAPI ImmShowSoftKeyboard(HWND, int); + +BOOL WINAPI ImeInquire(LPIMEINFO, LPWSTR, LPCWSTR lpszOptions); +BOOL WINAPI ImeConfigure (HKL, HWND, DWORD, LPVOID); +DWORD WINAPI ImeConversionList(HIMC, LPCWSTR, LPCANDIDATELIST,DWORD,UINT); +BOOL WINAPI ImeDestroy(UINT); +LRESULT WINAPI ImeEscape(HIMC, UINT, LPVOID); +BOOL WINAPI ImeProcessKey(HIMC, UINT, LPARAM, CONST LPBYTE); +BOOL WINAPI ImeSelect(HIMC, BOOL); +BOOL WINAPI ImeSetActiveContext(HIMC, BOOL); +UINT WINAPI ImeToAsciiEx(UINT, UINT, CONST LPBYTE, LPDWORD, UINT, HIMC); +BOOL WINAPI NotifyIME(HIMC, DWORD, DWORD, DWORD); +BOOL WINAPI ImeRegisterWord(LPCWSTR, DWORD, LPCWSTR); +BOOL WINAPI ImeUnregisterWord(LPCWSTR, DWORD, LPCWSTR); +UINT WINAPI ImeGetRegisterWordStyle(UINT, LPSTYLEBUFW); +UINT WINAPI ImeEnumRegisterWord(REGISTERWORDENUMPROCW, LPCWSTR, DWORD, LPCWSTR, LPVOID); +BOOL WINAPI ImeSetCompositionString(HIMC, DWORD, LPCVOID, DWORD, LPCVOID, DWORD); +DWORD WINAPI ImeGetImeMenuItems(HIMC, DWORD, DWORD, LPIMEMENUITEMINFOW, LPIMEMENUITEMINFOW, DWORD); + /* wParam for WM_IME_CONTROL */ #define IMC_GETCANDIDATEPOS 0x0007 #define IMC_SETCANDIDATEPOS 0x0008 diff --git a/include/ddk/ntdd1394.h b/include/psdk/ntdd1394.h similarity index 70% rename from include/ddk/ntdd1394.h rename to include/psdk/ntdd1394.h index 151f111329d..fa3419418e0 100644 --- a/include/ddk/ntdd1394.h +++ b/include/psdk/ntdd1394.h @@ -1,3 +1,20 @@ +/* + * ntdd1394.h + * + * Contributors: + * Created by Magnus Olsen + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ #ifndef _NTDD1394_H_ #define _NTDD1394_H_ diff --git a/include/ddk/ntdd8042.h b/include/psdk/ntdd8042.h similarity index 98% rename from include/ddk/ntdd8042.h rename to include/psdk/ntdd8042.h index 4bb32529292..fb82fdec4aa 100644 --- a/include/ddk/ntdd8042.h +++ b/include/psdk/ntdd8042.h @@ -20,8 +20,8 @@ * */ -#ifndef __NTDD8042_H -#define __NTDD8042_H +#ifndef _NTDD8042_ +#define _NTDD8042_ #include "ntddkbd.h" #include "ntddmou.h" @@ -205,4 +205,4 @@ typedef struct _INTERNAL_I8042_HOOK_MOUSE { } #endif -#endif /* __NTDD8042_H */ +#endif /* _NTDD8042_ */ diff --git a/include/psdk/ntddbeep.h b/include/psdk/ntddbeep.h new file mode 100644 index 00000000000..ab3b41e267c --- /dev/null +++ b/include/psdk/ntddbeep.h @@ -0,0 +1,43 @@ +/* + * ntddbeep.h + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef _NTDDBEEP_ +#define _NTDDBEEP_ + + +#ifdef __cplusplus +extern "C" { +#endif + +#define DD_BEEP_DEVICE_NAME "\\Device\\Beep" +#define DD_BEEP_DEVICE_NAME_U L"\\Device\\Beep" +#define BEEP_FREQUENCY_MINIMUM 0x25 +#define BEEP_FREQUENCY_MAXIMUM 0x7FFF +#define IOCTL_BEEP_SET CTL_CODE(FILE_DEVICE_BEEP, 0, METHOD_BUFFERED, FILE_ANY_ACCESS) + +typedef struct _BEEP_SET_PARAMETERS +{ + ULONG Frequency; + ULONG Duration; +} BEEP_SET_PARAMETERS, *PBEEP_SET_PARAMETERS; + +#ifdef __cplusplus +} +#endif +#endif + diff --git a/include/ddk/ntddcdrm.h b/include/psdk/ntddcdrm.h similarity index 99% rename from include/ddk/ntddcdrm.h rename to include/psdk/ntddcdrm.h index 7fab5c42906..06411661995 100644 --- a/include/ddk/ntddcdrm.h +++ b/include/psdk/ntddcdrm.h @@ -20,8 +20,8 @@ * */ -#ifndef __NTDDCDRM_H -#define __NTDDCDRM_H +#ifndef _NTDDCDRM_ +#define _NTDDCDRM_ #include "ntddstor.h" @@ -342,4 +342,4 @@ typedef struct __RAW_READ_INFO { } #endif -#endif /* __NTDDCDRM_H */ +#endif /* _NTDDCDRM_ */ diff --git a/include/ddk/ntddcdvd.h b/include/psdk/ntddcdvd.h similarity index 98% rename from include/ddk/ntddcdvd.h rename to include/psdk/ntddcdvd.h index 4169358fec9..9bd4b3cdc90 100644 --- a/include/ddk/ntddcdvd.h +++ b/include/psdk/ntddcdvd.h @@ -20,8 +20,8 @@ * */ -#ifndef __NTDDCDVD_H -#define __NTDDCDVD_H +#ifndef _NTDDCDVD_ +#define _NTDDCDVD_ #include "ntddstor.h" @@ -205,4 +205,4 @@ typedef struct _DVD_REGION { } #endif -#endif /* __NTDDCDVD_H */ +#endif /* _NTDDCDVD_ */ diff --git a/include/ddk/ntdddisk.h b/include/psdk/ntdddisk.h similarity index 99% rename from include/ddk/ntdddisk.h rename to include/psdk/ntdddisk.h index c475f2cfff9..c52a72d7192 100644 --- a/include/ddk/ntdddisk.h +++ b/include/psdk/ntdddisk.h @@ -20,8 +20,8 @@ * */ -#ifndef __NTDDDISK_H -#define __NTDDDISK_H +#ifndef _NTDDDISK_H_ +#define _NTDDDISK_H_ /* Helper macro to enable gcc's extension. */ #ifndef __GNU_EXTENSION @@ -606,4 +606,4 @@ typedef struct _MAPPED_ADDRESS { } #endif -#endif /* __NTDDDISK_H */ +#endif /* _NTDDDISK_H_ */ diff --git a/include/ddk/ntddft.h b/include/psdk/ntddft.h similarity index 51% rename from include/ddk/ntddft.h rename to include/psdk/ntddft.h index ae7c953f2eb..dac80e0196f 100644 --- a/include/ddk/ntddft.h +++ b/include/psdk/ntddft.h @@ -1,3 +1,20 @@ +/* + * ntddft.h + * + * Contributors: + * Created by Alex Ionescu + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ #ifndef _NTDDFT_ #define _NTDDFT_ diff --git a/include/psdk/ntddndis.h b/include/psdk/ntddndis.h index f4278cc4909..10d62d19d4c 100644 --- a/include/psdk/ntddndis.h +++ b/include/psdk/ntddndis.h @@ -20,8 +20,8 @@ * */ -#ifndef __NTDDNDIS_H -#define __NTDDNDIS_H +#ifndef _NTDDNDIS_ +#define _NTDDNDIS_ #ifdef __cplusplus extern "C" { @@ -326,7 +326,7 @@ typedef enum _NDIS_MEDIA_STATE { NdisMediaStateDisconnected } NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE; -#ifndef __NDIS_H +#ifndef _NDIS_ typedef int NDIS_STATUS, *PNDIS_STATUS; #endif @@ -379,4 +379,4 @@ typedef struct _NDIS_CO_LINK_SPEED { } #endif -#endif /* __NTDDNDIS_H */ +#endif /* _NTDDNDIS_ */ diff --git a/include/ddk/ntddpar.h b/include/psdk/ntddpar.h similarity index 98% rename from include/ddk/ntddpar.h rename to include/psdk/ntddpar.h index 917c7d82785..6de86f1ba85 100644 --- a/include/ddk/ntddpar.h +++ b/include/psdk/ntddpar.h @@ -20,8 +20,8 @@ * */ -#ifndef __NTDDPAR_H -#define __NTDDPAR_H +#ifndef _NTDDPAR_ +#define _NTDDPAR_ #ifdef __cplusplus extern "C" { @@ -110,4 +110,4 @@ typedef struct _PARCLASS_NEGOTIATION_MASK { } #endif -#endif /* __NTDDPAR_H */ +#endif /* _NTDDPAR_ */ diff --git a/include/ddk/ntddser.h b/include/psdk/ntddser.h similarity index 99% rename from include/ddk/ntddser.h rename to include/psdk/ntddser.h index c83147341f7..881c47da709 100644 --- a/include/ddk/ntddser.h +++ b/include/psdk/ntddser.h @@ -20,8 +20,8 @@ * */ -#ifndef __NTDDSER_H -#define __NTDDSER_H +#ifndef _NTDDSER_ +#define _NTDDSER_ #ifdef __cplusplus extern "C" { @@ -444,4 +444,4 @@ typedef struct _SERIALCONFIG { } #endif -#endif /* __NTDDSER_H */ +#endif /* _NTDDSER_ */ diff --git a/include/ddk/ntddtape.h b/include/psdk/ntddtape.h similarity index 97% rename from include/ddk/ntddtape.h rename to include/psdk/ntddtape.h index d0deb5a8461..0b31cc6524c 100644 --- a/include/ddk/ntddtape.h +++ b/include/psdk/ntddtape.h @@ -20,8 +20,8 @@ * */ -#ifndef __NTDDTAPE_H -#define __NTDDTAPE_H +#ifndef _NTDDTAPE_ +#define _NTDDTAPE_ #include "ntddstor.h" @@ -71,4 +71,4 @@ typedef enum _TAPE_DRIVE_PROBLEM_TYPE { } #endif -#endif /* __NTDDTAPE_H */ +#endif /* _NTDDTAPE_ */ diff --git a/include/ddk/ntddtdi.h b/include/psdk/ntddtdi.h similarity index 73% rename from include/ddk/ntddtdi.h rename to include/psdk/ntddtdi.h index 04b725bfb92..4ea7d7711ba 100644 --- a/include/ddk/ntddtdi.h +++ b/include/psdk/ntddtdi.h @@ -1,3 +1,20 @@ +/* + * ntddtdi.h + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ #ifndef _NTDDTDI_ #define _NTDDTDI_ diff --git a/include/ddk/ntddvdeo.h b/include/psdk/ntddvdeo.h similarity index 99% rename from include/ddk/ntddvdeo.h rename to include/psdk/ntddvdeo.h index f2fdc5bcae7..2aa4774382e 100644 --- a/include/ddk/ntddvdeo.h +++ b/include/psdk/ntddvdeo.h @@ -20,8 +20,8 @@ * */ -#ifndef __NTDDVDEO_H -#define __NTDDVDEO_H +#ifndef _NTDDVDEO_ +#define _NTDDVDEO_ #ifdef __cplusplus extern "C" { @@ -473,4 +473,4 @@ typedef struct _ENG_EVENT } #endif -#endif /* __NTDDVDEO_H */ +#endif /* _NTDDVDEO_ */ diff --git a/include/ddk/ntddvol.h b/include/psdk/ntddvol.h similarity index 98% rename from include/ddk/ntddvol.h rename to include/psdk/ntddvol.h index 7898eeee815..0b14c49af4d 100644 --- a/include/ddk/ntddvol.h +++ b/include/psdk/ntddvol.h @@ -20,8 +20,8 @@ * */ -#ifndef __NTDDVOL_H -#define __NTDDVOL_H +#ifndef _NTDDVOL_ +#define _NTDDVOL_ #ifdef __cplusplus extern "C" { @@ -132,4 +132,4 @@ typedef struct _VOLUME_FAILOVER_SET { } #endif -#endif /* __NTDDVOL_H */ +#endif /* _NTDDVOL_ */ diff --git a/include/ddk/objerror.h b/include/psdk/objerror.h similarity index 100% rename from include/ddk/objerror.h rename to include/psdk/objerror.h diff --git a/include/ddk/polarity.h b/include/psdk/polarity.h similarity index 100% rename from include/ddk/polarity.h rename to include/psdk/polarity.h diff --git a/include/ddk/prntfont.h b/include/psdk/prntfont.h similarity index 100% rename from include/ddk/prntfont.h rename to include/psdk/prntfont.h diff --git a/include/psdk/sti.h b/include/psdk/sti.h index 204492d9a2f..fd6c0a5033f 100644 --- a/include/psdk/sti.h +++ b/include/psdk/sti.h @@ -173,7 +173,7 @@ DECLARE_INTERFACE_(IStillImageW, IUnknown) #endif #ifdef __cplusplus -}; +} #endif #include diff --git a/include/ddk/stierr.h b/include/psdk/stierr.h similarity index 100% rename from include/ddk/stierr.h rename to include/psdk/stierr.h diff --git a/include/ddk/stireg.h b/include/psdk/stireg.h similarity index 100% rename from include/ddk/stireg.h rename to include/psdk/stireg.h diff --git a/include/ddk/tdi.h b/include/psdk/tdi.h similarity index 100% rename from include/ddk/tdi.h rename to include/psdk/tdi.h diff --git a/include/ddk/tdiinfo.h b/include/psdk/tdiinfo.h similarity index 100% rename from include/ddk/tdiinfo.h rename to include/psdk/tdiinfo.h diff --git a/include/ddk/unknown.h b/include/psdk/unknown.h similarity index 67% rename from include/ddk/unknown.h rename to include/psdk/unknown.h index bdeb26d0212..6fe27fc3658 100644 --- a/include/ddk/unknown.h +++ b/include/psdk/unknown.h @@ -1,3 +1,21 @@ +/* + * unknown.h + * + * Contributors: + * Created by Magnus Olsen + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + #ifndef __unknwn_h__ #define __unknwn_h__ diff --git a/include/ddk/warning.h b/include/psdk/warning.h similarity index 100% rename from include/ddk/warning.h rename to include/psdk/warning.h diff --git a/include/psdk/winddi.h b/include/psdk/winddi.h index ceeb206dbb9..ab5da250cd6 100644 --- a/include/psdk/winddi.h +++ b/include/psdk/winddi.h @@ -84,7 +84,7 @@ DECLARE_HANDLE(DHSURF); DECLARE_HANDLE(DHPDEV); DECLARE_HANDLE(HDRVOBJ); -#ifndef __NTDDVDEO_H +#ifndef _NTDDVDEO_ typedef struct _ENG_EVENT *PEVENT; #endif diff --git a/include/reactos/debug.h b/include/reactos/debug.h index 3cead4a47bb..11626d296f4 100644 --- a/include/reactos/debug.h +++ b/include/reactos/debug.h @@ -107,6 +107,11 @@ RtlAssert( #define WARN_(ch, fmt, ...) DbgPrintEx(DPFLTR_##ch##_ID, DPFLTR_WARNING_LEVEL, "(%s:%d) " fmt, __FILE__, __LINE__, ##__VA_ARGS__) #define TRACE_(ch, fmt, ...) DbgPrintEx(DPFLTR_##ch##_ID, DPFLTR_TRACE_LEVEL, "(%s:%d) " fmt, __FILE__, __LINE__, ##__VA_ARGS__) #define INFO_(ch, fmt, ...) DbgPrintEx(DPFLTR_##ch##_ID, DPFLTR_INFO_LEVEL, "(%s:%d) " fmt, __FILE__, __LINE__, ##__VA_ARGS__) + + #define ERR__(ch, fmt, ...) DbgPrintEx(ch, DPFLTR_ERROR_LEVEL, "(%s:%d) " fmt, __FILE__, __LINE__, ##__VA_ARGS__) + #define WARN__(ch, fmt, ...) DbgPrintEx(ch, DPFLTR_WARNING_LEVEL, "(%s:%d) " fmt, __FILE__, __LINE__, ##__VA_ARGS__) + #define TRACE__(ch, fmt, ...) DbgPrintEx(ch, DPFLTR_TRACE_LEVEL, "(%s:%d) " fmt, __FILE__, __LINE__, ##__VA_ARGS__) + #define INFO__(ch, fmt, ...) DbgPrintEx(ch, DPFLTR_INFO_LEVEL, "(%s:%d) " fmt, __FILE__, __LINE__, ##__VA_ARGS__) #else /* not DBG */ /* On non-debug builds, we never show these */ @@ -119,6 +124,11 @@ RtlAssert( #define WARN_(ch, ...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0) #define TRACE_(ch, ...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0) #define INFO_(ch, ...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0) + + #define ERR__(ch, ...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0) + #define WARN__(ch, ...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0) + #define TRACE__(ch, ...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0) + #define INFO__(ch, ...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0) #endif /* not DBG */ #define ASSERT_IRQL_LESS_OR_EQUAL(x) ASSERT(KeGetCurrentIrql()<=(x)) diff --git a/include/reactos/wine/ddk/imm.h b/include/reactos/wine/ddk/imm.h new file mode 100644 index 00000000000..29242f38279 --- /dev/null +++ b/include/reactos/wine/ddk/imm.h @@ -0,0 +1,52 @@ + +#ifndef _WINE_IMM_H_ +#define _WINE_IMM_H_ + +#include + +#ifdef WINE_NO_UNICODE_MACROS +# define WINELIB_NAME_AW(func) \ + func##_must_be_suffixed_with_W_or_A_in_this_context \ + func##_must_be_suffixed_with_W_or_A_in_this_context +#else /* WINE_NO_UNICODE_MACROS */ +# ifdef UNICODE +# define WINELIB_NAME_AW(func) func##W +# else +# define WINELIB_NAME_AW(func) func##A +# endif +#endif /* WINE_NO_UNICODE_MACROS */ + +#ifdef WINE_NO_UNICODE_MACROS +# define DECL_WINELIB_TYPE_AW(type) /* nothing */ +#else +# define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type; +#endif + +#include + +typedef struct _tagINPUTCONTEXT { + HWND hWnd; + BOOL fOpen; + POINT ptStatusWndPos; + POINT ptSoftKbdPos; + DWORD fdwConversion; + DWORD fdwSentence; + union { + LOGFONTA A; + LOGFONTW W; + } lfFont; + COMPOSITIONFORM cfCompForm; + CANDIDATEFORM cfCandForm[4]; + HIMCC hCompStr; + HIMCC hCandInfo; + HIMCC hGuideLine; + HIMCC hPrivate; + DWORD dwNumMsgBuf; + HIMCC hMsgBuf; + DWORD fdwInit; + DWORD dwReserve[3]; +} INPUTCONTEXT, *LPINPUTCONTEXT; + +LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC); + +#endif /* _WINE_IMM_H_ */ diff --git a/include/reactos/wine/imm.h b/include/reactos/wine/imm.h new file mode 100644 index 00000000000..a41831db33f --- /dev/null +++ b/include/reactos/wine/imm.h @@ -0,0 +1,2 @@ + +#include "ddk/imm.h" diff --git a/include/xdk/exfuncs.h b/include/xdk/exfuncs.h index a12f35406e3..433909c0af2 100644 --- a/include/xdk/exfuncs.h +++ b/include/xdk/exfuncs.h @@ -114,7 +114,11 @@ ExpInterlockedPushEntrySList( #else /* !defined(_WIN64) */ +#ifdef NONAMELESSUNION +#define ExQueryDepthSList(listhead) (listhead)->s.Depth +#else #define ExQueryDepthSList(listhead) (listhead)->Depth +#endif NTKERNELAPI PSINGLE_LIST_ENTRY @@ -171,6 +175,15 @@ ExAllocateFromPagedLookasideList( PVOID Entry; Lookaside->L.TotalAllocates++; +#ifdef NONAMELESSUNION + Entry = InterlockedPopEntrySList(&Lookaside->L.u.ListHead); + if (Entry == NULL) { + Lookaside->L.u2.AllocateMisses++; + Entry = (Lookaside->L.u4.Allocate)(Lookaside->L.Type, + Lookaside->L.Size, + Lookaside->L.Tag); + } +#else /* NONAMELESSUNION */ Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead); if (Entry == NULL) { Lookaside->L.AllocateMisses++; @@ -178,6 +191,7 @@ ExAllocateFromPagedLookasideList( Lookaside->L.Size, Lookaside->L.Tag); } +#endif /* NONAMELESSUNION */ return Entry; } @@ -188,12 +202,21 @@ ExFreeToPagedLookasideList( IN PVOID Entry) { Lookaside->L.TotalFrees++; +#ifdef NONAMELESSUNION + if (ExQueryDepthSList(&Lookaside->L.u.ListHead) >= Lookaside->L.Depth) { + Lookaside->L.u3.FreeMisses++; + (Lookaside->L.u5.Free)(Entry); + } else { + InterlockedPushEntrySList(&Lookaside->L.u.ListHead, (PSLIST_ENTRY)Entry); + } +#else /* NONAMELESSUNION */ if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) { Lookaside->L.FreeMisses++; (Lookaside->L.Free)(Entry); } else { InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry); } +#endif /* NONAMELESSUNION */ } #endif /* _WIN2K_COMPAT_SLIST_USAGE */ @@ -1002,6 +1025,16 @@ ExAllocateFromLookasideListEx( PVOID Entry; Lookaside->L.TotalAllocates += 1; +#ifdef NONAMELESSUNION + Entry = InterlockedPopEntrySList(&Lookaside->L.u.ListHead); + if (Entry == NULL) { + Lookaside->L.u2.AllocateMisses += 1; + Entry = (Lookaside->L.u4.AllocateEx)(Lookaside->L.Type, + Lookaside->L.Size, + Lookaside->L.Tag, + Lookaside); + } +#else /* NONAMELESSUNION */ Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead); if (Entry == NULL) { Lookaside->L.AllocateMisses += 1; @@ -1010,6 +1043,7 @@ ExAllocateFromLookasideListEx( Lookaside->L.Tag, Lookaside); } +#endif /* NONAMELESSUNION */ return Entry; } @@ -1052,6 +1086,20 @@ ExAllocateFromNPagedLookasideList( PVOID Entry; Lookaside->L.TotalAllocates++; +#ifdef NONAMELESSUNION +#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_) + Entry = ExInterlockedPopEntrySList(&Lookaside->L.u.ListHead, + &Lookaside->Lock__ObsoleteButDoNotDelete); +#else + Entry = InterlockedPopEntrySList(&Lookaside->L.u.ListHead); +#endif + if (Entry == NULL) { + Lookaside->L.u2.AllocateMisses++; + Entry = (Lookaside->L.u4.Allocate)(Lookaside->L.Type, + Lookaside->L.Size, + Lookaside->L.Tag); + } +#else /* NONAMELESSUNION */ #if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_) Entry = ExInterlockedPopEntrySList(&Lookaside->L.ListHead, &Lookaside->Lock__ObsoleteButDoNotDelete); @@ -1064,6 +1112,7 @@ ExAllocateFromNPagedLookasideList( Lookaside->L.Size, Lookaside->L.Tag); } +#endif /* NONAMELESSUNION */ return Entry; } @@ -1073,6 +1122,20 @@ ExFreeToNPagedLookasideList( IN PVOID Entry) { Lookaside->L.TotalFrees++; +#ifdef NONAMELESSUNION + if (ExQueryDepthSList(&Lookaside->L.u.ListHead) >= Lookaside->L.Depth) { + Lookaside->L.u3.FreeMisses++; + (Lookaside->L.u5.Free)(Entry); + } else { +#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_) + ExInterlockedPushEntrySList(&Lookaside->L.u.ListHead, + (PSLIST_ENTRY)Entry, + &Lookaside->Lock__ObsoleteButDoNotDelete); +#else + InterlockedPushEntrySList(&Lookaside->L.u.ListHead, (PSLIST_ENTRY)Entry); +#endif + } +#else /* NONAMELESSUNION */ if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) { Lookaside->L.FreeMisses++; (Lookaside->L.Free)(Entry); @@ -1085,6 +1148,7 @@ ExFreeToNPagedLookasideList( InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry); #endif } +#endif /* NONAMELESSUNION */ } -$endif (_WDMDDK_) +$endif (_WDMDDK_) diff --git a/include/xdk/iofuncs.h b/include/xdk/iofuncs.h index 32b473e6e72..5116cd685e0 100644 --- a/include/xdk/iofuncs.h +++ b/include/xdk/iofuncs.h @@ -2435,7 +2435,11 @@ IoSkipCurrentIrpStackLocation( { ASSERT(Irp->CurrentLocation <= Irp->StackCount); Irp->CurrentLocation++; +#ifdef NONAMELESSUNION + Irp->Tail.Overlay.s.u.CurrentStackLocation++; +#else Irp->Tail.Overlay.CurrentStackLocation++; +#endif } FORCEINLINE @@ -2445,7 +2449,11 @@ IoSetNextIrpStackLocation( { ASSERT(Irp->CurrentLocation > 0); Irp->CurrentLocation--; +#ifdef NONAMELESSUNION + Irp->Tail.Overlay.s.u.CurrentStackLocation--; +#else Irp->Tail.Overlay.CurrentStackLocation--; +#endif } FORCEINLINE @@ -2454,7 +2462,11 @@ IoGetNextIrpStackLocation( IN PIRP Irp) { ASSERT(Irp->CurrentLocation > 0); +#ifdef NONAMELESSUNION + return ((Irp)->Tail.Overlay.s.u.CurrentStackLocation - 1 ); +#else return ((Irp)->Tail.Overlay.CurrentStackLocation - 1 ); +#endif } FORCEINLINE @@ -2545,7 +2557,11 @@ IoGetCurrentIrpStackLocation( IN PIRP Irp) { ASSERT(Irp->CurrentLocation <= Irp->StackCount + 1); +#ifdef NONAMELESSUNION + return Irp->Tail.Overlay.s.u.CurrentStackLocation; +#else return Irp->Tail.Overlay.CurrentStackLocation; +#endif } FORCEINLINE diff --git a/include/xdk/iotypes.h b/include/xdk/iotypes.h index e519bb9d837..55673244e1a 100644 --- a/include/xdk/iotypes.h +++ b/include/xdk/iotypes.h @@ -2029,30 +2029,35 @@ typedef struct _SCATTER_GATHER_ELEMENT { ULONG_PTR Reserved; } SCATTER_GATHER_ELEMENT, *PSCATTER_GATHER_ELEMENT; -#if defined(_MSC_EXTENSIONS) +#if defined(_MSC_EXTENSIONS) || defined(__GNUC__) +#if defined(_MSC_VER) #if _MSC_VER >= 1200 #pragma warning(push) #endif #pragma warning(disable:4200) +#endif /* _MSC_VER */ + typedef struct _SCATTER_GATHER_LIST { ULONG NumberOfElements; ULONG_PTR Reserved; SCATTER_GATHER_ELEMENT Elements[1]; } SCATTER_GATHER_LIST, *PSCATTER_GATHER_LIST; +#if defined(_MSC_VER) #if _MSC_VER >= 1200 #pragma warning(pop) #else #pragma warning(default:4200) #endif +#endif /* _MSC_VER */ -#else +#else /* defined(_MSC_EXTENSIONS) || defined(__GNUC__) */ struct _SCATTER_GATHER_LIST; typedef struct _SCATTER_GATHER_LIST SCATTER_GATHER_LIST, *PSCATTER_GATHER_LIST; -#endif +#endif /* defined(_MSC_EXTENSIONS) || defined(__GNUC__) */ typedef NTSTATUS (NTAPI DRIVER_ADD_DEVICE)( diff --git a/include/xdk/ketypes.h b/include/xdk/ketypes.h index ff80f3204e5..86046749953 100644 --- a/include/xdk/ketypes.h +++ b/include/xdk/ketypes.h @@ -678,7 +678,7 @@ typedef struct _KDEVICE_QUEUE { CSHORT Size; LIST_ENTRY DeviceListHead; KSPIN_LOCK Lock; - #if defined(_AMD64_) +# if defined(_AMD64_) _ANONYMOUS_UNION union { BOOLEAN Busy; _ANONYMOUS_STRUCT struct { @@ -686,9 +686,9 @@ typedef struct _KDEVICE_QUEUE { LONG64 Hint:56; } DUMMYSTRUCTNAME; } DUMMYUNIONNAME; - #else +# else BOOLEAN Busy; - #endif +# endif } KDEVICE_QUEUE, *PKDEVICE_QUEUE, *RESTRICTED_POINTER PRKDEVICE_QUEUE; #define TIMER_EXPIRED_INDEX_BITS 6 @@ -810,9 +810,9 @@ typedef struct _KTIMER { ULARGE_INTEGER DueTime; LIST_ENTRY TimerListEntry; struct _KDPC *Dpc; - #if !defined(_X86_) +# if !defined(_X86_) ULONG Processor; - #endif +# endif ULONG Period; } KTIMER, *PKTIMER, *RESTRICTED_POINTER PRKTIMER; diff --git a/include/xdk/wmifuncs.h b/include/xdk/wmifuncs.h index c2b47a7880f..2c841043d5e 100644 --- a/include/xdk/wmifuncs.h +++ b/include/xdk/wmifuncs.h @@ -16,7 +16,7 @@ WmiTraceMessage( #endif #endif /* RUN_WPP */ - #if (NTDDI_VERSION >= NTDDI_WINXP) +#if (NTDDI_VERSION >= NTDDI_WINXP) NTKERNELAPI NTSTATUS diff --git a/include/xdk/x86/ke.h b/include/xdk/x86/ke.h index 19d42740ee4..96743803284 100644 --- a/include/xdk/x86/ke.h +++ b/include/xdk/x86/ke.h @@ -151,9 +151,15 @@ _KeQueryTickCount( OUT PLARGE_INTEGER CurrentCount) { for (;;) { +#ifdef NONAMELESSUNION + CurrentCount->s.HighPart = KeTickCount.High1Time; + CurrentCount->s.LowPart = KeTickCount.LowPart; + if (CurrentCount->s.HighPart == KeTickCount.High2Time) break; +#else CurrentCount->HighPart = KeTickCount.High1Time; CurrentCount->LowPart = KeTickCount.LowPart; if (CurrentCount->HighPart == KeTickCount.High2Time) break; +#endif YieldProcessor(); } } diff --git a/lib/sdk/crt/locale/locale.c b/lib/sdk/crt/locale/locale.c index 7e7b1afd4af..b5aa7f154b9 100644 --- a/lib/sdk/crt/locale/locale.c +++ b/lib/sdk/crt/locale/locale.c @@ -755,38 +755,20 @@ int CDECL _setmbcp(int cp) /********************************************************************* - * __lc_collate_cp (MSVCRT.@) - * - * @unimplemented + * ___lc_handle_func (MSVCRT.@) */ -void __lc_collate_cp(int cp) +HANDLE * CDECL ___lc_handle_func(void) { -FIXME("__lc_collate_cp - stub\n"); -return; + return MSVCRT___lc_handle; } /********************************************************************* - * __lc_handle (MSVCRT.@) - * - * @unimplemented + * ___lc_codepage_func (MSVCRT.@) */ -void __lc_handle(void) +int CDECL ___lc_codepage_func(void) { -FIXME("__lc_handle - stub\n"); -return; -} - - -/********************************************************************* - * __lc_codepage (MSVCRT.@) - * - * @unimplemented - */ -void __lc_codepage(void) -{ -FIXME("__lc_codepage - stub\n"); -return; + return MSVCRT___lc_codepage; } diff --git a/ntoskrnl/ex/init.c b/ntoskrnl/ex/init.c index 75a0ce5ad11..b44b58976b2 100644 --- a/ntoskrnl/ex/init.c +++ b/ntoskrnl/ex/init.c @@ -1851,6 +1851,9 @@ Phase1InitializationDiscard(IN PVOID Context) /* Update progress bar */ InbvUpdateProgressBar(90); + /* Enough fun for now */ + AllowPagedPool = FALSE; + /* Launch initial process */ ProcessInfo = &InitBuffer->ProcessInfo; ExpLoadInitialProcess(InitBuffer, &ProcessParameters, &Environment); @@ -1861,9 +1864,6 @@ Phase1InitializationDiscard(IN PVOID Context) /* Allow strings to be displayed */ InbvEnableDisplayString(TRUE); - /* Enough fun for now */ - AllowPagedPool = FALSE; - /* Wait 5 seconds for it to initialize */ Timeout.QuadPart = Int32x32To64(5, -10000000); Status = ZwWaitForSingleObject(ProcessInfo->ProcessHandle, FALSE, &Timeout); diff --git a/subsystems/win32/win32k/eng/bitblt.c b/subsystems/win32/win32k/eng/bitblt.c index 92e90959dc4..9077df7da33 100644 --- a/subsystems/win32/win32k/eng/bitblt.c +++ b/subsystems/win32/win32k/eng/bitblt.c @@ -435,11 +435,11 @@ EngBitBlt(SURFOBJ *DestObj, clippingType = ClipRegion->iDComplexity; } - if (R4_MASK == rop4) + /*if (R4_MASK == rop4) { BltRectFunc = BltMask; } - else if (ROP3_TO_ROP4(PATCOPY) == rop4) + else */if (ROP3_TO_ROP4(PATCOPY) == rop4) { if (pbo && pbo->iSolidColor == 0xFFFFFFFF) BltRectFunc = CallDibBitBlt; diff --git a/subsystems/win32/win32k/include/xlateobj.h b/subsystems/win32/win32k/include/xlateobj.h index 18d2f240012..3b6cd04b8ed 100644 --- a/subsystems/win32/win32k/include/xlateobj.h +++ b/subsystems/win32/win32k/include/xlateobj.h @@ -48,4 +48,6 @@ VOID NTAPI EXLATEOBJ_vInitXlateFromDCs(PEXLATEOBJ pexlo, PDC pdcSrc, PDC pdcDst) VOID NTAPI EXLATEOBJ_vInitSrcMonoXlate(PEXLATEOBJ pexlo, PPALETTE ppalDst, ULONG Color0, ULONG Color1); VOID NTAPI EXLATEOBJ_vCleanup(PEXLATEOBJ pexlo); +extern XLATEOBJ* gpxloTrivial; + //#define XLATEOBJ_iXlate(pxo, Color) ((EXLATEOBJ*)pxo)->pfnXlate(pxo, Color) diff --git a/subsystems/win32/win32k/ntuser/cursoricon.c b/subsystems/win32/win32k/ntuser/cursoricon.c index 917b142873a..4b0fa99aba7 100644 --- a/subsystems/win32/win32k/ntuser/cursoricon.c +++ b/subsystems/win32/win32k/ntuser/cursoricon.c @@ -38,7 +38,7 @@ #include -#define NDEBUG +//#define NDEBUG #include static PAGED_LOOKASIDE_LIST gProcessLookasideList; @@ -1217,71 +1217,92 @@ UserDrawIconEx( HBRUSH hbrFlickerFreeDraw, UINT diFlags) { - BOOL Ret = FALSE; - HBITMAP hbmMask, hbmColor; - BITMAP bmpColor, bm; + PSURFACE psurfColor = NULL, psurfMask, psurfDst = NULL; + HGDIOBJ hObjs[3]; + PGDIOBJ pObjs[3]; BOOL DoFlickerFree; - INT iOldBkColor = 0, iOldTxtColor = 0; - - HDC hMemDC, hDestDC = hDc; - HGDIOBJ hOldOffBrush = 0; - HGDIOBJ hOldOffBmp = 0; - HBITMAP hTmpBmp = 0, hOffBmp = 0; - BOOL bAlpha = FALSE; - INT x=xLeft, y=yTop; - - hbmMask = pIcon->IconInfo.hbmMask; - hbmColor = pIcon->IconInfo.hbmColor; + PDC pdc; + HSURF hsurfDst = NULL; + RECTL rcSrc, rcDst; + CLIPOBJ clo, *pclo; + EXLATEOBJ exlo; + BOOL bAlpha = FALSE, Ret = FALSE, bStretch; if (istepIfAniCur) DPRINT1("NtUserDrawIconEx: istepIfAniCur is not supported!\n"); - if (!hbmMask || !IntGdiGetObject(hbmMask, sizeof(BITMAP), (PVOID)&bm)) + DPRINT("Flags : 0x%08x\n", diFlags); + + hObjs[0] = pIcon->IconInfo.hbmMask; + hObjs[1] = pIcon->IconInfo.hbmColor; + hObjs[2] = hDc; + GDIOBJ_LockMultipleObjs(3, hObjs, pObjs); + psurfMask = pObjs[0]; + psurfColor = pObjs[1]; + pdc = pObjs[2]; + + if (!pIcon->IconInfo.hbmMask + || !psurfMask) { + DPRINT1("No hbmMask?!\n"); + if(pdc) DC_UnlockDc(pdc); + if(psurfColor) SURFACE_UnlockSurface(psurfColor); return FALSE; } - if (hbmColor && !IntGdiGetObject(hbmColor, sizeof(BITMAP), (PVOID)&bmpColor)) + if (pIcon->IconInfo.hbmColor + && !psurfColor) { + DPRINT1("Unable to lock the color Bitmap?!\n"); + SURFACE_UnlockSurface(psurfMask); + if(pdc) DC_UnlockDc(pdc); return FALSE; } - if(!(hMemDC = NtGdiCreateCompatibleDC(hDc))) + if(!psurfColor) { - DPRINT1("NtGdiCreateCompatibleDC failed!\n"); + DPRINT("Monochrome Icon\n"); + psurfColor = psurfMask; + RECTL_vSetRect(&rcSrc, 0, pIcon->Size.cy, pIcon->Size.cx, 2*pIcon->Size.cy); + } + else + { + DPRINT("Color Icon\n"); + RECTL_vSetRect(&rcSrc, 0, 0, pIcon->Size.cx, pIcon->Size.cy); + } + + if(!pdc) + { + SetLastWin32Error(ERROR_INVALID_PARAMETER); + SURFACE_UnlockSurface(psurfMask); + if(psurfColor != psurfMask) SURFACE_UnlockSurface(psurfColor); + DPRINT1("Invalid DC!\n"); return FALSE; } /* Check for alpha */ - if (hbmColor - && (bmpColor.bmBitsPixel == 32) + if ((BitsPerFormat(psurfColor->SurfObj.iBitmapFormat) == 32) && (diFlags & DI_IMAGE)) { - SURFACE *psurfOff = NULL; PFN_DIB_GetPixel fnSource_GetPixel = NULL; INT i, j; /* In order to correctly display 32 bit icons Windows first scans the image, because information about transparency is not stored in any image's headers */ - psurfOff = SURFACE_LockSurface(hbmColor); - if (psurfOff) + fnSource_GetPixel = DibFunctionsForBitmapFormat[psurfColor->SurfObj.iBitmapFormat].DIB_GetPixel; + if (fnSource_GetPixel) { - fnSource_GetPixel = DibFunctionsForBitmapFormat[psurfOff->SurfObj.iBitmapFormat].DIB_GetPixel; - if (fnSource_GetPixel) + for (i = 0; i < psurfColor->SurfObj.sizlBitmap.cx; i++) { - for (i = 0; i < psurfOff->SurfObj.sizlBitmap.cx; i++) + for (j = 0; j < psurfColor->SurfObj.sizlBitmap.cy; j++) { - for (j = 0; j < psurfOff->SurfObj.sizlBitmap.cy; j++) - { - bAlpha = ((BYTE)(fnSource_GetPixel(&psurfOff->SurfObj, i, j) >> 24) & 0xff); - if (bAlpha) - break; - } + bAlpha = ((BYTE)(fnSource_GetPixel(&psurfColor->SurfObj, i, j) >> 24) & 0xff); if (bAlpha) break; } + if (bAlpha) + break; } - SURFACE_UnlockSurface(psurfOff); } } @@ -1293,45 +1314,90 @@ UserDrawIconEx( cyHeight = ((diFlags & DI_DEFAULTSIZE) ? UserGetSystemMetrics(SM_CYICON) : pIcon->Size.cy); + /* Check stretching */ + bStretch = (pIcon->Size.cx != cxWidth) || (pIcon->Size.cy != cyHeight); + DoFlickerFree = (hbrFlickerFreeDraw && (GDI_HANDLE_GET_TYPE(hbrFlickerFreeDraw) == GDI_OBJECT_TYPE_BRUSH)); if (DoFlickerFree) { - hDestDC = NtGdiCreateCompatibleDC(hDc); - if(!hDestDC) + EBRUSHOBJ ebo; + PBRUSH pBrush ; + POINTL ptBrushOrig; + + pBrush = BRUSH_LockBrush(hbrFlickerFreeDraw); + if(!pBrush) + { + SetLastWin32Error(ERROR_INVALID_PARAMETER); + DPRINT1("Invalid brush!\n"); + goto cleanup; + } + + hsurfDst = IntCreateCompatibleBitmap(pdc, cxWidth, cyHeight); + if(!hsurfDst) + { + DPRINT1("Error : Failed to allocate the offscreen surface\n"); + goto cleanup; + } + psurfDst = SURFACE_LockSurface(hsurfDst); + if(!psurfDst) + { + DPRINT1("Error : Failed to lock the offScreen bitmap\n"); + goto cleanup; + } + RECTL_vSetRect(&rcDst, 0, 0, cxWidth, cyHeight); + + ptBrushOrig.x = pBrush->ptOrigin.x; + ptBrushOrig.y = pBrush->ptOrigin.y; + + EBRUSHOBJ_vInit(&ebo, pBrush, pdc); + + clo.iDComplexity = DC_TRIVIAL; + pclo = &clo; + + IntEngBitBlt(&psurfDst->SurfObj, NULL, NULL, pclo, NULL, &rcDst, NULL, + NULL, &ebo.BrushObject, &ptBrushOrig, ROP3_TO_ROP4(PATCOPY)); + + EBRUSHOBJ_vCleanup(&ebo); + BRUSH_UnlockBrush(pBrush); + } + else + { + RECT rcBmp; + RECTL_vSetRect(&rcDst, xLeft, yTop, xLeft + cxWidth, yTop + cyHeight); + IntLPtoDP(pdc, (LPPOINT)&rcDst, 2); + RECTL_vOffsetRect(&rcDst, pdc->ptlDCOrig.x, pdc->ptlDCOrig.y); + + DC_vPrepareDCsForBlit(pdc, rcDst, NULL, rcDst ); + + if (pdc->pdcattr->ulDirty_ & (DIRTY_FILL | DC_BRUSH_DIRTY)) + DC_vUpdateFillBrush(pdc); + + psurfDst = pdc->dclevel.pSurface; + pclo = pdc->rosdc.CombinedClip; + RECTL_vSetRect(&rcBmp, 0, 0, psurfDst->SurfObj.sizlBitmap.cx, psurfDst->SurfObj.sizlBitmap.cy); + if(!RECTL_bIntersectRect(&rcDst, &rcDst, &rcBmp)) { - DPRINT1("NtGdiCreateCompatibleDC failed!\n"); Ret = FALSE; - goto Cleanup ; + goto done; } - hOffBmp = NtGdiCreateCompatibleBitmap(hDc, cxWidth, cyHeight); - if(!hOffBmp) - { - DPRINT1("NtGdiCreateCompatibleBitmap failed!\n"); - goto Cleanup ; - } - hOldOffBmp = NtGdiSelectBitmap(hDestDC, hOffBmp); - hOldOffBrush = NtGdiSelectBrush(hDestDC, hbrFlickerFreeDraw); - NtGdiPatBlt(hDestDC, 0, 0, cxWidth, cyHeight, PATCOPY); - NtGdiSelectBrush(hDestDC, hOldOffBrush); - x=y=0; } - /* Set Background/foreground colors */ - iOldTxtColor = IntGdiSetTextColor(hDc, 0); //black - iOldBkColor = IntGdiSetBkColor(hDc, 0x00FFFFFF); //white + /* Optimization : use directly the palette of the DC, + * so we XLATE only once, and then we directly copy bits */ + EXLATEOBJ_vInitialize(&exlo, psurfColor->ppal, pdc->dclevel.pSurface->ppal, 0, 0, 0xFFFFFFFF); if(bAlpha && (diFlags & DI_IMAGE)) { BLENDFUNCTION pixelblend = { AC_SRC_OVER, 0, 255, AC_SRC_ALPHA }; BYTE Alpha; INT i, j; - PSURFACE psurf; + PSURFACE psurf = NULL; PBYTE ptr ; HBITMAP hMemBmp = NULL; - hMemBmp = BITMAP_CopyBitmap(hbmColor); + hMemBmp = BITMAP_CopyBitmap(pIcon->IconInfo.hbmColor); if(!hMemBmp) { DPRINT1("BITMAP_CopyBitmap failed!"); @@ -1360,109 +1426,116 @@ UserDrawIconEx( } } - SURFACE_UnlockSurface(psurf); + DPRINT("Performing alpha blending\n"); + Ret = IntEngAlphaBlend(&psurfDst->SurfObj, + &psurf->SurfObj, + pclo, + &exlo.xlo, + &rcDst, + &rcSrc, + (BLENDOBJ*)&pixelblend); - hTmpBmp = NtGdiSelectBitmap(hMemDC, hMemBmp); - - Ret = NtGdiAlphaBlend(hDestDC, - x, - y, - cxWidth, - cyHeight, - hMemDC, - 0, - 0, - pIcon->Size.cx, - pIcon->Size.cy, - pixelblend, - NULL); - NtGdiSelectBitmap(hMemDC, hTmpBmp); CleanupAlpha: + if(psurf) SURFACE_UnlockSurface(psurf); if(hMemBmp) NtGdiDeleteObjectApp(hMemBmp); if(Ret) goto done; + else DPRINT1("IntEngAlphaBlend failed!\n"); } - if (diFlags & DI_MASK) + if (diFlags & DI_IMAGE) { - hTmpBmp = NtGdiSelectBitmap(hMemDC, hbmMask); - NtGdiStretchBlt(hDestDC, - x, - y, - cxWidth, - cyHeight, - hMemDC, - 0, - 0, - pIcon->Size.cx, - pIcon->Size.cy, - SRCAND, - 0); - NtGdiSelectBitmap(hMemDC, hTmpBmp); - } - - if(diFlags & DI_IMAGE) - { - if (hbmColor) + POINTL ptMaskOrig = {0,0}; + if(bStretch) { - DWORD rop = (diFlags & DI_MASK) ? SRCINVERT : SRCCOPY ; - hTmpBmp = NtGdiSelectBitmap(hMemDC, hbmColor); - NtGdiStretchBlt(hDestDC, - x, - y, - cxWidth, - cyHeight, - hMemDC, - 0, - 0, - pIcon->Size.cx, - pIcon->Size.cy, - rop, - 0); - NtGdiSelectBitmap(hMemDC, hTmpBmp); + DPRINT("Stretching\n"); + Ret = IntEngStretchBlt(&psurfDst->SurfObj, + &psurfColor->SurfObj, + (diFlags & DI_MASK) ? &psurfMask->SurfObj : NULL, + pclo, + &exlo.xlo, + &rcDst, + &rcSrc, + (diFlags & DI_MASK) ? &ptMaskOrig : NULL, + NULL, + NULL, + (diFlags & DI_MASK) ? R4_MASK : ROP3_TO_ROP4(SRCCOPY)); + if(!Ret) DPRINT1("IntEngStretchBlt Failed\n"); } else { - /* Mask bitmap holds the information in its second half */ - DWORD rop = (diFlags & DI_MASK) ? SRCINVERT : SRCCOPY ; - hTmpBmp = NtGdiSelectBitmap(hMemDC, hbmMask); - NtGdiStretchBlt(hDestDC, - x, - y, - cxWidth, - cyHeight, - hMemDC, - 0, - pIcon->Size.cy, - pIcon->Size.cx, - pIcon->Size.cy, - rop, - 0); - NtGdiSelectBitmap(hMemDC, hTmpBmp); + DPRINT("Blting\n"); + Ret = IntEngBitBlt(&psurfDst->SurfObj, + &psurfColor->SurfObj, + (diFlags & DI_MASK) ? &psurfMask->SurfObj : NULL, + pclo, + &exlo.xlo, + &rcDst, + (PPOINTL)&rcSrc, + (diFlags & DI_MASK) ? &ptMaskOrig : NULL, + NULL, + NULL, + (diFlags & DI_MASK) ? R4_MASK : ROP3_TO_ROP4(SRCCOPY)); + if(!Ret) DPRINT1("IntEngBitBlt Failed\n"); } } + else + { + DPRINT1("Uh? Calling DrawIcon without anything to draw? diFlags %d\n", diFlags); + } done: - if(hDestDC != hDc) + if(DoFlickerFree && Ret) { - NtGdiBitBlt(hDc, xLeft, yTop, cxWidth, cyHeight, hDestDC, 0, 0, SRCCOPY, 0, 0); + POINTL ptSrc = {0,0}; + RECTL rcBmp; + + RECTL_vSetRect(&rcDst, xLeft, yTop, xLeft + cxWidth, yTop + cyHeight); + + IntLPtoDP(pdc, (LPPOINT)&rcDst, 2); + + RECTL_vOffsetRect(&rcDst, pdc->ptlDCOrig.x, pdc->ptlDCOrig.y); + DC_vPrepareDCsForBlit(pdc, rcDst, NULL, rcDst ); + + if (pdc->pdcattr->ulDirty_ & (DIRTY_FILL | DC_BRUSH_DIRTY)) + DC_vUpdateFillBrush(pdc); + + RECTL_vSetRect(&rcBmp, 0, 0, + pdc->dclevel.pSurface->SurfObj.sizlBitmap.cx, + pdc->dclevel.pSurface->SurfObj.sizlBitmap.cy); + + if(RECTL_bIntersectRect(&rcDst, &rcDst, &rcBmp)) + { + /* Copy everything */ + DPRINT("Copying bits from offscreen buffer\n"); + Ret = IntEngCopyBits(&pdc->dclevel.pSurface->SurfObj, + &psurfDst->SurfObj, + pdc->rosdc.CombinedClip, + gpxloTrivial, + &rcDst, + &ptSrc); + if(!Ret) DPRINT1("IntEngCopyBits Failed\n"); + } + + DC_vFinishBlit(pdc, NULL); } - /* Restore foreground and background colors */ - IntGdiSetBkColor(hDc, iOldBkColor); - IntGdiSetTextColor(hDc, iOldTxtColor); + if(!DoFlickerFree) DC_vFinishBlit(pdc, NULL); + EXLATEOBJ_vCleanup(&exlo); - Ret = TRUE ; - -Cleanup: - NtGdiDeleteObjectApp(hMemDC); - if(hDestDC != hDc) +cleanup: + if(psurfColor != psurfMask) + SURFACE_UnlockSurface(psurfColor); + SURFACE_UnlockSurface(psurfMask); + if(hsurfDst) { - if(hOldOffBmp) NtGdiSelectBitmap(hDestDC, hOldOffBmp); - NtGdiDeleteObjectApp(hDestDC); - if(hOffBmp) NtGdiDeleteObjectApp(hOffBmp); + if(psurfDst) SURFACE_UnlockSurface(psurfDst); + GreDeleteObject(hsurfDst); } + DC_UnlockDc(pdc); - return Ret; + DPRINT("return %s\n", Ret ? "TRUE" : "FALSE") ; + + return Ret ; } /* diff --git a/subsystems/win32/win32k/objects/bitblt.c b/subsystems/win32/win32k/objects/bitblt.c index 5b59a592396..052901ce072 100644 --- a/subsystems/win32/win32k/objects/bitblt.c +++ b/subsystems/win32/win32k/objects/bitblt.c @@ -439,6 +439,42 @@ done: * A. It should be in here! */ +static const DWORD ROP3Table[256] = +{ + 0x000042, 0x010289, 0x020C89, 0x0300AA, 0x040C88, 0x0500A9, 0x060865, 0x0702C5, + 0x080F08, 0x090245, 0x0A0329, 0x0B0B2A, 0x0C0324, 0x0D0B25, 0x0E08A5, 0x0F0001, + 0x100C85, 0x1100A6, 0x120868, 0x1302C8, 0x140869, 0x1502C9, 0x165CCA, 0x171D54, + 0x180D59, 0x191CC8, 0x1A06C5, 0x1B0768, 0x1C06CA, 0x1D0766, 0x1E01A5, 0x1F0385, + 0x200F09, 0x210248, 0x220326, 0x230B24, 0x240D55, 0x251CC5, 0x2606C8, 0x271868, + 0x280369, 0x2916CA, 0x2A0CC9, 0x2B1D58, 0x2C0784, 0x2D060A, 0x2E064A, 0x2F0E2A, + 0x30032A, 0x310B28, 0x320688, 0x330008, 0x3406C4, 0x351864, 0x3601A8, 0x370388, + 0x38078A, 0x390604, 0x3A0644, 0x3B0E24, 0x3C004A, 0x3D18A4, 0x3E1B24, 0x3F00EA, + 0x400F0A, 0x410249, 0x420D5D, 0x431CC4, 0x440328, 0x450B29, 0x4606C6, 0x47076A, + 0x480368, 0x4916C5, 0x4A0789, 0x4B0605, 0x4C0CC8, 0x4D1954, 0x4E0645, 0x4F0E25, + 0x500325, 0x510B26, 0x5206C9, 0x530764, 0x5408A9, 0x550009, 0x5601A9, 0x570389, + 0x580785, 0x590609, 0x5A0049, 0x5B18A9, 0x5C0649, 0x5D0E29, 0x5E1B29, 0x5F00E9, + 0x600365, 0x6116C6, 0x620786, 0x630608, 0x640788, 0x650606, 0x660046, 0x6718A8, + 0x6858A6, 0x690145, 0x6A01E9, 0x6B178A, 0x6C01E8, 0x6D1785, 0x6E1E28, 0x6F0C65, + 0x700CC5, 0x711D5C, 0x720648, 0x730E28, 0x740646, 0x750E26, 0x761B28, 0x7700E6, + 0x7801E5, 0x791786, 0x7A1E29, 0x7B0C68, 0x7C1E24, 0x7D0C69, 0x7E0955, 0x7F03C9, + 0x8003E9, 0x810975, 0x820C49, 0x831E04, 0x840C48, 0x851E05, 0x8617A6, 0x8701C5, + 0x8800C6, 0x891B08, 0x8A0E06, 0x8B0666, 0x8C0E08, 0x8D0668, 0x8E1D7C, 0x8F0CE5, + 0x900C45, 0x911E08, 0x9217A9, 0x9301C4, 0x9417AA, 0x9501C9, 0x960169, 0x97588A, + 0x981888, 0x990066, 0x9A0709, 0x9B07A8, 0x9C0704, 0x9D07A6, 0x9E16E6, 0x9F0345, + 0xA000C9, 0xA11B05, 0xA20E09, 0xA30669, 0xA41885, 0xA50065, 0xA60706, 0xA707A5, + 0xA803A9, 0xA90189, 0xAA0029, 0xAB0889, 0xAC0744, 0xAD06E9, 0xAE0B06, 0xAF0229, + 0xB00E05, 0xB10665, 0xB21974, 0xB30CE8, 0xB4070A, 0xB507A9, 0xB616E9, 0xB70348, + 0xB8074A, 0xB906E6, 0xBA0B09, 0xBB0226, 0xBC1CE4, 0xBD0D7D, 0xBE0269, 0xBF08C9, + 0xC000CA, 0xC11B04, 0xC21884, 0xC3006A, 0xC40E04, 0xC50664, 0xC60708, 0xC707AA, + 0xC803A8, 0xC90184, 0xCA0749, 0xCB06E4, 0xCC0020, 0xCD0888, 0xCE0B08, 0xCF0224, + 0xD00E0A, 0xD1066A, 0xD20705, 0xD307A4, 0xD41D78, 0xD50CE9, 0xD616EA, 0xD70349, + 0xD80745, 0xD906E8, 0xDA1CE9, 0xDB0D75, 0xDC0B04, 0xDD0228, 0xDE0268, 0xDF08C8, + 0xE003A5, 0xE10185, 0xE20746, 0xE306EA, 0xE40748, 0xE506E5, 0xE61CE8, 0xE70D79, + 0xE81D74, 0xE95CE6, 0xEA02E9, 0xEB0849, 0xEC02E8, 0xED0848, 0xEE0086, 0xEF0A08, + 0xF00021, 0xF10885, 0xF20B05, 0xF3022A, 0xF40B0A, 0xF50225, 0xF60265, 0xF708C5, + 0xF802E5, 0xF90845, 0xFA0089, 0xFB0A09, 0xFC008A, 0xFD0A0A, 0xFE02A9, 0xFF0062, +}; + static __inline BYTE SwapROP3_SrcDst(BYTE bRop3) { @@ -450,6 +486,30 @@ SwapROP3_SrcDst(BYTE bRop3) #define DSTCOPY 0x00AA0029 #define DSTERASE 0x00220326 /* dest = dest & (~src) : DSna */ +/* NOTE: An alternative algorithm could use a pattern brush, created from + * the mask bitmap and then use raster operation 0xCA to combine the fore + * and background bitmaps. In this case erasing the bits beforehand would be + * unneccessary. On the other hand the Operation does not provide an optimized + * version in the DIB code, while SRCAND and SRCPAINT do. + * A fully correct implementation would call Eng/DrvBitBlt, but our + * EngBitBlt completely ignores the mask surface. + * + * Msk Fg Bk => x + * P S D DPSDxax + * ------------------------------------------ + * 0 0 0 0 0000xax = 000ax = 00x = 0 + * 0 0 1 1 1001xax = 101ax = 10x = 1 + * 0 1 0 0 0010xax = 001ax = 00x = 0 + * 0 1 1 1 1011xax = 100ax = 10x = 1 + * 1 0 0 0 0100xax = 010ax = 00x = 0 + * 1 0 1 0 1101xax = 111ax = 11x = 0 + * 1 1 0 1 0110xax = 011ax = 01x = 1 + * 1 1 1 1 1111xax = 110ax = 10x = 1 + * + * Operation index = 11001010 = 0xCA = PSaDPnao = DPSDxax + * ^ no, this is not random letters, its reverse Polish notation + */ + BOOL APIENTRY NtGdiMaskBlt( HDC hdcDest, @@ -466,187 +526,95 @@ NtGdiMaskBlt( DWORD dwRop, IN DWORD crBackColor) { - HBITMAP hOldMaskBitmap, hBitmap2, hOldBitmap2, hBitmap3, hOldBitmap3; - HDC hDCMask, hDC1, hDC2; - static const DWORD ROP3Table[256] = - { - 0x00000042, 0x00010289, - 0x00020C89, 0x000300AA, - 0x00040C88, 0x000500A9, - 0x00060865, 0x000702C5, - 0x00080F08, 0x00090245, - 0x000A0329, 0x000B0B2A, - 0x000C0324, 0x000D0B25, - 0x000E08A5, 0x000F0001, - 0x00100C85, 0x001100A6, - 0x00120868, 0x001302C8, - 0x00140869, 0x001502C9, - 0x00165CCA, 0x00171D54, - 0x00180D59, 0x00191CC8, - 0x001A06C5, 0x001B0768, - 0x001C06CA, 0x001D0766, - 0x001E01A5, 0x001F0385, - 0x00200F09, 0x00210248, - 0x00220326, 0x00230B24, - 0x00240D55, 0x00251CC5, - 0x002606C8, 0x00271868, - 0x00280369, 0x002916CA, - 0x002A0CC9, 0x002B1D58, - 0x002C0784, 0x002D060A, - 0x002E064A, 0x002F0E2A, - 0x0030032A, 0x00310B28, - 0x00320688, 0x00330008, - 0x003406C4, 0x00351864, - 0x003601A8, 0x00370388, - 0x0038078A, 0x00390604, - 0x003A0644, 0x003B0E24, - 0x003C004A, 0x003D18A4, - 0x003E1B24, 0x003F00EA, - 0x00400F0A, 0x00410249, - 0x00420D5D, 0x00431CC4, - 0x00440328, 0x00450B29, - 0x004606C6, 0x0047076A, - 0x00480368, 0x004916C5, - 0x004A0789, 0x004B0605, - 0x004C0CC8, 0x004D1954, - 0x004E0645, 0x004F0E25, - 0x00500325, 0x00510B26, - 0x005206C9, 0x00530764, - 0x005408A9, 0x00550009, - 0x005601A9, 0x00570389, - 0x00580785, 0x00590609, - 0x005A0049, 0x005B18A9, - 0x005C0649, 0x005D0E29, - 0x005E1B29, 0x005F00E9, - 0x00600365, 0x006116C6, - 0x00620786, 0x00630608, - 0x00640788, 0x00650606, - 0x00660046, 0x006718A8, - 0x006858A6, 0x00690145, - 0x006A01E9, 0x006B178A, - 0x006C01E8, 0x006D1785, - 0x006E1E28, 0x006F0C65, - 0x00700CC5, 0x00711D5C, - 0x00720648, 0x00730E28, - 0x00740646, 0x00750E26, - 0x00761B28, 0x007700E6, - 0x007801E5, 0x00791786, - 0x007A1E29, 0x007B0C68, - 0x007C1E24, 0x007D0C69, - 0x007E0955, 0x007F03C9, - 0x008003E9, 0x00810975, - 0x00820C49, 0x00831E04, - 0x00840C48, 0x00851E05, - 0x008617A6, 0x008701C5, - 0x008800C6, 0x00891B08, - 0x008A0E06, 0x008B0666, - 0x008C0E08, 0x008D0668, - 0x008E1D7C, 0x008F0CE5, - 0x00900C45, 0x00911E08, - 0x009217A9, 0x009301C4, - 0x009417AA, 0x009501C9, - 0x00960169, 0x0097588A, - 0x00981888, 0x00990066, - 0x009A0709, 0x009B07A8, - 0x009C0704, 0x009D07A6, - 0x009E16E6, 0x009F0345, - 0x00A000C9, 0x00A11B05, - 0x00A20E09, 0x00A30669, - 0x00A41885, 0x00A50065, - 0x00A60706, 0x00A707A5, - 0x00A803A9, 0x00A90189, - 0x00AA0029, 0x00AB0889, - 0x00AC0744, 0x00AD06E9, - 0x00AE0B06, 0x00AF0229, - 0x00B00E05, 0x00B10665, - 0x00B21974, 0x00B30CE8, - 0x00B4070A, 0x00B507A9, - 0x00B616E9, 0x00B70348, - 0x00B8074A, 0x00B906E6, - 0x00BA0B09, 0x00BB0226, - 0x00BC1CE4, 0x00BD0D7D, - 0x00BE0269, 0x00BF08C9, - 0x00C000CA, 0x00C11B04, - 0x00C21884, 0x00C3006A, - 0x00C40E04, 0x00C50664, - 0x00C60708, 0x00C707AA, - 0x00C803A8, 0x00C90184, - 0x00CA0749, 0x00CB06E4, - 0x00CC0020, 0x00CD0888, - 0x00CE0B08, 0x00CF0224, - 0x00D00E0A, 0x00D1066A, - 0x00D20705, 0x00D307A4, - 0x00D41D78, 0x00D50CE9, - 0x00D616EA, 0x00D70349, - 0x00D80745, 0x00D906E8, - 0x00DA1CE9, 0x00DB0D75, - 0x00DC0B04, 0x00DD0228, - 0x00DE0268, 0x00DF08C8, - 0x00E003A5, 0x00E10185, - 0x00E20746, 0x00E306EA, - 0x00E40748, 0x00E506E5, - 0x00E61CE8, 0x00E70D79, - 0x00E81D74, 0x00E95CE6, - 0x00EA02E9, 0x00EB0849, - 0x00EC02E8, 0x00ED0848, - 0x00EE0086, 0x00EF0A08, - 0x00F00021, 0x00F10885, - 0x00F20B05, 0x00F3022A, - 0x00F40B0A, 0x00F50225, - 0x00F60265, 0x00F708C5, - 0x00F802E5, 0x00F90845, - 0x00FA0089, 0x00FB0A09, - 0x00FC008A, 0x00FD0A0A, - 0x00FE02A9, 0x00FF0062, - }; + HBITMAP hbmFore, hbmBack; + HDC hdcMask, hdcFore, hdcBack; + PDC pdc; + HBRUSH hbr; + COLORREF crFore, crBack; if (!hbmMask) - return NtGdiBitBlt(hdcDest, nXDest, nYDest, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, FRGND_ROP3(dwRop), 0, 0); + return NtGdiBitBlt(hdcDest, + nXDest, + nYDest, + nWidth, + nHeight, + hdcSrc, + nXSrc, + nYSrc, + FRGND_ROP3(dwRop), + crBackColor, + 0); - /* 1. make mask bitmap's dc */ - hDCMask = NtGdiCreateCompatibleDC(hdcDest); - hOldMaskBitmap = (HBITMAP)NtGdiSelectBitmap(hDCMask, hbmMask); + /* Lock the dest DC */ + pdc = DC_LockDc(hdcDest); + if (!pdc) return FALSE; - /* 2. make masked Background bitmap */ + /* Get brush and colors from dest dc */ + hbr = pdc->pdcattr->hbrush; + crFore = pdc->pdcattr->crForegroundClr; + crBack = pdc->pdcattr->crBackgroundClr; - /* 2.1 make bitmap */ - hDC1 = NtGdiCreateCompatibleDC(hdcDest); - hBitmap2 = NtGdiCreateCompatibleBitmap(hdcDest, nWidth, nHeight); - hOldBitmap2 = (HBITMAP)NtGdiSelectBitmap(hDC1, hBitmap2); + /* Unlock the DC */ + DC_UnlockDc(pdc); - /* 2.2 draw dest bitmap and mask */ - NtGdiBitBlt(hDC1, 0, 0, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, SRCCOPY, 0, 0); - NtGdiBitBlt(hDC1, 0, 0, nWidth, nHeight, hdcDest, nXDest, nYDest, BKGND_ROP3(dwRop), 0, 0); - NtGdiBitBlt(hDC1, 0, 0, nWidth, nHeight, hDCMask, xMask, yMask, DSTERASE, 0, 0); + /* 1. Create mask bitmap's dc */ + hdcMask = NtGdiCreateCompatibleDC(hdcDest); + NtGdiSelectBitmap(hdcMask, hbmMask); - /* 3. make masked Foreground bitmap */ + /* 2. Create masked Background bitmap */ - /* 3.1 make bitmap */ - hDC2 = NtGdiCreateCompatibleDC(hdcDest); - hBitmap3 = NtGdiCreateCompatibleBitmap(hdcDest, nWidth, nHeight); - hOldBitmap3 = (HBITMAP)NtGdiSelectBitmap(hDC2, hBitmap3); + /* 2.1 Create bitmap */ + hdcBack = NtGdiCreateCompatibleDC(hdcDest); + hbmBack = NtGdiCreateCompatibleBitmap(hdcDest, nWidth, nHeight); + NtGdiSelectBitmap(hdcBack, hbmBack); - /* 3.2 draw src bitmap and mask */ - NtGdiBitBlt(hDC2, 0, 0, nWidth, nHeight, hdcDest, nXDest, nYDest, SRCCOPY, 0, 0); - NtGdiBitBlt(hDC2, 0, 0, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, FRGND_ROP3(dwRop), 0,0); - NtGdiBitBlt(hDC2, 0, 0, nWidth, nHeight, hDCMask, xMask, yMask, SRCAND, 0, 0); + /* 2.2 Copy source bitmap */ + NtGdiSelectBrush(hdcBack, hbr); + IntGdiSetBkColor(hdcBack, crBack); + IntGdiSetTextColor(hdcBack, crFore); + NtGdiBitBlt(hdcBack, 0, 0, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, SRCCOPY, 0, 0); - /* 4. combine both and copy the result to hdcDest */ - NtGdiBitBlt(hDC1, 0, 0, nWidth, nHeight, hDC2, 0, 0, SRCPAINT, 0, 0); - NtGdiBitBlt(hdcDest, nXDest, nYDest, nWidth, nHeight, hDC1, 0, 0, SRCCOPY, 0, 0); + /* 2.3 Do the background rop */ + NtGdiBitBlt(hdcBack, 0, 0, nWidth, nHeight, hdcDest, nXDest, nYDest, BKGND_ROP3(dwRop), 0, 0); - /* 5. restore all objects */ - NtGdiSelectBitmap(hDCMask, hOldMaskBitmap); - NtGdiSelectBitmap(hDC1, hOldBitmap2); - NtGdiSelectBitmap(hDC2, hOldBitmap3); + /* 2.4 Erase the foreground pixels */ + IntGdiSetBkColor(hdcBack, 0xffffffff); + IntGdiSetTextColor(hdcBack, 0); + NtGdiBitBlt(hdcBack, 0, 0, nWidth, nHeight, hdcMask, xMask, yMask, SRCAND, 0, 0); - /* 6. delete all temp objects */ - GreDeleteObject(hBitmap2); - GreDeleteObject(hBitmap3); + /* 3. Create masked Foreground bitmap */ - NtGdiDeleteObjectApp(hDC1); - NtGdiDeleteObjectApp(hDC2); - NtGdiDeleteObjectApp(hDCMask); + /* 3.1 Create bitmap */ + hdcFore = NtGdiCreateCompatibleDC(hdcDest); + hbmFore = NtGdiCreateCompatibleBitmap(hdcDest, nWidth, nHeight); + NtGdiSelectBitmap(hdcFore, hbmFore); + + /* 3.2 Copy the dest bitmap */ + NtGdiSelectBrush(hdcFore, hbr); + IntGdiSetBkColor(hdcFore, crBack); + IntGdiSetTextColor(hdcFore, crFore); + NtGdiBitBlt(hdcFore, 0, 0, nWidth, nHeight, hdcDest, nXDest, nYDest, SRCCOPY, 0, 0); + + /* 2.3 Do the foreground rop */ + NtGdiBitBlt(hdcFore, 0, 0, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, FRGND_ROP3(dwRop), 0,0); + + /* 2.4 Erase the background pixels */ + IntGdiSetBkColor(hdcFore, 0); + IntGdiSetTextColor(hdcFore, 0xffffffff); + NtGdiBitBlt(hdcFore, 0, 0, nWidth, nHeight, hdcMask, xMask, yMask, SRCAND, 0, 0); + + /* 3. Combine the fore and background into the background bitmap */ + NtGdiBitBlt(hdcBack, 0, 0, nWidth, nHeight, hdcFore, 0, 0, SRCPAINT, 0, 0); + + /* 4. Copy the result to hdcDest */ + NtGdiBitBlt(hdcDest, nXDest, nYDest, nWidth, nHeight, hdcBack, 0, 0, SRCCOPY, 0, 0); + + /* 5. delete all temp objects */ + NtGdiDeleteObjectApp(hdcBack); + NtGdiDeleteObjectApp(hdcFore); + NtGdiDeleteObjectApp(hdcMask); + GreDeleteObject(hbmFore); + GreDeleteObject(hbmBack); return TRUE; } diff --git a/subsystems/win32/win32k/objects/bitmaps.c b/subsystems/win32/win32k/objects/bitmaps.c index 163fda614a4..3c9f0e24f1a 100644 --- a/subsystems/win32/win32k/objects/bitmaps.c +++ b/subsystems/win32/win32k/objects/bitmaps.c @@ -953,6 +953,8 @@ BITMAP_CopyBitmap(HBITMAP hBitmap) if (resBitmap) { IntSetBitmapBits(resBitmap, Bitmap->SurfObj.cjBits, Bitmap->SurfObj.pvBits); + resBitmap->ppal = Bitmap->ppal; + GDIOBJ_IncrementShareCount((POBJ)Bitmap->ppal); SURFACE_UnlockSurface(resBitmap); } else