mirror of
https://github.com/reactos/reactos.git
synced 2025-04-20 04:20:46 +00:00
Sync with trunk r58113.
svn path=/branches/ros-csrss/; revision=58114
This commit is contained in:
parent
7851c1a1c2
commit
51aa122e2d
139 changed files with 2344 additions and 3192 deletions
|
@ -8,7 +8,7 @@ Description = A media player.
|
||||||
Size = 7.0MB
|
Size = 7.0MB
|
||||||
Category = 1
|
Category = 1
|
||||||
URLSite = http://mpc-hc.sourceforge.net/
|
URLSite = http://mpc-hc.sourceforge.net/
|
||||||
URLDownload = http://heanet.dl.sourceforge.netproject/mpc-hc/MPC%20HomeCinema%20-%20Win32/MPC-HC_v1.6.5.6366_x86/MPC-HC.1.6.5.6366.x86.exe
|
URLDownload = http://heanet.dl.sourceforge.net/project/mpc-hc/MPC%20HomeCinema%20-%20Win32/MPC-HC_v1.6.5.6366_x86/MPC-HC.1.6.5.6366.x86.exe
|
||||||
CDPath = none
|
CDPath = none
|
||||||
|
|
||||||
[Section.0407]
|
[Section.0407]
|
||||||
|
|
|
@ -236,16 +236,16 @@ static void SuggestKeys(HKEY hRootKey, LPCWSTR pszKeyPath, LPWSTR pszSuggestions
|
||||||
{
|
{
|
||||||
/* Sanity check this key; it cannot be empty, nor can it be a
|
/* Sanity check this key; it cannot be empty, nor can it be a
|
||||||
* loop back */
|
* loop back */
|
||||||
if ((szBuffer[0] != L'\0') && wcsicmp(szBuffer, pszKeyPath))
|
if ((szBuffer[0] != L'\0') && _wcsicmp(szBuffer, pszKeyPath))
|
||||||
{
|
{
|
||||||
if (RegOpenKeyW(hRootKey, szBuffer, &hOtherKey) == ERROR_SUCCESS)
|
if (RegOpenKeyW(hRootKey, szBuffer, &hOtherKey) == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
wcsncpy(pszSuggestions, L"HKCR\\", (int) iSuggestionsLength);
|
lstrcpynW(pszSuggestions, L"HKCR\\", (int) iSuggestionsLength);
|
||||||
i = wcslen(pszSuggestions);
|
i = wcslen(pszSuggestions);
|
||||||
pszSuggestions += i;
|
pszSuggestions += i;
|
||||||
iSuggestionsLength -= i;
|
iSuggestionsLength -= i;
|
||||||
|
|
||||||
wcsncpy(pszSuggestions, szBuffer, (int) iSuggestionsLength);
|
lstrcpynW(pszSuggestions, szBuffer, (int) iSuggestionsLength);
|
||||||
i = MIN(wcslen(pszSuggestions) + 1, iSuggestionsLength);
|
i = MIN(wcslen(pszSuggestions) + 1, iSuggestionsLength);
|
||||||
pszSuggestions += i;
|
pszSuggestions += i;
|
||||||
iSuggestionsLength -= i;
|
iSuggestionsLength -= i;
|
||||||
|
@ -266,12 +266,12 @@ static void SuggestKeys(HKEY hRootKey, LPCWSTR pszKeyPath, LPWSTR pszSuggestions
|
||||||
if (QueryStringValue(hSubKey, L"CLSID", NULL, szBuffer,
|
if (QueryStringValue(hSubKey, L"CLSID", NULL, szBuffer,
|
||||||
COUNT_OF(szBuffer)) == ERROR_SUCCESS)
|
COUNT_OF(szBuffer)) == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
wcsncpy(pszSuggestions, L"HKCR\\CLSID\\", (int)iSuggestionsLength);
|
lstrcpynW(pszSuggestions, L"HKCR\\CLSID\\", (int)iSuggestionsLength);
|
||||||
i = wcslen(pszSuggestions);
|
i = wcslen(pszSuggestions);
|
||||||
pszSuggestions += i;
|
pszSuggestions += i;
|
||||||
iSuggestionsLength -= i;
|
iSuggestionsLength -= i;
|
||||||
|
|
||||||
wcsncpy(pszSuggestions, szBuffer, (int)iSuggestionsLength);
|
lstrcpynW(pszSuggestions, szBuffer, (int)iSuggestionsLength);
|
||||||
i = MIN(wcslen(pszSuggestions) + 1, iSuggestionsLength);
|
i = MIN(wcslen(pszSuggestions) + 1, iSuggestionsLength);
|
||||||
pszSuggestions += i;
|
pszSuggestions += i;
|
||||||
iSuggestionsLength -= i;
|
iSuggestionsLength -= i;
|
||||||
|
@ -286,7 +286,7 @@ LRESULT CALLBACK AddressBarProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPar
|
||||||
{
|
{
|
||||||
WNDPROC oldwndproc;
|
WNDPROC oldwndproc;
|
||||||
static WCHAR s_szNode[256];
|
static WCHAR s_szNode[256];
|
||||||
oldwndproc = (WNDPROC)(LONG_PTR)GetWindowLongPtr(hwnd, GWL_USERDATA);
|
oldwndproc = (WNDPROC)(LONG_PTR)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||||
|
|
||||||
switch (uMsg)
|
switch (uMsg)
|
||||||
{
|
{
|
||||||
|
@ -300,7 +300,7 @@ LRESULT CALLBACK AddressBarProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPar
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return CallWindowProc(oldwndproc, hwnd, uMsg, wParam, lParam);
|
return CallWindowProcW(oldwndproc, hwnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
static VOID
|
static VOID
|
||||||
|
@ -333,8 +333,8 @@ UpdateAddress(HTREEITEM hItem, HKEY hRootKey, LPCWSTR pszPath)
|
||||||
EnableMenuItem(GetSubMenu(hMenuFrame,0), ID_REGISTRY_LOADHIVE, MF_BYCOMMAND | MF_GRAYED);
|
EnableMenuItem(GetSubMenu(hMenuFrame,0), ID_REGISTRY_LOADHIVE, MF_BYCOMMAND | MF_GRAYED);
|
||||||
EnableMenuItem(GetSubMenu(hMenuFrame,0), ID_REGISTRY_UNLOADHIVE, MF_BYCOMMAND | MF_GRAYED);
|
EnableMenuItem(GetSubMenu(hMenuFrame,0), ID_REGISTRY_UNLOADHIVE, MF_BYCOMMAND | MF_GRAYED);
|
||||||
/* compare the strings to see if we should enable/disable the "Load Hive" menus accordingly */
|
/* compare the strings to see if we should enable/disable the "Load Hive" menus accordingly */
|
||||||
if (!(wcsicmp(rootName, L"HKEY_LOCAL_MACHINE") &&
|
if (!(_wcsicmp(rootName, L"HKEY_LOCAL_MACHINE") &&
|
||||||
wcsicmp(rootName, L"HKEY_USERS")))
|
_wcsicmp(rootName, L"HKEY_USERS")))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* enable the unload menu item if at the root, otherwise
|
* enable the unload menu item if at the root, otherwise
|
||||||
|
@ -406,9 +406,9 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
|
||||||
0);
|
0);
|
||||||
}
|
}
|
||||||
/* Subclass the AddressBar */
|
/* Subclass the AddressBar */
|
||||||
oldproc = (WNDPROC)(LONG_PTR)GetWindowLongPtr(g_pChildWnd->hAddressBarWnd, GWL_WNDPROC);
|
oldproc = (WNDPROC)(LONG_PTR)GetWindowLongPtr(g_pChildWnd->hAddressBarWnd, GWLP_WNDPROC);
|
||||||
SetWindowLongPtr(g_pChildWnd->hAddressBarWnd, GWL_USERDATA, (DWORD_PTR)oldproc);
|
SetWindowLongPtr(g_pChildWnd->hAddressBarWnd, GWLP_USERDATA, (DWORD_PTR)oldproc);
|
||||||
SetWindowLongPtr(g_pChildWnd->hAddressBarWnd, GWL_WNDPROC, (DWORD_PTR)AddressBarProc);
|
SetWindowLongPtr(g_pChildWnd->hAddressBarWnd, GWLP_WNDPROC, (DWORD_PTR)AddressBarProc);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
|
@ -660,8 +660,8 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
|
||||||
{
|
{
|
||||||
TVHITTESTINFO hti;
|
TVHITTESTINFO hti;
|
||||||
HMENU hContextMenu;
|
HMENU hContextMenu;
|
||||||
TVITEM item;
|
TVITEMW item;
|
||||||
MENUITEMINFO mii;
|
MENUITEMINFOW mii;
|
||||||
WCHAR resource[256];
|
WCHAR resource[256];
|
||||||
WCHAR buffer[256];
|
WCHAR buffer[256];
|
||||||
LPWSTR s;
|
LPWSTR s;
|
||||||
|
|
|
@ -230,7 +230,7 @@ LRESULT CALLBACK DwordEditSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPAR
|
||||||
{
|
{
|
||||||
WNDPROC oldwndproc;
|
WNDPROC oldwndproc;
|
||||||
|
|
||||||
oldwndproc = (WNDPROC)(LONG_PTR)GetWindowLongPtr(hwnd, GWL_USERDATA);
|
oldwndproc = (WNDPROC)(LONG_PTR)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||||
|
|
||||||
switch (uMsg)
|
switch (uMsg)
|
||||||
{
|
{
|
||||||
|
@ -263,7 +263,7 @@ LRESULT CALLBACK DwordEditSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPAR
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return CallWindowProc(oldwndproc, hwnd, uMsg, wParam, lParam);
|
return CallWindowProcW(oldwndproc, hwnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -285,9 +285,9 @@ INT_PTR CALLBACK modify_dword_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LP
|
||||||
|
|
||||||
/* subclass the edit control */
|
/* subclass the edit control */
|
||||||
hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA);
|
hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA);
|
||||||
oldproc = (WNDPROC)(LONG_PTR)GetWindowLongPtr(hwndValue, GWL_WNDPROC);
|
oldproc = (WNDPROC)(LONG_PTR)GetWindowLongPtr(hwndValue, GWLP_WNDPROC);
|
||||||
SetWindowLongPtr(hwndValue, GWL_USERDATA, (DWORD_PTR)oldproc);
|
SetWindowLongPtr(hwndValue, GWLP_USERDATA, (DWORD_PTR)oldproc);
|
||||||
SetWindowLongPtr(hwndValue, GWL_WNDPROC, (DWORD_PTR)DwordEditSubclassProc);
|
SetWindowLongPtr(hwndValue, GWLP_WNDPROC, (DWORD_PTR)DwordEditSubclassProc);
|
||||||
|
|
||||||
if (editValueName && wcscmp(editValueName, L""))
|
if (editValueName && wcscmp(editValueName, L""))
|
||||||
{
|
{
|
||||||
|
@ -665,7 +665,7 @@ ParseResources(HWND hwnd)
|
||||||
HWND hwndLV;
|
HWND hwndLV;
|
||||||
|
|
||||||
WCHAR buffer[80];
|
WCHAR buffer[80];
|
||||||
LVITEM item;
|
LVITEMW item;
|
||||||
INT iItem;
|
INT iItem;
|
||||||
|
|
||||||
pFullDescriptor = &resourceValueData->List[fullResourceIndex];
|
pFullDescriptor = &resourceValueData->List[fullResourceIndex];
|
||||||
|
@ -866,7 +866,7 @@ OnResourceNotify(HWND hwndDlg, NMHDR *phdr)
|
||||||
if (lpnmlv->iItem != -1)
|
if (lpnmlv->iItem != -1)
|
||||||
{
|
{
|
||||||
PCM_PARTIAL_RESOURCE_DESCRIPTOR pDescriptor;
|
PCM_PARTIAL_RESOURCE_DESCRIPTOR pDescriptor;
|
||||||
LVITEM item;
|
LVITEMW item;
|
||||||
|
|
||||||
item.mask = LVIF_PARAM;
|
item.mask = LVIF_PARAM;
|
||||||
item.iItem = lpnmlv->iItem;
|
item.iItem = lpnmlv->iItem;
|
||||||
|
@ -968,7 +968,7 @@ static VOID AddFullResourcesToList(HWND hwnd)
|
||||||
{
|
{
|
||||||
PCM_FULL_RESOURCE_DESCRIPTOR pFullDescriptor;
|
PCM_FULL_RESOURCE_DESCRIPTOR pFullDescriptor;
|
||||||
WCHAR buffer[80];
|
WCHAR buffer[80];
|
||||||
LVITEM item;
|
LVITEMW item;
|
||||||
ULONG i;
|
ULONG i;
|
||||||
INT iItem;
|
INT iItem;
|
||||||
|
|
||||||
|
@ -1344,7 +1344,7 @@ static LONG CopyKey(HKEY hDestKey, LPCWSTR lpDestSubKey, HKEY hSrcKey, LPCWSTR l
|
||||||
}
|
}
|
||||||
|
|
||||||
/* create the destination subkey */
|
/* create the destination subkey */
|
||||||
lResult = RegCreateKeyExW(hDestKey, lpDestSubKey, 0, NULL, 0, KEY_WRITE, NULL,
|
lResult = RegCreateKeyExW(hDestKey, lpDestSubKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL,
|
||||||
&hDestSubKey, &dwDisposition);
|
&hDestSubKey, &dwDisposition);
|
||||||
if (lResult)
|
if (lResult)
|
||||||
goto done;
|
goto done;
|
||||||
|
@ -1399,6 +1399,12 @@ static LONG MoveKey(HKEY hDestKey, LPCWSTR lpDestSubKey, HKEY hSrcKey, LPCWSTR l
|
||||||
if (!lpSrcSubKey)
|
if (!lpSrcSubKey)
|
||||||
return ERROR_INVALID_FUNCTION;
|
return ERROR_INVALID_FUNCTION;
|
||||||
|
|
||||||
|
if (_wcsicmp(lpDestSubKey, lpSrcSubKey) == 0)
|
||||||
|
{
|
||||||
|
/* Destination name equals source name */
|
||||||
|
return ERROR_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
lResult = CopyKey(hDestKey, lpDestSubKey, hSrcKey, lpSrcSubKey);
|
lResult = CopyKey(hDestKey, lpDestSubKey, hSrcKey, lpSrcSubKey);
|
||||||
if (lResult == ERROR_SUCCESS)
|
if (lResult == ERROR_SUCCESS)
|
||||||
SHDeleteKey(hSrcKey, lpSrcSubKey);
|
SHDeleteKey(hSrcKey, lpSrcSubKey);
|
||||||
|
|
|
@ -40,7 +40,7 @@ int ErrorMessageBox(HWND hWnd, LPCWSTR lpTitle, DWORD dwErrorCode, ...)
|
||||||
|
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
iRet = MessageBoxW(hWnd, (Status && lpMsgBuf ? lpMsgBuf : L"Error displaying error message.\n"), lpTitle, MB_OK | MB_ICONERROR);
|
iRet = MessageBoxW(hWnd, (Status && lpMsgBuf ? lpMsgBuf : L"Error displaying error message."), lpTitle, MB_OK | MB_ICONERROR);
|
||||||
|
|
||||||
if (lpMsgBuf) LocalFree(lpMsgBuf);
|
if (lpMsgBuf) LocalFree(lpMsgBuf);
|
||||||
|
|
||||||
|
@ -52,22 +52,25 @@ int InfoMessageBox(HWND hWnd, UINT uType, LPCWSTR lpTitle, LPCWSTR lpMessage, ..
|
||||||
{
|
{
|
||||||
int iRet = 0;
|
int iRet = 0;
|
||||||
LPWSTR lpMsgBuf = NULL;
|
LPWSTR lpMsgBuf = NULL;
|
||||||
DWORD Status = 0;
|
|
||||||
|
|
||||||
va_list args = NULL;
|
va_list args = NULL;
|
||||||
va_start(args, lpMessage);
|
va_start(args, lpMessage);
|
||||||
|
|
||||||
Status = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_STRING,
|
if (lpMessage)
|
||||||
lpMessage,
|
{
|
||||||
0,
|
SIZE_T strLen = _vscwprintf(lpMessage, args);
|
||||||
0,
|
|
||||||
(LPWSTR)&lpMsgBuf,
|
/* Create a buffer on the heap and zero it out (LPTR) */
|
||||||
0,
|
lpMsgBuf = (LPWSTR)LocalAlloc(LPTR, (strLen + 1) * sizeof(WCHAR));
|
||||||
&args);
|
if (lpMsgBuf)
|
||||||
|
{
|
||||||
|
_vsnwprintf(lpMsgBuf, strLen, lpMessage, args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
iRet = MessageBoxW(hWnd, (Status && lpMsgBuf ? lpMsgBuf : L"Error displaying error message.\n"), lpTitle, uType);
|
iRet = MessageBoxW(hWnd, (lpMessage && lpMsgBuf ? lpMsgBuf : L"Error displaying info message."), lpTitle, uType);
|
||||||
|
|
||||||
if (lpMsgBuf) LocalFree(lpMsgBuf);
|
if (lpMsgBuf) LocalFree(lpMsgBuf);
|
||||||
|
|
||||||
|
|
|
@ -77,7 +77,7 @@ static BOOL CompareName(LPCWSTR pszName1, LPCWSTR pszName2)
|
||||||
if (s_dwFlags & RSF_MATCHCASE)
|
if (s_dwFlags & RSF_MATCHCASE)
|
||||||
return wcscmp(pszName1, pszName2) == 0;
|
return wcscmp(pszName1, pszName2) == 0;
|
||||||
else
|
else
|
||||||
return wcsicmp(pszName1, pszName2) == 0;
|
return _wcsicmp(pszName1, pszName2) == 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -130,7 +130,7 @@ int compare(const void *x, const void *y)
|
||||||
{
|
{
|
||||||
const LPCWSTR *a = (const LPCWSTR *)x;
|
const LPCWSTR *a = (const LPCWSTR *)x;
|
||||||
const LPCWSTR *b = (const LPCWSTR *)y;
|
const LPCWSTR *b = (const LPCWSTR *)y;
|
||||||
return wcsicmp(*a, *b);
|
return _wcsicmp(*a, *b);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL RegFindRecurse(
|
BOOL RegFindRecurse(
|
||||||
|
@ -198,7 +198,7 @@ BOOL RegFindRecurse(
|
||||||
if (DoEvents())
|
if (DoEvents())
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
if (!fPast && wcsicmp(ppszNames[i], pszValueName) == 0)
|
if (!fPast && _wcsicmp(ppszNames[i], pszValueName) == 0)
|
||||||
{
|
{
|
||||||
fPast = TRUE;
|
fPast = TRUE;
|
||||||
continue;
|
continue;
|
||||||
|
@ -390,7 +390,7 @@ BOOL RegFindWalk(
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
wcsncpy(szKeyName, pch + 1, MAX_PATH);
|
lstrcpynW(szKeyName, pch + 1, MAX_PATH);
|
||||||
*pch = 0;
|
*pch = 0;
|
||||||
lResult = RegOpenKeyExW(hBaseKey, szSubKey, 0, KEY_ALL_ACCESS,
|
lResult = RegOpenKeyExW(hBaseKey, szSubKey, 0, KEY_ALL_ACCESS,
|
||||||
&hSubKey);
|
&hSubKey);
|
||||||
|
@ -434,7 +434,7 @@ BOOL RegFindWalk(
|
||||||
if (DoEvents())
|
if (DoEvents())
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
if (!fPast && wcsicmp(ppszNames[i], szKeyName) == 0)
|
if (!fPast && _wcsicmp(ppszNames[i], szKeyName) == 0)
|
||||||
{
|
{
|
||||||
fPast = TRUE;
|
fPast = TRUE;
|
||||||
continue;
|
continue;
|
||||||
|
@ -586,7 +586,7 @@ static void SetFindFlags(DWORD dwFlags)
|
||||||
DWORD dwDisposition;
|
DWORD dwDisposition;
|
||||||
DWORD dwData;
|
DWORD dwData;
|
||||||
|
|
||||||
if (RegCreateKeyExW(HKEY_CURRENT_USER, g_szGeneralRegKey, 0, NULL, 0, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS)
|
if (RegCreateKeyExW(HKEY_CURRENT_USER, g_szGeneralRegKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
dwData = (dwFlags >> 0) & 0x0000FFFF;
|
dwData = (dwFlags >> 0) & 0x0000FFFF;
|
||||||
RegSetValueExW(hKey, s_szFindFlags, 0, REG_DWORD, (const BYTE *) &dwData, sizeof(dwData));
|
RegSetValueExW(hKey, s_szFindFlags, 0, REG_DWORD, (const BYTE *) &dwData, sizeof(dwData));
|
||||||
|
|
|
@ -453,7 +453,7 @@ static BOOL ImportRegistryFile(HWND hWnd)
|
||||||
{
|
{
|
||||||
/* Look at the extension of the file to determine its type */
|
/* Look at the extension of the file to determine its type */
|
||||||
if (ofn.nFileExtension >= 1 &&
|
if (ofn.nFileExtension >= 1 &&
|
||||||
wcsicmp(ofn.lpstrFile + ofn.nFileExtension, L"reg") == 0) /* REGEDIT4 or Windows Registry Editor Version 5.00 */
|
_wcsicmp(ofn.lpstrFile + ofn.nFileExtension, L"reg") == 0) /* REGEDIT4 or Windows Registry Editor Version 5.00 */
|
||||||
{
|
{
|
||||||
/* Open the file */
|
/* Open the file */
|
||||||
FILE* fp = _wfopen(ofn.lpstrFile, L"r");
|
FILE* fp = _wfopen(ofn.lpstrFile, L"r");
|
||||||
|
@ -1249,7 +1249,7 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
if ((LOWORD(wParam) >= ID_FAVORITES_MIN) && (LOWORD(wParam) <= ID_FAVORITES_MAX))
|
if ((LOWORD(wParam) >= ID_FAVORITES_MIN) && (LOWORD(wParam) <= ID_FAVORITES_MAX))
|
||||||
{
|
{
|
||||||
HMENU hMenu;
|
HMENU hMenu;
|
||||||
MENUITEMINFO mii;
|
MENUITEMINFOW mii;
|
||||||
WCHAR szFavorite[512];
|
WCHAR szFavorite[512];
|
||||||
|
|
||||||
hMenu = GetSubMenu(GetMenu(hWnd), FAVORITES_MENU_POSITION);
|
hMenu = GetSubMenu(GetMenu(hWnd), FAVORITES_MENU_POSITION);
|
||||||
|
|
|
@ -56,7 +56,7 @@ static const int column_alignment[MAX_LIST_COLUMNS] = { LVCFMT_LEFT, LVCFMT_LEFT
|
||||||
LPCWSTR GetValueName(HWND hwndLV, int iStartAt)
|
LPCWSTR GetValueName(HWND hwndLV, int iStartAt)
|
||||||
{
|
{
|
||||||
int item;
|
int item;
|
||||||
LVITEM LVItem;
|
LVITEMW LVItem;
|
||||||
PLINE_INFO lineinfo;
|
PLINE_INFO lineinfo;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -108,7 +108,7 @@ VOID SetValueName(HWND hwndLV, LPCWSTR pszValueName)
|
||||||
BOOL IsDefaultValue(HWND hwndLV, int i)
|
BOOL IsDefaultValue(HWND hwndLV, int i)
|
||||||
{
|
{
|
||||||
PLINE_INFO lineinfo;
|
PLINE_INFO lineinfo;
|
||||||
LVITEM Item;
|
LVITEMW Item;
|
||||||
|
|
||||||
Item.mask = LVIF_PARAM;
|
Item.mask = LVIF_PARAM;
|
||||||
Item.iItem = i;
|
Item.iItem = i;
|
||||||
|
@ -126,7 +126,7 @@ BOOL IsDefaultValue(HWND hwndLV, int i)
|
||||||
static void AddEntryToList(HWND hwndLV, LPWSTR Name, DWORD dwValType, void* ValBuf, DWORD dwCount, int Position, BOOL ValExists)
|
static void AddEntryToList(HWND hwndLV, LPWSTR Name, DWORD dwValType, void* ValBuf, DWORD dwCount, int Position, BOOL ValExists)
|
||||||
{
|
{
|
||||||
PLINE_INFO linfo;
|
PLINE_INFO linfo;
|
||||||
LVITEM item;
|
LVITEMW item;
|
||||||
int index;
|
int index;
|
||||||
|
|
||||||
linfo = (PLINE_INFO)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(LINE_INFO) + dwCount);
|
linfo = (PLINE_INFO)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(LINE_INFO) + dwCount);
|
||||||
|
@ -654,7 +654,7 @@ fail:
|
||||||
void DestroyListView(HWND hwndLV)
|
void DestroyListView(HWND hwndLV)
|
||||||
{
|
{
|
||||||
INT count, i;
|
INT count, i;
|
||||||
LVITEM item;
|
LVITEMW item;
|
||||||
|
|
||||||
count = ListView_GetItemCount(hwndLV);
|
count = ListView_GetItemCount(hwndLV);
|
||||||
for (i = 0; i < count; i++)
|
for (i = 0; i < count; i++)
|
||||||
|
|
|
@ -458,17 +458,16 @@ static LONG openKeyW(WCHAR* stdInput)
|
||||||
if (!parseKeyName(stdInput, &keyClass, &keyPath))
|
if (!parseKeyName(stdInput, &keyClass, &keyPath))
|
||||||
return ERROR_INVALID_PARAMETER;
|
return ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
res = RegCreateKeyExW(
|
res = RegCreateKeyExW(keyClass, /* Class */
|
||||||
keyClass, /* Class */
|
keyPath, /* Sub Key */
|
||||||
keyPath, /* Sub Key */
|
0, /* MUST BE 0 */
|
||||||
0, /* MUST BE 0 */
|
NULL, /* object type */
|
||||||
NULL, /* object type */
|
REG_OPTION_NON_VOLATILE, /* option, REG_OPTION_NON_VOLATILE ... */
|
||||||
REG_OPTION_NON_VOLATILE, /* option, REG_OPTION_NON_VOLATILE ... */
|
KEY_ALL_ACCESS, /* access mask, KEY_ALL_ACCESS */
|
||||||
KEY_ALL_ACCESS, /* access mask, KEY_ALL_ACCESS */
|
NULL, /* security attribute */
|
||||||
NULL, /* security attribute */
|
¤tKeyHandle, /* result */
|
||||||
¤tKeyHandle, /* result */
|
&dwDisp); /* disposition, REG_CREATED_NEW_KEY or
|
||||||
&dwDisp); /* disposition, REG_CREATED_NEW_KEY or
|
REG_OPENED_EXISTING_KEY */
|
||||||
REG_OPENED_EXISTING_KEY */
|
|
||||||
|
|
||||||
if (res == ERROR_SUCCESS)
|
if (res == ERROR_SUCCESS)
|
||||||
currentKeyName = GetMultiByteString(stdInput);
|
currentKeyName = GetMultiByteString(stdInput);
|
||||||
|
|
|
@ -116,49 +116,45 @@ extern void SaveSettings(void)
|
||||||
|
|
||||||
if (RegCreateKeyW(HKEY_CURRENT_USER, g_szGeneralRegKey, &hKey) == ERROR_SUCCESS)
|
if (RegCreateKeyW(HKEY_CURRENT_USER, g_szGeneralRegKey, &hKey) == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
if (RegOpenKeyW(HKEY_CURRENT_USER, g_szGeneralRegKey, &hKey) == ERROR_SUCCESS)
|
RegistryBinaryConfig tConfig;
|
||||||
|
DWORD iBufferSize = sizeof(tConfig);
|
||||||
|
WCHAR szBuffer[MAX_PATH];
|
||||||
|
LPCWSTR keyPath, rootName;
|
||||||
|
HKEY hRootKey;
|
||||||
|
|
||||||
|
/* Save key position */
|
||||||
|
keyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hRootKey);
|
||||||
|
if (keyPath)
|
||||||
{
|
{
|
||||||
RegistryBinaryConfig tConfig;
|
rootName = get_root_key_name(hRootKey);
|
||||||
DWORD iBufferSize = sizeof(tConfig);
|
|
||||||
WCHAR szBuffer[MAX_PATH];
|
|
||||||
LPCWSTR keyPath, rootName;
|
|
||||||
HKEY hRootKey;
|
|
||||||
|
|
||||||
/* Save key position */
|
/* Load "My Computer" string and complete it */
|
||||||
keyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hRootKey);
|
LoadStringW(hInst, IDS_MY_COMPUTER, szBuffer, COUNT_OF(szBuffer));
|
||||||
if (keyPath)
|
wcscat(szBuffer, L"\\"); wcscat(szBuffer, rootName);
|
||||||
{
|
wcscat(szBuffer, L"\\"); wcscat(szBuffer, keyPath);
|
||||||
rootName = get_root_key_name(hRootKey);
|
|
||||||
|
|
||||||
/* Load "My Computer" string and complete it */
|
RegSetValueExW(hKey, L"LastKey", 0, REG_SZ, (LPBYTE)szBuffer, (DWORD)wcslen(szBuffer) * sizeof(WCHAR));
|
||||||
LoadStringW(hInst, IDS_MY_COMPUTER, szBuffer, COUNT_OF(szBuffer));
|
|
||||||
wcscat(szBuffer, L"\\"); wcscat(szBuffer, rootName);
|
|
||||||
wcscat(szBuffer, L"\\"); wcscat(szBuffer, keyPath);
|
|
||||||
|
|
||||||
RegSetValueExW(hKey, L"LastKey", 0, REG_SZ, (LPBYTE)szBuffer, (DWORD)wcslen(szBuffer) * sizeof(WCHAR));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get statusbar settings */
|
|
||||||
tConfig.StatusBarVisible = ((GetMenuState(GetSubMenu(hMenuFrame, ID_VIEW_MENU), ID_VIEW_STATUSBAR, MF_BYCOMMAND) & MF_CHECKED) ? 1 : 0);
|
|
||||||
|
|
||||||
/* Get splitter position */
|
|
||||||
tConfig.TreeViewSize = g_pChildWnd->nSplitPos;
|
|
||||||
|
|
||||||
/* Get list view column width*/
|
|
||||||
tConfig.NameColumnSize = ListView_GetColumnWidth(g_pChildWnd->hListWnd, 0);
|
|
||||||
tConfig.TypeColumnSize = ListView_GetColumnWidth(g_pChildWnd->hListWnd, 1);
|
|
||||||
tConfig.DataColumnSize = ListView_GetColumnWidth(g_pChildWnd->hListWnd, 2);
|
|
||||||
|
|
||||||
/* Get program window settings */
|
|
||||||
tConfig.tPlacement.length = sizeof(WINDOWPLACEMENT);
|
|
||||||
GetWindowPlacement(hFrameWnd , &tConfig.tPlacement);
|
|
||||||
|
|
||||||
/* Save all the data */
|
|
||||||
RegSetValueExW(hKey, L"View", 0, REG_BINARY, (LPBYTE)&tConfig, iBufferSize);
|
|
||||||
|
|
||||||
RegCloseKey(hKey);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Get statusbar settings */
|
||||||
|
tConfig.StatusBarVisible = ((GetMenuState(GetSubMenu(hMenuFrame, ID_VIEW_MENU), ID_VIEW_STATUSBAR, MF_BYCOMMAND) & MF_CHECKED) ? 1 : 0);
|
||||||
|
|
||||||
|
/* Get splitter position */
|
||||||
|
tConfig.TreeViewSize = g_pChildWnd->nSplitPos;
|
||||||
|
|
||||||
|
/* Get list view column width*/
|
||||||
|
tConfig.NameColumnSize = ListView_GetColumnWidth(g_pChildWnd->hListWnd, 0);
|
||||||
|
tConfig.TypeColumnSize = ListView_GetColumnWidth(g_pChildWnd->hListWnd, 1);
|
||||||
|
tConfig.DataColumnSize = ListView_GetColumnWidth(g_pChildWnd->hListWnd, 2);
|
||||||
|
|
||||||
|
/* Get program window settings */
|
||||||
|
tConfig.tPlacement.length = sizeof(WINDOWPLACEMENT);
|
||||||
|
GetWindowPlacement(hFrameWnd , &tConfig.tPlacement);
|
||||||
|
|
||||||
|
/* Save all the data */
|
||||||
|
RegSetValueExW(hKey, L"View", 0, REG_BINARY, (LPBYTE)&tConfig, iBufferSize);
|
||||||
|
|
||||||
|
RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -34,7 +34,7 @@ static LPWSTR pathBuffer;
|
||||||
|
|
||||||
static BOOL get_item_path(HWND hwndTV, HTREEITEM hItem, HKEY* phKey, LPWSTR* pKeyPath, int* pPathLen, int* pMaxLen)
|
static BOOL get_item_path(HWND hwndTV, HTREEITEM hItem, HKEY* phKey, LPWSTR* pKeyPath, int* pPathLen, int* pMaxLen)
|
||||||
{
|
{
|
||||||
TVITEM item;
|
TVITEMW item;
|
||||||
size_t maxLen, len;
|
size_t maxLen, len;
|
||||||
LPWSTR newStr;
|
LPWSTR newStr;
|
||||||
|
|
||||||
|
@ -109,8 +109,8 @@ BOOL DeleteNode(HWND hwndTV, HTREEITEM hItem)
|
||||||
/* Add an entry to the tree. Only give hKey for root nodes (HKEY_ constants) */
|
/* Add an entry to the tree. Only give hKey for root nodes (HKEY_ constants) */
|
||||||
static HTREEITEM AddEntryToTree(HWND hwndTV, HTREEITEM hParent, LPWSTR label, HKEY hKey, DWORD dwChildren)
|
static HTREEITEM AddEntryToTree(HWND hwndTV, HTREEITEM hParent, LPWSTR label, HKEY hKey, DWORD dwChildren)
|
||||||
{
|
{
|
||||||
TVITEM tvi;
|
TVITEMW tvi;
|
||||||
TVINSERTSTRUCT tvins;
|
TVINSERTSTRUCTW tvins;
|
||||||
|
|
||||||
if (hKey)
|
if (hKey)
|
||||||
{
|
{
|
||||||
|
@ -140,7 +140,7 @@ BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem)
|
||||||
LPCWSTR KeyPath;
|
LPCWSTR KeyPath;
|
||||||
DWORD dwCount, dwIndex, dwMaxSubKeyLen;
|
DWORD dwCount, dwIndex, dwMaxSubKeyLen;
|
||||||
LPWSTR Name = NULL;
|
LPWSTR Name = NULL;
|
||||||
TVITEM tvItem;
|
TVITEMW tvItem;
|
||||||
LPWSTR pszNodes = NULL;
|
LPWSTR pszNodes = NULL;
|
||||||
BOOL bSuccess = FALSE;
|
BOOL bSuccess = FALSE;
|
||||||
LPWSTR s;
|
LPWSTR s;
|
||||||
|
@ -332,7 +332,7 @@ HTREEITEM InsertNode(HWND hwndTV, HTREEITEM hItem, LPWSTR name)
|
||||||
{
|
{
|
||||||
WCHAR buf[MAX_NEW_KEY_LEN];
|
WCHAR buf[MAX_NEW_KEY_LEN];
|
||||||
HTREEITEM hNewItem = 0;
|
HTREEITEM hNewItem = 0;
|
||||||
TVITEMEX item;
|
TVITEMEXW item;
|
||||||
|
|
||||||
/* Default to the current selection */
|
/* Default to the current selection */
|
||||||
if (!hItem)
|
if (!hItem)
|
||||||
|
@ -390,8 +390,8 @@ HWND StartKeyRename(HWND hwndTV)
|
||||||
|
|
||||||
static BOOL InitTreeViewItems(HWND hwndTV, LPWSTR pHostName)
|
static BOOL InitTreeViewItems(HWND hwndTV, LPWSTR pHostName)
|
||||||
{
|
{
|
||||||
TVITEM tvi;
|
TVITEMW tvi;
|
||||||
TVINSERTSTRUCT tvins;
|
TVINSERTSTRUCTW tvins;
|
||||||
HTREEITEM hRoot;
|
HTREEITEM hRoot;
|
||||||
|
|
||||||
tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_CHILDREN | TVIF_PARAM;
|
tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_CHILDREN | TVIF_PARAM;
|
||||||
|
@ -593,7 +593,7 @@ BOOL CreateNewKey(HWND hwndTV, HTREEITEM hItem)
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
wsprintf(szNewKey, szNewKeyFormat, iIndex++);
|
wsprintf(szNewKey, szNewKeyFormat, iIndex++);
|
||||||
nResult = RegCreateKeyExW(hKey, szNewKey, 0, NULL, 0, KEY_WRITE, NULL, &hNewKey, &dwDisposition);
|
nResult = RegCreateKeyExW(hKey, szNewKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hNewKey, &dwDisposition);
|
||||||
if (hNewKey && dwDisposition == REG_OPENED_EXISTING_KEY)
|
if (hNewKey && dwDisposition == REG_OPENED_EXISTING_KEY)
|
||||||
{
|
{
|
||||||
RegCloseKey(hNewKey);
|
RegCloseKey(hNewKey);
|
||||||
|
@ -664,7 +664,7 @@ BOOL SelectNode(HWND hwndTV, LPCWSTR keyPath)
|
||||||
WCHAR szPathPart[128];
|
WCHAR szPathPart[128];
|
||||||
WCHAR szBuffer[128];
|
WCHAR szBuffer[128];
|
||||||
LPCWSTR s;
|
LPCWSTR s;
|
||||||
TVITEM tvi;
|
TVITEMW tvi;
|
||||||
|
|
||||||
/* Load "My Computer" string... */
|
/* Load "My Computer" string... */
|
||||||
LoadStringW(hInst, IDS_MY_COMPUTER, szBuffer, COUNT_OF(szBuffer));
|
LoadStringW(hInst, IDS_MY_COMPUTER, szBuffer, COUNT_OF(szBuffer));
|
||||||
|
@ -683,22 +683,22 @@ BOOL SelectNode(HWND hwndTV, LPCWSTR keyPath)
|
||||||
while(keyPath[0])
|
while(keyPath[0])
|
||||||
{
|
{
|
||||||
s = wcschr(keyPath, L'\\');
|
s = wcschr(keyPath, L'\\');
|
||||||
wcsncpy(szPathPart, keyPath, s ? s - keyPath + 1 : wcslen(keyPath) + 1);
|
lstrcpynW(szPathPart, keyPath, s ? s - keyPath + 1 : wcslen(keyPath) + 1);
|
||||||
|
|
||||||
/* Special case for root to expand root key abbreviations */
|
/* Special case for root to expand root key abbreviations */
|
||||||
if (hItem == hRoot)
|
if (hItem == hRoot)
|
||||||
{
|
{
|
||||||
if (!wcsicmp(szPathPart, L"HKCR"))
|
if (!_wcsicmp(szPathPart, L"HKCR"))
|
||||||
wcscpy(szPathPart, L"HKEY_CLASSES_ROOT");
|
wcscpy(szPathPart, L"HKEY_CLASSES_ROOT");
|
||||||
else if (!wcsicmp(szPathPart, L"HKCU"))
|
else if (!_wcsicmp(szPathPart, L"HKCU"))
|
||||||
wcscpy(szPathPart, L"HKEY_CURRENT_USER");
|
wcscpy(szPathPart, L"HKEY_CURRENT_USER");
|
||||||
else if (!wcsicmp(szPathPart, L"HKLM"))
|
else if (!_wcsicmp(szPathPart, L"HKLM"))
|
||||||
wcscpy(szPathPart, L"HKEY_LOCAL_MACHINE");
|
wcscpy(szPathPart, L"HKEY_LOCAL_MACHINE");
|
||||||
else if (!wcsicmp(szPathPart, L"HKU"))
|
else if (!_wcsicmp(szPathPart, L"HKU"))
|
||||||
wcscpy(szPathPart, L"HKEY_USERS");
|
wcscpy(szPathPart, L"HKEY_USERS");
|
||||||
else if (!wcsicmp(szPathPart, L"HKCC"))
|
else if (!_wcsicmp(szPathPart, L"HKCC"))
|
||||||
wcscpy(szPathPart, L"HKEY_CURRENT_CONFIG");
|
wcscpy(szPathPart, L"HKEY_CURRENT_CONFIG");
|
||||||
else if (!wcsicmp(szPathPart, L"HKDD"))
|
else if (!_wcsicmp(szPathPart, L"HKDD"))
|
||||||
wcscpy(szPathPart, L"HKEY_DYN_DATA");
|
wcscpy(szPathPart, L"HKEY_DYN_DATA");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -713,7 +713,7 @@ BOOL SelectNode(HWND hwndTV, LPCWSTR keyPath)
|
||||||
|
|
||||||
(void)TreeView_GetItem(hwndTV, &tvi);
|
(void)TreeView_GetItem(hwndTV, &tvi);
|
||||||
|
|
||||||
if (!wcsicmp(szBuffer, szPathPart))
|
if (!_wcsicmp(szBuffer, szPathPart))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -513,7 +513,7 @@ STRINGTABLE DISCARDABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APP_TITLE "Gestionnaire des tâches"
|
IDS_APP_TITLE "Gestionnaire des tâches"
|
||||||
IDC_TASKMGR "Gestionnaire des tâches"
|
IDC_TASKMGR "Gestionnaire des tâches"
|
||||||
IDS_IDLE_PROCESS "Processus système en atente"
|
IDS_IDLE_PROCESS "Processus système en attente"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRINGTABLE DISCARDABLE
|
STRINGTABLE DISCARDABLE
|
||||||
|
|
|
@ -171,14 +171,6 @@ i386PrintExceptionText(ULONG TrapIndex, PKTRAP_FRAME TrapFrame, PKSPECIAL_REGIST
|
||||||
InstructionPointer[6], InstructionPointer[7]);
|
InstructionPointer[6], InstructionPointer[7]);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *BugCodeStrings[] =
|
|
||||||
{
|
|
||||||
"TEST_BUGCHECK",
|
|
||||||
"MISSING_HARDWARE_REQUIREMENTS",
|
|
||||||
};
|
|
||||||
|
|
||||||
ULONG_PTR BugCheckInfo[5];
|
|
||||||
|
|
||||||
void
|
void
|
||||||
NTAPI
|
NTAPI
|
||||||
FrLdrBugCheckEx(
|
FrLdrBugCheckEx(
|
||||||
|
|
|
@ -427,3 +427,13 @@ RtlAssert(IN PVOID FailedAssertion,
|
||||||
|
|
||||||
DbgBreakPoint();
|
DbgBreakPoint();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *BugCodeStrings[] =
|
||||||
|
{
|
||||||
|
"TEST_BUGCHECK",
|
||||||
|
"MISSING_HARDWARE_REQUIREMENTS",
|
||||||
|
"FREELDR_IMAGE_CORRUPTION",
|
||||||
|
};
|
||||||
|
|
||||||
|
ULONG_PTR BugCheckInfo[5];
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#define BIOSCALLBUFSEGMENT (BIOSCALLBUFFER/16) /* Buffer to store temporary data for any Int386() call */
|
#define BIOSCALLBUFSEGMENT (BIOSCALLBUFFER/16) /* Buffer to store temporary data for any Int386() call */
|
||||||
#define BIOSCALLBUFOFFSET HEX(0000) /* Buffer to store temporary data for any Int386() call */
|
#define BIOSCALLBUFOFFSET HEX(0000) /* Buffer to store temporary data for any Int386() call */
|
||||||
#define BIOSCALLBUFSIZE PAGE_SIZE /* max is sizeof(VESA_SVGA_INFO) = 512 */
|
#define BIOSCALLBUFSIZE PAGE_SIZE /* max is sizeof(VESA_SVGA_INFO) = 512 */
|
||||||
|
#define MAX_FREELDR_PE_SIZE (DISKREADBUFFER - FREELDR_PE_BASE)
|
||||||
|
|
||||||
/* These addresses specify the realmode "BSS section" layout */
|
/* These addresses specify the realmode "BSS section" layout */
|
||||||
#define BSS_RealModeEntry (BSS_START + 0)
|
#define BSS_RealModeEntry (BSS_START + 0)
|
||||||
|
|
|
@ -120,4 +120,19 @@ void MEMORY_WRITE_BREAKPOINT4(unsigned long addr);
|
||||||
|
|
||||||
#endif // DBG
|
#endif // DBG
|
||||||
|
|
||||||
|
void
|
||||||
|
NTAPI
|
||||||
|
FrLdrBugCheck(ULONG BugCode);
|
||||||
|
|
||||||
|
/* Bugcheck codes */
|
||||||
|
enum _FRLDR_BUGCHECK_CODES
|
||||||
|
{
|
||||||
|
TEST_BUGCHECK,
|
||||||
|
MISSING_HARDWARE_REQUIREMENTS,
|
||||||
|
FREELDR_IMAGE_CORRUPTION,
|
||||||
|
};
|
||||||
|
|
||||||
|
extern char *BugCodeStrings[];
|
||||||
|
extern ULONG_PTR BugCheckInfo[5];
|
||||||
|
|
||||||
#endif // defined __DEBUG_H
|
#endif // defined __DEBUG_H
|
||||||
|
|
|
@ -19,6 +19,13 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
extern char __ImageBase;
|
||||||
|
#ifdef __GNUC__
|
||||||
|
#define FREELDR_SECTION_COUNT 3
|
||||||
|
#else
|
||||||
|
#define FREELDR_SECTION_COUNT 1
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef struct _FREELDR_MEMORY_DESCRIPTOR
|
typedef struct _FREELDR_MEMORY_DESCRIPTOR
|
||||||
{
|
{
|
||||||
TYPE_OF_MEMORY MemoryType;
|
TYPE_OF_MEMORY MemoryType;
|
||||||
|
|
|
@ -163,6 +163,46 @@ ArcGetMemoryDescriptor(const FREELDR_MEMORY_DESCRIPTOR* Current)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BOOLEAN
|
||||||
|
MmCheckFreeldrImageFile()
|
||||||
|
{
|
||||||
|
PIMAGE_NT_HEADERS NtHeaders;
|
||||||
|
PIMAGE_FILE_HEADER FileHeader;
|
||||||
|
PIMAGE_OPTIONAL_HEADER OptionalHeader;
|
||||||
|
|
||||||
|
/* Get the NT headers */
|
||||||
|
NtHeaders = RtlImageNtHeader(&__ImageBase);
|
||||||
|
if (!NtHeaders)
|
||||||
|
{
|
||||||
|
ERR("Coult not get NtHeaders!\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check the file header */
|
||||||
|
FileHeader = &NtHeaders->FileHeader;
|
||||||
|
if ((FileHeader->Machine != IMAGE_FILE_MACHINE_NATIVE) ||
|
||||||
|
(FileHeader->NumberOfSections != FREELDR_SECTION_COUNT) ||
|
||||||
|
(FileHeader->PointerToSymbolTable != 0) ||
|
||||||
|
(FileHeader->NumberOfSymbols != 0) ||
|
||||||
|
(FileHeader->SizeOfOptionalHeader != 0xE0))
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check the optional header */
|
||||||
|
OptionalHeader = &NtHeaders->OptionalHeader;
|
||||||
|
if ((OptionalHeader->Magic != IMAGE_NT_OPTIONAL_HDR_MAGIC) ||
|
||||||
|
(OptionalHeader->Subsystem != 1) || // native
|
||||||
|
(OptionalHeader->ImageBase != FREELDR_PE_BASE) ||
|
||||||
|
(OptionalHeader->SizeOfImage > MAX_FREELDR_PE_SIZE) ||
|
||||||
|
(OptionalHeader->SectionAlignment != OptionalHeader->FileAlignment))
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
BOOLEAN MmInitializeMemoryManager(VOID)
|
BOOLEAN MmInitializeMemoryManager(VOID)
|
||||||
{
|
{
|
||||||
#if DBG
|
#if DBG
|
||||||
|
@ -171,6 +211,12 @@ BOOLEAN MmInitializeMemoryManager(VOID)
|
||||||
|
|
||||||
TRACE("Initializing Memory Manager.\n");
|
TRACE("Initializing Memory Manager.\n");
|
||||||
|
|
||||||
|
/* Check the freeldr binary */
|
||||||
|
if (!MmCheckFreeldrImageFile())
|
||||||
|
{
|
||||||
|
FrLdrBugCheck(FREELDR_IMAGE_CORRUPTION);
|
||||||
|
}
|
||||||
|
|
||||||
BiosMemoryMap = MachVtbl.GetMemoryMap(&BiosMemoryMapEntryCount);
|
BiosMemoryMap = MachVtbl.GetMemoryMap(&BiosMemoryMapEntryCount);
|
||||||
|
|
||||||
#if DBG
|
#if DBG
|
||||||
|
|
|
@ -261,14 +261,10 @@ UserNew(HWND hwndDlg)
|
||||||
NewUserDlgProc,
|
NewUserDlgProc,
|
||||||
(LPARAM)&user) == IDOK)
|
(LPARAM)&user) == IDOK)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
status = NetUserAdd(NULL,
|
status = NetUserAdd(NULL,
|
||||||
3,
|
3,
|
||||||
(LPBYTE)&user,
|
(LPBYTE)&user,
|
||||||
NULL);
|
NULL);
|
||||||
#else
|
|
||||||
status = NERR_Success;
|
|
||||||
#endif
|
|
||||||
if (status != NERR_Success)
|
if (status != NERR_Success)
|
||||||
{
|
{
|
||||||
TCHAR szText[256];
|
TCHAR szText[256];
|
||||||
|
@ -434,11 +430,13 @@ UpdateUsersList(HWND hwndListView)
|
||||||
lvi.iImage = (pBuffer[i].usri20_flags & UF_ACCOUNTDISABLE) ? 1 : 0;
|
lvi.iImage = (pBuffer[i].usri20_flags & UF_ACCOUNTDISABLE) ? 1 : 0;
|
||||||
iItem = ListView_InsertItem(hwndListView, &lvi);
|
iItem = ListView_InsertItem(hwndListView, &lvi);
|
||||||
|
|
||||||
ListView_SetItemText(hwndListView, iItem, 1,
|
if (pBuffer[i].usri20_full_name != NULL)
|
||||||
pBuffer[i].usri20_full_name);
|
ListView_SetItemText(hwndListView, iItem, 1,
|
||||||
|
pBuffer[i].usri20_full_name);
|
||||||
|
|
||||||
ListView_SetItemText(hwndListView, iItem, 2,
|
if (pBuffer[i].usri20_comment != NULL)
|
||||||
pBuffer[i].usri20_comment);
|
ListView_SetItemText(hwndListView, iItem, 2,
|
||||||
|
pBuffer[i].usri20_comment);
|
||||||
}
|
}
|
||||||
|
|
||||||
NetApiBufferFree(pBuffer);
|
NetApiBufferFree(pBuffer);
|
||||||
|
|
|
@ -237,7 +237,8 @@ BasepComputeProcessPath(IN PBASE_SEARCH_PATH_TYPE PathOrder,
|
||||||
{
|
{
|
||||||
/* This means someone added RTL_PERTHREAD_CURDIR */
|
/* This means someone added RTL_PERTHREAD_CURDIR */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE);
|
||||||
|
// while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We do not. Do we have the LDR_ENTRY for the executable? */
|
/* We do not. Do we have the LDR_ENTRY for the executable? */
|
||||||
|
|
|
@ -2637,7 +2637,7 @@ CreateProcessInternalW(HANDLE hToken,
|
||||||
while (NULL != (ScanString = wcschr(ScanString, L'^')))
|
while (NULL != (ScanString = wcschr(ScanString, L'^')))
|
||||||
{
|
{
|
||||||
ScanString++;
|
ScanString++;
|
||||||
if (*ScanString == L'\"' || *ScanString == L'^' || *ScanString == L'\"')
|
if (*ScanString == L'\"' || *ScanString == L'^' || *ScanString == L'\\')
|
||||||
{
|
{
|
||||||
Escape = TRUE;
|
Escape = TRUE;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -241,7 +241,8 @@ CreateRemoteThread(IN HANDLE hProcess,
|
||||||
DbgPrint("SXS: %s - Failing thread create because "
|
DbgPrint("SXS: %s - Failing thread create because "
|
||||||
"NtQueryInformationThread() failed with status %08lx\n",
|
"NtQueryInformationThread() failed with status %08lx\n",
|
||||||
__FUNCTION__, Status);
|
__FUNCTION__, Status);
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Allocate the Activation Context Stack */
|
/* Allocate the Activation Context Stack */
|
||||||
|
@ -252,7 +253,8 @@ CreateRemoteThread(IN HANDLE hProcess,
|
||||||
DbgPrint("SXS: %s - Failing thread create because "
|
DbgPrint("SXS: %s - Failing thread create because "
|
||||||
"RtlAllocateActivationContextStack() failed with status %08lx\n",
|
"RtlAllocateActivationContextStack() failed with status %08lx\n",
|
||||||
__FUNCTION__, Status);
|
__FUNCTION__, Status);
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Save it */
|
/* Save it */
|
||||||
|
@ -274,7 +276,8 @@ CreateRemoteThread(IN HANDLE hProcess,
|
||||||
DbgPrint("SXS: %s - Failing thread create because "
|
DbgPrint("SXS: %s - Failing thread create because "
|
||||||
"RtlQueryInformationActivationContext() failed with status %08lx\n",
|
"RtlQueryInformationActivationContext() failed with status %08lx\n",
|
||||||
__FUNCTION__, Status);
|
__FUNCTION__, Status);
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Does it need to be activated? */
|
/* Does it need to be activated? */
|
||||||
|
@ -291,7 +294,8 @@ CreateRemoteThread(IN HANDLE hProcess,
|
||||||
DbgPrint("SXS: %s - Failing thread create because "
|
DbgPrint("SXS: %s - Failing thread create because "
|
||||||
"RtlActivateActivationContextEx() failed with status %08lx\n",
|
"RtlActivateActivationContextEx() failed with status %08lx\n",
|
||||||
__FUNCTION__, Status);
|
__FUNCTION__, Status);
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -367,7 +371,8 @@ ExitThread(IN DWORD uExitCode)
|
||||||
|
|
||||||
/* We should never reach this place */
|
/* We should never reach this place */
|
||||||
DPRINT1("It should not happen\n");
|
DPRINT1("It should not happen\n");
|
||||||
while (TRUE);
|
ASSERT(FALSE);
|
||||||
|
while (TRUE); // 'noreturn' function.
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -18,6 +18,18 @@
|
||||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TODO:
|
||||||
|
* Implement NetUserChangePassword
|
||||||
|
* Implement NetUserDel
|
||||||
|
* Implement NetUserGetGroups
|
||||||
|
* Implement NetUserSetGroups
|
||||||
|
* Implement NetUserSetInfo
|
||||||
|
* NetUserGetLocalGroups does not support LG_INCLUDE_INDIRECT yet.
|
||||||
|
* Add missing information levels.
|
||||||
|
* ...
|
||||||
|
*/
|
||||||
|
|
||||||
#include "netapi32.h"
|
#include "netapi32.h"
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(netapi32);
|
WINE_DEFAULT_DEBUG_CHANNEL(netapi32);
|
||||||
|
@ -31,7 +43,7 @@ typedef struct _ENUM_CONTEXT
|
||||||
|
|
||||||
SAM_ENUMERATE_HANDLE EnumerationContext;
|
SAM_ENUMERATE_HANDLE EnumerationContext;
|
||||||
PSAM_RID_ENUMERATION Buffer;
|
PSAM_RID_ENUMERATION Buffer;
|
||||||
ULONG Returned;
|
ULONG Count;
|
||||||
ULONG Index;
|
ULONG Index;
|
||||||
BOOLEAN BuiltinDone;
|
BOOLEAN BuiltinDone;
|
||||||
|
|
||||||
|
@ -107,6 +119,46 @@ static struct sam_user* NETAPI_FindUser(LPCWSTR UserName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static PSID
|
||||||
|
CreateSidFromSidAndRid(PSID SrcSid,
|
||||||
|
ULONG RelativeId)
|
||||||
|
{
|
||||||
|
UCHAR RidCount;
|
||||||
|
PSID DstSid;
|
||||||
|
ULONG i;
|
||||||
|
ULONG DstSidSize;
|
||||||
|
PULONG p, q;
|
||||||
|
|
||||||
|
RidCount = *RtlSubAuthorityCountSid(SrcSid);
|
||||||
|
if (RidCount >= 8)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
DstSidSize = RtlLengthRequiredSid(RidCount + 1);
|
||||||
|
|
||||||
|
DstSid = RtlAllocateHeap(RtlGetProcessHeap(),
|
||||||
|
0,
|
||||||
|
DstSidSize);
|
||||||
|
if (DstSid == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
RtlInitializeSid(DstSid,
|
||||||
|
RtlIdentifierAuthoritySid(SrcSid),
|
||||||
|
RidCount + 1);
|
||||||
|
|
||||||
|
for (i = 0; i < (ULONG)RidCount; i++)
|
||||||
|
{
|
||||||
|
p = RtlSubAuthoritySid(SrcSid, i);
|
||||||
|
q = RtlSubAuthoritySid(DstSid, i);
|
||||||
|
*q = *p;
|
||||||
|
}
|
||||||
|
|
||||||
|
q = RtlSubAuthoritySid(DstSid, (ULONG)RidCount);
|
||||||
|
*q = RelativeId;
|
||||||
|
|
||||||
|
return DstSid;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static
|
static
|
||||||
NET_API_STATUS
|
NET_API_STATUS
|
||||||
BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo,
|
BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo,
|
||||||
|
@ -246,7 +298,7 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo,
|
||||||
Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->AdminComment.Length + sizeof(WCHAR));
|
Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->AdminComment.Length + sizeof(WCHAR));
|
||||||
}
|
}
|
||||||
|
|
||||||
UserInfo1->usri1_flags = UserInfo->UserAccountControl;
|
// UserInfo1->usri1_flags = UserInfo->UserAccountControl;
|
||||||
|
|
||||||
if (UserInfo->ScriptPath.Length > 0)
|
if (UserInfo->ScriptPath.Length > 0)
|
||||||
{
|
{
|
||||||
|
@ -342,7 +394,7 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo,
|
||||||
Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->AdminComment.Length + sizeof(WCHAR));
|
Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->AdminComment.Length + sizeof(WCHAR));
|
||||||
}
|
}
|
||||||
|
|
||||||
UserInfo20->usri20_flags = UserInfo->UserAccountControl;
|
// UserInfo20->usri20_flags = UserInfo->UserAccountControl;
|
||||||
UserInfo20->usri20_user_id = RelativeId;
|
UserInfo20->usri20_user_id = RelativeId;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -399,6 +451,131 @@ FreeUserInfo(PUSER_ACCOUNT_INFORMATION UserInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static
|
||||||
|
NET_API_STATUS
|
||||||
|
SetUserInfo(SAM_HANDLE UserHandle,
|
||||||
|
LPBYTE UserInfo,
|
||||||
|
DWORD Level)
|
||||||
|
{
|
||||||
|
USER_ALL_INFORMATION UserAllInfo;
|
||||||
|
PUSER_INFO_1 UserInfo1;
|
||||||
|
PUSER_INFO_3 UserInfo3;
|
||||||
|
NET_API_STATUS ApiStatus = NERR_Success;
|
||||||
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
|
|
||||||
|
ZeroMemory(&UserAllInfo, sizeof(USER_ALL_INFORMATION));
|
||||||
|
|
||||||
|
switch (Level)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
UserInfo1 = (PUSER_INFO_1)UserInfo;
|
||||||
|
// RtlInitUnicodeString(&UserAllInfo.UserName,
|
||||||
|
// UserInfo1->usri1_name);
|
||||||
|
|
||||||
|
RtlInitUnicodeString(&UserAllInfo.AdminComment,
|
||||||
|
UserInfo1->usri1_comment);
|
||||||
|
|
||||||
|
RtlInitUnicodeString(&UserAllInfo.HomeDirectory,
|
||||||
|
UserInfo1->usri1_home_dir);
|
||||||
|
|
||||||
|
RtlInitUnicodeString(&UserAllInfo.ScriptPath,
|
||||||
|
UserInfo1->usri1_script_path);
|
||||||
|
|
||||||
|
RtlInitUnicodeString(&UserAllInfo.NtPassword,
|
||||||
|
UserInfo1->usri1_password);
|
||||||
|
UserAllInfo.NtPasswordPresent = TRUE;
|
||||||
|
|
||||||
|
// UserInfo1->usri1_flags
|
||||||
|
// UserInfo1->usri1_priv
|
||||||
|
|
||||||
|
UserAllInfo.WhichFields =
|
||||||
|
USER_ALL_ADMINCOMMENT |
|
||||||
|
USER_ALL_HOMEDIRECTORY |
|
||||||
|
USER_ALL_SCRIPTPATH |
|
||||||
|
USER_ALL_NTPASSWORDPRESENT
|
||||||
|
// USER_ALL_USERACCOUNTCONTROL
|
||||||
|
;
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
UserInfo3 = (PUSER_INFO_3)UserInfo;
|
||||||
|
|
||||||
|
// LPWSTR usri3_name;
|
||||||
|
|
||||||
|
RtlInitUnicodeString(&UserAllInfo.NtPassword,
|
||||||
|
UserInfo3->usri3_password);
|
||||||
|
UserAllInfo.NtPasswordPresent = TRUE;
|
||||||
|
|
||||||
|
// DWORD usri3_password_age; // ignored
|
||||||
|
// DWORD usri3_priv;
|
||||||
|
|
||||||
|
RtlInitUnicodeString(&UserAllInfo.HomeDirectory,
|
||||||
|
UserInfo3->usri3_home_dir);
|
||||||
|
|
||||||
|
RtlInitUnicodeString(&UserAllInfo.AdminComment,
|
||||||
|
UserInfo3->usri3_comment);
|
||||||
|
|
||||||
|
// DWORD usri3_flags;
|
||||||
|
|
||||||
|
RtlInitUnicodeString(&UserAllInfo.ScriptPath,
|
||||||
|
UserInfo3->usri3_script_path);
|
||||||
|
|
||||||
|
// DWORD usri3_auth_flags;
|
||||||
|
|
||||||
|
RtlInitUnicodeString(&UserAllInfo.FullName,
|
||||||
|
UserInfo3->usri3_full_name);
|
||||||
|
|
||||||
|
// LPWSTR usri3_usr_comment;
|
||||||
|
// LPWSTR usri3_parms;
|
||||||
|
// LPWSTR usri3_workstations;
|
||||||
|
// DWORD usri3_last_logon;
|
||||||
|
// DWORD usri3_last_logoff;
|
||||||
|
// DWORD usri3_acct_expires;
|
||||||
|
// DWORD usri3_max_storage;
|
||||||
|
// DWORD usri3_units_per_week;
|
||||||
|
// PBYTE usri3_logon_hours;
|
||||||
|
// DWORD usri3_bad_pw_count;
|
||||||
|
// DWORD usri3_num_logons;
|
||||||
|
// LPWSTR usri3_logon_server;
|
||||||
|
// DWORD usri3_country_code;
|
||||||
|
// DWORD usri3_code_page;
|
||||||
|
// DWORD usri3_user_id; // ignored
|
||||||
|
// DWORD usri3_primary_group_id;
|
||||||
|
// LPWSTR usri3_profile;
|
||||||
|
// LPWSTR usri3_home_dir_drive;
|
||||||
|
// DWORD usri3_password_expired;
|
||||||
|
|
||||||
|
UserAllInfo.WhichFields =
|
||||||
|
USER_ALL_NTPASSWORDPRESENT |
|
||||||
|
USER_ALL_HOMEDIRECTORY |
|
||||||
|
USER_ALL_ADMINCOMMENT |
|
||||||
|
USER_ALL_SCRIPTPATH |
|
||||||
|
USER_ALL_FULLNAME
|
||||||
|
// USER_ALL_USERACCOUNTCONTROL
|
||||||
|
;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
ERR("Unsupported level %lu!\n", Level);
|
||||||
|
return ERROR_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = SamSetInformationUser(UserHandle,
|
||||||
|
UserAllInformation,
|
||||||
|
&UserAllInfo);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
ERR("SamSetInformationUser failed (Status %08lx)\n", Status);
|
||||||
|
ApiStatus = NetpNtStatusToApiStatus(Status);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
done:
|
||||||
|
return ApiStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/************************************************************
|
/************************************************************
|
||||||
* NetUserAdd (NETAPI32.@)
|
* NetUserAdd (NETAPI32.@)
|
||||||
*/
|
*/
|
||||||
|
@ -409,72 +586,89 @@ NetUserAdd(LPCWSTR servername,
|
||||||
LPBYTE bufptr,
|
LPBYTE bufptr,
|
||||||
LPDWORD parm_err)
|
LPDWORD parm_err)
|
||||||
{
|
{
|
||||||
NET_API_STATUS status;
|
UNICODE_STRING ServerName;
|
||||||
struct sam_user * su = NULL;
|
UNICODE_STRING UserName;
|
||||||
|
SAM_HANDLE ServerHandle = NULL;
|
||||||
|
SAM_HANDLE DomainHandle = NULL;
|
||||||
|
SAM_HANDLE UserHandle = NULL;
|
||||||
|
ULONG GrantedAccess;
|
||||||
|
ULONG RelativeId;
|
||||||
|
NET_API_STATUS ApiStatus = NERR_Success;
|
||||||
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
|
|
||||||
FIXME("(%s, %d, %p, %p) stub!\n", debugstr_w(servername), level, bufptr, parm_err);
|
TRACE("(%s, %d, %p, %p)\n", debugstr_w(servername), level, bufptr, parm_err);
|
||||||
|
|
||||||
if((status = NETAPI_ValidateServername(servername)) != NERR_Success)
|
/* Check the info level */
|
||||||
return status;
|
if (level < 1 || level > 4)
|
||||||
|
return ERROR_INVALID_LEVEL;
|
||||||
|
|
||||||
switch(level)
|
if (servername != NULL)
|
||||||
|
RtlInitUnicodeString(&ServerName, servername);
|
||||||
|
|
||||||
|
/* Connect to the SAM Server */
|
||||||
|
Status = SamConnect((servername != NULL) ? &ServerName : NULL,
|
||||||
|
&ServerHandle,
|
||||||
|
SAM_SERVER_CONNECT | SAM_SERVER_LOOKUP_DOMAIN,
|
||||||
|
NULL);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
/* Level 3 and 4 are identical for the purposes of NetUserAdd */
|
ERR("SamConnect failed (Status %08lx)\n", Status);
|
||||||
case 4:
|
ApiStatus = NetpNtStatusToApiStatus(Status);
|
||||||
case 3:
|
goto done;
|
||||||
FIXME("Level 3 and 4 not implemented.\n");
|
|
||||||
/* Fall through */
|
|
||||||
case 2:
|
|
||||||
FIXME("Level 2 not implemented.\n");
|
|
||||||
/* Fall through */
|
|
||||||
case 1:
|
|
||||||
{
|
|
||||||
PUSER_INFO_1 ui = (PUSER_INFO_1) bufptr;
|
|
||||||
su = HeapAlloc(GetProcessHeap(), 0, sizeof(struct sam_user));
|
|
||||||
if(!su)
|
|
||||||
{
|
|
||||||
status = NERR_InternalError;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(lstrlenW(ui->usri1_name) > LM20_UNLEN)
|
|
||||||
{
|
|
||||||
status = NERR_BadUsername;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*FIXME: do other checks for a valid username */
|
|
||||||
lstrcpyW(su->user_name, ui->usri1_name);
|
|
||||||
|
|
||||||
if(lstrlenW(ui->usri1_password) > PWLEN)
|
|
||||||
{
|
|
||||||
/* Always return PasswordTooShort on invalid passwords. */
|
|
||||||
status = NERR_PasswordTooShort;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
lstrcpyW(su->user_password, ui->usri1_password);
|
|
||||||
|
|
||||||
su->sec_since_passwd_change = ui->usri1_password_age;
|
|
||||||
su->user_priv = ui->usri1_priv;
|
|
||||||
su->user_flags = ui->usri1_flags;
|
|
||||||
|
|
||||||
/*FIXME: set the other LPWSTRs to NULL for now */
|
|
||||||
su->home_dir = NULL;
|
|
||||||
su->user_comment = NULL;
|
|
||||||
su->user_logon_script_path = NULL;
|
|
||||||
|
|
||||||
list_add_head(&user_list, &su->entry);
|
|
||||||
return NERR_Success;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
TRACE("Invalid level %d specified.\n", level);
|
|
||||||
status = ERROR_INVALID_LEVEL;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, su);
|
/* Open the Account Domain */
|
||||||
|
Status = OpenAccountDomain(ServerHandle,
|
||||||
|
(servername != NULL) ? &ServerName : NULL,
|
||||||
|
DOMAIN_CREATE_USER | DOMAIN_LOOKUP,
|
||||||
|
&DomainHandle);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
ERR("OpenAccountDomain failed (Status %08lx)\n", Status);
|
||||||
|
ApiStatus = NetpNtStatusToApiStatus(Status);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
return status;
|
/* Initialize the user name string */
|
||||||
|
RtlInitUnicodeString(&UserName,
|
||||||
|
((PUSER_INFO_1)bufptr)->usri1_name);
|
||||||
|
|
||||||
|
/* Create the user account */
|
||||||
|
Status = SamCreateUser2InDomain(DomainHandle,
|
||||||
|
&UserName,
|
||||||
|
USER_NORMAL_ACCOUNT,
|
||||||
|
USER_ALL_ACCESS | DELETE | WRITE_DAC,
|
||||||
|
&UserHandle,
|
||||||
|
&GrantedAccess,
|
||||||
|
&RelativeId);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
ERR("SamCreateUser2InDomain failed (Status %08lx)\n", Status);
|
||||||
|
ApiStatus = NetpNtStatusToApiStatus(Status);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set user information */
|
||||||
|
ApiStatus = SetUserInfo(UserHandle,
|
||||||
|
bufptr,
|
||||||
|
level);
|
||||||
|
if (ApiStatus != NERR_Success)
|
||||||
|
{
|
||||||
|
ERR("SetUserInfo failed (Status %lu)\n", ApiStatus);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
done:
|
||||||
|
if (UserHandle != NULL)
|
||||||
|
SamCloseHandle(UserHandle);
|
||||||
|
|
||||||
|
if (DomainHandle != NULL)
|
||||||
|
SamCloseHandle(DomainHandle);
|
||||||
|
|
||||||
|
if (ServerHandle != NULL)
|
||||||
|
SamCloseHandle(ServerHandle);
|
||||||
|
|
||||||
|
return ApiStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -599,7 +793,7 @@ NetUserEnum(LPCWSTR servername,
|
||||||
|
|
||||||
EnumContext->EnumerationContext = 0;
|
EnumContext->EnumerationContext = 0;
|
||||||
EnumContext->Buffer = NULL;
|
EnumContext->Buffer = NULL;
|
||||||
EnumContext->Returned = 0;
|
EnumContext->Count = 0;
|
||||||
EnumContext->Index = 0;
|
EnumContext->Index = 0;
|
||||||
EnumContext->BuiltinDone = FALSE;
|
EnumContext->BuiltinDone = FALSE;
|
||||||
|
|
||||||
|
@ -639,9 +833,9 @@ NetUserEnum(LPCWSTR servername,
|
||||||
// while (TRUE)
|
// while (TRUE)
|
||||||
// {
|
// {
|
||||||
TRACE("EnumContext->Index: %lu\n", EnumContext->Index);
|
TRACE("EnumContext->Index: %lu\n", EnumContext->Index);
|
||||||
TRACE("EnumContext->Returned: %lu\n", EnumContext->Returned);
|
TRACE("EnumContext->Count: %lu\n", EnumContext->Count);
|
||||||
|
|
||||||
if (EnumContext->Index >= EnumContext->Returned)
|
if (EnumContext->Index >= EnumContext->Count)
|
||||||
{
|
{
|
||||||
// if (EnumContext->BuiltinDone == TRUE)
|
// if (EnumContext->BuiltinDone == TRUE)
|
||||||
// {
|
// {
|
||||||
|
@ -655,7 +849,7 @@ NetUserEnum(LPCWSTR servername,
|
||||||
0,
|
0,
|
||||||
(PVOID *)&EnumContext->Buffer,
|
(PVOID *)&EnumContext->Buffer,
|
||||||
prefmaxlen,
|
prefmaxlen,
|
||||||
&EnumContext->Returned);
|
&EnumContext->Count);
|
||||||
|
|
||||||
TRACE("SamEnumerateUsersInDomain returned (Status %08lx)\n", Status);
|
TRACE("SamEnumerateUsersInDomain returned (Status %08lx)\n", Status);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
|
@ -677,7 +871,7 @@ NetUserEnum(LPCWSTR servername,
|
||||||
}
|
}
|
||||||
|
|
||||||
TRACE("EnumContext: %lu\n", EnumContext);
|
TRACE("EnumContext: %lu\n", EnumContext);
|
||||||
TRACE("EnumContext->Returned: %lu\n", EnumContext->Returned);
|
TRACE("EnumContext->Count: %lu\n", EnumContext->Count);
|
||||||
TRACE("EnumContext->Buffer: %p\n", EnumContext->Buffer);
|
TRACE("EnumContext->Buffer: %p\n", EnumContext->Buffer);
|
||||||
|
|
||||||
/* Get a pointer to the current user */
|
/* Get a pointer to the current user */
|
||||||
|
@ -731,11 +925,11 @@ NetUserEnum(LPCWSTR servername,
|
||||||
// }
|
// }
|
||||||
|
|
||||||
done:
|
done:
|
||||||
if (ApiStatus == NERR_Success && EnumContext->Index < EnumContext->Returned)
|
if (ApiStatus == NERR_Success && EnumContext->Index < EnumContext->Count)
|
||||||
ApiStatus = ERROR_MORE_DATA;
|
ApiStatus = ERROR_MORE_DATA;
|
||||||
|
|
||||||
if (EnumContext != NULL)
|
if (EnumContext != NULL)
|
||||||
*totalentries = EnumContext->Returned;
|
*totalentries = EnumContext->Count;
|
||||||
|
|
||||||
if (resume_handle == NULL || ApiStatus != ERROR_MORE_DATA)
|
if (resume_handle == NULL || ApiStatus != ERROR_MORE_DATA)
|
||||||
{
|
{
|
||||||
|
@ -752,7 +946,7 @@ done:
|
||||||
|
|
||||||
if (EnumContext->Buffer != NULL)
|
if (EnumContext->Buffer != NULL)
|
||||||
{
|
{
|
||||||
for (i = 0; i < EnumContext->Returned; i++)
|
for (i = 0; i < EnumContext->Count; i++)
|
||||||
{
|
{
|
||||||
SamFreeMemory(EnumContext->Buffer[i].Name.Buffer);
|
SamFreeMemory(EnumContext->Buffer[i].Name.Buffer);
|
||||||
}
|
}
|
||||||
|
@ -955,53 +1149,298 @@ NetUserGetLocalGroups(LPCWSTR servername,
|
||||||
LPDWORD entriesread,
|
LPDWORD entriesread,
|
||||||
LPDWORD totalentries)
|
LPDWORD totalentries)
|
||||||
{
|
{
|
||||||
NET_API_STATUS status;
|
UNICODE_STRING ServerName;
|
||||||
const WCHAR admins[] = {'A','d','m','i','n','i','s','t','r','a','t','o','r','s',0};
|
UNICODE_STRING UserName;
|
||||||
LPWSTR currentuser;
|
SAM_HANDLE ServerHandle = NULL;
|
||||||
LOCALGROUP_USERS_INFO_0* info;
|
SAM_HANDLE BuiltinDomainHandle = NULL;
|
||||||
DWORD size;
|
SAM_HANDLE AccountDomainHandle = NULL;
|
||||||
|
PSID AccountDomainSid = NULL;
|
||||||
|
PSID UserSid = NULL;
|
||||||
|
PULONG RelativeIds = NULL;
|
||||||
|
PSID_NAME_USE Use = NULL;
|
||||||
|
ULONG BuiltinMemberCount = 0;
|
||||||
|
ULONG AccountMemberCount = 0;
|
||||||
|
PULONG BuiltinAliases = NULL;
|
||||||
|
PULONG AccountAliases = NULL;
|
||||||
|
PUNICODE_STRING BuiltinNames = NULL;
|
||||||
|
PUNICODE_STRING AccountNames = NULL;
|
||||||
|
PLOCALGROUP_USERS_INFO_0 Buffer = NULL;
|
||||||
|
ULONG Size;
|
||||||
|
ULONG Count = 0;
|
||||||
|
ULONG Index;
|
||||||
|
ULONG i;
|
||||||
|
LPWSTR StrPtr;
|
||||||
|
NET_API_STATUS ApiStatus = NERR_Success;
|
||||||
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
|
|
||||||
FIXME("(%s, %s, %d, %08x, %p %d, %p, %p) stub!\n",
|
TRACE("(%s, %s, %d, %08x, %p %d, %p, %p) stub!\n",
|
||||||
debugstr_w(servername), debugstr_w(username), level, flags, bufptr,
|
debugstr_w(servername), debugstr_w(username), level, flags, bufptr,
|
||||||
prefmaxlen, entriesread, totalentries);
|
prefmaxlen, entriesread, totalentries);
|
||||||
|
|
||||||
status = NETAPI_ValidateServername(servername);
|
if (level != 0)
|
||||||
if (status != NERR_Success)
|
return ERROR_INVALID_LEVEL;
|
||||||
return status;
|
|
||||||
|
|
||||||
size = UNLEN + 1;
|
if (flags & ~LG_INCLUDE_INDIRECT)
|
||||||
NetApiBufferAllocate(size * sizeof(WCHAR), (LPVOID*)¤tuser);
|
return ERROR_INVALID_PARAMETER;
|
||||||
GetUserNameW(currentuser, &size);
|
|
||||||
|
|
||||||
if (lstrcmpiW(username, currentuser) && NETAPI_FindUser(username))
|
if (flags & LG_INCLUDE_INDIRECT)
|
||||||
{
|
{
|
||||||
NetApiBufferFree(currentuser);
|
WARN("The flag LG_INCLUDE_INDIRECT is not supported yet!\n");
|
||||||
return NERR_UserNotFound;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
NetApiBufferFree(currentuser);
|
if (servername != NULL)
|
||||||
*totalentries = 1;
|
RtlInitUnicodeString(&ServerName, servername);
|
||||||
size = sizeof(*info) + sizeof(admins);
|
|
||||||
|
|
||||||
if(prefmaxlen < size)
|
RtlInitUnicodeString(&UserName, username);
|
||||||
status = ERROR_MORE_DATA;
|
|
||||||
else
|
|
||||||
status = NetApiBufferAllocate(size, (LPVOID*)&info);
|
|
||||||
|
|
||||||
if(status != NERR_Success)
|
/* Connect to the SAM Server */
|
||||||
|
Status = SamConnect((servername != NULL) ? &ServerName : NULL,
|
||||||
|
&ServerHandle,
|
||||||
|
SAM_SERVER_CONNECT | SAM_SERVER_LOOKUP_DOMAIN,
|
||||||
|
NULL);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
ERR("SamConnect failed (Status %08lx)\n", Status);
|
||||||
|
ApiStatus = NetpNtStatusToApiStatus(Status);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Open the Builtin Domain */
|
||||||
|
Status = OpenBuiltinDomain(ServerHandle,
|
||||||
|
DOMAIN_LOOKUP | DOMAIN_GET_ALIAS_MEMBERSHIP,
|
||||||
|
&BuiltinDomainHandle);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
ERR("OpenBuiltinDomain failed (Status %08lx)\n", Status);
|
||||||
|
ApiStatus = NetpNtStatusToApiStatus(Status);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get the Account Domain SID */
|
||||||
|
Status = GetAccountDomainSid((servername != NULL) ? &ServerName : NULL,
|
||||||
|
&AccountDomainSid);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
ERR("GetAccountDomainSid failed (Status %08lx)\n", Status);
|
||||||
|
ApiStatus = NetpNtStatusToApiStatus(Status);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Open the Account Domain */
|
||||||
|
Status = SamOpenDomain(ServerHandle,
|
||||||
|
DOMAIN_LOOKUP | DOMAIN_GET_ALIAS_MEMBERSHIP,
|
||||||
|
AccountDomainSid,
|
||||||
|
&AccountDomainHandle);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
ERR("OpenAccountDomain failed (Status %08lx)\n", Status);
|
||||||
|
ApiStatus = NetpNtStatusToApiStatus(Status);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get the RID for the given user name */
|
||||||
|
Status = SamLookupNamesInDomain(AccountDomainHandle,
|
||||||
|
1,
|
||||||
|
&UserName,
|
||||||
|
&RelativeIds,
|
||||||
|
&Use);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
ERR("SamLookupNamesInDomain failed (Status %08lx)\n", Status);
|
||||||
|
ApiStatus = NetpNtStatusToApiStatus(Status);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Fail, if it is not a user account */
|
||||||
|
if (Use[0] != SidTypeUser)
|
||||||
|
{
|
||||||
|
ERR("Account is not a User!\n");
|
||||||
|
ApiStatus = NERR_UserNotFound;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Build the User SID from the Account Domain SID and the users RID */
|
||||||
|
UserSid = CreateSidFromSidAndRid(AccountDomainSid,
|
||||||
|
RelativeIds[0]);
|
||||||
|
if (UserSid == NULL)
|
||||||
|
{
|
||||||
|
ERR("CreateSidFromSidAndRid failed!\n");
|
||||||
|
ApiStatus = ERROR_NOT_ENOUGH_MEMORY;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get alias memberships in the Builtin Domain */
|
||||||
|
Status = SamGetAliasMembership(BuiltinDomainHandle,
|
||||||
|
1,
|
||||||
|
&UserSid,
|
||||||
|
&BuiltinMemberCount,
|
||||||
|
&BuiltinAliases);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
ERR("SamGetAliasMembership failed (Status %08lx)\n", Status);
|
||||||
|
ApiStatus = NetpNtStatusToApiStatus(Status);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (BuiltinMemberCount > 0)
|
||||||
|
{
|
||||||
|
/* Get the Names of the builtin alias members */
|
||||||
|
Status = SamLookupIdsInDomain(BuiltinDomainHandle,
|
||||||
|
BuiltinMemberCount,
|
||||||
|
BuiltinAliases,
|
||||||
|
&BuiltinNames,
|
||||||
|
NULL);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
ERR("SamLookupIdsInDomain failed (Status %08lx)\n", Status);
|
||||||
|
ApiStatus = NetpNtStatusToApiStatus(Status);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get alias memberships in the Account Domain */
|
||||||
|
Status = SamGetAliasMembership(AccountDomainHandle,
|
||||||
|
1,
|
||||||
|
&UserSid,
|
||||||
|
&AccountMemberCount,
|
||||||
|
&AccountAliases);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
ERR("SamGetAliasMembership failed (Status %08lx)\n", Status);
|
||||||
|
ApiStatus = NetpNtStatusToApiStatus(Status);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (AccountMemberCount > 0)
|
||||||
|
{
|
||||||
|
/* Get the Names of the builtin alias members */
|
||||||
|
Status = SamLookupIdsInDomain(AccountDomainHandle,
|
||||||
|
AccountMemberCount,
|
||||||
|
AccountAliases,
|
||||||
|
&AccountNames,
|
||||||
|
NULL);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
ERR("SamLookupIdsInDomain failed (Status %08lx)\n", Status);
|
||||||
|
ApiStatus = NetpNtStatusToApiStatus(Status);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Calculate the required buffer size */
|
||||||
|
Size = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < BuiltinMemberCount; i++)
|
||||||
|
{
|
||||||
|
if (BuiltinNames[i].Length > 0)
|
||||||
|
{
|
||||||
|
Size += (sizeof(LOCALGROUP_USERS_INFO_0) + BuiltinNames[i].Length + sizeof(UNICODE_NULL));
|
||||||
|
Count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < AccountMemberCount; i++)
|
||||||
|
{
|
||||||
|
if (BuiltinNames[i].Length > 0)
|
||||||
|
{
|
||||||
|
Size += (sizeof(LOCALGROUP_USERS_INFO_0) + AccountNames[i].Length + sizeof(UNICODE_NULL));
|
||||||
|
Count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Size == 0)
|
||||||
|
{
|
||||||
|
ApiStatus = NERR_Success;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Allocate buffer */
|
||||||
|
ApiStatus = NetApiBufferAllocate(Size, (LPVOID*)&Buffer);
|
||||||
|
if (ApiStatus != NERR_Success)
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
ZeroMemory(Buffer, Size);
|
||||||
|
|
||||||
|
StrPtr = (LPWSTR)((INT_PTR)Buffer + Count * sizeof(LOCALGROUP_USERS_INFO_0));
|
||||||
|
|
||||||
|
/* Copy data to the allocated buffer */
|
||||||
|
Index = 0;
|
||||||
|
for (i = 0; i < BuiltinMemberCount; i++)
|
||||||
|
{
|
||||||
|
if (BuiltinNames[i].Length > 0)
|
||||||
|
{
|
||||||
|
CopyMemory(StrPtr,
|
||||||
|
BuiltinNames[i].Buffer,
|
||||||
|
BuiltinNames[i].Length);
|
||||||
|
Buffer[Index].lgrui0_name = StrPtr;
|
||||||
|
|
||||||
|
StrPtr = (LPWSTR)((INT_PTR)StrPtr + BuiltinNames[i].Length + sizeof(UNICODE_NULL));
|
||||||
|
Index++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < AccountMemberCount; i++)
|
||||||
|
{
|
||||||
|
if (AccountNames[i].Length > 0)
|
||||||
|
{
|
||||||
|
CopyMemory(StrPtr,
|
||||||
|
AccountNames[i].Buffer,
|
||||||
|
AccountNames[i].Length);
|
||||||
|
Buffer[Index].lgrui0_name = StrPtr;
|
||||||
|
|
||||||
|
StrPtr = (LPWSTR)((INT_PTR)StrPtr + AccountNames[i].Length + sizeof(UNICODE_NULL));
|
||||||
|
Index++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
done:
|
||||||
|
if (AccountNames != NULL)
|
||||||
|
SamFreeMemory(AccountNames);
|
||||||
|
|
||||||
|
if (BuiltinNames != NULL)
|
||||||
|
SamFreeMemory(BuiltinNames);
|
||||||
|
|
||||||
|
if (AccountAliases != NULL)
|
||||||
|
SamFreeMemory(AccountAliases);
|
||||||
|
|
||||||
|
if (BuiltinAliases != NULL)
|
||||||
|
SamFreeMemory(BuiltinAliases);
|
||||||
|
|
||||||
|
if (RelativeIds != NULL)
|
||||||
|
SamFreeMemory(RelativeIds);
|
||||||
|
|
||||||
|
if (Use != NULL)
|
||||||
|
SamFreeMemory(Use);
|
||||||
|
|
||||||
|
if (UserSid != NULL)
|
||||||
|
RtlFreeHeap(RtlGetProcessHeap(), 0, UserSid);
|
||||||
|
|
||||||
|
if (AccountDomainSid != NULL)
|
||||||
|
RtlFreeHeap(RtlGetProcessHeap(), 0, AccountDomainSid);
|
||||||
|
|
||||||
|
if (AccountDomainHandle != NULL)
|
||||||
|
SamCloseHandle(AccountDomainHandle);
|
||||||
|
|
||||||
|
if (BuiltinDomainHandle != NULL)
|
||||||
|
SamCloseHandle(BuiltinDomainHandle);
|
||||||
|
|
||||||
|
if (ServerHandle != NULL)
|
||||||
|
SamCloseHandle(ServerHandle);
|
||||||
|
|
||||||
|
if (ApiStatus != NERR_Success && ApiStatus != ERROR_MORE_DATA)
|
||||||
{
|
{
|
||||||
*bufptr = NULL;
|
|
||||||
*entriesread = 0;
|
*entriesread = 0;
|
||||||
return status;
|
*totalentries = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*entriesread = Count;
|
||||||
|
*totalentries = Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
info->lgrui0_name = (LPWSTR)((LPBYTE)info + sizeof(*info));
|
*bufptr = (LPBYTE)Buffer;
|
||||||
lstrcpyW(info->lgrui0_name, admins);
|
|
||||||
|
|
||||||
*bufptr = (LPBYTE)info;
|
return ApiStatus;
|
||||||
*entriesread = 1;
|
|
||||||
|
|
||||||
return NERR_Success;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -212,7 +212,7 @@ SamCloseHandle(IN SAM_HANDLE SamHandle)
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
SamConnect(IN OUT PUNICODE_STRING ServerName,
|
SamConnect(IN OUT PUNICODE_STRING ServerName OPTIONAL,
|
||||||
OUT PSAM_HANDLE ServerHandle,
|
OUT PSAM_HANDLE ServerHandle,
|
||||||
IN ACCESS_MASK DesiredAccess,
|
IN ACCESS_MASK DesiredAccess,
|
||||||
IN POBJECT_ATTRIBUTES ObjectAttributes)
|
IN POBJECT_ATTRIBUTES ObjectAttributes)
|
||||||
|
@ -682,7 +682,7 @@ SamGetAliasMembership(IN SAM_HANDLE DomainHandle,
|
||||||
SAMPR_ULONG_ARRAY Membership;
|
SAMPR_ULONG_ARRAY Membership;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
TRACE("SamAliasMembership(%p %ul %p %p %p)\n",
|
TRACE("SamAliasMembership(%p %lu %p %p %p)\n",
|
||||||
DomainHandle, PassedCount, Sids, MembershipCount, Aliases);
|
DomainHandle, PassedCount, Sids, MembershipCount, Aliases);
|
||||||
|
|
||||||
if (Sids == NULL ||
|
if (Sids == NULL ||
|
||||||
|
@ -905,7 +905,7 @@ SamLookupIdsInDomain(IN SAM_HANDLE DomainHandle,
|
||||||
IN ULONG Count,
|
IN ULONG Count,
|
||||||
IN PULONG RelativeIds,
|
IN PULONG RelativeIds,
|
||||||
OUT PUNICODE_STRING *Names,
|
OUT PUNICODE_STRING *Names,
|
||||||
OUT PSID_NAME_USE *Use)
|
OUT PSID_NAME_USE *Use OPTIONAL)
|
||||||
{
|
{
|
||||||
SAMPR_RETURNED_USTRING_ARRAY NamesBuffer = {0, NULL};
|
SAMPR_RETURNED_USTRING_ARRAY NamesBuffer = {0, NULL};
|
||||||
SAMPR_ULONG_ARRAY UseBuffer = {0, NULL};
|
SAMPR_ULONG_ARRAY UseBuffer = {0, NULL};
|
||||||
|
@ -916,7 +916,9 @@ SamLookupIdsInDomain(IN SAM_HANDLE DomainHandle,
|
||||||
DomainHandle, Count, RelativeIds, Names, Use);
|
DomainHandle, Count, RelativeIds, Names, Use);
|
||||||
|
|
||||||
*Names = NULL;
|
*Names = NULL;
|
||||||
*Use = NULL;
|
|
||||||
|
if (Use != NULL)
|
||||||
|
*Use = NULL;
|
||||||
|
|
||||||
RpcTryExcept
|
RpcTryExcept
|
||||||
{
|
{
|
||||||
|
@ -951,13 +953,6 @@ SamLookupIdsInDomain(IN SAM_HANDLE DomainHandle,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*Use = midl_user_allocate(Count * sizeof(SID_NAME_USE));
|
|
||||||
if (*Use == NULL)
|
|
||||||
{
|
|
||||||
Status = STATUS_INSUFFICIENT_RESOURCES;
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < Count; i++)
|
for (i = 0; i < Count; i++)
|
||||||
{
|
{
|
||||||
(*Names)[i].Length = NamesBuffer.Element[i].Length;
|
(*Names)[i].Length = NamesBuffer.Element[i].Length;
|
||||||
|
@ -968,9 +963,19 @@ SamLookupIdsInDomain(IN SAM_HANDLE DomainHandle,
|
||||||
NamesBuffer.Element[i].Length);
|
NamesBuffer.Element[i].Length);
|
||||||
}
|
}
|
||||||
|
|
||||||
RtlCopyMemory(*Use,
|
if (Use != NULL)
|
||||||
UseBuffer.Element,
|
{
|
||||||
Count * sizeof(SID_NAME_USE));
|
*Use = midl_user_allocate(Count * sizeof(SID_NAME_USE));
|
||||||
|
if (*Use == NULL)
|
||||||
|
{
|
||||||
|
Status = STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
RtlCopyMemory(*Use,
|
||||||
|
UseBuffer.Element,
|
||||||
|
Count * sizeof(SID_NAME_USE));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
@ -987,7 +992,7 @@ done:
|
||||||
midl_user_free(*Names);
|
midl_user_free(*Names);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*Use != NULL)
|
if (Use != NULL && *Use != NULL)
|
||||||
midl_user_free(*Use);
|
midl_user_free(*Use);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1659,8 +1664,21 @@ NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
SamShutdownSamServer(IN SAM_HANDLE ServerHandle)
|
SamShutdownSamServer(IN SAM_HANDLE ServerHandle)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
NTSTATUS Status;
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
|
TRACE("(%p)\n", ServerHandle);
|
||||||
|
|
||||||
|
RpcTryExcept
|
||||||
|
{
|
||||||
|
Status = SamrShutdownSamServer((SAMPR_HANDLE)ServerHandle);
|
||||||
|
}
|
||||||
|
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
Status = I_RpcMapWin32Status(RpcExceptionCode());
|
||||||
|
}
|
||||||
|
RpcEndExcept;
|
||||||
|
|
||||||
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -17,6 +17,46 @@ WINE_DEFAULT_DEBUG_CHANNEL(samsrv);
|
||||||
|
|
||||||
static SID_IDENTIFIER_AUTHORITY NtSidAuthority = {SECURITY_NT_AUTHORITY};
|
static SID_IDENTIFIER_AUTHORITY NtSidAuthority = {SECURITY_NT_AUTHORITY};
|
||||||
|
|
||||||
|
static GENERIC_MAPPING ServerMapping =
|
||||||
|
{
|
||||||
|
SAM_SERVER_READ,
|
||||||
|
SAM_SERVER_WRITE,
|
||||||
|
SAM_SERVER_EXECUTE,
|
||||||
|
SAM_SERVER_ALL_ACCESS
|
||||||
|
};
|
||||||
|
|
||||||
|
static GENERIC_MAPPING DomainMapping =
|
||||||
|
{
|
||||||
|
DOMAIN_READ,
|
||||||
|
DOMAIN_WRITE,
|
||||||
|
DOMAIN_EXECUTE,
|
||||||
|
DOMAIN_ALL_ACCESS
|
||||||
|
};
|
||||||
|
|
||||||
|
static GENERIC_MAPPING AliasMapping =
|
||||||
|
{
|
||||||
|
ALIAS_READ,
|
||||||
|
ALIAS_WRITE,
|
||||||
|
ALIAS_EXECUTE,
|
||||||
|
ALIAS_ALL_ACCESS
|
||||||
|
};
|
||||||
|
|
||||||
|
static GENERIC_MAPPING GroupMapping =
|
||||||
|
{
|
||||||
|
GROUP_READ,
|
||||||
|
GROUP_WRITE,
|
||||||
|
GROUP_EXECUTE,
|
||||||
|
GROUP_ALL_ACCESS
|
||||||
|
};
|
||||||
|
|
||||||
|
static GENERIC_MAPPING UserMapping =
|
||||||
|
{
|
||||||
|
USER_READ,
|
||||||
|
USER_WRITE,
|
||||||
|
USER_EXECUTE,
|
||||||
|
USER_ALL_ACCESS
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
|
@ -68,10 +108,12 @@ void __RPC_USER midl_user_free(void __RPC_FAR * ptr)
|
||||||
HeapFree(GetProcessHeap(), 0, ptr);
|
HeapFree(GetProcessHeap(), 0, ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void __RPC_USER SAMPR_HANDLE_rundown(SAMPR_HANDLE hHandle)
|
void __RPC_USER SAMPR_HANDLE_rundown(SAMPR_HANDLE hHandle)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Function 0 */
|
/* Function 0 */
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -85,6 +127,11 @@ SamrConnect(IN PSAMPR_SERVER_NAME ServerName,
|
||||||
TRACE("SamrConnect(%p %p %lx)\n",
|
TRACE("SamrConnect(%p %p %lx)\n",
|
||||||
ServerName, ServerHandle, DesiredAccess);
|
ServerName, ServerHandle, DesiredAccess);
|
||||||
|
|
||||||
|
/* Map generic access rights */
|
||||||
|
RtlMapGenericMask(&DesiredAccess,
|
||||||
|
&ServerMapping);
|
||||||
|
|
||||||
|
/* Open the Server Object */
|
||||||
Status = SampOpenDbObject(NULL,
|
Status = SampOpenDbObject(NULL,
|
||||||
NULL,
|
NULL,
|
||||||
L"SAM",
|
L"SAM",
|
||||||
|
@ -100,6 +147,7 @@ SamrConnect(IN PSAMPR_SERVER_NAME ServerName,
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Function 1 */
|
/* Function 1 */
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -125,6 +173,7 @@ SamrCloseHandle(IN OUT SAMPR_HANDLE *SamHandle)
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Function 2 */
|
/* Function 2 */
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -136,6 +185,7 @@ SamrSetSecurityObject(IN SAMPR_HANDLE ObjectHandle,
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Function 3 */
|
/* Function 3 */
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -147,6 +197,7 @@ SamrQuerySecurityObject(IN SAMPR_HANDLE ObjectHandle,
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Function 4 */
|
/* Function 4 */
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -486,6 +537,10 @@ SamrOpenDomain(IN SAMPR_HANDLE ServerHandle,
|
||||||
TRACE("SamrOpenDomain(%p %lx %p %p)\n",
|
TRACE("SamrOpenDomain(%p %lx %p %p)\n",
|
||||||
ServerHandle, DesiredAccess, DomainId, DomainHandle);
|
ServerHandle, DesiredAccess, DomainId, DomainHandle);
|
||||||
|
|
||||||
|
/* Map generic access rights */
|
||||||
|
RtlMapGenericMask(&DesiredAccess,
|
||||||
|
&DomainMapping);
|
||||||
|
|
||||||
/* Validate the server handle */
|
/* Validate the server handle */
|
||||||
Status = SampValidateDbObject(ServerHandle,
|
Status = SampValidateDbObject(ServerHandle,
|
||||||
SamDbServerObject,
|
SamDbServerObject,
|
||||||
|
@ -1653,6 +1708,10 @@ SamrCreateGroupInDomain(IN SAMPR_HANDLE DomainHandle,
|
||||||
TRACE("SamrCreateGroupInDomain(%p %p %lx %p %p)\n",
|
TRACE("SamrCreateGroupInDomain(%p %p %lx %p %p)\n",
|
||||||
DomainHandle, Name, DesiredAccess, GroupHandle, RelativeId);
|
DomainHandle, Name, DesiredAccess, GroupHandle, RelativeId);
|
||||||
|
|
||||||
|
/* Map generic access rights */
|
||||||
|
RtlMapGenericMask(&DesiredAccess,
|
||||||
|
&GroupMapping);
|
||||||
|
|
||||||
/* Validate the domain handle */
|
/* Validate the domain handle */
|
||||||
Status = SampValidateDbObject(DomainHandle,
|
Status = SampValidateDbObject(DomainHandle,
|
||||||
SamDbDomainObject,
|
SamDbDomainObject,
|
||||||
|
@ -2019,6 +2078,10 @@ SamrCreateUserInDomain(IN SAMPR_HANDLE DomainHandle,
|
||||||
RelativeId == NULL)
|
RelativeId == NULL)
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
/* Map generic access rights */
|
||||||
|
RtlMapGenericMask(&DesiredAccess,
|
||||||
|
&UserMapping);
|
||||||
|
|
||||||
/* Validate the domain handle */
|
/* Validate the domain handle */
|
||||||
Status = SampValidateDbObject(DomainHandle,
|
Status = SampValidateDbObject(DomainHandle,
|
||||||
SamDbDomainObject,
|
SamDbDomainObject,
|
||||||
|
@ -2473,6 +2536,10 @@ SamrCreateAliasInDomain(IN SAMPR_HANDLE DomainHandle,
|
||||||
TRACE("SamrCreateAliasInDomain(%p %p %lx %p %p)\n",
|
TRACE("SamrCreateAliasInDomain(%p %p %lx %p %p)\n",
|
||||||
DomainHandle, AccountName, DesiredAccess, AliasHandle, RelativeId);
|
DomainHandle, AccountName, DesiredAccess, AliasHandle, RelativeId);
|
||||||
|
|
||||||
|
/* Map generic access rights */
|
||||||
|
RtlMapGenericMask(&DesiredAccess,
|
||||||
|
&AliasMapping);
|
||||||
|
|
||||||
/* Validate the domain handle */
|
/* Validate the domain handle */
|
||||||
Status = SampValidateDbObject(DomainHandle,
|
Status = SampValidateDbObject(DomainHandle,
|
||||||
SamDbDomainObject,
|
SamDbDomainObject,
|
||||||
|
@ -2810,6 +2877,7 @@ SamrGetAliasMembership(IN SAMPR_HANDLE DomainHandle,
|
||||||
ULONG DataLength;
|
ULONG DataLength;
|
||||||
ULONG i, j;
|
ULONG i, j;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
WCHAR NameBuffer[9];
|
||||||
|
|
||||||
TRACE("SamrGetAliasMembership(%p %p %p)\n",
|
TRACE("SamrGetAliasMembership(%p %p %p)\n",
|
||||||
DomainHandle, SidArray, Membership);
|
DomainHandle, SidArray, Membership);
|
||||||
|
@ -2817,7 +2885,7 @@ SamrGetAliasMembership(IN SAMPR_HANDLE DomainHandle,
|
||||||
/* Validate the domain handle */
|
/* Validate the domain handle */
|
||||||
Status = SampValidateDbObject(DomainHandle,
|
Status = SampValidateDbObject(DomainHandle,
|
||||||
SamDbDomainObject,
|
SamDbDomainObject,
|
||||||
DOMAIN_LOOKUP,
|
DOMAIN_GET_ALIAS_MEMBERSHIP,
|
||||||
&DomainObject);
|
&DomainObject);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
return Status;
|
return Status;
|
||||||
|
@ -2835,6 +2903,13 @@ SamrGetAliasMembership(IN SAMPR_HANDLE DomainHandle,
|
||||||
KEY_READ,
|
KEY_READ,
|
||||||
&MembersKeyHandle);
|
&MembersKeyHandle);
|
||||||
TRACE("SampRegOpenKey returned %08lX\n", Status);
|
TRACE("SampRegOpenKey returned %08lX\n", Status);
|
||||||
|
|
||||||
|
if (Status == STATUS_OBJECT_NAME_NOT_FOUND)
|
||||||
|
{
|
||||||
|
Status = STATUS_SUCCESS;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
|
@ -2859,13 +2934,21 @@ TRACE("Open %S\n", MemberSidString);
|
||||||
MaxSidCount += ValueCount;
|
MaxSidCount += ValueCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
NtClose(MemberKeyHandle);
|
NtClose(MemberKeyHandle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Status == STATUS_OBJECT_NAME_NOT_FOUND)
|
||||||
|
Status = STATUS_SUCCESS;
|
||||||
|
|
||||||
LocalFree(MemberSidString);
|
LocalFree(MemberSidString);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (MaxSidCount == 0)
|
||||||
|
{
|
||||||
|
Status = STATUS_SUCCESS;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
TRACE("Maximum sid count: %lu\n", MaxSidCount);
|
TRACE("Maximum sid count: %lu\n", MaxSidCount);
|
||||||
RidArray = midl_user_allocate(MaxSidCount * sizeof(ULONG));
|
RidArray = midl_user_allocate(MaxSidCount * sizeof(ULONG));
|
||||||
if (RidArray == NULL)
|
if (RidArray == NULL)
|
||||||
|
@ -2895,14 +2978,18 @@ TRACE("Open %S\n", MemberSidString);
|
||||||
|
|
||||||
for (j = 0; j < ValueCount; j++)
|
for (j = 0; j < ValueCount; j++)
|
||||||
{
|
{
|
||||||
DataLength = sizeof(ULONG);
|
DataLength = 9 * sizeof(WCHAR);
|
||||||
Status = SampRegEnumerateValue(MemberKeyHandle,
|
Status = SampRegEnumerateValue(MemberKeyHandle,
|
||||||
j,
|
j,
|
||||||
NULL,
|
NameBuffer,
|
||||||
NULL,
|
&DataLength,
|
||||||
NULL,
|
NULL,
|
||||||
(PVOID)&RidArray[j],
|
NULL,
|
||||||
&DataLength);
|
NULL);
|
||||||
|
if (NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
RidArray[j] = wcstoul(NameBuffer, NULL, 16);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2912,7 +2999,6 @@ TRACE("Open %S\n", MemberSidString);
|
||||||
LocalFree(MemberSidString);
|
LocalFree(MemberSidString);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
done:
|
done:
|
||||||
if (NT_SUCCESS(Status))
|
if (NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
|
@ -3452,6 +3538,10 @@ SamrOpenGroup(IN SAMPR_HANDLE DomainHandle,
|
||||||
TRACE("SamrOpenGroup(%p %lx %lx %p)\n",
|
TRACE("SamrOpenGroup(%p %lx %lx %p)\n",
|
||||||
DomainHandle, DesiredAccess, GroupId, GroupHandle);
|
DomainHandle, DesiredAccess, GroupId, GroupHandle);
|
||||||
|
|
||||||
|
/* Map generic access rights */
|
||||||
|
RtlMapGenericMask(&DesiredAccess,
|
||||||
|
&GroupMapping);
|
||||||
|
|
||||||
/* Validate the domain handle */
|
/* Validate the domain handle */
|
||||||
Status = SampValidateDbObject(DomainHandle,
|
Status = SampValidateDbObject(DomainHandle,
|
||||||
SamDbDomainObject,
|
SamDbDomainObject,
|
||||||
|
@ -3900,6 +3990,10 @@ SamrOpenAlias(IN SAMPR_HANDLE DomainHandle,
|
||||||
TRACE("SamrOpenAlias(%p %lx %lx %p)\n",
|
TRACE("SamrOpenAlias(%p %lx %lx %p)\n",
|
||||||
DomainHandle, DesiredAccess, AliasId, AliasHandle);
|
DomainHandle, DesiredAccess, AliasId, AliasHandle);
|
||||||
|
|
||||||
|
/* Map generic access rights */
|
||||||
|
RtlMapGenericMask(&DesiredAccess,
|
||||||
|
&AliasMapping);
|
||||||
|
|
||||||
/* Validate the domain handle */
|
/* Validate the domain handle */
|
||||||
Status = SampValidateDbObject(DomainHandle,
|
Status = SampValidateDbObject(DomainHandle,
|
||||||
SamDbDomainObject,
|
SamDbDomainObject,
|
||||||
|
@ -4565,6 +4659,10 @@ SamrOpenUser(IN SAMPR_HANDLE DomainHandle,
|
||||||
TRACE("SamrOpenUser(%p %lx %lx %p)\n",
|
TRACE("SamrOpenUser(%p %lx %lx %p)\n",
|
||||||
DomainHandle, DesiredAccess, UserId, UserHandle);
|
DomainHandle, DesiredAccess, UserId, UserHandle);
|
||||||
|
|
||||||
|
/* Map generic access rights */
|
||||||
|
RtlMapGenericMask(&DesiredAccess,
|
||||||
|
&UserMapping);
|
||||||
|
|
||||||
/* Validate the domain handle */
|
/* Validate the domain handle */
|
||||||
Status = SampValidateDbObject(DomainHandle,
|
Status = SampValidateDbObject(DomainHandle,
|
||||||
SamDbDomainObject,
|
SamDbDomainObject,
|
||||||
|
@ -5903,6 +6001,181 @@ done:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static NTSTATUS
|
||||||
|
SampSetUserAll(PSAM_DB_OBJECT UserObject,
|
||||||
|
PSAMPR_USER_INFO_BUFFER Buffer)
|
||||||
|
{
|
||||||
|
SAM_USER_FIXED_DATA FixedData;
|
||||||
|
ULONG Length = 0;
|
||||||
|
ULONG WhichFields;
|
||||||
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
|
|
||||||
|
WhichFields = Buffer->All.WhichFields;
|
||||||
|
|
||||||
|
if (WhichFields & USER_ALL_USERNAME)
|
||||||
|
{
|
||||||
|
Status = SampSetObjectAttribute(UserObject,
|
||||||
|
L"Name",
|
||||||
|
REG_SZ,
|
||||||
|
Buffer->All.UserName.Buffer,
|
||||||
|
Buffer->All.UserName.MaximumLength);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (WhichFields & USER_ALL_FULLNAME)
|
||||||
|
{
|
||||||
|
Status = SampSetObjectAttribute(UserObject,
|
||||||
|
L"FullName",
|
||||||
|
REG_SZ,
|
||||||
|
Buffer->All.FullName.Buffer,
|
||||||
|
Buffer->All.FullName.MaximumLength);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (WhichFields & USER_ALL_ADMINCOMMENT)
|
||||||
|
{
|
||||||
|
Status = SampSetObjectAttribute(UserObject,
|
||||||
|
L"AdminComment",
|
||||||
|
REG_SZ,
|
||||||
|
Buffer->All.AdminComment.Buffer,
|
||||||
|
Buffer->All.AdminComment.MaximumLength);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (WhichFields & USER_ALL_USERCOMMENT)
|
||||||
|
{
|
||||||
|
Status = SampSetObjectAttribute(UserObject,
|
||||||
|
L"UserComment",
|
||||||
|
REG_SZ,
|
||||||
|
Buffer->All.UserComment.Buffer,
|
||||||
|
Buffer->All.UserComment.MaximumLength);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (WhichFields & USER_ALL_HOMEDIRECTORY)
|
||||||
|
{
|
||||||
|
Status = SampSetObjectAttribute(UserObject,
|
||||||
|
L"HomeDirectory",
|
||||||
|
REG_SZ,
|
||||||
|
Buffer->All.HomeDirectory.Buffer,
|
||||||
|
Buffer->All.HomeDirectory.MaximumLength);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (WhichFields & USER_ALL_HOMEDIRECTORYDRIVE)
|
||||||
|
{
|
||||||
|
Status = SampSetObjectAttribute(UserObject,
|
||||||
|
L"HomeDirectoryDrive",
|
||||||
|
REG_SZ,
|
||||||
|
Buffer->All.HomeDirectoryDrive.Buffer,
|
||||||
|
Buffer->All.HomeDirectoryDrive.MaximumLength);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (WhichFields & USER_ALL_SCRIPTPATH)
|
||||||
|
{
|
||||||
|
Status = SampSetObjectAttribute(UserObject,
|
||||||
|
L"ScriptPath",
|
||||||
|
REG_SZ,
|
||||||
|
Buffer->All.ScriptPath.Buffer,
|
||||||
|
Buffer->All.ScriptPath.MaximumLength);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (WhichFields & USER_ALL_PROFILEPATH)
|
||||||
|
{
|
||||||
|
Status = SampSetObjectAttribute(UserObject,
|
||||||
|
L"ProfilePath",
|
||||||
|
REG_SZ,
|
||||||
|
Buffer->All.ProfilePath.Buffer,
|
||||||
|
Buffer->All.ProfilePath.MaximumLength);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (WhichFields & USER_ALL_WORKSTATIONS)
|
||||||
|
{
|
||||||
|
Status = SampSetObjectAttribute(UserObject,
|
||||||
|
L"WorkStations",
|
||||||
|
REG_SZ,
|
||||||
|
Buffer->All.WorkStations.Buffer,
|
||||||
|
Buffer->All.WorkStations.MaximumLength);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (WhichFields & USER_ALL_PARAMETERS)
|
||||||
|
{
|
||||||
|
Status = SampSetObjectAttribute(UserObject,
|
||||||
|
L"Parameters",
|
||||||
|
REG_SZ,
|
||||||
|
Buffer->All.Parameters.Buffer,
|
||||||
|
Buffer->All.Parameters.MaximumLength);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (WhichFields & (USER_ALL_PRIMARYGROUPID |
|
||||||
|
USER_ALL_ACCOUNTEXPIRES |
|
||||||
|
USER_ALL_USERACCOUNTCONTROL |
|
||||||
|
USER_ALL_COUNTRYCODE |
|
||||||
|
USER_ALL_CODEPAGE))
|
||||||
|
{
|
||||||
|
Length = sizeof(SAM_USER_FIXED_DATA);
|
||||||
|
Status = SampGetObjectAttribute(UserObject,
|
||||||
|
L"F",
|
||||||
|
NULL,
|
||||||
|
(PVOID)&FixedData,
|
||||||
|
&Length);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
if (WhichFields & USER_ALL_PRIMARYGROUPID)
|
||||||
|
FixedData.PrimaryGroupId = Buffer->All.PrimaryGroupId;
|
||||||
|
|
||||||
|
if (WhichFields & USER_ALL_ACCOUNTEXPIRES)
|
||||||
|
{
|
||||||
|
FixedData.AccountExpires.LowPart = Buffer->All.AccountExpires.LowPart;
|
||||||
|
FixedData.AccountExpires.HighPart = Buffer->All.AccountExpires.HighPart;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (WhichFields & USER_ALL_USERACCOUNTCONTROL)
|
||||||
|
FixedData.UserAccountControl = Buffer->All.UserAccountControl;
|
||||||
|
|
||||||
|
if (WhichFields & USER_ALL_COUNTRYCODE)
|
||||||
|
FixedData.CountryCode = Buffer->Preferences.CountryCode;
|
||||||
|
|
||||||
|
if (WhichFields & USER_ALL_CODEPAGE)
|
||||||
|
FixedData.CodePage = Buffer->Preferences.CodePage;
|
||||||
|
|
||||||
|
Status = SampSetObjectAttribute(UserObject,
|
||||||
|
L"F",
|
||||||
|
REG_BINARY,
|
||||||
|
&FixedData,
|
||||||
|
Length);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
FIXME:
|
||||||
|
USER_ALL_LOGONHOURS
|
||||||
|
USER_ALL_NTPASSWORDPRESENT
|
||||||
|
USER_ALL_LMPASSWORDPRESENT
|
||||||
|
USER_ALL_PASSWORDEXPIRED
|
||||||
|
*/
|
||||||
|
|
||||||
|
done:
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Function 37 */
|
/* Function 37 */
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -5931,6 +6204,7 @@ SamrSetInformationUser(IN SAMPR_HANDLE UserHandle,
|
||||||
case UserWorkStationsInformation:
|
case UserWorkStationsInformation:
|
||||||
case UserControlInformation:
|
case UserControlInformation:
|
||||||
case UserExpiresInformation:
|
case UserExpiresInformation:
|
||||||
|
case UserParametersInformation:
|
||||||
DesiredAccess = USER_WRITE_ACCOUNT;
|
DesiredAccess = USER_WRITE_ACCOUNT;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -5947,6 +6221,10 @@ SamrSetInformationUser(IN SAMPR_HANDLE UserHandle,
|
||||||
DesiredAccess = USER_FORCE_PASSWORD_CHANGE;
|
DesiredAccess = USER_FORCE_PASSWORD_CHANGE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case UserAllInformation:
|
||||||
|
DesiredAccess = 0; /* FIXME */
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return STATUS_INVALID_INFO_CLASS;
|
return STATUS_INVALID_INFO_CLASS;
|
||||||
}
|
}
|
||||||
|
@ -6086,8 +6364,20 @@ SamrSetInformationUser(IN SAMPR_HANDLE UserHandle,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// case UserInternal1Information:
|
// case UserInternal1Information:
|
||||||
// case UserParametersInformation:
|
|
||||||
// case UserAllInformation:
|
case UserParametersInformation:
|
||||||
|
Status = SampSetObjectAttribute(UserObject,
|
||||||
|
L"Parameters",
|
||||||
|
REG_SZ,
|
||||||
|
Buffer->Parameters.Parameters.Buffer,
|
||||||
|
Buffer->Parameters.Parameters.MaximumLength);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case UserAllInformation:
|
||||||
|
Status = SampSetUserAll(UserObject,
|
||||||
|
Buffer);
|
||||||
|
break;
|
||||||
|
|
||||||
// case UserInternal4Information:
|
// case UserInternal4Information:
|
||||||
// case UserInternal5Information:
|
// case UserInternal5Information:
|
||||||
// case UserInternal4InformationNew:
|
// case UserInternal4InformationNew:
|
||||||
|
@ -6100,6 +6390,7 @@ SamrSetInformationUser(IN SAMPR_HANDLE UserHandle,
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Function 38 */
|
/* Function 38 */
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -6285,6 +6576,10 @@ SamrCreateUser2InDomain(IN SAMPR_HANDLE DomainHandle,
|
||||||
AccountType != USER_TEMP_DUPLICATE_ACCOUNT)
|
AccountType != USER_TEMP_DUPLICATE_ACCOUNT)
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
/* Map generic access rights */
|
||||||
|
RtlMapGenericMask(&DesiredAccess,
|
||||||
|
&UserMapping);
|
||||||
|
|
||||||
/* Validate the domain handle */
|
/* Validate the domain handle */
|
||||||
Status = SampValidateDbObject(DomainHandle,
|
Status = SampValidateDbObject(DomainHandle,
|
||||||
SamDbDomainObject,
|
SamDbDomainObject,
|
||||||
|
@ -6639,6 +6934,7 @@ SamrConnect2(IN PSAMPR_SERVER_NAME ServerName,
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Function 58 */
|
/* Function 58 */
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -6646,10 +6942,14 @@ SamrSetInformationUser2(IN SAMPR_HANDLE UserHandle,
|
||||||
IN USER_INFORMATION_CLASS UserInformationClass,
|
IN USER_INFORMATION_CLASS UserInformationClass,
|
||||||
IN PSAMPR_USER_INFO_BUFFER Buffer)
|
IN PSAMPR_USER_INFO_BUFFER Buffer)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
TRACE("(%p %lu %p)\n", UserHandle, UserInformationClass, Buffer);
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
|
return SamrSetInformationUser(UserHandle,
|
||||||
|
UserInformationClass,
|
||||||
|
Buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Function 59 */
|
/* Function 59 */
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
|
|
|
@ -155,7 +155,7 @@ END
|
||||||
|
|
||||||
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION ""
|
CAPTION "Run"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||||
|
|
|
@ -155,7 +155,7 @@ END
|
||||||
|
|
||||||
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION ""
|
CAPTION "Run"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||||
|
|
|
@ -143,7 +143,7 @@ END
|
||||||
|
|
||||||
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION ""
|
CAPTION "Run"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||||
|
|
|
@ -155,7 +155,7 @@ END
|
||||||
|
|
||||||
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION ""
|
CAPTION "Run"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||||
|
|
|
@ -155,7 +155,7 @@ END
|
||||||
|
|
||||||
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION ""
|
CAPTION "Run"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||||
|
|
|
@ -159,7 +159,7 @@ END
|
||||||
|
|
||||||
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION ""
|
CAPTION "Exécuter"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||||
|
|
|
@ -158,7 +158,7 @@ END
|
||||||
|
|
||||||
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION ""
|
CAPTION "Run"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||||
|
|
|
@ -156,7 +156,7 @@ END
|
||||||
|
|
||||||
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION ""
|
CAPTION "Run"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||||
|
|
|
@ -155,7 +155,7 @@ END
|
||||||
|
|
||||||
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION ""
|
CAPTION "Run"
|
||||||
FONT 9, "MS UI Gothic"
|
FONT 9, "MS UI Gothic"
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||||
|
|
|
@ -155,7 +155,7 @@ END
|
||||||
|
|
||||||
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION ""
|
CAPTION "Run"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||||
|
|
|
@ -155,7 +155,7 @@ END
|
||||||
|
|
||||||
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION ""
|
CAPTION "Run"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||||
|
|
|
@ -163,7 +163,7 @@ END
|
||||||
|
|
||||||
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION ""
|
CAPTION "Run"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||||
|
|
|
@ -158,7 +158,7 @@ END
|
||||||
|
|
||||||
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION ""
|
CAPTION "Run"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||||
|
|
|
@ -158,7 +158,7 @@ END
|
||||||
|
|
||||||
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION ""
|
CAPTION "Run"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||||
|
|
|
@ -155,7 +155,7 @@ END
|
||||||
|
|
||||||
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION ""
|
CAPTION "Run"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||||
|
|
|
@ -155,7 +155,7 @@ END
|
||||||
|
|
||||||
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION ""
|
CAPTION "Run"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||||
|
|
|
@ -155,7 +155,7 @@ END
|
||||||
|
|
||||||
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION ""
|
CAPTION "Run"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||||
|
|
|
@ -146,7 +146,7 @@ END
|
||||||
|
|
||||||
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION ""
|
CAPTION "Run"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||||
|
|
|
@ -145,7 +145,7 @@ END
|
||||||
|
|
||||||
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION ""
|
CAPTION "Run"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
# Functions exported by the WinXP SP3 shell32.dll (6.0.2900.5686)
|
|
||||||
2 stdcall SHChangeNotifyRegister(long long long long long ptr)
|
2 stdcall SHChangeNotifyRegister(long long long long long ptr)
|
||||||
3 stdcall SHDefExtractIconA(str long long ptr ptr long)
|
3 stdcall SHDefExtractIconA(str long long ptr ptr long)
|
||||||
4 stdcall SHChangeNotifyDeregister(long)
|
4 stdcall SHChangeNotifyDeregister(long)
|
||||||
|
@ -27,7 +26,7 @@
|
||||||
27 stdcall ILSaveToStream(ptr ptr)
|
27 stdcall ILSaveToStream(ptr ptr)
|
||||||
28 stdcall SHILCreateFromPath(ptr ptr ptr) SHILCreateFromPathAW
|
28 stdcall SHILCreateFromPath(ptr ptr ptr) SHILCreateFromPathAW
|
||||||
29 stdcall -noname PathIsRoot(ptr) PathIsRootAW
|
29 stdcall -noname PathIsRoot(ptr) PathIsRootAW
|
||||||
30 stdcall -noname PathBuildRoot(ptr long) PathBuildRootAW
|
30 stdcall -noname PathBuildRoot(ptr long) PathBuildRootAW # FIXME: should be PathBuildRootW
|
||||||
31 stdcall -noname PathFindExtension(wstr) PathFindExtensionW
|
31 stdcall -noname PathFindExtension(wstr) PathFindExtensionW
|
||||||
32 stdcall -noname PathAddBackslash(wstr) PathAddBackslashW
|
32 stdcall -noname PathAddBackslash(wstr) PathAddBackslashW
|
||||||
33 stdcall -noname PathRemoveBlanks(wstr) PathRemoveBlanksW
|
33 stdcall -noname PathRemoveBlanks(wstr) PathRemoveBlanksW
|
||||||
|
@ -41,7 +40,6 @@
|
||||||
41 stdcall IsLFNDriveA(str)
|
41 stdcall IsLFNDriveA(str)
|
||||||
42 stdcall IsLFNDriveW(wstr)
|
42 stdcall IsLFNDriveW(wstr)
|
||||||
43 stdcall PathIsExe(ptr) PathIsExeAW
|
43 stdcall PathIsExe(ptr) PathIsExeAW
|
||||||
44 stdcall OpenAs_RunDLL(long long str long) OpenAs_RunDLLA
|
|
||||||
45 stdcall -noname PathFileExists(ptr) PathFileExistsAW # Fixme
|
45 stdcall -noname PathFileExists(ptr) PathFileExistsAW # Fixme
|
||||||
46 stdcall -noname PathMatchSpec(wstr wstr) PathMatchSpecW
|
46 stdcall -noname PathMatchSpec(wstr wstr) PathMatchSpecW
|
||||||
47 stdcall PathMakeUniqueName(ptr long ptr ptr ptr) PathMakeUniqueNameAW
|
47 stdcall PathMakeUniqueName(ptr long ptr ptr ptr) PathMakeUniqueNameAW
|
||||||
|
@ -50,7 +48,7 @@
|
||||||
50 stdcall -noname PathStripToRoot(wstr) PathStripToRootW
|
50 stdcall -noname PathStripToRoot(wstr) PathStripToRootW
|
||||||
51 stdcall PathResolve(str long long) PathResolveAW
|
51 stdcall PathResolve(str long long) PathResolveAW
|
||||||
52 stdcall -noname PathGetArgs(wstr) PathGetArgsW
|
52 stdcall -noname PathGetArgs(wstr) PathGetArgsW
|
||||||
53 stdcall -noname IsSuspendAllowed()
|
53 stdcall -noname IsSuspendAllowed() # FIXME: Wine says DoEnvironmentSubst
|
||||||
54 stdcall -noname LogoffWindowsDialog(ptr)
|
54 stdcall -noname LogoffWindowsDialog(ptr)
|
||||||
55 stdcall -noname PathQuoteSpaces(wstr) PathQuoteSpacesW
|
55 stdcall -noname PathQuoteSpaces(wstr) PathQuoteSpacesW
|
||||||
56 stdcall -noname PathUnquoteSpaces(wstr) PathUnquoteSpacesW
|
56 stdcall -noname PathUnquoteSpaces(wstr) PathUnquoteSpacesW
|
||||||
|
@ -68,27 +66,26 @@
|
||||||
68 stdcall SHGetSetSettings(ptr long long)
|
68 stdcall SHGetSetSettings(ptr long long)
|
||||||
69 stdcall -noname SHGetNetResource(ptr long ptr long)
|
69 stdcall -noname SHGetNetResource(ptr long ptr long)
|
||||||
70 stdcall -noname SHCreateDefClassObject(long long long long long)
|
70 stdcall -noname SHCreateDefClassObject(long long long long long)
|
||||||
71 stdcall -noname Shell_GetImageLists(ptr ptr)
|
71 stdcall Shell_GetImageLists(ptr ptr)
|
||||||
72 stdcall Shell_GetCachedImageIndex(ptr ptr long) Shell_GetCachedImageIndexAW
|
72 stdcall Shell_GetCachedImageIndex(ptr ptr long) Shell_GetCachedImageIndexAW
|
||||||
73 stdcall SHShellFolderView_Message(long long long)
|
73 stdcall SHShellFolderView_Message(long long long)
|
||||||
74 stdcall SHCreateStdEnumFmtEtc(long ptr ptr)
|
74 stdcall SHCreateStdEnumFmtEtc(long ptr ptr)
|
||||||
75 stdcall PathYetAnotherMakeUniqueName(ptr wstr wstr wstr)
|
75 stdcall PathYetAnotherMakeUniqueName(ptr wstr wstr wstr)
|
||||||
76 stdcall DragQueryInfo(ptr ptr)
|
76 stdcall -noname DragQueryInfo(ptr ptr)
|
||||||
77 stdcall SHMapPIDLToSystemImageListIndex(ptr ptr ptr)
|
77 stdcall SHMapPIDLToSystemImageListIndex(ptr ptr ptr)
|
||||||
78 stdcall -noname OleStrToStrN(str long wstr long) OleStrToStrNAW # Fixme
|
78 stdcall -noname OleStrToStrN(str long wstr long) OleStrToStrNAW # Fixme
|
||||||
79 stdcall -noname StrToOleStrN(wstr long str long) StrToOleStrNAW # Fixme
|
79 stdcall -noname StrToOleStrN(wstr long str long) StrToOleStrNAW # Fixme
|
||||||
80 stdcall SHOpenPropSheetW(wstr ptr long ptr ptr ptr wstr)
|
80 stdcall SHOpenPropSheetW(wstr ptr long ptr ptr ptr wstr)
|
||||||
81 stdcall OpenAs_RunDLLA(long long str long)
|
|
||||||
82 stdcall -noname DDECreatePostNotify(ptr)
|
82 stdcall -noname DDECreatePostNotify(ptr)
|
||||||
83 stdcall -noname CIDLData_CreateFromIDArray(ptr long ptr ptr)
|
83 stdcall -noname CIDLData_CreateFromIDArray(ptr long ptr ptr)
|
||||||
84 stdcall SHIsBadInterfacePtr(ptr long) # Fixme
|
84 stdcall -noname SHIsBadInterfacePtr(ptr long) # Fixme
|
||||||
85 stdcall OpenRegStream(long str str long) shlwapi.SHOpenRegStreamA
|
85 stdcall OpenRegStream(long str str long) shlwapi.SHOpenRegStreamA
|
||||||
86 stdcall -noname SHRegisterDragDrop(long ptr)
|
86 stdcall -noname SHRegisterDragDrop(long ptr)
|
||||||
87 stdcall -noname SHRevokeDragDrop(long)
|
87 stdcall -noname SHRevokeDragDrop(long)
|
||||||
88 stdcall SHDoDragDrop(long ptr ptr long ptr)
|
88 stdcall SHDoDragDrop(long ptr ptr long ptr)
|
||||||
89 stdcall SHCloneSpecialIDList(long long long)
|
89 stdcall SHCloneSpecialIDList(long long long)
|
||||||
90 stdcall SHFindFiles(ptr ptr)
|
90 stdcall SHFindFiles(ptr ptr)
|
||||||
91 stdcall SHFindComputer(ptr ptr)
|
91 stdcall -noname SHFindComputer(ptr ptr)
|
||||||
92 stdcall PathGetShortPath(ptr) PathGetShortPathAW
|
92 stdcall PathGetShortPath(ptr) PathGetShortPathAW
|
||||||
93 stdcall -noname Win32CreateDirectory(wstr ptr) Win32CreateDirectoryW
|
93 stdcall -noname Win32CreateDirectory(wstr ptr) Win32CreateDirectoryW
|
||||||
94 stdcall -noname Win32RemoveDirectory(wstr) Win32RemoveDirectoryW
|
94 stdcall -noname Win32RemoveDirectory(wstr) Win32RemoveDirectoryW
|
||||||
|
@ -98,31 +95,12 @@
|
||||||
98 stdcall SHGetRealIDL(ptr ptr ptr)
|
98 stdcall SHGetRealIDL(ptr ptr ptr)
|
||||||
99 stdcall -noname SetAppStartingCursor(long long) # Fixme
|
99 stdcall -noname SetAppStartingCursor(long long) # Fixme
|
||||||
100 stdcall SHRestricted(long)
|
100 stdcall SHRestricted(long)
|
||||||
101 stdcall OpenAs_RunDLLW(long long wstr long)
|
|
||||||
102 stdcall SHCoCreateInstance(wstr ptr long ptr ptr)
|
102 stdcall SHCoCreateInstance(wstr ptr long ptr ptr)
|
||||||
103 stdcall SignalFileOpen(long)
|
103 stdcall SignalFileOpen(ptr)
|
||||||
104 stdcall Activate_RunDLL(long ptr ptr ptr)
|
|
||||||
105 stdcall AppCompat_RunDLLW(ptr ptr wstr long)
|
|
||||||
106 stdcall CheckEscapesA(str long)
|
|
||||||
107 stdcall CheckEscapesW(wstr long)
|
|
||||||
108 stdcall CommandLineToArgvW(wstr ptr)
|
|
||||||
109 stdcall Control_FillCache_RunDLL(long long long long) Control_FillCache_RunDLLA
|
|
||||||
110 stdcall Control_FillCache_RunDLLA(long long long long)
|
|
||||||
111 stdcall Control_FillCache_RunDLLW(long long long long)
|
|
||||||
112 stdcall Control_RunDLL(ptr ptr str long) Control_RunDLLA
|
|
||||||
113 stdcall Control_RunDLLA(ptr ptr str long)
|
|
||||||
114 stdcall Control_RunDLLAsUserW(ptr ptr wstr long)
|
|
||||||
115 stdcall Control_RunDLLW(ptr ptr wstr long)
|
|
||||||
@ stdcall -private DllCanUnloadNow()
|
|
||||||
@ stdcall -private DllGetClassObject(ptr ptr ptr)
|
|
||||||
118 stdcall DllGetVersion(ptr)
|
|
||||||
119 stdcall IsLFNDrive(ptr) IsLFNDriveAW
|
119 stdcall IsLFNDrive(ptr) IsLFNDriveAW
|
||||||
@ stdcall -private DllInstall(long wstr)
|
|
||||||
121 stdcall SHFlushClipboard()
|
121 stdcall SHFlushClipboard()
|
||||||
122 stdcall -noname RunDLL_CallEntry16(long long long str long) # Fixme #name wrong?
|
122 stdcall -noname RunDLL_CallEntry16(long long long str long) # Fixme #name wrong?
|
||||||
123 stdcall -noname SHFreeUnusedLibraries()
|
123 stdcall -noname SHFreeUnusedLibraries()
|
||||||
@ stdcall -private DllRegisterServer()
|
|
||||||
@ stdcall -private DllUnregisterServer()
|
|
||||||
126 stdcall -noname SHOutOfMemoryMessageBox(long long long) # Fixme
|
126 stdcall -noname SHOutOfMemoryMessageBox(long long long) # Fixme
|
||||||
127 stdcall -noname SHWinHelp(long long long long)
|
127 stdcall -noname SHWinHelp(long long long long)
|
||||||
128 stdcall -noname SHDllGetClassObject(ptr ptr ptr) DllGetClassObject
|
128 stdcall -noname SHDllGetClassObject(ptr ptr ptr) DllGetClassObject
|
||||||
|
@ -130,24 +108,14 @@
|
||||||
130 stdcall -noname DAD_DragEnter(long)
|
130 stdcall -noname DAD_DragEnter(long)
|
||||||
131 stdcall DAD_DragEnterEx(long double)
|
131 stdcall DAD_DragEnterEx(long double)
|
||||||
132 stdcall DAD_DragLeave()
|
132 stdcall DAD_DragLeave()
|
||||||
133 stdcall DoEnvironmentSubstA(str str)
|
|
||||||
134 stdcall DAD_DragMove(double)
|
134 stdcall DAD_DragMove(double)
|
||||||
135 stdcall DoEnvironmentSubstW(wstr wstr)
|
|
||||||
136 stdcall DAD_SetDragImage(long long)
|
136 stdcall DAD_SetDragImage(long long)
|
||||||
137 stdcall DAD_ShowDragImage(long)
|
137 stdcall DAD_ShowDragImage(long)
|
||||||
138 stdcall DragAcceptFiles(long long)
|
|
||||||
139 stdcall DragFinish(long)
|
|
||||||
140 stdcall DragQueryFile(long long ptr long) DragQueryFileA
|
|
||||||
141 stdcall DragQueryFileA(long long ptr long)
|
|
||||||
142 stdcall DragQueryFileAorW(ptr long wstr long long long)
|
|
||||||
143 stdcall DragQueryFileW(long long ptr long)
|
|
||||||
144 stdcall DragQueryPoint(long ptr)
|
|
||||||
145 stdcall -noname PathFindOnPath(wstr wstr) PathFindOnPathW
|
145 stdcall -noname PathFindOnPath(wstr wstr) PathFindOnPathW
|
||||||
146 stdcall -noname RLBuildListOfPaths()
|
146 stdcall -noname RLBuildListOfPaths()
|
||||||
147 stdcall SHCLSIDFromString(long long) SHCLSIDFromStringAW
|
147 stdcall SHCLSIDFromString(long long) SHCLSIDFromStringAW
|
||||||
148 stdcall SHMapIDListToImageListIndexAsync(ptr ptr ptr long ptr ptr ptr ptr ptr)
|
148 stdcall SHMapIDListToImageListIndexAsync(ptr ptr ptr long ptr ptr ptr ptr ptr)
|
||||||
149 stdcall SHFind_InitMenuPopup(long long long long)
|
149 stdcall SHFind_InitMenuPopup(long long long long)
|
||||||
150 stdcall DuplicateIcon(long long)
|
|
||||||
151 stdcall SHLoadOLE(long)
|
151 stdcall SHLoadOLE(long)
|
||||||
152 stdcall ILGetSize(ptr)
|
152 stdcall ILGetSize(ptr)
|
||||||
153 stdcall ILGetNext(ptr)
|
153 stdcall ILGetNext(ptr)
|
||||||
|
@ -157,7 +125,7 @@
|
||||||
157 stdcall ILCreateFromPath(ptr) ILCreateFromPathAW
|
157 stdcall ILCreateFromPath(ptr) ILCreateFromPathAW
|
||||||
158 stdcall -noname PathGetExtension(wstr long long) SHPathGetExtensionW
|
158 stdcall -noname PathGetExtension(wstr long long) SHPathGetExtensionW
|
||||||
159 stdcall -noname PathIsDirectory(wstr) PathIsDirectoryW
|
159 stdcall -noname PathIsDirectory(wstr) PathIsDirectoryW
|
||||||
160 stdcall SHNetConnectionDialog(ptr wstr long) # Fixme
|
160 stdcall -noname SHNetConnectionDialog(ptr wstr long) # Fixme
|
||||||
161 stdcall SHRunControlPanel(long long)
|
161 stdcall SHRunControlPanel(long long)
|
||||||
162 stdcall SHSimpleIDListFromPath(ptr) SHSimpleIDListFromPathAW # Fixme
|
162 stdcall SHSimpleIDListFromPath(ptr) SHSimpleIDListFromPathAW # Fixme
|
||||||
163 stdcall -noname StrToOleStr(wstr str) StrToOleStrAW # Fixme
|
163 stdcall -noname StrToOleStr(wstr str) StrToOleStrAW # Fixme
|
||||||
|
@ -179,8 +147,8 @@
|
||||||
179 stdcall SHGetNewLinkInfoA(str str ptr long long)
|
179 stdcall SHGetNewLinkInfoA(str str ptr long long)
|
||||||
180 stdcall SHGetNewLinkInfoW(wstr wstr ptr long long)
|
180 stdcall SHGetNewLinkInfoW(wstr wstr ptr long long)
|
||||||
181 stdcall -noname RegisterShellHook(long long)
|
181 stdcall -noname RegisterShellHook(long long)
|
||||||
182 varargs ShellMessageBoxA(long long str str long)
|
182 varargs ShellMessageBoxW(long long wstr wstr long)
|
||||||
183 varargs ShellMessageBoxW(long long wstr wstr long)
|
183 varargs ShellMessageBoxA(long long str str long)
|
||||||
184 stdcall -noname ArrangeWindows(long long long long long)
|
184 stdcall -noname ArrangeWindows(long long long long long)
|
||||||
185 stdcall -noname SHHandleDiskFull(ptr long) # Fixme
|
185 stdcall -noname SHHandleDiskFull(ptr long) # Fixme
|
||||||
186 stdcall -noname ILGetDisplayNameEx(ptr ptr ptr long)
|
186 stdcall -noname ILGetDisplayNameEx(ptr ptr ptr long)
|
||||||
|
@ -196,16 +164,13 @@
|
||||||
196 stdcall SHAlloc(long)
|
196 stdcall SHAlloc(long)
|
||||||
197 stdcall -noname SHGlobalDefect(long)
|
197 stdcall -noname SHGlobalDefect(long)
|
||||||
198 stdcall -noname SHAbortInvokeCommand()
|
198 stdcall -noname SHAbortInvokeCommand()
|
||||||
199 stdcall ExtractAssociatedIconA(long str ptr)
|
# FIXME: Wine has SHGetFileIcon/SHLocalAlloc/SHLocalFree/SHLocalReAlloc from 199-202
|
||||||
200 stdcall -noname SHCreateDesktop(ptr)
|
200 stdcall -noname SHCreateDesktop(ptr)
|
||||||
201 stdcall -noname SHDesktopMessageLoop(ptr)
|
201 stdcall -noname SHDesktopMessageLoop(ptr)
|
||||||
202 stub -noname DDEHandleViewFolderNotify
|
202 stub -noname DDEHandleViewFolderNotify
|
||||||
203 stdcall -noname AddCommasW(long wstr)
|
203 stdcall -noname AddCommasW(long wstr)
|
||||||
204 stdcall -noname ShortSizeFormatW(double)
|
204 stdcall -noname ShortSizeFormatW(double)
|
||||||
205 stdcall Printer_LoadIconsW(wstr ptr ptr)
|
205 stdcall -noname Printer_LoadIconsW(wstr ptr ptr)
|
||||||
206 stdcall ExtractAssociatedIconExA(long str long long)
|
|
||||||
207 stdcall ExtractAssociatedIconExW(long wstr long long)
|
|
||||||
208 stdcall ExtractAssociatedIconW(long wstr ptr)
|
|
||||||
209 stdcall -noname Int64ToString(double wstr long long ptr long) # Fixme
|
209 stdcall -noname Int64ToString(double wstr long long ptr long) # Fixme
|
||||||
210 stdcall -noname LargeIntegerToString(ptr wstr long long ptr long) # Fixme
|
210 stdcall -noname LargeIntegerToString(ptr wstr long long ptr long) # Fixme
|
||||||
211 stdcall -noname Printers_GetPidl(ptr str) # Fixme
|
211 stdcall -noname Printers_GetPidl(ptr str) # Fixme
|
||||||
|
@ -213,20 +178,6 @@
|
||||||
213 stdcall -noname Printers_RegisterWindowW(wstr long ptr ptr)
|
213 stdcall -noname Printers_RegisterWindowW(wstr long ptr ptr)
|
||||||
214 stdcall -noname Printers_UnregisterWindow(long long)
|
214 stdcall -noname Printers_UnregisterWindow(long long)
|
||||||
215 stdcall -noname SHStartNetConnectionDialog(long str long)
|
215 stdcall -noname SHStartNetConnectionDialog(long str long)
|
||||||
216 stdcall ExtractIconA(long str long)
|
|
||||||
217 stdcall ExtractIconEx(ptr long ptr ptr long) ExtractIconExA
|
|
||||||
218 stdcall ExtractIconExA(str long ptr ptr long)
|
|
||||||
219 stdcall ExtractIconExW(wstr long ptr ptr long)
|
|
||||||
220 stdcall ExtractIconResInfoA(ptr str long ptr ptr)
|
|
||||||
221 stdcall ExtractIconResInfoW(ptr wstr long ptr ptr)
|
|
||||||
222 stdcall ExtractIconW(long wstr long)
|
|
||||||
223 stdcall ExtractVersionResource16W(wstr ptr)
|
|
||||||
224 stdcall FindExeDlgProc(ptr long ptr ptr)
|
|
||||||
225 stdcall FindExecutableA(str str ptr)
|
|
||||||
226 stdcall FindExecutableW(wstr wstr ptr)
|
|
||||||
227 stdcall FreeIconList(long)
|
|
||||||
228 stdcall InternalExtractIconListA(ptr str ptr)
|
|
||||||
229 stdcall InternalExtractIconListW(ptr wstr ptr)
|
|
||||||
230 stdcall -noname FirstUserLogon(wstr wstr)
|
230 stdcall -noname FirstUserLogon(wstr wstr)
|
||||||
231 stdcall -noname SHSetFolderPathA(long ptr long str)
|
231 stdcall -noname SHSetFolderPathA(long ptr long str)
|
||||||
232 stdcall -noname SHSetFolderPathW(long ptr long wstr)
|
232 stdcall -noname SHSetFolderPathW(long ptr long wstr)
|
||||||
|
@ -235,7 +186,6 @@
|
||||||
235 stdcall -noname SHOpenEffectiveToken(ptr)
|
235 stdcall -noname SHOpenEffectiveToken(ptr)
|
||||||
236 stdcall -noname SHTestTokenPrivilegeW(ptr ptr)
|
236 stdcall -noname SHTestTokenPrivilegeW(ptr ptr)
|
||||||
237 stdcall -noname SHShouldShowWizards(ptr)
|
237 stdcall -noname SHShouldShowWizards(ptr)
|
||||||
238 stdcall Options_RunDLL(ptr ptr str long)
|
|
||||||
239 stdcall PathIsSlowW(wstr long)
|
239 stdcall PathIsSlowW(wstr long)
|
||||||
240 stdcall PathIsSlowA(str long)
|
240 stdcall PathIsSlowA(str long)
|
||||||
241 stdcall -noname SHGetUserDisplayName(wstr ptr)
|
241 stdcall -noname SHGetUserDisplayName(wstr ptr)
|
||||||
|
@ -252,148 +202,10 @@
|
||||||
252 stdcall -noname PathIsURL(wstr) shlwapi.PathIsURLW
|
252 stdcall -noname PathIsURL(wstr) shlwapi.PathIsURLW
|
||||||
253 stub -noname SHIsCurrentProcessConsoleSession
|
253 stub -noname SHIsCurrentProcessConsoleSession
|
||||||
254 stub -noname DisconnectWindowsDialog
|
254 stub -noname DisconnectWindowsDialog
|
||||||
255 stdcall Options_RunDLLA(ptr ptr str long)
|
|
||||||
256 stdcall SHCreateShellFolderView(ptr ptr)
|
256 stdcall SHCreateShellFolderView(ptr ptr)
|
||||||
257 stdcall -noname SHGetShellFolderViewCB(ptr)
|
257 stdcall -noname SHGetShellFolderViewCB(ptr)
|
||||||
258 stdcall -noname LinkWindow_RegisterClass()
|
258 stdcall -noname LinkWindow_RegisterClass()
|
||||||
259 stdcall -noname LinkWindow_UnregisterClass()
|
259 stdcall -noname LinkWindow_UnregisterClass()
|
||||||
260 stdcall Options_RunDLLW(ptr ptr wstr long)
|
|
||||||
261 stdcall PrintersGetCommand_RunDLL(ptr ptr wstr long)
|
|
||||||
262 stdcall PrintersGetCommand_RunDLLA(ptr ptr str long)
|
|
||||||
263 stdcall PrintersGetCommand_RunDLLW(ptr ptr wstr long)
|
|
||||||
264 stdcall RealShellExecuteA(ptr str str str str str str str long ptr)
|
|
||||||
265 stdcall RealShellExecuteExA(ptr str str str str str str str long ptr long)
|
|
||||||
266 stdcall RealShellExecuteExW(ptr str str str str str str str long ptr long)
|
|
||||||
267 stdcall RealShellExecuteW(ptr wstr wstr wstr wstr wstr wstr wstr long ptr)
|
|
||||||
268 stdcall RegenerateUserEnvironment(ptr long)
|
|
||||||
269 stdcall SHAddToRecentDocs(long ptr)
|
|
||||||
270 stdcall SHAppBarMessage(long ptr)
|
|
||||||
271 stdcall SHBindToParent(ptr ptr ptr ptr)
|
|
||||||
272 stdcall SHBrowseForFolder(ptr) SHBrowseForFolderA
|
|
||||||
273 stdcall SHBrowseForFolderA(ptr)
|
|
||||||
274 stdcall SHBrowseForFolderW(ptr)
|
|
||||||
275 stdcall SHChangeNotify(long long ptr ptr)
|
|
||||||
276 stdcall SHChangeNotifySuspendResume(long ptr long long)
|
|
||||||
277 stdcall SHCreateDirectoryExA(long str ptr)
|
|
||||||
278 stdcall SHCreateDirectoryExW(long wstr ptr)
|
|
||||||
279 stub SHCreateLocalServerRunDll
|
|
||||||
280 stdcall SHCreateProcessAsUserW(ptr)
|
|
||||||
281 stdcall SHCreateQueryCancelAutoPlayMoniker(ptr)
|
|
||||||
282 stdcall SHCreateShellItem(ptr ptr ptr ptr)
|
|
||||||
283 stdcall SHEmptyRecycleBinA(long str long)
|
|
||||||
284 stdcall SHEmptyRecycleBinW(long wstr long)
|
|
||||||
285 stub SHEnableServiceObject
|
|
||||||
286 stub SHEnumerateUnreadMailAccountsW
|
|
||||||
287 stdcall SHExtractIconsW(wstr long long long ptr ptr long long) user32.PrivateExtractIconsW
|
|
||||||
288 stdcall SHFileOperation(ptr) SHFileOperationA
|
|
||||||
289 stdcall SHFileOperationA(ptr)
|
|
||||||
290 stdcall SHFileOperationW(ptr)
|
|
||||||
291 stdcall SHFormatDrive(long long long long)
|
|
||||||
292 stdcall SHFreeNameMappings(ptr)
|
|
||||||
293 stdcall SHGetDataFromIDListA(ptr ptr long ptr long)
|
|
||||||
294 stdcall SHGetDataFromIDListW(ptr ptr long ptr long)
|
|
||||||
295 stdcall SHGetDesktopFolder(ptr)
|
|
||||||
296 stdcall SHGetDiskFreeSpaceA(str ptr ptr ptr) kernel32.GetDiskFreeSpaceExA
|
|
||||||
297 stdcall SHGetDiskFreeSpaceExA(str ptr ptr ptr) kernel32.GetDiskFreeSpaceExA
|
|
||||||
298 stdcall SHGetDiskFreeSpaceExW(wstr ptr ptr ptr) kernel32.GetDiskFreeSpaceExW
|
|
||||||
299 stdcall SHGetFileInfo(ptr long ptr long long) SHGetFileInfoA
|
|
||||||
300 stdcall SHGetFileInfoA(ptr long ptr long long)
|
|
||||||
301 stdcall SHGetFileInfoW(ptr long ptr long long)
|
|
||||||
302 stdcall SHGetFolderLocation(long long long long ptr)
|
|
||||||
303 stdcall SHGetFolderPathA(long long long long ptr)
|
|
||||||
304 stdcall SHGetFolderPathAndSubDirA(long long long long str ptr)
|
|
||||||
305 stdcall SHGetFolderPathAndSubDirW(long long long long wstr ptr)
|
|
||||||
306 stdcall SHGetFolderPathW(long long long long ptr)
|
|
||||||
307 stdcall SHGetIconOverlayIndexA(str long)
|
|
||||||
308 stdcall SHGetIconOverlayIndexW(wstr long)
|
|
||||||
309 stdcall SHGetInstanceExplorer(long)
|
|
||||||
310 stdcall SHGetMalloc(ptr)
|
|
||||||
311 stdcall SHGetNewLinkInfo(str str ptr long long) SHGetNewLinkInfoA
|
|
||||||
312 stdcall SHGetPathFromIDList(ptr ptr) SHGetPathFromIDListA
|
|
||||||
313 stdcall SHGetPathFromIDListA(ptr ptr)
|
|
||||||
314 stdcall SHGetPathFromIDListW(ptr ptr)
|
|
||||||
315 stdcall SHGetSettings(ptr long)
|
|
||||||
316 stdcall SHGetSpecialFolderLocation(long long ptr)
|
|
||||||
317 stdcall SHGetSpecialFolderPathA(long ptr long long)
|
|
||||||
318 stdcall SHGetSpecialFolderPathW(long ptr long long)
|
|
||||||
319 stdcall SHGetUnreadMailCountW (long wstr long ptr wstr long)
|
|
||||||
320 stdcall SHHelpShortcuts_RunDLL(long long long long) SHHelpShortcuts_RunDLLA
|
|
||||||
321 stdcall SHHelpShortcuts_RunDLLA(long long long long)
|
|
||||||
322 stdcall SHHelpShortcuts_RunDLLW(long long long long)
|
|
||||||
323 stdcall SHInvokePrinterCommandA(ptr long str str long)
|
|
||||||
324 stdcall SHInvokePrinterCommandW(ptr long wstr wstr long)
|
|
||||||
325 stdcall SHIsFileAvailableOffline(wstr ptr)
|
|
||||||
326 stdcall SHLoadInProc(long)
|
|
||||||
327 stdcall SHLoadNonloadedIconOverlayIdentifiers()
|
|
||||||
328 stdcall SHOpenFolderAndSelectItems(ptr long ptr long)
|
|
||||||
329 stdcall SHParseDisplayName(wstr ptr ptr long ptr)
|
|
||||||
330 stdcall SHPathPrepareForWriteA(long ptr str long)
|
|
||||||
331 stdcall SHPathPrepareForWriteW(long ptr wstr long)
|
|
||||||
332 stdcall SHQueryRecycleBinA(str ptr)
|
|
||||||
333 stdcall SHQueryRecycleBinW(wstr ptr)
|
|
||||||
334 stdcall SHSetLocalizedName(wstr wstr long)
|
|
||||||
335 stdcall SHSetUnreadMailCountW (wstr long wstr)
|
|
||||||
336 stdcall SHUpdateRecycleBinIcon()
|
|
||||||
337 stdcall SheChangeDirA(str)
|
|
||||||
338 stdcall SheChangeDirExA(str)
|
|
||||||
339 stdcall SheChangeDirExW(wstr)
|
|
||||||
340 stdcall SheChangeDirW(wstr)
|
|
||||||
341 stdcall SheConvertPathW(wstr wstr long)
|
|
||||||
342 stdcall SheFullPathA(str long str)
|
|
||||||
343 stdcall SheFullPathW(wstr long wstr)
|
|
||||||
344 stdcall SheGetCurDrive()
|
|
||||||
345 stdcall SheGetDirA(long long)
|
|
||||||
346 stdcall SheGetDirExW(wstr ptr wstr)
|
|
||||||
347 stdcall SheGetDirW(long long)
|
|
||||||
348 stdcall SheGetPathOffsetW(wstr)
|
|
||||||
349 stdcall SheRemoveQuotesA(str)
|
|
||||||
350 stdcall SheRemoveQuotesW(wstr)
|
|
||||||
351 stdcall SheSetCurDrive(long)
|
|
||||||
352 stdcall SheShortenPathA(str long)
|
|
||||||
353 stdcall SheShortenPathW(wstr long)
|
|
||||||
354 stdcall ShellAboutA(long str str long)
|
|
||||||
355 stdcall ShellAboutW(long wstr wstr long)
|
|
||||||
356 stdcall ShellExec_RunDLL(ptr ptr wstr long)
|
|
||||||
357 stdcall ShellExec_RunDLLA(ptr ptr str long)
|
|
||||||
358 stdcall ShellExec_RunDLLW(ptr ptr wstr long)
|
|
||||||
359 stdcall ShellExecuteA(long str str str str long)
|
|
||||||
360 stdcall ShellExecuteEx(long) ShellExecuteExA
|
|
||||||
361 stdcall ShellExecuteExA (long)
|
|
||||||
362 stdcall ShellExecuteExW (long)
|
|
||||||
363 stdcall ShellExecuteW(long wstr wstr wstr wstr long)
|
|
||||||
364 stdcall ShellHookProc(long ptr ptr)
|
|
||||||
365 stdcall Shell_NotifyIcon(long ptr) Shell_NotifyIconA
|
|
||||||
366 stdcall Shell_NotifyIconA(long ptr)
|
|
||||||
367 stdcall Shell_NotifyIconW(long ptr)
|
|
||||||
368 stdcall StrChrA(str long) shlwapi.StrChrA
|
|
||||||
369 stdcall StrChrIA(str long) shlwapi.StrChrIA
|
|
||||||
370 stdcall StrChrIW(wstr long) shlwapi.StrChrIW
|
|
||||||
371 stdcall StrChrW(wstr long) shlwapi.StrChrW
|
|
||||||
372 stdcall StrCmpNA(str str long) shlwapi.StrCmpNA
|
|
||||||
373 stdcall StrCmpNIA(str str long) shlwapi.StrCmpNIA
|
|
||||||
374 stdcall StrCmpNIW(wstr wstr long) shlwapi.StrCmpNIW
|
|
||||||
375 stdcall StrCmpNW(wstr wstr long) shlwapi.StrCmpNW
|
|
||||||
376 stdcall StrCpyNA (ptr str long) kernel32.lstrcpynA
|
|
||||||
377 stdcall StrCpyNW(wstr wstr long) shlwapi.StrCpyNW
|
|
||||||
378 stdcall StrNCmpA(str str long) shlwapi.StrCmpNA
|
|
||||||
379 stdcall StrNCmpIA(str str long) shlwapi.StrCmpNIA
|
|
||||||
380 stdcall StrNCmpIW(wstr wstr long) shlwapi.StrCmpNIW
|
|
||||||
381 stdcall StrNCmpW(wstr wstr long) shlwapi.StrCmpNW
|
|
||||||
382 stdcall StrNCpyA (ptr str long) kernel32.lstrcpynA
|
|
||||||
383 stdcall StrNCpyW(wstr wstr long) shlwapi.StrCpyNW
|
|
||||||
384 stdcall StrRChrA(str str long) shlwapi.StrRChrA
|
|
||||||
385 stdcall StrRChrIA(str str long) shlwapi.StrRChrIA
|
|
||||||
386 stdcall StrRChrIW(str str long) shlwapi.StrRChrIW
|
|
||||||
387 stdcall StrRChrW(wstr wstr long) shlwapi.StrRChrW
|
|
||||||
388 stdcall StrRStrA(str str str)
|
|
||||||
389 stdcall StrRStrIA(str str str) shlwapi.StrRStrIA
|
|
||||||
390 stdcall StrRStrIW(wstr wstr wstr) shlwapi.StrRStrIW
|
|
||||||
391 stdcall StrRStrW(wstr wstr wstr)
|
|
||||||
392 stdcall StrStrA(str str) shlwapi.StrStrA
|
|
||||||
393 stdcall StrStrIA(str str) shlwapi.StrStrIA
|
|
||||||
394 stdcall StrStrIW(wstr wstr) shlwapi.StrStrIW
|
|
||||||
395 stdcall StrStrW(wstr wstr) shlwapi.StrStrW
|
|
||||||
396 stdcall WOWShellExecute(ptr wstr wstr wstr wstr long ptr)
|
|
||||||
520 stdcall SHAllocShared(ptr long long)
|
520 stdcall SHAllocShared(ptr long long)
|
||||||
521 stdcall SHLockShared(long long)
|
521 stdcall SHLockShared(long long)
|
||||||
522 stdcall SHUnlockShared(ptr)
|
522 stdcall SHUnlockShared(ptr)
|
||||||
|
@ -465,6 +277,195 @@
|
||||||
755 stdcall -noname PathIsEqualOrSubFolder(wstr wstr)
|
755 stdcall -noname PathIsEqualOrSubFolder(wstr wstr)
|
||||||
756 stub -noname DeleteFileThumbnail
|
756 stub -noname DeleteFileThumbnail
|
||||||
|
|
||||||
|
@ stdcall Activate_RunDLL(long ptr ptr ptr)
|
||||||
|
@ stdcall AppCompat_RunDLLW(ptr ptr wstr long)
|
||||||
|
@ stdcall CheckEscapesA(str long)
|
||||||
|
@ stdcall CheckEscapesW(wstr long)
|
||||||
|
@ stdcall CommandLineToArgvW(wstr ptr)
|
||||||
|
@ stdcall Control_FillCache_RunDLL(long long long long) Control_FillCache_RunDLLA
|
||||||
|
@ stdcall Control_FillCache_RunDLLA(long long long long)
|
||||||
|
@ stdcall Control_FillCache_RunDLLW(long long long long)
|
||||||
|
@ stdcall Control_RunDLL(ptr ptr str long) Control_RunDLLA
|
||||||
|
@ stdcall Control_RunDLLA(ptr ptr str long)
|
||||||
|
@ stdcall Control_RunDLLAsUserW(ptr ptr wstr long)
|
||||||
|
@ stdcall Control_RunDLLW(ptr ptr wstr long)
|
||||||
|
@ stdcall -private DllCanUnloadNow()
|
||||||
|
@ stdcall -private DllGetClassObject(ptr ptr ptr)
|
||||||
|
@ stdcall -private DllGetVersion(ptr)
|
||||||
|
@ stdcall -private DllInstall(long wstr)
|
||||||
|
@ stdcall -private DllRegisterServer()
|
||||||
|
@ stdcall -private DllUnregisterServer()
|
||||||
|
@ stdcall DoEnvironmentSubstA(str str)
|
||||||
|
@ stdcall DoEnvironmentSubstW(wstr wstr)
|
||||||
|
@ stdcall DragAcceptFiles(long long)
|
||||||
|
@ stdcall DragFinish(long)
|
||||||
|
@ stdcall DragQueryFile(long long ptr long) DragQueryFileA
|
||||||
|
@ stdcall DragQueryFileA(long long ptr long)
|
||||||
|
@ stdcall DragQueryFileAorW(ptr long wstr long long long)
|
||||||
|
@ stdcall DragQueryFileW(long long ptr long)
|
||||||
|
@ stdcall DragQueryPoint(long ptr)
|
||||||
|
@ stdcall DuplicateIcon(long long)
|
||||||
|
@ stdcall ExtractAssociatedIconA(long str ptr)
|
||||||
|
@ stdcall ExtractAssociatedIconExA(long str long long)
|
||||||
|
@ stdcall ExtractAssociatedIconExW(long wstr long long)
|
||||||
|
@ stdcall ExtractAssociatedIconW(long wstr ptr)
|
||||||
|
@ stdcall ExtractIconA(long str long)
|
||||||
|
@ stdcall ExtractIconEx(ptr long ptr ptr long) ExtractIconExA
|
||||||
|
@ stdcall ExtractIconExA(str long ptr ptr long)
|
||||||
|
@ stdcall ExtractIconExW(wstr long ptr ptr long)
|
||||||
|
@ stdcall ExtractIconResInfoA(ptr str long ptr ptr)
|
||||||
|
@ stdcall ExtractIconResInfoW(ptr wstr long ptr ptr)
|
||||||
|
@ stdcall ExtractIconW(long wstr long)
|
||||||
|
@ stdcall ExtractVersionResource16W(wstr ptr)
|
||||||
|
@ stdcall FindExecutableA(str str ptr)
|
||||||
|
@ stdcall FindExecutableW(wstr wstr ptr)
|
||||||
|
@ stdcall FindExeDlgProc(ptr long ptr ptr)
|
||||||
|
@ stdcall FreeIconList(long)
|
||||||
|
@ stdcall InternalExtractIconListA(ptr str ptr)
|
||||||
|
@ stdcall InternalExtractIconListW(ptr wstr ptr)
|
||||||
|
@ stdcall OpenAs_RunDLL(long long str long) OpenAs_RunDLLA
|
||||||
|
@ stdcall OpenAs_RunDLLA(long long str long)
|
||||||
|
@ stdcall OpenAs_RunDLLW(long long wstr long)
|
||||||
|
@ stdcall Options_RunDLL(ptr ptr str long)
|
||||||
|
@ stdcall Options_RunDLLA(ptr ptr str long)
|
||||||
|
@ stdcall Options_RunDLLW(ptr ptr wstr long)
|
||||||
|
@ stdcall PrintersGetCommand_RunDLL(ptr ptr wstr long)
|
||||||
|
@ stdcall PrintersGetCommand_RunDLLA(ptr ptr str long)
|
||||||
|
@ stdcall PrintersGetCommand_RunDLLW(ptr ptr wstr long)
|
||||||
|
@ stdcall RealShellExecuteA(ptr str str str str str str str long ptr)
|
||||||
|
@ stdcall RealShellExecuteExA(ptr str str str str str str str long ptr long)
|
||||||
|
@ stdcall RealShellExecuteExW(ptr str str str str str str str long ptr long)
|
||||||
|
@ stdcall RealShellExecuteW(ptr wstr wstr wstr wstr wstr wstr wstr long ptr)
|
||||||
|
@ stdcall RegenerateUserEnvironment(ptr long)
|
||||||
|
@ stdcall SHAddToRecentDocs(long ptr)
|
||||||
|
@ stdcall SHAppBarMessage(long ptr)
|
||||||
|
@ stdcall SHBindToParent(ptr ptr ptr ptr)
|
||||||
|
@ stdcall SHBrowseForFolder(ptr) SHBrowseForFolderA
|
||||||
|
@ stdcall SHBrowseForFolderA(ptr)
|
||||||
|
@ stdcall SHBrowseForFolderW(ptr)
|
||||||
|
@ stdcall SHChangeNotify(long long ptr ptr)
|
||||||
|
@ stdcall SHChangeNotifySuspendResume(long ptr long long)
|
||||||
|
@ stdcall SHCreateDirectoryExA(long str ptr)
|
||||||
|
@ stdcall SHCreateDirectoryExW(long wstr ptr)
|
||||||
|
@ stub SHCreateLocalServerRunDll
|
||||||
|
@ stdcall SHCreateProcessAsUserW(ptr)
|
||||||
|
@ stdcall SHCreateQueryCancelAutoPlayMoniker(ptr)
|
||||||
|
@ stdcall SHCreateShellItem(ptr ptr ptr ptr)
|
||||||
|
@ stdcall SHEmptyRecycleBinA(long str long)
|
||||||
|
@ stdcall SHEmptyRecycleBinW(long wstr long)
|
||||||
|
@ stub SHEnableServiceObject
|
||||||
|
@ stub SHEnumerateUnreadMailAccountsW
|
||||||
|
@ stdcall SHExtractIconsW(wstr long long long ptr ptr long long) user32.PrivateExtractIconsW
|
||||||
|
@ stdcall SHFileOperation(ptr) SHFileOperationA
|
||||||
|
@ stdcall SHFileOperationA(ptr)
|
||||||
|
@ stdcall SHFileOperationW(ptr)
|
||||||
|
@ stdcall SHFormatDrive(long long long long)
|
||||||
|
@ stdcall SHFreeNameMappings(ptr)
|
||||||
|
@ stdcall SHGetDataFromIDListA(ptr ptr long ptr long)
|
||||||
|
@ stdcall SHGetDataFromIDListW(ptr ptr long ptr long)
|
||||||
|
@ stdcall SHGetDesktopFolder(ptr)
|
||||||
|
@ stdcall SHGetDiskFreeSpaceA(str ptr ptr ptr) kernel32.GetDiskFreeSpaceExA
|
||||||
|
@ stdcall SHGetDiskFreeSpaceExA(str ptr ptr ptr) kernel32.GetDiskFreeSpaceExA
|
||||||
|
@ stdcall SHGetDiskFreeSpaceExW(wstr ptr ptr ptr) kernel32.GetDiskFreeSpaceExW
|
||||||
|
@ stdcall SHGetFileInfo(ptr long ptr long long) SHGetFileInfoA
|
||||||
|
@ stdcall SHGetFileInfoA(ptr long ptr long long)
|
||||||
|
@ stdcall SHGetFileInfoW(ptr long ptr long long)
|
||||||
|
@ stdcall SHGetFolderLocation(long long long long ptr)
|
||||||
|
@ stdcall SHGetFolderPathA(long long long long ptr)
|
||||||
|
@ stdcall SHGetFolderPathAndSubDirA(long long long long str ptr)
|
||||||
|
@ stdcall SHGetFolderPathAndSubDirW(long long long long wstr ptr)
|
||||||
|
@ stdcall SHGetFolderPathW(long long long long ptr)
|
||||||
|
@ stdcall SHGetIconOverlayIndexA(str long)
|
||||||
|
@ stdcall SHGetIconOverlayIndexW(wstr long)
|
||||||
|
@ stdcall SHGetInstanceExplorer(long)
|
||||||
|
@ stdcall SHGetMalloc(ptr)
|
||||||
|
@ stdcall SHGetNewLinkInfo(str str ptr long long) SHGetNewLinkInfoA
|
||||||
|
@ stdcall SHGetPathFromIDList(ptr ptr) SHGetPathFromIDListA
|
||||||
|
@ stdcall SHGetPathFromIDListA(ptr ptr)
|
||||||
|
@ stdcall SHGetPathFromIDListW(ptr ptr)
|
||||||
|
@ stdcall SHGetSettings(ptr long)
|
||||||
|
@ stdcall SHGetSpecialFolderLocation(long long ptr)
|
||||||
|
@ stdcall SHGetSpecialFolderPathA(long ptr long long)
|
||||||
|
@ stdcall SHGetSpecialFolderPathW(long ptr long long)
|
||||||
|
@ stdcall SHGetUnreadMailCountW (long wstr long ptr wstr long)
|
||||||
|
@ stdcall SHHelpShortcuts_RunDLL(long long long long) SHHelpShortcuts_RunDLLA
|
||||||
|
@ stdcall SHHelpShortcuts_RunDLLA(long long long long)
|
||||||
|
@ stdcall SHHelpShortcuts_RunDLLW(long long long long)
|
||||||
|
@ stdcall SHInvokePrinterCommandA(ptr long str str long)
|
||||||
|
@ stdcall SHInvokePrinterCommandW(ptr long wstr wstr long)
|
||||||
|
@ stdcall SHIsFileAvailableOffline(wstr ptr)
|
||||||
|
@ stdcall SHLoadInProc(long)
|
||||||
|
@ stdcall SHLoadNonloadedIconOverlayIdentifiers()
|
||||||
|
@ stdcall SHOpenFolderAndSelectItems(ptr long ptr long)
|
||||||
|
@ stdcall SHParseDisplayName(wstr ptr ptr long ptr)
|
||||||
|
@ stdcall SHPathPrepareForWriteA(long ptr str long)
|
||||||
|
@ stdcall SHPathPrepareForWriteW(long ptr wstr long)
|
||||||
|
@ stdcall SHQueryRecycleBinA(str ptr)
|
||||||
|
@ stdcall SHQueryRecycleBinW(wstr ptr)
|
||||||
|
@ stdcall SHSetLocalizedName(wstr wstr long)
|
||||||
|
@ stdcall SHSetUnreadMailCountW (wstr long wstr)
|
||||||
|
@ stdcall SHUpdateRecycleBinIcon()
|
||||||
|
@ stdcall SheChangeDirA(str)
|
||||||
|
@ stdcall SheChangeDirExA(str)
|
||||||
|
@ stdcall SheChangeDirExW(wstr)
|
||||||
|
@ stdcall SheChangeDirW(wstr)
|
||||||
|
@ stdcall SheConvertPathW(wstr wstr long)
|
||||||
|
@ stdcall SheFullPathA(str long str)
|
||||||
|
@ stdcall SheFullPathW(wstr long wstr)
|
||||||
|
@ stdcall SheGetCurDrive()
|
||||||
|
@ stdcall SheGetDirA(long long)
|
||||||
|
@ stdcall SheGetDirExW(wstr ptr wstr)
|
||||||
|
@ stdcall SheGetDirW(long long)
|
||||||
|
@ stdcall SheGetPathOffsetW(wstr)
|
||||||
|
@ stdcall SheRemoveQuotesA(str)
|
||||||
|
@ stdcall SheRemoveQuotesW(wstr)
|
||||||
|
@ stdcall SheSetCurDrive(long)
|
||||||
|
@ stdcall SheShortenPathA(str long)
|
||||||
|
@ stdcall SheShortenPathW(wstr long)
|
||||||
|
@ stdcall ShellAboutA(long str str long)
|
||||||
|
@ stdcall ShellAboutW(long wstr wstr long)
|
||||||
|
@ stdcall ShellExec_RunDLL(ptr ptr wstr long)
|
||||||
|
@ stdcall ShellExec_RunDLLA(ptr ptr str long)
|
||||||
|
@ stdcall ShellExec_RunDLLW(ptr ptr wstr long)
|
||||||
|
@ stdcall ShellExecuteA(long str str str str long)
|
||||||
|
@ stdcall ShellExecuteEx(long) ShellExecuteExA
|
||||||
|
@ stdcall ShellExecuteExA (long)
|
||||||
|
@ stdcall ShellExecuteExW (long)
|
||||||
|
@ stdcall ShellExecuteW(long wstr wstr wstr wstr long)
|
||||||
|
@ stdcall ShellHookProc(long ptr ptr)
|
||||||
|
@ stdcall Shell_NotifyIcon(long ptr) Shell_NotifyIconA
|
||||||
|
@ stdcall Shell_NotifyIconA(long ptr)
|
||||||
|
@ stdcall Shell_NotifyIconW(long ptr)
|
||||||
|
@ stdcall StrChrA(str long) shlwapi.StrChrA
|
||||||
|
@ stdcall StrChrIA(str long) shlwapi.StrChrIA
|
||||||
|
@ stdcall StrChrIW(wstr long) shlwapi.StrChrIW
|
||||||
|
@ stdcall StrChrW(wstr long) shlwapi.StrChrW
|
||||||
|
@ stdcall StrCmpNA(str str long) shlwapi.StrCmpNA
|
||||||
|
@ stdcall StrCmpNIA(str str long) shlwapi.StrCmpNIA
|
||||||
|
@ stdcall StrCmpNIW(wstr wstr long) shlwapi.StrCmpNIW
|
||||||
|
@ stdcall StrCmpNW(wstr wstr long) shlwapi.StrCmpNW
|
||||||
|
@ stdcall StrCpyNA (ptr str long) kernel32.lstrcpynA
|
||||||
|
@ stdcall StrCpyNW(wstr wstr long) shlwapi.StrCpyNW
|
||||||
|
@ stdcall StrNCmpA(str str long) shlwapi.StrCmpNA
|
||||||
|
@ stdcall StrNCmpIA(str str long) shlwapi.StrCmpNIA
|
||||||
|
@ stdcall StrNCmpIW(wstr wstr long) shlwapi.StrCmpNIW
|
||||||
|
@ stdcall StrNCmpW(wstr wstr long) shlwapi.StrCmpNW
|
||||||
|
@ stdcall StrNCpyA (ptr str long) kernel32.lstrcpynA
|
||||||
|
@ stdcall StrNCpyW(wstr wstr long) shlwapi.StrCpyNW
|
||||||
|
@ stdcall StrRChrA(str str long) shlwapi.StrRChrA
|
||||||
|
@ stdcall StrRChrIA(str str long) shlwapi.StrRChrIA
|
||||||
|
@ stdcall StrRChrIW(wstr wstr long) shlwapi.StrRChrIW
|
||||||
|
@ stdcall StrRChrW(wstr wstr long) shlwapi.StrRChrW
|
||||||
|
@ stdcall StrRStrA(str str str)
|
||||||
|
@ stdcall StrRStrIA(str str str) shlwapi.StrRStrIA
|
||||||
|
@ stdcall StrRStrIW(wstr wstr wstr) shlwapi.StrRStrIW
|
||||||
|
@ stdcall StrRStrW(wstr wstr wstr)
|
||||||
|
@ stdcall StrStrA(str str) shlwapi.StrStrA
|
||||||
|
@ stdcall StrStrIA(str str) shlwapi.StrStrIA
|
||||||
|
@ stdcall StrStrIW(wstr wstr) shlwapi.StrStrIW
|
||||||
|
@ stdcall StrStrW(wstr wstr) shlwapi.StrStrW
|
||||||
|
@ stdcall WOWShellExecute(ptr str str str str long ptr)
|
||||||
|
|
||||||
# Functions exported by the WinVista shell32.dll
|
# Functions exported by the WinVista shell32.dll
|
||||||
@ stdcall SHCreateDefaultContextMenu(ptr ptr ptr)
|
@ stdcall SHCreateDefaultContextMenu(ptr ptr ptr)
|
||||||
@ stdcall SHCreateDefaultExtractIcon(ptr ptr)
|
@ stdcall SHCreateDefaultExtractIcon(ptr ptr)
|
||||||
|
@ -495,6 +496,7 @@
|
||||||
@ stdcall FileMenu_GetItemExtent(long long)
|
@ stdcall FileMenu_GetItemExtent(long long)
|
||||||
|
|
||||||
# 4.0 (NT) and higher. Until discontinued in 5.0
|
# 4.0 (NT) and higher. Until discontinued in 5.0
|
||||||
|
# FIXME: ordinals 505-512?
|
||||||
@ stdcall SHRegCloseKey(long)
|
@ stdcall SHRegCloseKey(long)
|
||||||
@ stdcall SHRegOpenKeyA(long str long)
|
@ stdcall SHRegOpenKeyA(long str long)
|
||||||
@ stdcall SHRegOpenKeyW(long wstr long)
|
@ stdcall SHRegOpenKeyW(long wstr long)
|
||||||
|
|
|
@ -348,6 +348,7 @@ AckPageDlgProc(HWND hwndDlg,
|
||||||
if (HIWORD(wParam) == BN_CLICKED && IDC_VIEWGPL == LOWORD(wParam))
|
if (HIWORD(wParam) == BN_CLICKED && IDC_VIEWGPL == LOWORD(wParam))
|
||||||
{
|
{
|
||||||
DialogBox(hDllInstance, MAKEINTRESOURCE(IDD_GPL), NULL, GplDlgProc);
|
DialogBox(hDllInstance, MAKEINTRESOURCE(IDD_GPL), NULL, GplDlgProc);
|
||||||
|
SetForegroundWindow(GetParent(hwndDlg));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -262,7 +262,7 @@ Device_GetAdditionalResourceDescriptors(IN PPCI_CONFIGURATOR_CONTEXT Context,
|
||||||
{
|
{
|
||||||
/* Not yet implemented */
|
/* Not yet implemented */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -272,7 +272,7 @@ Device_ResetDevice(IN PPCI_PDO_EXTENSION PdoExtension,
|
||||||
{
|
{
|
||||||
/* Not yet implemented */
|
/* Not yet implemented */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -282,7 +282,7 @@ Device_ChangeResourceSettings(IN PPCI_PDO_EXTENSION PdoExtension,
|
||||||
{
|
{
|
||||||
/* Not yet implemented */
|
/* Not yet implemented */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -148,13 +148,13 @@ PciComputeNewCurrentSettings(IN PPCI_PDO_EXTENSION PdoExtension,
|
||||||
/* Not used in the driver yet */
|
/* Not used in the driver yet */
|
||||||
case 1:
|
case 1:
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Not used in the driver yet */
|
/* Not used in the driver yet */
|
||||||
case 2:
|
case 2:
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* A drain request */
|
/* A drain request */
|
||||||
|
@ -541,7 +541,8 @@ PciQueryEjectionRelations(IN PPCI_PDO_EXTENSION PdoExtension,
|
||||||
{
|
{
|
||||||
/* Not yet implemented */
|
/* Not yet implemented */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
@ -599,7 +600,7 @@ PciQueryRequirements(IN PPCI_PDO_EXTENSION PdoExtension,
|
||||||
{
|
{
|
||||||
/* Have not tested this on eVb's machine yet */
|
/* Have not tested this on eVb's machine yet */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if the requirements are actually the zero list */
|
/* Check if the requirements are actually the zero list */
|
||||||
|
@ -1522,7 +1523,7 @@ PciProcessBus(IN PPCI_FDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
/* Not really handling this year */
|
/* Not really handling this year */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
|
|
||||||
/* Check for PCI bridges with the ISA bit set, or required */
|
/* Check for PCI bridges with the ISA bit set, or required */
|
||||||
if ((PdoExtension) &&
|
if ((PdoExtension) &&
|
||||||
|
@ -1532,7 +1533,7 @@ PciProcessBus(IN PPCI_FDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
/* We'll need to do some legacy support */
|
/* We'll need to do some legacy support */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1547,7 +1548,7 @@ PciProcessBus(IN PPCI_FDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
/* Again, some more legacy support we'll have to do */
|
/* Again, some more legacy support we'll have to do */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1557,7 +1558,7 @@ PciProcessBus(IN PPCI_FDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
/* Not yet supported */
|
/* Not yet supported */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1606,7 +1607,7 @@ PciScanBus(IN PPCI_FDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
DPRINT1("PCI: Bus numbers have been changed! Restoring originals.\n");
|
DPRINT1("PCI: Bus numbers have been changed! Restoring originals.\n");
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1668,7 +1669,7 @@ PciScanBus(IN PPCI_FDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
/* Check if this PCI device is the ACPI Watchdog Device... */
|
/* Check if this PCI device is the ACPI Watchdog Device... */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check for non-simple devices */
|
/* Check for non-simple devices */
|
||||||
|
@ -1734,7 +1735,7 @@ PciScanBus(IN PPCI_FDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
/* Rescan scenarios are not yet implemented */
|
/* Rescan scenarios are not yet implemented */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Bus processing will need to happen */
|
/* Bus processing will need to happen */
|
||||||
|
@ -2197,7 +2198,7 @@ PciSetResources(IN PPCI_PDO_EXTENSION PdoExtension,
|
||||||
{
|
{
|
||||||
/* Don't have hotplug devices to test with yet, QEMU 0.14 should */
|
/* Don't have hotplug devices to test with yet, QEMU 0.14 should */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Locate the correct resource configurator for this type of device */
|
/* Locate the correct resource configurator for this type of device */
|
||||||
|
|
|
@ -94,7 +94,7 @@ PciFdoIrpStartDevice(IN PIRP Irp,
|
||||||
/* These resources would only be for non-root FDOs, unhandled for now */
|
/* These resources would only be for non-root FDOs, unhandled for now */
|
||||||
ASSERT(Resources->Count == 1);
|
ASSERT(Resources->Count == 1);
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize the arbiter for this FDO */
|
/* Initialize the arbiter for this FDO */
|
||||||
|
@ -112,7 +112,7 @@ PciFdoIrpStartDevice(IN PIRP Irp,
|
||||||
/* Unhandled for now */
|
/* Unhandled for now */
|
||||||
ASSERT(Resources->Count == 1);
|
ASSERT(Resources->Count == 1);
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Commit the transition to the started state */
|
/* Commit the transition to the started state */
|
||||||
|
@ -137,7 +137,7 @@ PciFdoIrpRemoveDevice(IN PIRP Irp,
|
||||||
IN PPCI_FDO_EXTENSION DeviceExtension)
|
IN PPCI_FDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ PciFdoIrpCancelRemoveDevice(IN PIRP Irp,
|
||||||
IN PPCI_FDO_EXTENSION DeviceExtension)
|
IN PPCI_FDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,7 +159,7 @@ PciFdoIrpStopDevice(IN PIRP Irp,
|
||||||
IN PPCI_FDO_EXTENSION DeviceExtension)
|
IN PPCI_FDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -170,7 +170,7 @@ PciFdoIrpQueryStopDevice(IN PIRP Irp,
|
||||||
IN PPCI_FDO_EXTENSION DeviceExtension)
|
IN PPCI_FDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -181,7 +181,7 @@ PciFdoIrpCancelStopDevice(IN PIRP Irp,
|
||||||
IN PPCI_FDO_EXTENSION DeviceExtension)
|
IN PPCI_FDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -319,7 +319,7 @@ PciFdoIrpDeviceUsageNotification(IN PIRP Irp,
|
||||||
IN PPCI_FDO_EXTENSION DeviceExtension)
|
IN PPCI_FDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -330,7 +330,7 @@ PciFdoIrpSurpriseRemoval(IN PIRP Irp,
|
||||||
IN PPCI_FDO_EXTENSION DeviceExtension)
|
IN PPCI_FDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -341,7 +341,7 @@ PciFdoIrpQueryLegacyBusInformation(IN PIRP Irp,
|
||||||
IN PPCI_FDO_EXTENSION DeviceExtension)
|
IN PPCI_FDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -393,7 +393,7 @@ PciGetHotPlugParameters(IN PPCI_FDO_EXTENSION FdoExtension)
|
||||||
|
|
||||||
/* HotPlug PCI Support not yet implemented */
|
/* HotPlug PCI Support not yet implemented */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
} while (FALSE);
|
} while (FALSE);
|
||||||
|
|
||||||
/* Free the buffer and return */
|
/* Free the buffer and return */
|
||||||
|
@ -545,7 +545,7 @@ PciAddDevice(IN PDRIVER_OBJECT DriverObject,
|
||||||
{
|
{
|
||||||
/* Root PDO in ReactOS does not assign boot resources */
|
/* Root PDO in ReactOS does not assign boot resources */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
// while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
DPRINT1("Encountered during setup\n");
|
DPRINT1("Encountered during setup\n");
|
||||||
Descriptor = NULL;
|
Descriptor = NULL;
|
||||||
}
|
}
|
||||||
|
@ -554,7 +554,7 @@ PciAddDevice(IN PDRIVER_OBJECT DriverObject,
|
||||||
{
|
{
|
||||||
/* Root PDO in ReactOS does not assign boot resources */
|
/* Root PDO in ReactOS does not assign boot resources */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -679,7 +679,7 @@ PciGetDebugPorts(IN HANDLE DebugKey)
|
||||||
{
|
{
|
||||||
/* This function is not yet implemented */
|
/* This function is not yet implemented */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -690,7 +690,7 @@ PciDriverUnload(IN PDRIVER_OBJECT DriverObject)
|
||||||
/* This function is not yet implemented */
|
/* This function is not yet implemented */
|
||||||
DPRINT1("PCI: Unload\n");
|
DPRINT1("PCI: Unload\n");
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
|
|
@ -59,7 +59,8 @@ agpintrf_Constructor(IN PVOID DeviceExtension,
|
||||||
|
|
||||||
/* Not yet implemented */
|
/* Not yet implemented */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -49,7 +49,8 @@ busintrf_Constructor(IN PVOID DeviceExtension,
|
||||||
{
|
{
|
||||||
/* Not yet implemented */
|
/* Not yet implemented */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -34,7 +34,7 @@ NTAPI
|
||||||
Cardbus_SaveCurrentSettings(IN PPCI_CONFIGURATOR_CONTEXT Context)
|
Cardbus_SaveCurrentSettings(IN PPCI_CONFIGURATOR_CONTEXT Context)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -42,7 +42,7 @@ NTAPI
|
||||||
Cardbus_SaveLimits(IN PPCI_CONFIGURATOR_CONTEXT Context)
|
Cardbus_SaveLimits(IN PPCI_CONFIGURATOR_CONTEXT Context)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -50,7 +50,7 @@ NTAPI
|
||||||
Cardbus_MassageHeaderForLimitsDetermination(IN PPCI_CONFIGURATOR_CONTEXT Context)
|
Cardbus_MassageHeaderForLimitsDetermination(IN PPCI_CONFIGURATOR_CONTEXT Context)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -58,7 +58,7 @@ NTAPI
|
||||||
Cardbus_RestoreCurrent(IN PPCI_CONFIGURATOR_CONTEXT Context)
|
Cardbus_RestoreCurrent(IN PPCI_CONFIGURATOR_CONTEXT Context)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -68,7 +68,7 @@ Cardbus_GetAdditionalResourceDescriptors(IN PPCI_CONFIGURATOR_CONTEXT Context,
|
||||||
IN PIO_RESOURCE_DESCRIPTOR IoDescriptor)
|
IN PIO_RESOURCE_DESCRIPTOR IoDescriptor)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -77,7 +77,7 @@ Cardbus_ResetDevice(IN PPCI_PDO_EXTENSION PdoExtension,
|
||||||
IN PPCI_COMMON_HEADER PciData)
|
IN PPCI_COMMON_HEADER PciData)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -86,7 +86,7 @@ Cardbus_ChangeResourceSettings(IN PPCI_PDO_EXTENSION PdoExtension,
|
||||||
IN PPCI_COMMON_HEADER PciData)
|
IN PPCI_COMMON_HEADER PciData)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
@ -109,7 +109,8 @@ pcicbintrf_Constructor(IN PVOID DeviceExtension,
|
||||||
{
|
{
|
||||||
/* Not yet implemented */
|
/* Not yet implemented */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -51,7 +51,8 @@ devpresent_Constructor(IN PVOID DeviceExtension,
|
||||||
|
|
||||||
/* Not yet implemented */
|
/* Not yet implemented */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -49,7 +49,8 @@ lddintrf_Constructor(IN PVOID DeviceExtension,
|
||||||
{
|
{
|
||||||
/* Not yet implemented */
|
/* Not yet implemented */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -49,7 +49,8 @@ locintrf_Constructor(IN PVOID DeviceExtension,
|
||||||
{
|
{
|
||||||
/* Not yet implemented */
|
/* Not yet implemented */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -52,7 +52,8 @@ PciPmeInterfaceConstructor(IN PVOID DeviceExtension,
|
||||||
|
|
||||||
/* Not yet implemented */
|
/* Not yet implemented */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -54,7 +54,8 @@ routeintrf_Constructor(IN PVOID DeviceExtension,
|
||||||
|
|
||||||
/* Not yet implemented */
|
/* Not yet implemented */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
|
|
@ -66,7 +66,7 @@ PciReadWriteConfigSpace(IN PPCI_FDO_EXTENSION DeviceExtension,
|
||||||
{
|
{
|
||||||
/* Currently this driver only supports the legacy HAL interface */
|
/* Currently this driver only supports the legacy HAL interface */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -672,7 +672,7 @@ PPBridge_ResetDevice(IN PPCI_PDO_EXTENSION PdoExtension,
|
||||||
IN PPCI_COMMON_HEADER PciData)
|
IN PPCI_COMMON_HEADER PciData)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
|
|
@ -80,7 +80,7 @@ PciVerifierProfileChangeCallback(IN PVOID NotificationStructure,
|
||||||
{
|
{
|
||||||
/* This function is not yet implemented */
|
/* This function is not yet implemented */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ PciPdoWaitWake(IN PIRP Irp,
|
||||||
IN PPCI_PDO_EXTENSION DeviceExtension)
|
IN PPCI_PDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@ PciPdoIrpQueryPower(IN PIRP Irp,
|
||||||
IN PPCI_PDO_EXTENSION DeviceExtension)
|
IN PPCI_PDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -219,7 +219,7 @@ PciPdoIrpRemoveDevice(IN PIRP Irp,
|
||||||
IN PPCI_PDO_EXTENSION DeviceExtension)
|
IN PPCI_PDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -230,7 +230,7 @@ PciPdoIrpCancelRemoveDevice(IN PIRP Irp,
|
||||||
IN PPCI_PDO_EXTENSION DeviceExtension)
|
IN PPCI_PDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -241,7 +241,7 @@ PciPdoIrpStopDevice(IN PIRP Irp,
|
||||||
IN PPCI_PDO_EXTENSION DeviceExtension)
|
IN PPCI_PDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -252,7 +252,7 @@ PciPdoIrpQueryStopDevice(IN PIRP Irp,
|
||||||
IN PPCI_PDO_EXTENSION DeviceExtension)
|
IN PPCI_PDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -263,7 +263,7 @@ PciPdoIrpCancelStopDevice(IN PIRP Irp,
|
||||||
IN PPCI_PDO_EXTENSION DeviceExtension)
|
IN PPCI_PDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -274,7 +274,7 @@ PciPdoIrpQueryInterface(IN PIRP Irp,
|
||||||
IN PPCI_PDO_EXTENSION DeviceExtension)
|
IN PPCI_PDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -405,7 +405,7 @@ PciPdoIrpReadConfig(IN PIRP Irp,
|
||||||
IN PPCI_PDO_EXTENSION DeviceExtension)
|
IN PPCI_PDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -416,7 +416,7 @@ PciPdoIrpWriteConfig(IN PIRP Irp,
|
||||||
IN PPCI_PDO_EXTENSION DeviceExtension)
|
IN PPCI_PDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -437,7 +437,7 @@ PciPdoIrpDeviceUsageNotification(IN PIRP Irp,
|
||||||
IN PPCI_PDO_EXTENSION DeviceExtension)
|
IN PPCI_PDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -448,7 +448,7 @@ PciPdoIrpSurpriseRemoval(IN PIRP Irp,
|
||||||
IN PPCI_PDO_EXTENSION DeviceExtension)
|
IN PPCI_PDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -459,7 +459,7 @@ PciPdoIrpQueryLegacyBusInformation(IN PIRP Irp,
|
||||||
IN PPCI_PDO_EXTENSION DeviceExtension)
|
IN PPCI_PDO_EXTENSION DeviceExtension)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -192,7 +192,8 @@ PciSetPowerManagedDevicePowerState(IN PPCI_PDO_EXTENSION DeviceExtension,
|
||||||
{
|
{
|
||||||
/* We would normally re-assign resources after powerup */
|
/* We would normally re-assign resources after powerup */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
|
Status = STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -153,7 +153,7 @@ PciIsDatacenter(VOID)
|
||||||
{
|
{
|
||||||
/* This scenario shouldn't happen yet, since SetupDD isn't used */
|
/* This scenario shouldn't happen yet, since SetupDD isn't used */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return if this is Datacenter or not */
|
/* Return if this is Datacenter or not */
|
||||||
|
@ -758,7 +758,8 @@ PciIsDeviceOnDebugPath(IN PPCI_PDO_EXTENSION DeviceExtension)
|
||||||
|
|
||||||
/* eVb has not been able to test such devices yet */
|
/* eVb has not been able to test such devices yet */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
|
|
@ -218,7 +218,7 @@ IKsDevice_fnCheckIoCapability(
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
static IKsDeviceVtbl vt_IKsDevice =
|
static IKsDeviceVtbl vt_IKsDevice =
|
||||||
{
|
{
|
||||||
IKsDevice_fnQueryInterface,
|
IKsDevice_fnQueryInterface,
|
||||||
IKsDevice_fnAddRef,
|
IKsDevice_fnAddRef,
|
||||||
|
@ -631,12 +631,16 @@ IKsDevice_Create(
|
||||||
ASSERT(ObjectHeader);
|
ASSERT(ObjectHeader);
|
||||||
|
|
||||||
/* find a matching a create item */
|
/* find a matching a create item */
|
||||||
Status = FindMatchingCreateItem(&ObjectHeader->ItemList, IoStack->FileObject->FileName.Length, IoStack->FileObject->FileName.Buffer, &CreateItemEntry);
|
Status = FindMatchingCreateItem(&ObjectHeader->ItemList,
|
||||||
|
&IoStack->FileObject->FileName,
|
||||||
|
&CreateItemEntry);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* request to create a filter */
|
/* request to create a filter */
|
||||||
Status = FindMatchingCreateItem(&DeviceHeader->ItemList, IoStack->FileObject->FileName.Length, IoStack->FileObject->FileName.Buffer, &CreateItemEntry);
|
Status = FindMatchingCreateItem(&DeviceHeader->ItemList,
|
||||||
|
&IoStack->FileObject->FileName,
|
||||||
|
&CreateItemEntry);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NT_SUCCESS(Status))
|
if (NT_SUCCESS(Status))
|
||||||
|
|
|
@ -1175,7 +1175,7 @@ KsDefaultDeviceIoCompletion(
|
||||||
/* get current irp stack */
|
/* get current irp stack */
|
||||||
IoStack = IoGetCurrentIrpStackLocation(Irp);
|
IoStack = IoGetCurrentIrpStackLocation(Irp);
|
||||||
|
|
||||||
if (IoStack->Parameters.DeviceIoControl.IoControlCode != IOCTL_KS_PROPERTY &&
|
if (IoStack->Parameters.DeviceIoControl.IoControlCode != IOCTL_KS_PROPERTY &&
|
||||||
IoStack->Parameters.DeviceIoControl.IoControlCode != IOCTL_KS_METHOD &&
|
IoStack->Parameters.DeviceIoControl.IoControlCode != IOCTL_KS_METHOD &&
|
||||||
IoStack->Parameters.DeviceIoControl.IoControlCode != IOCTL_KS_PROPERTY)
|
IoStack->Parameters.DeviceIoControl.IoControlCode != IOCTL_KS_PROPERTY)
|
||||||
{
|
{
|
||||||
|
@ -1744,41 +1744,53 @@ KsCancelRoutine(
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
FindMatchingCreateItem(
|
FindMatchingCreateItem(
|
||||||
PLIST_ENTRY ListHead,
|
PLIST_ENTRY ListHead,
|
||||||
ULONG BufferSize,
|
PUNICODE_STRING String,
|
||||||
LPWSTR Buffer,
|
|
||||||
OUT PCREATE_ITEM_ENTRY *OutCreateItem)
|
OUT PCREATE_ITEM_ENTRY *OutCreateItem)
|
||||||
{
|
{
|
||||||
PLIST_ENTRY Entry;
|
PLIST_ENTRY Entry;
|
||||||
PCREATE_ITEM_ENTRY CreateItemEntry;
|
PCREATE_ITEM_ENTRY CreateItemEntry;
|
||||||
UNICODE_STRING RefString;
|
UNICODE_STRING RefString;
|
||||||
LPWSTR pStr;
|
LPWSTR pStr;
|
||||||
|
ULONG Count;
|
||||||
|
|
||||||
/* get terminator */
|
/* Copy the input string */
|
||||||
pStr = wcschr(Buffer, L'\\');
|
RefString = *String;
|
||||||
|
|
||||||
/* sanity check */
|
/* Check if the string starts with a backslash */
|
||||||
ASSERT(pStr != NULL);
|
if (String->Buffer[0] == L'\\')
|
||||||
|
|
||||||
if (pStr == Buffer)
|
|
||||||
{
|
{
|
||||||
// skip slash
|
/* Skip backslash */
|
||||||
RtlInitUnicodeString(&RefString, ++pStr);
|
RefString.Buffer++;
|
||||||
|
RefString.Length -= sizeof(WCHAR);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
/* get terminator */
|
||||||
|
pStr = String->Buffer;
|
||||||
|
Count = String->Length / sizeof(WCHAR);
|
||||||
|
while ((Count > 0) && (*pStr != L'\\'))
|
||||||
|
{
|
||||||
|
pStr++;
|
||||||
|
Count--;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* sanity check */
|
||||||
|
ASSERT(Count != 0);
|
||||||
|
|
||||||
// request is for pin / node / allocator
|
// request is for pin / node / allocator
|
||||||
RefString.Buffer = Buffer;
|
RefString.Length = (USHORT)((PCHAR)pStr - (PCHAR)String->Buffer);
|
||||||
RefString.Length = BufferSize = RefString.MaximumLength = ((ULONG_PTR)pStr - (ULONG_PTR)Buffer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* point to first entry */
|
/* point to first entry */
|
||||||
Entry = ListHead->Flink;
|
Entry = ListHead->Flink;
|
||||||
|
|
||||||
/* loop all device items */
|
/* loop all device items */
|
||||||
while(Entry != ListHead)
|
while (Entry != ListHead)
|
||||||
{
|
{
|
||||||
/* get create item entry */
|
/* get create item entry */
|
||||||
CreateItemEntry = (PCREATE_ITEM_ENTRY)CONTAINING_RECORD(Entry, CREATE_ITEM_ENTRY, Entry);
|
CreateItemEntry = (PCREATE_ITEM_ENTRY)CONTAINING_RECORD(Entry,
|
||||||
|
CREATE_ITEM_ENTRY,
|
||||||
|
Entry);
|
||||||
|
|
||||||
ASSERT(CreateItemEntry->CreateItem);
|
ASSERT(CreateItemEntry->CreateItem);
|
||||||
|
|
||||||
|
@ -1796,10 +1808,11 @@ FindMatchingCreateItem(
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
DPRINT("CreateItem %S Length %u Request %wZ %u\n", CreateItemEntry->CreateItem->ObjectClass.Buffer,
|
DPRINT("CreateItem %S Length %u Request %wZ %u\n",
|
||||||
CreateItemEntry->CreateItem->ObjectClass.Length,
|
CreateItemEntry->CreateItem->ObjectClass.Buffer,
|
||||||
&RefString,
|
CreateItemEntry->CreateItem->ObjectClass.Length,
|
||||||
RefString.Length);
|
&RefString,
|
||||||
|
RefString.Length);
|
||||||
|
|
||||||
if (CreateItemEntry->CreateItem->ObjectClass.Length > RefString.Length)
|
if (CreateItemEntry->CreateItem->ObjectClass.Length > RefString.Length)
|
||||||
{
|
{
|
||||||
|
@ -1809,7 +1822,9 @@ FindMatchingCreateItem(
|
||||||
}
|
}
|
||||||
|
|
||||||
/* now check if the object class is the same */
|
/* now check if the object class is the same */
|
||||||
if (!RtlCompareUnicodeString(&CreateItemEntry->CreateItem->ObjectClass, &RefString, TRUE))
|
if (!RtlCompareUnicodeString(&CreateItemEntry->CreateItem->ObjectClass,
|
||||||
|
&RefString,
|
||||||
|
TRUE))
|
||||||
{
|
{
|
||||||
/* found matching create item */
|
/* found matching create item */
|
||||||
*OutCreateItem = CreateItemEntry;
|
*OutCreateItem = CreateItemEntry;
|
||||||
|
@ -1865,12 +1880,16 @@ KspCreate(
|
||||||
ASSERT(ObjectHeader);
|
ASSERT(ObjectHeader);
|
||||||
|
|
||||||
/* find a matching a create item */
|
/* find a matching a create item */
|
||||||
Status = FindMatchingCreateItem(&ObjectHeader->ItemList, IoStack->FileObject->FileName.Length, IoStack->FileObject->FileName.Buffer, &CreateItemEntry);
|
Status = FindMatchingCreateItem(&ObjectHeader->ItemList,
|
||||||
|
&IoStack->FileObject->FileName,
|
||||||
|
&CreateItemEntry);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* request to create a filter */
|
/* request to create a filter */
|
||||||
Status = FindMatchingCreateItem(&DeviceHeader->ItemList, IoStack->FileObject->FileName.Length, IoStack->FileObject->FileName.Buffer, &CreateItemEntry);
|
Status = FindMatchingCreateItem(&DeviceHeader->ItemList,
|
||||||
|
&IoStack->FileObject->FileName,
|
||||||
|
&CreateItemEntry);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NT_SUCCESS(Status))
|
if (NT_SUCCESS(Status))
|
||||||
|
|
|
@ -106,8 +106,7 @@ KspPinPropertyHandler(
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
FindMatchingCreateItem(
|
FindMatchingCreateItem(
|
||||||
PLIST_ENTRY ListHead,
|
PLIST_ENTRY ListHead,
|
||||||
ULONG BufferSize,
|
PUNICODE_STRING String,
|
||||||
LPWSTR Buffer,
|
|
||||||
OUT PCREATE_ITEM_ENTRY *OutCreateItem);
|
OUT PCREATE_ITEM_ENTRY *OutCreateItem);
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
|
|
@ -773,7 +773,7 @@ RamdiskCreateDiskDevice(IN PRAMDISK_BUS_EXTENSION DeviceExtension,
|
||||||
|
|
||||||
FailCreate:
|
FailCreate:
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1068,7 +1068,7 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
|
||||||
DPRINT1("Get drive layout request\n");
|
DPRINT1("Get drive layout request\n");
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_DISK_GET_PARTITION_INFO:
|
case IOCTL_DISK_GET_PARTITION_INFO:
|
||||||
|
@ -1080,7 +1080,7 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
|
||||||
DPRINT1("Invalid request\n");
|
DPRINT1("Invalid request\n");
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1097,7 +1097,7 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
|
||||||
DPRINT1("Read/Write request\n");
|
DPRINT1("Read/Write request\n");
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -1107,7 +1107,7 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
|
||||||
DPRINT1("SCSI request\n");
|
DPRINT1("SCSI request\n");
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -1117,7 +1117,7 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
|
||||||
DPRINT1("Flush request\n");
|
DPRINT1("Flush request\n");
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -1127,7 +1127,7 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
|
||||||
DPRINT1("Invalid request: %lx\n", IoStackLocation->MajorFunction);
|
DPRINT1("Invalid request: %lx\n", IoStackLocation->MajorFunction);
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1481,8 +1481,7 @@ RamdiskDeviceControl(IN PDEVICE_OBJECT DeviceObject,
|
||||||
//
|
//
|
||||||
// We don't handle anything else yet
|
// We don't handle anything else yet
|
||||||
//
|
//
|
||||||
ASSERT(FALSE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
while (TRUE);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1498,7 +1497,7 @@ RamdiskDeviceControl(IN PDEVICE_OBJECT DeviceObject,
|
||||||
case IOCTL_CDROM_CHECK_VERIFY:
|
case IOCTL_CDROM_CHECK_VERIFY:
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_STORAGE_GET_MEDIA_TYPES:
|
case IOCTL_STORAGE_GET_MEDIA_TYPES:
|
||||||
|
@ -1664,67 +1663,67 @@ RamdiskDeviceControl(IN PDEVICE_OBJECT DeviceObject,
|
||||||
case IOCTL_DISK_GET_DRIVE_LAYOUT:
|
case IOCTL_DISK_GET_DRIVE_LAYOUT:
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_DISK_GET_LENGTH_INFO:
|
case IOCTL_DISK_GET_LENGTH_INFO:
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_DISK_IS_WRITABLE:
|
case IOCTL_DISK_IS_WRITABLE:
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_SCSI_MINIPORT:
|
case IOCTL_SCSI_MINIPORT:
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_STORAGE_QUERY_PROPERTY:
|
case IOCTL_STORAGE_QUERY_PROPERTY:
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_MOUNTDEV_QUERY_UNIQUE_ID:
|
case IOCTL_MOUNTDEV_QUERY_UNIQUE_ID:
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_MOUNTDEV_QUERY_STABLE_GUID:
|
case IOCTL_MOUNTDEV_QUERY_STABLE_GUID:
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS:
|
case IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS:
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_VOLUME_SET_GPT_ATTRIBUTES:
|
case IOCTL_VOLUME_SET_GPT_ATTRIBUTES:
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_VOLUME_GET_GPT_ATTRIBUTES:
|
case IOCTL_VOLUME_GET_GPT_ATTRIBUTES:
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_VOLUME_OFFLINE:
|
case IOCTL_VOLUME_OFFLINE:
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -1793,7 +1792,7 @@ RamdiskQueryDeviceRelations(IN DEVICE_RELATION_TYPE Type,
|
||||||
// FIXME: TODO
|
// FIXME: TODO
|
||||||
//
|
//
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -1980,7 +1979,7 @@ RamdiskDeleteDiskDevice(IN PDEVICE_OBJECT DeviceObject,
|
||||||
IN PIRP Irp)
|
IN PIRP Irp)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2148,37 +2147,37 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
case IRP_MN_START_DEVICE:
|
case IRP_MN_START_DEVICE:
|
||||||
|
|
||||||
DPRINT1("PnP IRP: %lx\n", Minor);
|
DPRINT1("PnP IRP: %lx\n", Minor);
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IRP_MN_QUERY_STOP_DEVICE:
|
case IRP_MN_QUERY_STOP_DEVICE:
|
||||||
|
|
||||||
DPRINT1("PnP IRP: %lx\n", Minor);
|
DPRINT1("PnP IRP: %lx\n", Minor);
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IRP_MN_CANCEL_STOP_DEVICE:
|
case IRP_MN_CANCEL_STOP_DEVICE:
|
||||||
|
|
||||||
DPRINT1("PnP IRP: %lx\n", Minor);
|
DPRINT1("PnP IRP: %lx\n", Minor);
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IRP_MN_STOP_DEVICE:
|
case IRP_MN_STOP_DEVICE:
|
||||||
|
|
||||||
DPRINT1("PnP IRP: %lx\n", Minor);
|
DPRINT1("PnP IRP: %lx\n", Minor);
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IRP_MN_QUERY_REMOVE_DEVICE:
|
case IRP_MN_QUERY_REMOVE_DEVICE:
|
||||||
|
|
||||||
DPRINT1("PnP IRP: %lx\n", Minor);
|
DPRINT1("PnP IRP: %lx\n", Minor);
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IRP_MN_CANCEL_REMOVE_DEVICE:
|
case IRP_MN_CANCEL_REMOVE_DEVICE:
|
||||||
|
|
||||||
DPRINT1("PnP IRP: %lx\n", Minor);
|
DPRINT1("PnP IRP: %lx\n", Minor);
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IRP_MN_REMOVE_DEVICE:
|
case IRP_MN_REMOVE_DEVICE:
|
||||||
|
@ -2213,7 +2212,7 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
case IRP_MN_SURPRISE_REMOVAL:
|
case IRP_MN_SURPRISE_REMOVAL:
|
||||||
|
|
||||||
DPRINT1("PnP IRP: %lx\n", Minor);
|
DPRINT1("PnP IRP: %lx\n", Minor);
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IRP_MN_QUERY_ID:
|
case IRP_MN_QUERY_ID:
|
||||||
|
@ -2224,7 +2223,7 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
if (DeviceExtension->Type == RamdiskDrive)
|
if (DeviceExtension->Type == RamdiskDrive)
|
||||||
{
|
{
|
||||||
DPRINT1("PnP IRP: %lx\n", Minor);
|
DPRINT1("PnP IRP: %lx\n", Minor);
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -2236,14 +2235,14 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
if (DeviceExtension->Type == RamdiskDrive)
|
if (DeviceExtension->Type == RamdiskDrive)
|
||||||
{
|
{
|
||||||
DPRINT1("PnP IRP: %lx\n", Minor);
|
DPRINT1("PnP IRP: %lx\n", Minor);
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IRP_MN_EJECT:
|
case IRP_MN_EJECT:
|
||||||
|
|
||||||
DPRINT1("PnP IRP: %lx\n", Minor);
|
DPRINT1("PnP IRP: %lx\n", Minor);
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IRP_MN_QUERY_DEVICE_TEXT:
|
case IRP_MN_QUERY_DEVICE_TEXT:
|
||||||
|
@ -2254,7 +2253,7 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
if (DeviceExtension->Type == RamdiskDrive)
|
if (DeviceExtension->Type == RamdiskDrive)
|
||||||
{
|
{
|
||||||
DPRINT1("PnP IRP: %lx\n", Minor);
|
DPRINT1("PnP IRP: %lx\n", Minor);
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -2278,7 +2277,7 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
if (DeviceExtension->Type == RamdiskDrive)
|
if (DeviceExtension->Type == RamdiskDrive)
|
||||||
{
|
{
|
||||||
DPRINT1("PnP IRP: %lx\n", Minor);
|
DPRINT1("PnP IRP: %lx\n", Minor);
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/*
|
||||||
* PROJECT: ReactOS Universal Serial Bus Hub Driver
|
* PROJECT: ReactOS Universal Serial Bus Hub Driver
|
||||||
* LICENSE: GPL - See COPYING in the top level directory
|
* LICENSE: GPL - See COPYING in the top level directory
|
||||||
* FILE: drivers/usb/usbhub/fdo.c
|
* FILE: drivers/usb/usbhub/fdo.c
|
||||||
|
|
|
@ -814,7 +814,7 @@ HalpDispatchWmi(IN PDEVICE_OBJECT DeviceObject,
|
||||||
IN PIRP Irp)
|
IN PIRP Irp)
|
||||||
{
|
{
|
||||||
DPRINT1("HAL: PnP Driver WMI!\n");
|
DPRINT1("HAL: PnP Driver WMI!\n");
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -216,6 +216,8 @@ HalpTrap0DHandler(IN PKTRAP_FRAME TrapFrame)
|
||||||
/* Strange, it isn't! This can happen during NMI */
|
/* Strange, it isn't! This can happen during NMI */
|
||||||
DPRINT1("HAL: Trap0D while not in V86 mode\n");
|
DPRINT1("HAL: Trap0D while not in V86 mode\n");
|
||||||
KiDumpTrapFrame(TrapFrame);
|
KiDumpTrapFrame(TrapFrame);
|
||||||
|
|
||||||
|
ASSERT(FALSE);
|
||||||
while (TRUE);
|
while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -229,7 +229,7 @@ HalHandleNMI(IN PVOID NmiInfo)
|
||||||
//
|
//
|
||||||
// Don't recurse
|
// Don't recurse
|
||||||
//
|
//
|
||||||
if (HalpNMIInProgress++) while (TRUE);
|
if (HalpNMIInProgress++) ASSERT(FALSE); // while (TRUE);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Read the system control register B
|
// Read the system control register B
|
||||||
|
|
|
@ -182,7 +182,8 @@ KeTryToAcquireQueuedSpinLockRaiseToSynch(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber,
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
ASSERT(FALSE); // FIXME: Unused
|
ASSERT(FALSE); // FIXME: Unused
|
||||||
while (TRUE);
|
// while (TRUE);
|
||||||
|
return FALSE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Simply raise to synch */
|
/* Simply raise to synch */
|
||||||
|
@ -206,7 +207,8 @@ KeTryToAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber,
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
ASSERT(FALSE); // FIXME: Unused
|
ASSERT(FALSE); // FIXME: Unused
|
||||||
while (TRUE);
|
// while (TRUE);
|
||||||
|
return FALSE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Simply raise to dispatch */
|
/* Simply raise to dispatch */
|
||||||
|
|
|
@ -26,7 +26,7 @@ HalpcGetCmosData(IN PBUS_HANDLER BusHandler,
|
||||||
IN ULONG Length)
|
IN ULONG Length)
|
||||||
{
|
{
|
||||||
DPRINT1("CMOS GetData\n");
|
DPRINT1("CMOS GetData\n");
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ HalpcSetCmosData(IN PBUS_HANDLER BusHandler,
|
||||||
IN ULONG Length)
|
IN ULONG Length)
|
||||||
{
|
{
|
||||||
DPRINT1("CMOS SetData\n");
|
DPRINT1("CMOS SetData\n");
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -537,7 +537,7 @@ HalpPCIPin2ISALine(IN PBUS_HANDLER BusHandler,
|
||||||
IN PPCI_COMMON_CONFIG PciData)
|
IN PPCI_COMMON_CONFIG PciData)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -549,7 +549,7 @@ HalpPCIISALine2Pin(IN PBUS_HANDLER BusHandler,
|
||||||
IN PPCI_COMMON_CONFIG PciOldData)
|
IN PPCI_COMMON_CONFIG PciOldData)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
@ -643,7 +643,8 @@ HalpRegisterPciDebuggingDeviceInfo(VOID)
|
||||||
/* FIXME: TODO */
|
/* FIXME: TODO */
|
||||||
DPRINT1("You have implemented the KD routines for searching PCI debugger"
|
DPRINT1("You have implemented the KD routines for searching PCI debugger"
|
||||||
"devices, but you have forgotten to implement this routine\n");
|
"devices, but you have forgotten to implement this routine\n");
|
||||||
while (TRUE);
|
UNIMPLEMENTED;
|
||||||
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ULONG NTAPI
|
static ULONG NTAPI
|
||||||
|
@ -678,7 +679,7 @@ HalpAdjustPCIResourceList(IN PBUS_HANDLER BusHandler,
|
||||||
{
|
{
|
||||||
/* /PCILOCK is not yet supported */
|
/* /PCILOCK is not yet supported */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/* Now create the correct resource list based on the supported bus ranges */
|
/* Now create the correct resource list based on the supported bus ranges */
|
||||||
|
|
|
@ -812,7 +812,7 @@ HalpDispatchWmi(IN PDEVICE_OBJECT DeviceObject,
|
||||||
IN PIRP Irp)
|
IN PIRP Irp)
|
||||||
{
|
{
|
||||||
DPRINT1("HAL: PnP Driver WMI!\n");
|
DPRINT1("HAL: PnP Driver WMI!\n");
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -192,6 +192,39 @@ extern "C" {
|
||||||
#define SAM_HOURS_PER_WEEK (24 * SAM_DAYS_PER_WEEK)
|
#define SAM_HOURS_PER_WEEK (24 * SAM_DAYS_PER_WEEK)
|
||||||
#define SAM_MINUTES_PER_WEEK (60 * SAM_HOURS_PER_WEEK)
|
#define SAM_MINUTES_PER_WEEK (60 * SAM_HOURS_PER_WEEK)
|
||||||
|
|
||||||
|
/* Flags used in USER_ALL_INFORMATION.WhichField */
|
||||||
|
#define USER_ALL_USERNAME 0x00000001
|
||||||
|
#define USER_ALL_FULLNAME 0x00000002
|
||||||
|
#define USER_ALL_USERID 0x00000004
|
||||||
|
#define USER_ALL_PRIMARYGROUPID 0x00000008
|
||||||
|
#define USER_ALL_ADMINCOMMENT 0x00000010
|
||||||
|
#define USER_ALL_USERCOMMENT 0x00000020
|
||||||
|
#define USER_ALL_HOMEDIRECTORY 0x00000040
|
||||||
|
#define USER_ALL_HOMEDIRECTORYDRIVE 0x00000080
|
||||||
|
#define USER_ALL_SCRIPTPATH 0x00000100
|
||||||
|
#define USER_ALL_PROFILEPATH 0x00000200
|
||||||
|
#define USER_ALL_WORKSTATIONS 0x00000400
|
||||||
|
#define USER_ALL_LASTLOGON 0x00000800
|
||||||
|
#define USER_ALL_LASTLOGOFF 0x00001000
|
||||||
|
#define USER_ALL_LOGONHOURS 0x00002000
|
||||||
|
#define USER_ALL_BADPASSWORDCOUNT 0x00004000
|
||||||
|
#define USER_ALL_LOGONCOUNT 0x00008000
|
||||||
|
#define USER_ALL_PASSWORDCANCHANGE 0x00010000
|
||||||
|
#define USER_ALL_PASSWORDMUSTCHANGE 0x00020000
|
||||||
|
#define USER_ALL_PASSWORDLASTSET 0x00040000
|
||||||
|
#define USER_ALL_ACCOUNTEXPIRES 0x00080000
|
||||||
|
#define USER_ALL_USERACCOUNTCONTROL 0x00100000
|
||||||
|
#define USER_ALL_PARAMETERS 0x00200000
|
||||||
|
#define USER_ALL_COUNTRYCODE 0x00400000
|
||||||
|
#define USER_ALL_CODEPAGE 0x00800000
|
||||||
|
#define USER_ALL_NTPASSWORDPRESENT 0x01000000
|
||||||
|
#define USER_ALL_LMPASSWORDPRESENT 0x02000000
|
||||||
|
#define USER_ALL_PRIVATEDATA 0x04000000
|
||||||
|
#define USER_ALL_PASSWORDEXPIRED 0x08000000
|
||||||
|
#define USER_ALL_SECURITYDESCRIPTOR 0x10000000
|
||||||
|
#define USER_ALL_OWFPASSWORD 0x20000000
|
||||||
|
#define USER_ALL_UNDEFINED_MASK 0xC0000000
|
||||||
|
|
||||||
|
|
||||||
typedef PVOID SAM_HANDLE, *PSAM_HANDLE;
|
typedef PVOID SAM_HANDLE, *PSAM_HANDLE;
|
||||||
typedef ULONG SAM_ENUMERATE_HANDLE, *PSAM_ENUMERATE_HANDLE;
|
typedef ULONG SAM_ENUMERATE_HANDLE, *PSAM_ENUMERATE_HANDLE;
|
||||||
|
@ -345,6 +378,12 @@ typedef struct _LOGON_HOURS
|
||||||
PUCHAR LogonHours;
|
PUCHAR LogonHours;
|
||||||
} LOGON_HOURS, *PLOGON_HOURS;
|
} LOGON_HOURS, *PLOGON_HOURS;
|
||||||
|
|
||||||
|
typedef struct _SR_SECURITY_DESCRIPTOR
|
||||||
|
{
|
||||||
|
ULONG Length;
|
||||||
|
PUCHAR SecurityDescriptor;
|
||||||
|
} SR_SECURITY_DESCRIPTOR, *PSR_SECURITY_DESCRIPTOR;
|
||||||
|
|
||||||
typedef enum _USER_INFORMATION_CLASS
|
typedef enum _USER_INFORMATION_CLASS
|
||||||
{
|
{
|
||||||
UserGeneralInformation = 1,
|
UserGeneralInformation = 1,
|
||||||
|
@ -506,6 +545,55 @@ typedef struct _USER_CONTROL_INFORMATION
|
||||||
ULONG UserAccountControl;
|
ULONG UserAccountControl;
|
||||||
} USER_CONTROL_INFORMATION, *PUSER_CONTROL_INFORMATION;
|
} USER_CONTROL_INFORMATION, *PUSER_CONTROL_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _USER_EXPIRES_INFORMATION
|
||||||
|
{
|
||||||
|
LARGE_INTEGER AccountExpires;
|
||||||
|
} USER_EXPIRES_INFORMATION, *PUSER_EXPIRES_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _USER_PARAMETERS_INFORMATION
|
||||||
|
{
|
||||||
|
UNICODE_STRING Parameters;
|
||||||
|
} USER_PARAMETERS_INFORMATION, *PUSER_PARAMETERS_INFORMATION;
|
||||||
|
|
||||||
|
#include "pshpack4.h"
|
||||||
|
typedef struct _USER_ALL_INFORMATION
|
||||||
|
{
|
||||||
|
LARGE_INTEGER LastLogon;
|
||||||
|
LARGE_INTEGER LastLogoff;
|
||||||
|
LARGE_INTEGER PasswordLastSet;
|
||||||
|
LARGE_INTEGER AccountExpires;
|
||||||
|
LARGE_INTEGER PasswordCanChange;
|
||||||
|
LARGE_INTEGER PasswordMustChange;
|
||||||
|
UNICODE_STRING UserName;
|
||||||
|
UNICODE_STRING FullName;
|
||||||
|
UNICODE_STRING HomeDirectory;
|
||||||
|
UNICODE_STRING HomeDirectoryDrive;
|
||||||
|
UNICODE_STRING ScriptPath;
|
||||||
|
UNICODE_STRING ProfilePath;
|
||||||
|
UNICODE_STRING AdminComment;
|
||||||
|
UNICODE_STRING WorkStations;
|
||||||
|
UNICODE_STRING UserComment;
|
||||||
|
UNICODE_STRING Parameters;
|
||||||
|
UNICODE_STRING LmPassword;
|
||||||
|
UNICODE_STRING NtPassword;
|
||||||
|
UNICODE_STRING PrivateData;
|
||||||
|
SR_SECURITY_DESCRIPTOR SecurityDescriptor;
|
||||||
|
ULONG UserId;
|
||||||
|
ULONG PrimaryGroupId;
|
||||||
|
ULONG UserAccountControl;
|
||||||
|
ULONG WhichFields;
|
||||||
|
LOGON_HOURS LogonHours;
|
||||||
|
USHORT BadPasswordCount;
|
||||||
|
USHORT LogonCount;
|
||||||
|
USHORT CountryCode;
|
||||||
|
USHORT CodePage;
|
||||||
|
BOOLEAN LmPasswordPresent;
|
||||||
|
BOOLEAN NtPasswordPresent;
|
||||||
|
BOOLEAN PasswordExpired;
|
||||||
|
BOOLEAN PrivateDataSensitive;
|
||||||
|
} USER_ALL_INFORMATION, *PUSER_ALL_INFORMATION;
|
||||||
|
#include "poppack.h"
|
||||||
|
|
||||||
|
|
||||||
#define SAM_SID_COMPATIBILITY_ALL 0
|
#define SAM_SID_COMPATIBILITY_ALL 0
|
||||||
#define SAM_SID_COMPATIBILITY_LAX 1
|
#define SAM_SID_COMPATIBILITY_LAX 1
|
||||||
|
@ -535,7 +623,7 @@ SamCloseHandle(IN SAM_HANDLE SamHandle);
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
SamConnect(IN OUT PUNICODE_STRING ServerName,
|
SamConnect(IN OUT PUNICODE_STRING ServerName OPTIONAL,
|
||||||
OUT PSAM_HANDLE ServerHandle,
|
OUT PSAM_HANDLE ServerHandle,
|
||||||
IN ACCESS_MASK DesiredAccess,
|
IN ACCESS_MASK DesiredAccess,
|
||||||
IN POBJECT_ATTRIBUTES ObjectAttributes);
|
IN POBJECT_ATTRIBUTES ObjectAttributes);
|
||||||
|
@ -667,7 +755,7 @@ SamLookupIdsInDomain(IN SAM_HANDLE DomainHandle,
|
||||||
IN ULONG Count,
|
IN ULONG Count,
|
||||||
IN PULONG RelativeIds,
|
IN PULONG RelativeIds,
|
||||||
OUT PUNICODE_STRING *Names,
|
OUT PUNICODE_STRING *Names,
|
||||||
OUT PSID_NAME_USE *Use);
|
OUT PSID_NAME_USE *Use OPTIONAL);
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
|
|
|
@ -459,12 +459,12 @@ typedef struct _USER_CONTROL_INFORMATION
|
||||||
{
|
{
|
||||||
unsigned long UserAccountControl;
|
unsigned long UserAccountControl;
|
||||||
} USER_CONTROL_INFORMATION, *PUSER_CONTROL_INFORMATION;
|
} USER_CONTROL_INFORMATION, *PUSER_CONTROL_INFORMATION;
|
||||||
cpp_quote("#endif")
|
|
||||||
|
|
||||||
typedef struct _USER_EXPIRES_INFORMATION
|
typedef struct _USER_EXPIRES_INFORMATION
|
||||||
{
|
{
|
||||||
OLD_LARGE_INTEGER AccountExpires;
|
OLD_LARGE_INTEGER AccountExpires;
|
||||||
} USER_EXPIRES_INFORMATION, *PUSER_EXPIRES_INFORMATION;
|
} USER_EXPIRES_INFORMATION, *PUSER_EXPIRES_INFORMATION;
|
||||||
|
cpp_quote("#endif")
|
||||||
|
|
||||||
typedef struct _SAMPR_LOGON_HOURS
|
typedef struct _SAMPR_LOGON_HOURS
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,947 +0,0 @@
|
||||||
|
|
||||||
/* Pointer size */
|
|
||||||
SizeofPointer = 0x4
|
|
||||||
|
|
||||||
/* Breakpoints */
|
|
||||||
BREAKPOINT_BREAK = 0x0
|
|
||||||
BREAKPOINT_PRINT = 0x1
|
|
||||||
BREAKPOINT_PROMPT = 0x2
|
|
||||||
BREAKPOINT_LOAD_SYMBOLS = 0x3
|
|
||||||
BREAKPOINT_UNLOAD_SYMBOLS = 0x4
|
|
||||||
BREAKPOINT_COMMAND_STRING = 0x5
|
|
||||||
|
|
||||||
/* Context Frame Flags */
|
|
||||||
CONTEXT_FULL = 0x10007
|
|
||||||
CONTEXT_CONTROL = 0x10001
|
|
||||||
CONTEXT_INTEGER = 0x10002
|
|
||||||
CONTEXT_SEGMENTS = 0x10004
|
|
||||||
CONTEXT_FLOATING_POINT = 0x10008
|
|
||||||
CONTEXT_DEBUG_REGISTERS = 0x10010
|
|
||||||
|
|
||||||
/* Exception flags */
|
|
||||||
EXCEPTION_NONCONTINUABLE = 0x1
|
|
||||||
EXCEPTION_UNWINDING = 0x2
|
|
||||||
EXCEPTION_EXIT_UNWIND = 0x4
|
|
||||||
EXCEPTION_STACK_INVALID = 0x8
|
|
||||||
EXCEPTION_NESTED_CALL = 0x10
|
|
||||||
EXCEPTION_TARGET_UNWIND = 0x20
|
|
||||||
EXCEPTION_COLLIDED_UNWIND = 0x20
|
|
||||||
EXCEPTION_UNWIND = 0x6
|
|
||||||
EXCEPTION_EXECUTE_HANDLER = 0x1
|
|
||||||
EXCEPTION_CONTINUE_SEARCH = 0x0
|
|
||||||
EXCEPTION_CONTINUE_EXECUTION = 0xffffffff
|
|
||||||
EXCEPTION_CHAIN_END = 0xffffffff
|
|
||||||
|
|
||||||
/* Exception types */
|
|
||||||
ExceptionContinueExecution = 0x0
|
|
||||||
ExceptionContinueSearch = 0x1
|
|
||||||
ExceptionNestedException = 0x2
|
|
||||||
ExceptionCollidedUnwind = 0x3
|
|
||||||
|
|
||||||
/* Lock Queue */
|
|
||||||
LOCK_QUEUE_WAIT = 0x1
|
|
||||||
LOCK_QUEUE_OWNER = 0x2
|
|
||||||
LockQueueDispatcherLock = 0x0
|
|
||||||
|
|
||||||
/* Process states */
|
|
||||||
ProcessInMemory = 0x0
|
|
||||||
ProcessOutOfMemory = 0x1
|
|
||||||
ProcessInTransition = 0x2
|
|
||||||
|
|
||||||
/* Processor mode */
|
|
||||||
KernelMode = 0x0
|
|
||||||
UserMode = 0x1
|
|
||||||
|
|
||||||
/* Status codes */
|
|
||||||
STATUS_ACCESS_VIOLATION = 0xc0000005
|
|
||||||
STATUS_ASSERTION_FAILURE = 0xc0000420
|
|
||||||
STATUS_ARRAY_BOUNDS_EXCEEDED = 0xc000008c
|
|
||||||
STATUS_BAD_COMPRESSION_BUFFER = 0xc0000242
|
|
||||||
STATUS_BREAKPOINT = 0x80000003
|
|
||||||
STATUS_CALLBACK_POP_STACK = 0xc0000423
|
|
||||||
STATUS_DATATYPE_MISALIGNMENT = 0x80000002
|
|
||||||
STATUS_FLOAT_DENORMAL_OPERAND = 0xc000008d
|
|
||||||
STATUS_FLOAT_DIVIDE_BY_ZERO = 0xc000008e
|
|
||||||
STATUS_FLOAT_INEXACT_RESULT = 0xc000008f
|
|
||||||
STATUS_FLOAT_INVALID_OPERATION = 0xc0000090
|
|
||||||
STATUS_FLOAT_OVERFLOW = 0xc0000091
|
|
||||||
STATUS_FLOAT_STACK_CHECK = 0xc0000092
|
|
||||||
STATUS_FLOAT_UNDERFLOW = 0xc0000093
|
|
||||||
STATUS_FLOAT_MULTIPLE_FAULTS = 0xc00002b4
|
|
||||||
STATUS_FLOAT_MULTIPLE_TRAPS = 0xc00002b5
|
|
||||||
STATUS_GUARD_PAGE_VIOLATION = 0x80000001
|
|
||||||
STATUS_ILLEGAL_FLOAT_CONTEXT = 0xc000014a
|
|
||||||
STATUS_ILLEGAL_INSTRUCTION = 0xc000001d
|
|
||||||
STATUS_INSTRUCTION_MISALIGNMENT = 0xc00000aa
|
|
||||||
STATUS_INVALID_HANDLE = 0xc0000008
|
|
||||||
STATUS_INVALID_LOCK_SEQUENCE = 0xc000001e
|
|
||||||
STATUS_INVALID_OWNER = 0xc000005a
|
|
||||||
STATUS_INVALID_PARAMETER = 0xc000000d
|
|
||||||
STATUS_INVALID_PARAMETER_1 = 0xc00000ef
|
|
||||||
STATUS_INVALID_SYSTEM_SERVICE = 0xc000001c
|
|
||||||
STATUS_INTEGER_DIVIDE_BY_ZERO = 0xc0000094
|
|
||||||
STATUS_INTEGER_OVERFLOW = 0xc0000095
|
|
||||||
STATUS_IN_PAGE_ERROR = 0xc0000006
|
|
||||||
STATUS_KERNEL_APC = 0x100
|
|
||||||
STATUS_LONGJUMP = 0x80000026
|
|
||||||
STATUS_NO_CALLBACK_ACTIVE = 0xc0000258
|
|
||||||
STATUS_NO_EVENT_PAIR = 0xc000014e
|
|
||||||
STATUS_PRIVILEGED_INSTRUCTION = 0xc0000096
|
|
||||||
STATUS_SINGLE_STEP = 0x80000004
|
|
||||||
STATUS_STACK_BUFFER_OVERRUN = 0xc0000409
|
|
||||||
STATUS_STACK_OVERFLOW = 0xc00000fd
|
|
||||||
STATUS_SUCCESS = 0x0
|
|
||||||
STATUS_THREAD_IS_TERMINATING = 0xc000004b
|
|
||||||
STATUS_TIMEOUT = 0x102
|
|
||||||
STATUS_UNWIND = 0xc0000027
|
|
||||||
STATUS_UNWIND_CONSOLIDATE = 0x80000029
|
|
||||||
STATUS_USER_APC = 0xc0
|
|
||||||
STATUS_WAKE_SYSTEM_DEBUGGER = 0x80000007
|
|
||||||
|
|
||||||
/* TLS defines */
|
|
||||||
TLS_MINIMUM_AVAILABLE = 0x40
|
|
||||||
TLS_EXPANSION_SLOTS = 0x400
|
|
||||||
|
|
||||||
/* Thread states */
|
|
||||||
Initialized = 0x0
|
|
||||||
Ready = 0x1
|
|
||||||
Running = 0x2
|
|
||||||
Standby = 0x3
|
|
||||||
Terminated = 0x4
|
|
||||||
Waiting = 0x5
|
|
||||||
|
|
||||||
/* Wait type / reason */
|
|
||||||
WrExecutive = 0x7
|
|
||||||
WrMutex = 0x1d
|
|
||||||
WrDispatchInt = 0x1f
|
|
||||||
WrQuantumEnd = 0x1e
|
|
||||||
WrEventPair = 0xe
|
|
||||||
WaitAny = 0x1
|
|
||||||
WaitAll = 0x0
|
|
||||||
|
|
||||||
/* Interrupt object types */
|
|
||||||
InLevelSensitive = 0x0
|
|
||||||
InLatched = 0x1
|
|
||||||
|
|
||||||
/* Bug Check Codes */
|
|
||||||
APC_INDEX_MISMATCH = 0x1
|
|
||||||
INVALID_AFFINITY_SET = 0x3
|
|
||||||
INVALID_DATA_ACCESS_TRAP = 0x4
|
|
||||||
IRQL_NOT_GREATER_OR_EQUAL = 0x9
|
|
||||||
IRQL_NOT_LESS_OR_EQUAL = 0xa
|
|
||||||
NO_USER_MODE_CONTEXT = 0xe
|
|
||||||
SPIN_LOCK_ALREADY_OWNED = 0xf
|
|
||||||
SPIN_LOCK_NOT_OWNED = 0x10
|
|
||||||
THREAD_NOT_MUTEX_OWNER = 0x11
|
|
||||||
TRAP_CAUSE_UNKNOWN = 0x12
|
|
||||||
KMODE_EXCEPTION_NOT_HANDLED = 0x1e
|
|
||||||
KERNEL_APC_PENDING_DURING_EXIT = 0x20
|
|
||||||
PANIC_STACK_SWITCH = 0x2b
|
|
||||||
DATA_BUS_ERROR = 0x2e
|
|
||||||
INSTRUCTION_BUS_ERROR = 0x2f
|
|
||||||
SYSTEM_EXIT_OWNED_MUTEX = 0x39
|
|
||||||
PAGE_FAULT_WITH_INTERRUPTS_OFF = 0x49
|
|
||||||
IRQL_GT_ZERO_AT_SYSTEM_SERVICE = 0x4a
|
|
||||||
DATA_COHERENCY_EXCEPTION = 0x55
|
|
||||||
INSTRUCTION_COHERENCY_EXCEPTION = 0x56
|
|
||||||
HAL1_INITIALIZATION_FAILED = 0x61
|
|
||||||
UNEXPECTED_KERNEL_MODE_TRAP = 0x7f
|
|
||||||
NMI_HARDWARE_FAILURE = 0x80
|
|
||||||
SPIN_LOCK_INIT_FAILURE = 0x81
|
|
||||||
ATTEMPTED_SWITCH_FROM_DPC = 0xb8
|
|
||||||
|
|
||||||
/* IRQL */
|
|
||||||
PASSIVE_LEVEL = 0x0
|
|
||||||
APC_LEVEL = 0x1
|
|
||||||
DISPATCH_LEVEL = 0x2
|
|
||||||
CLOCK1_LEVEL = 0x1c
|
|
||||||
CLOCK2_LEVEL = 0x1c
|
|
||||||
IPI_LEVEL = 0x1d
|
|
||||||
POWER_LEVEL = 0x1e
|
|
||||||
PROFILE_LEVEL = 0x1b
|
|
||||||
HIGH_LEVEL = 0x1f
|
|
||||||
#ifdef NT_UP
|
|
||||||
SYNCH_LEVEL = 0x2
|
|
||||||
#else
|
|
||||||
SYNCH_LEVEL = 0x1b
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Stack sizes */
|
|
||||||
KERNEL_STACK_SIZE = 0x3000
|
|
||||||
KERNEL_LARGE_STACK_SIZE = 0xf000
|
|
||||||
KERNEL_LARGE_STACK_COMMIT = 0x3000
|
|
||||||
|
|
||||||
/* Miscellaneous Definitions */
|
|
||||||
LOW_REALTIME_PRIORITY = 0x10
|
|
||||||
CLOCK_QUANTUM_DECREMENT = 0x3
|
|
||||||
WAIT_QUANTUM_DECREMENT = 0x1
|
|
||||||
MAXIMUM_PROCESSORS = 0x20
|
|
||||||
INITIAL_STALL_COUNT = 0x64
|
|
||||||
KI_EXCEPTION_ACCESS_VIOLATION = 0x10000004
|
|
||||||
Executive = 0x0
|
|
||||||
FALSE = 0x0
|
|
||||||
TRUE = 0x1
|
|
||||||
DBG_STATUS_CONTROL_C = 0x1
|
|
||||||
USER_SHARED_DATA = 0xffdf0000
|
|
||||||
PAGE_SIZE = 0x1000
|
|
||||||
MAXIMUM_IDTVECTOR = 0xff
|
|
||||||
PRIMARY_VECTOR_BASE = 0x30
|
|
||||||
RPL_MASK = 0x3
|
|
||||||
MODE_MASK = 0x1
|
|
||||||
NUMBER_SERVICE_TABLES = 0x2
|
|
||||||
SERVICE_NUMBER_MASK = 0xfff
|
|
||||||
SERVICE_TABLE_SHIFT = 0x8
|
|
||||||
SERVICE_TABLE_MASK = 0x10
|
|
||||||
SERVICE_TABLE_TEST = 0x10
|
|
||||||
|
|
||||||
/* KAPC */
|
|
||||||
ApType = 0x0
|
|
||||||
ApSize = 0x2
|
|
||||||
ApThread = 0x8
|
|
||||||
ApApcListEntry = 0xc
|
|
||||||
ApKernelRoutine = 0x14
|
|
||||||
ApRundownRoutine = 0x18
|
|
||||||
ApNormalRoutine = 0x1c
|
|
||||||
ApNormalContext = 0x20
|
|
||||||
ApSystemArgument1 = 0x24
|
|
||||||
ApSystemArgument2 = 0x28
|
|
||||||
ApApcStateIndex = 0x2c
|
|
||||||
ApApcMode = 0x2d
|
|
||||||
ApInserted = 0x2e
|
|
||||||
ApcObjectLength = 0x30
|
|
||||||
|
|
||||||
/* KAPC_STATE */
|
|
||||||
AsApcListHead = 0x0
|
|
||||||
AsProcess = 0x10
|
|
||||||
AsKernelApcInProgress = 0x14
|
|
||||||
AsKernelApcPending = 0x15
|
|
||||||
AsUserApcPending = 0x16
|
|
||||||
|
|
||||||
/* CLIENT_ID */
|
|
||||||
CidUniqueProcess = 0x0
|
|
||||||
CidUniqueThread = 0x4
|
|
||||||
|
|
||||||
/* RTL_CRITICAL_SECTION */
|
|
||||||
CsDebugInfo = 0x0
|
|
||||||
CsLockCount = 0x4
|
|
||||||
CsRecursionCount = 0x8
|
|
||||||
CsOwningThread = 0xc
|
|
||||||
CsLockSemaphore = 0x10
|
|
||||||
CsSpinCount = 0x14
|
|
||||||
|
|
||||||
/* RTL_CRITICAL_SECTION_DEBUG */
|
|
||||||
CsType = 0x0
|
|
||||||
CsCreatorBackTraceIndex = 0x2
|
|
||||||
CsCriticalSection = 0x4
|
|
||||||
CsProcessLocksList = 0x8
|
|
||||||
CsEntryCount = 0x10
|
|
||||||
CsContentionCount = 0x14
|
|
||||||
|
|
||||||
/* KDEVICE_QUEUE_ENTRY */
|
|
||||||
DeDeviceListEntry = 0x0
|
|
||||||
DeSortKey = 0x8
|
|
||||||
DeInserted = 0xc
|
|
||||||
DeviceQueueEntryLength = 0x10
|
|
||||||
|
|
||||||
/* KDPC */
|
|
||||||
DpType = 0x0
|
|
||||||
DpImportance = 0x1
|
|
||||||
DpNumber = 0x2
|
|
||||||
DpDpcListEntry = 0x4
|
|
||||||
DpDeferredRoutine = 0xc
|
|
||||||
DpDeferredContext = 0x10
|
|
||||||
DpSystemArgument1 = 0x14
|
|
||||||
DpSystemArgument2 = 0x18
|
|
||||||
DpDpcData = 0x1c
|
|
||||||
DpcObjectLength = 0x20
|
|
||||||
|
|
||||||
/* KDEVICE_QUEUE */
|
|
||||||
DvType = 0x0
|
|
||||||
DvSize = 0x2
|
|
||||||
DvDeviceListHead = 0x4
|
|
||||||
DvSpinLock = 0xc
|
|
||||||
DvBusy = 0x10
|
|
||||||
DeviceQueueObjectLength = 0x14
|
|
||||||
|
|
||||||
/* EXCEPTION_RECORD */
|
|
||||||
ErExceptionCode = 0x0
|
|
||||||
ErExceptionFlags = 0x4
|
|
||||||
ErExceptionRecord = 0x8
|
|
||||||
ErExceptionAddress = 0xc
|
|
||||||
ErNumberParameters = 0x10
|
|
||||||
ErExceptionInformation = 0x14
|
|
||||||
ExceptionRecordLength = 0x50
|
|
||||||
EXCEPTION_RECORD_LENGTH = 0x50
|
|
||||||
|
|
||||||
/* EPROCESS */
|
|
||||||
EpDebugPort = 0xcc
|
|
||||||
EpVdmObjects = 0x144
|
|
||||||
ExecutiveProcessObjectLength = 0x278
|
|
||||||
|
|
||||||
/* KEVENT */
|
|
||||||
EvType = 0x0
|
|
||||||
EvSize = 0x2
|
|
||||||
EvSignalState = 0x4
|
|
||||||
EvWaitListHead = 0x8
|
|
||||||
EventObjectLength = 0x10
|
|
||||||
|
|
||||||
/* FAST_MUTEX */
|
|
||||||
FmCount = 0x0
|
|
||||||
FmOwner = 0x4
|
|
||||||
FmContention = 0x8
|
|
||||||
FmOldIrql = 0x1c
|
|
||||||
|
|
||||||
/* KINTERRUPT */
|
|
||||||
InType = 0x0
|
|
||||||
InSize = 0x2
|
|
||||||
InInterruptListEntry = 0x4
|
|
||||||
InServiceRoutine = 0xc
|
|
||||||
InServiceContext = 0x10
|
|
||||||
InSpinLock = 0x14
|
|
||||||
InTickCount = 0x18
|
|
||||||
InActualLock = 0x1c
|
|
||||||
InDispatchAddress = 0x20
|
|
||||||
InVector = 0x24
|
|
||||||
InIrql = 0x28
|
|
||||||
InSynchronizeIrql = 0x29
|
|
||||||
InFloatingSave = 0x2a
|
|
||||||
InConnected = 0x2b
|
|
||||||
InNumber = 0x2c
|
|
||||||
InShareVector = 0x2d
|
|
||||||
InMode = 0x30
|
|
||||||
InServiceCount = 0x34
|
|
||||||
InDispatchCount = 0x38
|
|
||||||
InDispatchCode = 0x3c
|
|
||||||
InterruptObjectLength = 0x1e4
|
|
||||||
|
|
||||||
/* IO_STATUS_BLOCK */
|
|
||||||
IoStatus = 0x0
|
|
||||||
IoPointer = 0x0
|
|
||||||
IoInformation = 0x4
|
|
||||||
|
|
||||||
/* KNODE */
|
|
||||||
KnPfnDereferenceSListHead = 0x8
|
|
||||||
KnProcessorMask = 0x10
|
|
||||||
KnColor = 0x14
|
|
||||||
KnSeed = 0x18
|
|
||||||
KnNodeNumber = 0x19
|
|
||||||
KnFlags = 0x1a
|
|
||||||
knMmShiftedColor = 0x1e
|
|
||||||
KnFreeCount = 0x22
|
|
||||||
KnPfnDeferredList = 0x2a
|
|
||||||
KNODE_SIZE = 0x2e
|
|
||||||
|
|
||||||
/* KSPIN_LOCK_QUEUE */
|
|
||||||
LqNext = 0x0
|
|
||||||
LqLock = 0x4
|
|
||||||
|
|
||||||
/* KLOCK_QUEUE_HANDLE */
|
|
||||||
LqhNext = 0x0
|
|
||||||
LqhLock = 0x4
|
|
||||||
LqhOldIrql = 0x8
|
|
||||||
LOCK_QUEUE_HEADER_SIZE = 0xc
|
|
||||||
|
|
||||||
/* LARGE_INTEGER */
|
|
||||||
LiLowPart = 0x0
|
|
||||||
LiHighPart = 0x4
|
|
||||||
|
|
||||||
/* LIST_ENTRY */
|
|
||||||
LsFlink = 0x0
|
|
||||||
LsBlink = 0x4
|
|
||||||
|
|
||||||
/* PEB */
|
|
||||||
PeKernelCallbackTable = 0x2c
|
|
||||||
ProcessEnvironmentBlockLength = 0x230
|
|
||||||
|
|
||||||
/* KPROFILE */
|
|
||||||
PfType = 0x0
|
|
||||||
PfSize = 0x2
|
|
||||||
PfProfileListEntry = 0x4
|
|
||||||
PfProcess = 0xc
|
|
||||||
PfRangeBase = 0x10
|
|
||||||
PfRangeLimit = 0x14
|
|
||||||
PfBucketShift = 0x18
|
|
||||||
PfBuffer = 0x1c
|
|
||||||
PfSegment = 0x20
|
|
||||||
PfAffinity = 0x24
|
|
||||||
PfSource = 0x28
|
|
||||||
PfStarted = 0x2c
|
|
||||||
ProfileObjectLength = 0x30
|
|
||||||
|
|
||||||
/* PORT_MESSAGE */
|
|
||||||
PmLength = 0x0
|
|
||||||
PmZeroInit = 0x4
|
|
||||||
PmClientId = 0x8
|
|
||||||
PmProcess = 0x8
|
|
||||||
PmThread = 0xc
|
|
||||||
PmMessageId = 0x10
|
|
||||||
PmClientViewSize = 0x14
|
|
||||||
PortMessageLength = 0x18
|
|
||||||
|
|
||||||
/* KPROCESS */
|
|
||||||
PrType = 0x0
|
|
||||||
PrSize = 0x2
|
|
||||||
PrSignalState = 0x4
|
|
||||||
PrProfileListHead = 0x10
|
|
||||||
PrDirectoryTableBase = 0x18
|
|
||||||
PrLdtDescriptor = 0x20
|
|
||||||
PrIopmOffset = 0x30
|
|
||||||
PrInt21Descriptor = 0x28
|
|
||||||
PrVdmTrapcHandler = 0x4c
|
|
||||||
PrFlags = 0x6b
|
|
||||||
PrActiveProcessors = 0x34
|
|
||||||
PrKernelTime = 0x38
|
|
||||||
PrUserTime = 0x3c
|
|
||||||
PrReadyListHead = 0x40
|
|
||||||
PrSwapListEntry = 0x48
|
|
||||||
PrThreadListHead = 0x50
|
|
||||||
PrProcessLock = 0x58
|
|
||||||
PrAffinity = 0x5c
|
|
||||||
PrProcessFlags = 0x60
|
|
||||||
PrBasePriority = 0x64
|
|
||||||
PrQuantumReset = 0x65
|
|
||||||
PrState = 0x66
|
|
||||||
PrStackCount = 0x6c
|
|
||||||
KernelProcessObjectLength = 0x78
|
|
||||||
|
|
||||||
/* KQUEUE */
|
|
||||||
QuType = 0x0
|
|
||||||
QuSize = 0x2
|
|
||||||
QuSignalState = 0x4
|
|
||||||
QuEntryListHead = 0x10
|
|
||||||
QuCurrentCount = 0x18
|
|
||||||
QuMaximumCount = 0x1c
|
|
||||||
QuThreadListHead = 0x20
|
|
||||||
QueueObjectLength = 0x28
|
|
||||||
|
|
||||||
/* STRING */
|
|
||||||
StrLength = 0x0
|
|
||||||
StrMaximumLength = 0x2
|
|
||||||
StrBuffer = 0x4
|
|
||||||
|
|
||||||
/* TEB */
|
|
||||||
TeCmTeb = 0x0
|
|
||||||
TeExceptionList = 0x0
|
|
||||||
TeStackBase = 0x4
|
|
||||||
TeStackLimit = 0x8
|
|
||||||
TeFiberData = 0x10
|
|
||||||
TeSelf = 0x18
|
|
||||||
TeEnvironmentPointer = 0x1c
|
|
||||||
TeClientId = 0x20
|
|
||||||
TeActiveRpcHandle = 0x28
|
|
||||||
TeThreadLocalStoragePointer = 0x2c
|
|
||||||
TeCountOfOwnedCriticalSections = 0x38
|
|
||||||
TePeb = 0x30
|
|
||||||
TeCsrClientThread = 0x3c
|
|
||||||
TeWOW32Reserved = 0xc0
|
|
||||||
TeExceptionCode = 0x1a4
|
|
||||||
TeActivationContextStackPointer = 0x1a8
|
|
||||||
TeGdiClientPID = 0x6c0
|
|
||||||
TeGdiClientTID = 0x6c4
|
|
||||||
TeGdiThreadLocalInfo = 0x6c8
|
|
||||||
TeglDispatchTable = 0x7c4
|
|
||||||
TeglReserved1 = 0xb68
|
|
||||||
TeglReserved2 = 0xbdc
|
|
||||||
TeglSectionInfo = 0xbe0
|
|
||||||
TeglSection = 0xbe4
|
|
||||||
TeglTable = 0xbe8
|
|
||||||
TeglCurrentRC = 0xbec
|
|
||||||
TeglContext = 0xbf0
|
|
||||||
TeDeallocationStack = 0xe0c
|
|
||||||
TeTlsSlots = 0xe10
|
|
||||||
TeTlsExpansionSlots = 0xf94
|
|
||||||
TeLastErrorValue = 0x34
|
|
||||||
TeVdm = 0xf18
|
|
||||||
TeInstrumentation = 0xf2c
|
|
||||||
TeGdiBatchCount = 0xf70
|
|
||||||
TeGuaranteedStackBytes = 0xf78
|
|
||||||
TeFlsData = 0xfb4
|
|
||||||
TeSafeThunkCall = 0xfb8
|
|
||||||
ThreadEnvironmentBlockLength = 0xfbc
|
|
||||||
|
|
||||||
/* TIME_FIELDS */
|
|
||||||
TfSecond = 0xa
|
|
||||||
TfMinute = 0x8
|
|
||||||
TfHour = 0x6
|
|
||||||
TfWeekday = 0xe
|
|
||||||
TfDay = 0x4
|
|
||||||
TfMonth = 0x2
|
|
||||||
TfYear = 0x0
|
|
||||||
TfMilliseconds = 0xc
|
|
||||||
|
|
||||||
/* KTHREAD */
|
|
||||||
ThType = 0x0
|
|
||||||
ThSize = 0x2
|
|
||||||
ThLock = 0x0
|
|
||||||
ThDebugActive = 0x3
|
|
||||||
ThSignalState = 0x4
|
|
||||||
ThInitialStack = 0x18
|
|
||||||
ThStackLimit = 0x1c
|
|
||||||
ThKernelStack = 0x20
|
|
||||||
ThThreadLock = 0x24
|
|
||||||
ThAlerted = 0x5e
|
|
||||||
ThApcState = 0x28
|
|
||||||
ThPriority = 0x5b
|
|
||||||
ThSwapBusy = 0x5d
|
|
||||||
ThNextProcessor = 0x40
|
|
||||||
ThDeferredProcessor = 0x41
|
|
||||||
ThApcQueueLock = 0x44
|
|
||||||
ThContextSwitches = 0x48
|
|
||||||
ThState = 0x4c
|
|
||||||
ThNpxState = 0x4d
|
|
||||||
ThWaitIrql = 0x4e
|
|
||||||
ThWaitMode = 0x4f
|
|
||||||
ThWaitStatus = 0x50
|
|
||||||
ThWaitBlockList = 0x54
|
|
||||||
ThGateObject = 0x54
|
|
||||||
ThWaitListEntry = 0x60
|
|
||||||
ThSwapListEntry = 0x60
|
|
||||||
ThQueue = 0x68
|
|
||||||
ThWaitTime = 0x6c
|
|
||||||
ThCombinedApcDisable = 0x70
|
|
||||||
ThKernelApcDisable = 0x70
|
|
||||||
ThSpecialApcDisable = 0x72
|
|
||||||
ThTeb = 0x74
|
|
||||||
ThTimer = 0x78
|
|
||||||
ThThreadFlags = 0xa0
|
|
||||||
ThServiceTable = 0x118
|
|
||||||
ThWaitBlock = 0xa8
|
|
||||||
ThResourceIndex = 0xef
|
|
||||||
ThQueueListEntry = 0x108
|
|
||||||
ThTrapFrame = 0x110
|
|
||||||
ThCallbackStack = 0x114
|
|
||||||
ThApcStateIndex = 0x11c
|
|
||||||
ThIdealProcessor = 0x11d
|
|
||||||
ThBasePriority = 0x121
|
|
||||||
ThPriorityDecrement = 0x122
|
|
||||||
ThAdjustReason = 0x42
|
|
||||||
ThAdjustIncrement = 0x43
|
|
||||||
ThPreviousMode = 0xd7
|
|
||||||
ThSaturation = 0x123
|
|
||||||
ThFreezeCount = 0x14f
|
|
||||||
ThUserAffinity = 0x124
|
|
||||||
ThProcess = 0x128
|
|
||||||
ThAffinity = 0x12c
|
|
||||||
ThUserIdealProcessor = 0x151
|
|
||||||
ThApcStatePointer = 0x130
|
|
||||||
ThSavedApcState = 0x138
|
|
||||||
ThWaitReason = 0x5a
|
|
||||||
ThSuspendCount = 0x150
|
|
||||||
ThWin32Thread = 0x154
|
|
||||||
ThStackBase = 0x158
|
|
||||||
ThSuspendApc = 0x15c
|
|
||||||
ThPowerState = 0x18b
|
|
||||||
ThKernelTime = 0x160
|
|
||||||
ThLegoData = 0x184
|
|
||||||
ThLargeStack = 0x107
|
|
||||||
ThUserTime = 0x18c
|
|
||||||
ThSuspendSemaphore = 0x190
|
|
||||||
ThSListFaultCount = 0x1a4
|
|
||||||
ThThreadListEntry = 0x1a8
|
|
||||||
ThMutantListHead = 0x10
|
|
||||||
ThSListFaultAddress = 0x1b0
|
|
||||||
KernelThreadObjectLength = 0x1b8
|
|
||||||
ExecutiveThreadObjectLength = 0x250
|
|
||||||
|
|
||||||
/* KTIMER */
|
|
||||||
TiType = 0x0
|
|
||||||
TiSize = 0x2
|
|
||||||
TiInserted = 0x3
|
|
||||||
TiSignalState = 0x4
|
|
||||||
TiDueTime = 0x10
|
|
||||||
TiTimerListEntry = 0x18
|
|
||||||
TiDpc = 0x20
|
|
||||||
TiPeriod = 0x24
|
|
||||||
TimerObjectLength = 0x28
|
|
||||||
|
|
||||||
/* TIME */
|
|
||||||
|
|
||||||
/* KUSER_SHARED_DATA */
|
|
||||||
UsTickCountMultiplier = 0x4
|
|
||||||
UsInterruptTime = 0x8
|
|
||||||
UsSystemTime = 0x14
|
|
||||||
UsTimeZoneBias = 0x20
|
|
||||||
UsImageNumberLow = 0x2c
|
|
||||||
UsImageNumberHigh = 0x2e
|
|
||||||
UsNtSystemRoot = 0x30
|
|
||||||
UsMaxStackTraceDepth = 0x238
|
|
||||||
UsCryptoExponent = 0x23c
|
|
||||||
UsTimeZoneId = 0x240
|
|
||||||
UsLargePageMinimum = 0x244
|
|
||||||
UsReserved2 = 0x248
|
|
||||||
UsNtProductType = 0x264
|
|
||||||
UsProductTypeIsValid = 0x268
|
|
||||||
UsNtMajorVersion = 0x26c
|
|
||||||
UsNtMinorVersion = 0x270
|
|
||||||
UsProcessorFeatures = 0x274
|
|
||||||
UsReserved1 = 0x2b4
|
|
||||||
UsReserved3 = 0x2b8
|
|
||||||
UsTimeSlip = 0x2bc
|
|
||||||
UsAlternativeArchitecture = 0x2c0
|
|
||||||
UsSystemExpirationDate = 0x2c8
|
|
||||||
UsSuiteMask = 0x2d0
|
|
||||||
UsKdDebuggerEnabled = 0x2d4
|
|
||||||
UsActiveConsoleId = 0x2d8
|
|
||||||
UsDismountCount = 0x2dc
|
|
||||||
UsComPlusPackage = 0x2e0
|
|
||||||
UsLastSystemRITEventTickCount = 0x2e4
|
|
||||||
UsNumberOfPhysicalPages = 0x2e8
|
|
||||||
UsSafeBootMode = 0x2ec
|
|
||||||
UsTestRetInstruction = 0x2f8
|
|
||||||
UsSystemCall = 0x300
|
|
||||||
UsSystemCallReturn = 0x304
|
|
||||||
UsSystemCallPad = 0x308
|
|
||||||
UsTickCount = 0x320
|
|
||||||
UsTickCountQuad = 0x320
|
|
||||||
UsWow64SharedInformation = 0x340
|
|
||||||
|
|
||||||
/* KWAIT_BLOCK */
|
|
||||||
WbWaitListEntry = 0x0
|
|
||||||
WbThread = 0x8
|
|
||||||
WbObject = 0xc
|
|
||||||
WbNextWaitBlock = 0x10
|
|
||||||
WbWaitKey = 0x14
|
|
||||||
WbWaitType = 0x16
|
|
||||||
|
|
||||||
/* CR0 flags */
|
|
||||||
CR0_PE = 0x1
|
|
||||||
CR0_MP = 0x2
|
|
||||||
CR0_EM = 0x4
|
|
||||||
CR0_TS = 0x8
|
|
||||||
CR0_ET = 0x10
|
|
||||||
CR0_NE = 0x20
|
|
||||||
CR0_WP = 0x10000
|
|
||||||
CR0_AM = 0x40000
|
|
||||||
CR0_NW = 0x20000000
|
|
||||||
CR0_CD = 0x40000000
|
|
||||||
CR0_PG = 0x80000000
|
|
||||||
|
|
||||||
/* CR4 flags */
|
|
||||||
CR4_VME = 0x1
|
|
||||||
CR4_PVI = 0x2
|
|
||||||
CR4_TSD = 0x4
|
|
||||||
CR4_DE = 0x8
|
|
||||||
CR4_PSE = 0x10
|
|
||||||
CR4_PAE = 0x20
|
|
||||||
CR4_MCE = 0x40
|
|
||||||
CR4_PGE = 0x80
|
|
||||||
CR4_FXSR = 0x200
|
|
||||||
CR4_XMMEXCPT = 0x400
|
|
||||||
|
|
||||||
/* KeFeatureBits flags */
|
|
||||||
KF_RDTSC = 0x2
|
|
||||||
KF_CR4 = 0x4
|
|
||||||
KF_GLOBAL_PAGE = 0x10
|
|
||||||
KF_LARGE_PAGE = 0x20
|
|
||||||
KF_CMPXCHG8B = 0x80
|
|
||||||
KF_FAST_SYSCALL = 0x1000
|
|
||||||
KF_V86_VIS = 0x1
|
|
||||||
|
|
||||||
/* Machine type definitions */
|
|
||||||
MACHINE_TYPE_ISA = 0x0
|
|
||||||
MACHINE_TYPE_EISA = 0x1
|
|
||||||
MACHINE_TYPE_MCA = 0x2
|
|
||||||
|
|
||||||
/* EFLAGS */
|
|
||||||
EFLAGS_TF = 0x100
|
|
||||||
EFLAGS_INTERRUPT_MASK = 0x200
|
|
||||||
EFLAGS_V86_MASK = 0x20000
|
|
||||||
EFLAGS_ALIGN_CHECK = 0x40000
|
|
||||||
EFLAGS_VIF = 0x80000
|
|
||||||
EFLAGS_VIP = 0x100000
|
|
||||||
EFLAGS_USER_SANITIZE = 0x3f4dd7
|
|
||||||
|
|
||||||
/* KDGT selectors */
|
|
||||||
KGDT_R3_DATA = 0x20
|
|
||||||
KGDT_R3_CODE = 0x18
|
|
||||||
KGDT_R0_CODE = 0x8
|
|
||||||
KGDT_R0_DATA = 0x10
|
|
||||||
KGDT_R0_PCR = 0x30
|
|
||||||
KGDT_TSS = 0x28
|
|
||||||
KGDT_R3_TEB = 0x38
|
|
||||||
KGDT_DF_TSS = 0x50
|
|
||||||
KGDT_NMI_TSS = 0x58
|
|
||||||
KGDT_LDT = 0x48
|
|
||||||
NPX_STATE_NOT_LOADED = 0xa
|
|
||||||
NPX_STATE_LOADED = 0x0
|
|
||||||
PF_XMMI_INSTRUCTIONS_AVAILABLE = 0x6
|
|
||||||
EFLAG_SELECT = 0xc000
|
|
||||||
|
|
||||||
/* CONTEXT */
|
|
||||||
CsContextFlags = 0x0
|
|
||||||
CsDr0 = 0x4
|
|
||||||
CsDr1 = 0x8
|
|
||||||
CsDr2 = 0xc
|
|
||||||
CsDr3 = 0x10
|
|
||||||
CsDr6 = 0x14
|
|
||||||
CsDr7 = 0x18
|
|
||||||
CsFloatSave = 0x1c
|
|
||||||
CsSegGs = 0x8c
|
|
||||||
CsSegFs = 0x90
|
|
||||||
CsSegEs = 0x94
|
|
||||||
CsSegDs = 0x98
|
|
||||||
CsEdi = 0x9c
|
|
||||||
CsEsi = 0xa0
|
|
||||||
CsEbx = 0xa4
|
|
||||||
CsEdx = 0xa8
|
|
||||||
CsEcx = 0xac
|
|
||||||
CsEax = 0xb0
|
|
||||||
CsEbp = 0xb4
|
|
||||||
CsEip = 0xb8
|
|
||||||
CsSegCs = 0xbc
|
|
||||||
CsEflags = 0xc0
|
|
||||||
CsEsp = 0xc4
|
|
||||||
CsSegSs = 0xc8
|
|
||||||
CsExtendedRegisters = 0xcc
|
|
||||||
ContextFrameLength = 0x2cc
|
|
||||||
CONTEXT_LENGTH = 0x2cc
|
|
||||||
|
|
||||||
/* KGDTENTRY */
|
|
||||||
KgdtBaseLow = 0x2
|
|
||||||
KgdtBaseMid = 0x4
|
|
||||||
KgdtBaseHi = 0x7
|
|
||||||
KgdtLimitHi = 0x6
|
|
||||||
KgdtLimitLow = 0x0
|
|
||||||
|
|
||||||
/* KTRAP_FRAME */
|
|
||||||
TsExceptionList = 0x4c
|
|
||||||
TsPreviousPreviousMode = 0x48
|
|
||||||
TsSegGs = 0x30
|
|
||||||
TsSegFs = 0x50
|
|
||||||
TsSegEs = 0x34
|
|
||||||
TsSegDs = 0x38
|
|
||||||
TsEdi = 0x54
|
|
||||||
TsEsi = 0x58
|
|
||||||
TsEbp = 0x60
|
|
||||||
TsEbx = 0x5c
|
|
||||||
TsEdx = 0x3c
|
|
||||||
TsEcx = 0x40
|
|
||||||
TsEax = 0x44
|
|
||||||
TsErrCode = 0x64
|
|
||||||
TsEip = 0x68
|
|
||||||
TsSegCs = 0x6c
|
|
||||||
TsEflags = 0x70
|
|
||||||
TsHardwareEsp = 0x74
|
|
||||||
TsHardwareSegSs = 0x78
|
|
||||||
TsTempSegCs = 0x10
|
|
||||||
TsTempEsp = 0x14
|
|
||||||
TsDbgEbp = 0x0
|
|
||||||
TsDbgEip = 0x4
|
|
||||||
TsDbgArgMark = 0x8
|
|
||||||
TsDbgArgPointer = 0xc
|
|
||||||
TsDr0 = 0x18
|
|
||||||
TsDr1 = 0x1c
|
|
||||||
TsDr2 = 0x20
|
|
||||||
TsDr3 = 0x24
|
|
||||||
TsDr6 = 0x28
|
|
||||||
TsDr7 = 0x2c
|
|
||||||
TsV86Es = 0x7c
|
|
||||||
TsV86Ds = 0x80
|
|
||||||
TsV86Fs = 0x84
|
|
||||||
TsV86Gs = 0x88
|
|
||||||
KTRAP_FRAME_LENGTH = 0x8c
|
|
||||||
KTRAP_FRAME_ALIGN = 0x4
|
|
||||||
FRAME_EDITED = 0xfff8
|
|
||||||
|
|
||||||
/* KTSS */
|
|
||||||
TssEsp0 = 0x4
|
|
||||||
TssCR3 = 0x1c
|
|
||||||
TssEip = 0x20
|
|
||||||
TssEFlags = 0x24
|
|
||||||
TssEax = 0x28
|
|
||||||
TssEbx = 0x34
|
|
||||||
TssEcx = 0x2c
|
|
||||||
TssEdx = 0x30
|
|
||||||
TssEsp = 0x38
|
|
||||||
TssEbp = 0x3c
|
|
||||||
TssEsi = 0x40
|
|
||||||
TssEdi = 0x44
|
|
||||||
TssEs = 0x48
|
|
||||||
TssCs = 0x4c
|
|
||||||
TssSs = 0x50
|
|
||||||
TssDs = 0x54
|
|
||||||
TssFs = 0x58
|
|
||||||
TssGs = 0x5c
|
|
||||||
TssLDT = 0x60
|
|
||||||
TssIoMapBase = 0x66
|
|
||||||
TssIoMaps = 0x68
|
|
||||||
TssLength = 0x20ac
|
|
||||||
|
|
||||||
/* KPCR */
|
|
||||||
KPCR_EXCEPTION_LIST = 0x0
|
|
||||||
KPCR_PERF_GLOBAL_GROUP_MASK = 0x8
|
|
||||||
KPCR_CONTEXT_SWITCHES = 0x10
|
|
||||||
KPCR_TEB = 0x18
|
|
||||||
KPCR_SELF = 0x1c
|
|
||||||
KPCR_PRCB = 0x20
|
|
||||||
KPCR_IDT = 0x38
|
|
||||||
KPCR_GDT = 0x3c
|
|
||||||
KPCR_TSS = 0x40
|
|
||||||
KPCR_STALL_SCALE_FACTOR = 0x4c
|
|
||||||
KPCR_PRCB_DATA = 0x120
|
|
||||||
KPCR_CURRENT_THREAD = 0x124
|
|
||||||
KPCR_PRCB_NEXT_THREAD = 0x128
|
|
||||||
KPCR_PRCB_DPC_QUEUE_DEPTH = 0xa4c
|
|
||||||
KPCR_PRCB_DPC_STACK = 0xa68
|
|
||||||
KPCR_PRCB_MAXIMUM_DPC_QUEUE_DEPTH = 0xa6c
|
|
||||||
KPCR_PRCB_DPC_ROUTINE_ACTIVE = 0xa7a
|
|
||||||
KPCR_PRCB_TIMER_REQUEST = 0xa88
|
|
||||||
KPCR_PRCB_QUANTUM_END = 0xaa1
|
|
||||||
KPCR_PRCB_DEFERRED_READY_LIST_HEAD = 0xc10
|
|
||||||
KPCR_PRCB_POWER_STATE_IDLE_FUNCTION = 0xec0
|
|
||||||
|
|
||||||
/* KTRAP_FRAME */
|
|
||||||
KTRAP_FRAME_DEBUGEBP = 0x0
|
|
||||||
KTRAP_FRAME_DEBUGEIP = 0x4
|
|
||||||
KTRAP_FRAME_TEMPESP = 0x14
|
|
||||||
KTRAP_FRAME_DR0 = 0x18
|
|
||||||
KTRAP_FRAME_DR1 = 0x1c
|
|
||||||
KTRAP_FRAME_DR2 = 0x20
|
|
||||||
KTRAP_FRAME_DR3 = 0x24
|
|
||||||
KTRAP_FRAME_DR6 = 0x28
|
|
||||||
KTRAP_FRAME_DR7 = 0x2c
|
|
||||||
KTRAP_FRAME_GS = 0x30
|
|
||||||
KTRAP_FRAME_ES = 0x34
|
|
||||||
KTRAP_FRAME_DS = 0x38
|
|
||||||
KTRAP_FRAME_EDX = 0x3c
|
|
||||||
KTRAP_FRAME_ECX = 0x40
|
|
||||||
KTRAP_FRAME_EAX = 0x44
|
|
||||||
KTRAP_FRAME_PREVIOUS_MODE = 0x48
|
|
||||||
KTRAP_FRAME_EXCEPTION_LIST = 0x4c
|
|
||||||
KTRAP_FRAME_FS = 0x50
|
|
||||||
KTRAP_FRAME_EDI = 0x54
|
|
||||||
KTRAP_FRAME_ESI = 0x58
|
|
||||||
KTRAP_FRAME_EBX = 0x5c
|
|
||||||
KTRAP_FRAME_EBP = 0x60
|
|
||||||
KTRAP_FRAME_ERROR_CODE = 0x64
|
|
||||||
KTRAP_FRAME_EIP = 0x68
|
|
||||||
KTRAP_FRAME_EFLAGS = 0x70
|
|
||||||
KTRAP_FRAME_ESP = 0x74
|
|
||||||
KTRAP_FRAME_SS = 0x78
|
|
||||||
KTRAP_FRAME_V86_ES = 0x7c
|
|
||||||
KTRAP_FRAME_V86_DS = 0x80
|
|
||||||
KTRAP_FRAME_V86_FS = 0x84
|
|
||||||
KTRAP_FRAME_V86_GS = 0x88
|
|
||||||
KTRAP_FRAME_SIZE = 0x8c
|
|
||||||
FRAME_EDITED = 0xfff8
|
|
||||||
|
|
||||||
/* CONTEXT */
|
|
||||||
CONTEXT_FLAGS = 0x0
|
|
||||||
CONTEXT_SEGGS = 0x8c
|
|
||||||
CONTEXT_SEGFS = 0x90
|
|
||||||
CONTEXT_SEGES = 0x94
|
|
||||||
CONTEXT_SEGDS = 0x98
|
|
||||||
CONTEXT_EDI = 0x9c
|
|
||||||
CONTEXT_ESI = 0xa0
|
|
||||||
CONTEXT_EBX = 0xa4
|
|
||||||
CONTEXT_EDX = 0xa8
|
|
||||||
CONTEXT_ECX = 0xac
|
|
||||||
CONTEXT_EAX = 0xb0
|
|
||||||
CONTEXT_EBP = 0xb4
|
|
||||||
CONTEXT_EIP = 0xb8
|
|
||||||
CONTEXT_SEGCS = 0xbc
|
|
||||||
CONTEXT_EFLAGS = 0xc0
|
|
||||||
CONTEXT_ESP = 0xc4
|
|
||||||
CONTEXT_SEGSS = 0xc8
|
|
||||||
CONTEXT_FRAME_LENGTH = 0x2cc
|
|
||||||
|
|
||||||
/* FIBER */
|
|
||||||
FIBER_PARAMETER = 0x0
|
|
||||||
FIBER_EXCEPTION_LIST = 0x4
|
|
||||||
FIBER_STACK_BASE = 0x8
|
|
||||||
FIBER_STACK_LIMIT = 0xc
|
|
||||||
FIBER_DEALLOCATION_STACK = 0x10
|
|
||||||
FIBER_CONTEXT = 0x14
|
|
||||||
FIBER_CONTEXT_FLAGS = 0x14
|
|
||||||
FIBER_CONTEXT_EAX = 0xc4
|
|
||||||
FIBER_CONTEXT_EBX = 0xb8
|
|
||||||
FIBER_CONTEXT_ECX = 0xc0
|
|
||||||
FIBER_CONTEXT_EDX = 0xbc
|
|
||||||
FIBER_CONTEXT_ESI = 0xb4
|
|
||||||
FIBER_CONTEXT_EDI = 0xb0
|
|
||||||
FIBER_CONTEXT_EBP = 0xc8
|
|
||||||
FIBER_CONTEXT_EIP = 0xcc
|
|
||||||
FIBER_CONTEXT_ESP = 0xd8
|
|
||||||
FIBER_CONTEXT_DR6 = 0x28
|
|
||||||
FIBER_CONTEXT_FLOAT_SAVE_CONTROL_WORD = 0x30
|
|
||||||
FIBER_CONTEXT_FLOAT_SAVE_STATUS_WORD = 0x34
|
|
||||||
FIBER_CONTEXT_FLOAT_SAVE_TAG_WORD = 0x38
|
|
||||||
FIBER_GUARANTEED_STACK_BYTES = 0x2e0
|
|
||||||
FIBER_FLS_DATA = 0x2e4
|
|
||||||
FIBER_ACTIVATION_CONTEXT_STACK = 0x2e8
|
|
||||||
|
|
||||||
/* KTSS */
|
|
||||||
KTSS_IOMAPBASE = 0x66
|
|
||||||
KTSS_ESP0 = 0x4
|
|
||||||
|
|
||||||
/* EXCEPTION_RECORD */
|
|
||||||
EXCEPTION_RECORD_EXCEPTION_CODE = 0x0
|
|
||||||
EXCEPTION_RECORD_EXCEPTION_FLAGS = 0x4
|
|
||||||
EXCEPTION_RECORD_EXCEPTION_RECORD = 0x8
|
|
||||||
EXCEPTION_RECORD_EXCEPTION_ADDRESS = 0xc
|
|
||||||
EXCEPTION_RECORD_NUMBER_PARAMETERS = 0x10
|
|
||||||
EXCEPTION_RECORD_EXCEPTION_ADDRESS = 0xc
|
|
||||||
SIZEOF_EXCEPTION_RECORD = 0x50
|
|
||||||
EXCEPTION_RECORD_LENGTH = 0x50
|
|
||||||
|
|
||||||
/* KTHREAD */
|
|
||||||
KTHREAD_DEBUG_ACTIVE = 0x3
|
|
||||||
KTHREAD_INITIAL_STACK = 0x18
|
|
||||||
KTHREAD_STACK_LIMIT = 0x1c
|
|
||||||
KTHREAD_TEB = 0x74
|
|
||||||
KTHREAD_KERNEL_STACK = 0x20
|
|
||||||
KTHREAD_APCSTATE_PROCESS = 0x38
|
|
||||||
KTHREAD_PENDING_KERNEL_APC = 0x3d
|
|
||||||
KTHREAD_CONTEXT_SWITCHES = 0x48
|
|
||||||
KTHREAD_STATE_ = 0x4c
|
|
||||||
KTHREAD_NPX_STATE = 0x4d
|
|
||||||
KTHREAD_WAIT_IRQL = 0x4e
|
|
||||||
KTHREAD_WAIT_REASON = 0x5a
|
|
||||||
KTHREAD_COMBINED_APC_DISABLE = 0x70
|
|
||||||
KTHREAD_SPECIAL_APC_DISABLE = 0x72
|
|
||||||
KTHREAD_LARGE_STACK = 0x107
|
|
||||||
KTHREAD_TRAP_FRAME = 0x110
|
|
||||||
KTHREAD_CALLBACK_STACK = 0x114
|
|
||||||
KTHREAD_APC_STATE_INDEX = 0x11c
|
|
||||||
KTHREAD_STACK_BASE = 0x158
|
|
||||||
|
|
||||||
/* KPROCESS */
|
|
||||||
KPROCESS_DIRECTORY_TABLE_BASE = 0x18
|
|
||||||
KPROCESS_LDT_DESCRIPTOR0 = 0x20
|
|
||||||
KPROCESS_LDT_DESCRIPTOR1 = 0x24
|
|
||||||
KPROCESS_INT21_DESCRIPTOR0 = 0x28
|
|
||||||
KPROCESS_INT21_DESCRIPTOR1 = 0x2c
|
|
||||||
KPROCESS_IOPM_OFFSET = 0x30
|
|
||||||
|
|
||||||
/* Teb */
|
|
||||||
TEB_EXCEPTION_LIST = 0x0
|
|
||||||
TEB_STACK_LIMIT = 0x8
|
|
||||||
TEB_STACK_BASE = 0x4
|
|
||||||
TEB_SELF = 0x18
|
|
||||||
TEB_FIBER_DATA = 0x10
|
|
||||||
TEB_PEB = 0x30
|
|
||||||
TEB_EXCEPTION_CODE = 0x1a4
|
|
||||||
PEB_KERNEL_CALLBACK_TABLE = 0x2c
|
|
||||||
TEB_FLS_DATA = 0xfb4
|
|
||||||
TEB_ACTIVATION_CONTEXT_STACK_POINTER = 0x1a8
|
|
||||||
TEB_GUARANTEED_STACK_BYTES = 0xf78
|
|
||||||
TEB_DEALLOCATION_STACK = 0xe0c
|
|
||||||
|
|
||||||
/* Misc */
|
|
||||||
NPX_FRAME_LENGTH = 0x210
|
|
||||||
FN_CR0_NPX_STATE = 0x20c
|
|
||||||
DR7_RESERVED_MASK = 0xdc00
|
|
||||||
FP_CONTROL_WORD = 0x0
|
|
||||||
FP_STATUS_WORD = 0x4
|
|
||||||
FP_TAG_WORD = 0x8
|
|
||||||
FP_DATA_SELECTOR = 0x18
|
|
||||||
CBSTACK_RESULT = 0x20
|
|
||||||
CBSTACK_RESULT_LENGTH = 0x24
|
|
||||||
CBSTACK_TRAP_FRAME = 0x4
|
|
||||||
CBSTACK_CALLBACK_STACK = 0x8
|
|
||||||
SIZEOF_FX_SAVE_AREA = 0x210
|
|
||||||
KUSER_SHARED_SYSCALL = 0x7ffe0300
|
|
||||||
EXCEPTION_EXECUTE_HANDLER = 0x1
|
|
||||||
STATUS_CALLBACK_POP_STACK = 0xc0000423
|
|
||||||
CONTEXT_ALIGNED_SIZE = 0x2cc
|
|
||||||
PROCESSOR_FEATURE_FXSR = 0x7ffe0278
|
|
File diff suppressed because it is too large
Load diff
|
@ -45,6 +45,9 @@ typedef struct _SEH3$_REGISTRATION_FRAME
|
||||||
|
|
||||||
} SEH3$_REGISTRATION_FRAME ,*PSEH3$_REGISTRATION_FRAME;
|
} SEH3$_REGISTRATION_FRAME ,*PSEH3$_REGISTRATION_FRAME;
|
||||||
|
|
||||||
|
/* Prevent gcc from inlining functions that use SEH. */
|
||||||
|
static inline __attribute__((always_inline)) __attribute__((returns_twice)) void _SEH3$_PreventInlining() {}
|
||||||
|
|
||||||
extern inline __attribute__((always_inline,gnu_inline))
|
extern inline __attribute__((always_inline,gnu_inline))
|
||||||
void _SEH3$_UnregisterFrame(volatile SEH3$_REGISTRATION_FRAME *RegistrationFrame)
|
void _SEH3$_UnregisterFrame(volatile SEH3$_REGISTRATION_FRAME *RegistrationFrame)
|
||||||
{
|
{
|
||||||
|
@ -92,18 +95,20 @@ void * __cdecl __attribute__((error("Can only be used inside an exception filter
|
||||||
|
|
||||||
/* This is an asm wrapper around _SEH3$_RegisterFrame */
|
/* This is an asm wrapper around _SEH3$_RegisterFrame */
|
||||||
#define _SEH3$_RegisterFrame(_TrylevelFrame, _DataTable, _Target) \
|
#define _SEH3$_RegisterFrame(_TrylevelFrame, _DataTable, _Target) \
|
||||||
asm goto ("call __SEH3$_RegisterFrame\n" \
|
asm goto ("leal %0, %%ecx\n" \
|
||||||
|
"call __SEH3$_RegisterFrame\n" \
|
||||||
: \
|
: \
|
||||||
: "c" (_TrylevelFrame), "a" (_DataTable) \
|
: "m" (*(_TrylevelFrame)), "a" (_DataTable) \
|
||||||
: "edx", "memory" \
|
: "ecx", "edx", "memory" \
|
||||||
: _Target)
|
: _Target)
|
||||||
|
|
||||||
/* This is an asm wrapper around _SEH3$_EnterTryLevel */
|
/* This is an asm wrapper around _SEH3$_EnterTryLevel */
|
||||||
#define _SEH3$_RegisterTryLevel(_TrylevelFrame, _DataTable, _Target) \
|
#define _SEH3$_RegisterTryLevel(_TrylevelFrame, _DataTable, _Target) \
|
||||||
asm goto ("call __SEH3$_RegisterTryLevel\n" \
|
asm goto ("leal %0, %%ecx\n" \
|
||||||
|
"call __SEH3$_RegisterTryLevel\n" \
|
||||||
: \
|
: \
|
||||||
: "c" (_TrylevelFrame), "a" (_DataTable) \
|
: "m" (*(_TrylevelFrame)), "a" (_DataTable) \
|
||||||
: "edx", "memory" \
|
: "ecx", "edx", "memory" \
|
||||||
: _Target)
|
: _Target)
|
||||||
|
|
||||||
/* On GCC the filter function is a nested function with __fastcall calling
|
/* On GCC the filter function is a nested function with __fastcall calling
|
||||||
|
@ -165,13 +170,16 @@ void * __cdecl __attribute__((error("Can only be used inside an exception filter
|
||||||
around into places that are never executed. */
|
around into places that are never executed. */
|
||||||
#define _SEH3$_SCARE_GCC() \
|
#define _SEH3$_SCARE_GCC() \
|
||||||
void *plabel; \
|
void *plabel; \
|
||||||
|
_SEH3$_ASM_GOTO("#\n", _SEH3$_l_BeforeTry); \
|
||||||
_SEH3$_ASM_GOTO("#\n", _SEH3$_l_HandlerTarget); \
|
_SEH3$_ASM_GOTO("#\n", _SEH3$_l_HandlerTarget); \
|
||||||
|
_SEH3$_ASM_GOTO("#\n", _SEH3$_l_OnException); \
|
||||||
asm volatile ("#" : "=a"(plabel) : "p"(&&_SEH3$_l_BeforeTry), "p"(&&_SEH3$_l_HandlerTarget), "p"(&&_SEH3$_l_OnException) \
|
asm volatile ("#" : "=a"(plabel) : "p"(&&_SEH3$_l_BeforeTry), "p"(&&_SEH3$_l_HandlerTarget), "p"(&&_SEH3$_l_OnException) \
|
||||||
: _SEH3$_CLOBBER_ON_EXCEPTION ); \
|
: _SEH3$_CLOBBER_ON_EXCEPTION ); \
|
||||||
goto *plabel;
|
goto _SEH3$_l_OnException;
|
||||||
|
|
||||||
|
|
||||||
#define _SEH3_TRY \
|
#define _SEH3_TRY \
|
||||||
|
_SEH3$_PreventInlining(); \
|
||||||
/* Enter the outer scope */ \
|
/* Enter the outer scope */ \
|
||||||
do { \
|
do { \
|
||||||
/* Declare local labels */ \
|
/* Declare local labels */ \
|
||||||
|
|
|
@ -549,7 +549,7 @@ HvTrackCellRef(PHV_TRACK_CELL_REF CellRef,
|
||||||
|
|
||||||
/* FIXME: TODO */
|
/* FIXME: TODO */
|
||||||
DPRINT1("ERROR: Too many references\n");
|
DPRINT1("ERROR: Too many references\n");
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
ntoskrnl/cache/cachesub.c
vendored
2
ntoskrnl/cache/cachesub.c
vendored
|
@ -132,7 +132,7 @@ CcGetFlushedValidData(IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
|
||||||
{
|
{
|
||||||
LARGE_INTEGER Result = {{0}};
|
LARGE_INTEGER Result = {{0}};
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
8
ntoskrnl/cache/copysup.c
vendored
8
ntoskrnl/cache/copysup.c
vendored
|
@ -122,7 +122,7 @@ CcFastCopyRead(IN PFILE_OBJECT FileObject,
|
||||||
OUT PIO_STATUS_BLOCK IoStatus)
|
OUT PIO_STATUS_BLOCK IoStatus)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
@ -209,7 +209,7 @@ CcFastCopyWrite(IN PFILE_OBJECT FileObject,
|
||||||
IN PVOID Buffer)
|
IN PVOID Buffer)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
@ -220,7 +220,7 @@ CcCanIWrite(IN PFILE_OBJECT FileObject,
|
||||||
IN UCHAR Retrying)
|
IN UCHAR Retrying)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -234,7 +234,7 @@ CcDeferWrite(IN PFILE_OBJECT FileObject,
|
||||||
IN BOOLEAN Retrying)
|
IN BOOLEAN Retrying)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
2
ntoskrnl/cache/fssup.c
vendored
2
ntoskrnl/cache/fssup.c
vendored
|
@ -399,7 +399,7 @@ CcSetDirtyPageThreshold(IN PFILE_OBJECT FileObject,
|
||||||
IN ULONG DirtyPageThreshold)
|
IN ULONG DirtyPageThreshold)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
8
ntoskrnl/cache/logsup.c
vendored
8
ntoskrnl/cache/logsup.c
vendored
|
@ -24,7 +24,7 @@ CcSetAdditionalCacheAttributes(IN PFILE_OBJECT FileObject,
|
||||||
IN BOOLEAN DisableWriteBehind)
|
IN BOOLEAN DisableWriteBehind)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -48,7 +48,7 @@ CcGetDirtyPages(IN PVOID LogHandle,
|
||||||
{
|
{
|
||||||
LARGE_INTEGER Result = {{0}};
|
LARGE_INTEGER Result = {{0}};
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ NTAPI
|
||||||
CcIsThereDirtyData(IN PVPB Vpb)
|
CcIsThereDirtyData(IN PVPB Vpb)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ CcGetLsnForFileObject(IN PFILE_OBJECT FileObject,
|
||||||
{
|
{
|
||||||
LARGE_INTEGER Result = {{0}};
|
LARGE_INTEGER Result = {{0}};
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -138,8 +138,8 @@ typedef union _KTRAP_EXIT_SKIP_BITS
|
||||||
{ \
|
{ \
|
||||||
/* Not yet handled */ \
|
/* Not yet handled */ \
|
||||||
UNIMPLEMENTED; \
|
UNIMPLEMENTED; \
|
||||||
while (TRUE); \
|
ASSERT(FALSE); /* while (TRUE); */ \
|
||||||
return TRUE; \
|
return FALSE; \
|
||||||
}
|
}
|
||||||
|
|
||||||
C_ASSERT(NPX_FRAME_LENGTH == sizeof(FX_SAVE_AREA));
|
C_ASSERT(NPX_FRAME_LENGTH == sizeof(FX_SAVE_AREA));
|
||||||
|
|
|
@ -266,7 +266,8 @@ IopCompleteRequest(IN PKAPC Apc,
|
||||||
{
|
{
|
||||||
/* We should never get this yet */
|
/* We should never get this yet */
|
||||||
DPRINT1("Reparse support not yet present!\n");
|
DPRINT1("Reparse support not yet present!\n");
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1373,7 +1374,7 @@ IofCompleteRequest(IN PIRP Irp,
|
||||||
#else
|
#else
|
||||||
/* Not implemented yet. */
|
/* Not implemented yet. */
|
||||||
DPRINT1("Not supported!\n");
|
DPRINT1("Not supported!\n");
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3784,7 +3784,7 @@ PiGetDeviceRegistryProperty(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
|
||||||
#define PIP_RETURN_DATA(x, y) {ReturnLength = x; Data = y; Status = STATUS_SUCCESS; break;}
|
#define PIP_RETURN_DATA(x, y) {ReturnLength = x; Data = y; Status = STATUS_SUCCESS; break;}
|
||||||
#define PIP_REGISTRY_DATA(x, y) {ValueName = x; ValueType = y; break;}
|
#define PIP_REGISTRY_DATA(x, y) {ValueName = x; ValueType = y; break;}
|
||||||
#define PIP_UNIMPLEMENTED() {UNIMPLEMENTED; while(TRUE); break;}
|
#define PIP_UNIMPLEMENTED() {UNIMPLEMENTED; ASSERT(FALSE); /* while (TRUE); */ break;}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
|
|
|
@ -108,7 +108,8 @@ KdpServiceDispatcher(ULONG Service,
|
||||||
#endif /* KDBG */
|
#endif /* KDBG */
|
||||||
#endif /* DBG */
|
#endif /* DBG */
|
||||||
default:
|
default:
|
||||||
HalDisplayString ("Invalid debug service call!\n");
|
DPRINT1("Invalid debug service call!\n");
|
||||||
|
HalDisplayString("Invalid debug service call!\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -140,7 +140,7 @@ KdpSysReadBusData(IN ULONG BusDataType,
|
||||||
OUT PULONG ActualLength)
|
OUT PULONG ActualLength)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,7 +155,7 @@ KdpSysWriteBusData(IN ULONG BusDataType,
|
||||||
OUT PULONG ActualLength)
|
OUT PULONG ActualLength)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -358,7 +358,7 @@ NTAPI
|
||||||
KdpSysCheckLowMemory(IN ULONG Flags)
|
KdpSysCheckLowMemory(IN ULONG Flags)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -367,6 +367,6 @@ NTAPI
|
||||||
KdpAllowDisable(VOID)
|
KdpAllowDisable(VOID)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_ACCESS_DENIED;
|
return STATUS_ACCESS_DENIED;
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ KdpGetStateChange(IN PDBGKD_MANIPULATE_STATE64 State,
|
||||||
IN PCONTEXT Context)
|
IN PCONTEXT Context)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -32,7 +32,7 @@ KdpSetContextState(IN PDBGKD_ANY_WAIT_STATE_CHANGE WaitStateChange,
|
||||||
IN PCONTEXT Context)
|
IN PCONTEXT Context)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
@ -41,7 +41,7 @@ KdpSysReadMsr(IN ULONG Msr,
|
||||||
OUT PLARGE_INTEGER MsrValue)
|
OUT PLARGE_INTEGER MsrValue)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ KdpSysWriteMsr(IN ULONG Msr,
|
||||||
IN PLARGE_INTEGER MsrValue)
|
IN PLARGE_INTEGER MsrValue)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ KdpSysReadBusData(IN ULONG BusDataType,
|
||||||
OUT PULONG ActualLength)
|
OUT PULONG ActualLength)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ KdpSysWriteBusData(IN ULONG BusDataType,
|
||||||
OUT PULONG ActualLength)
|
OUT PULONG ActualLength)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ KdpSysReadControlSpace(IN ULONG Processor,
|
||||||
OUT PULONG ActualLength)
|
OUT PULONG ActualLength)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@ KdpSysWriteControlSpace(IN ULONG Processor,
|
||||||
OUT PULONG ActualLength)
|
OUT PULONG ActualLength)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ KdpSysReadIoSpace(IN ULONG InterfaceType,
|
||||||
OUT PULONG ActualDataSize)
|
OUT PULONG ActualDataSize)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,7 +137,7 @@ KdpSysWriteIoSpace(IN ULONG InterfaceType,
|
||||||
OUT PULONG ActualDataSize)
|
OUT PULONG ActualDataSize)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -146,7 +146,7 @@ NTAPI
|
||||||
KdpSysCheckLowMemory(IN ULONG Flags)
|
KdpSysCheckLowMemory(IN ULONG Flags)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,6 +155,6 @@ NTAPI
|
||||||
KdpAllowDisable(VOID)
|
KdpAllowDisable(VOID)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_ACCESS_DENIED;
|
return STATUS_ACCESS_DENIED;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1178,6 +1178,7 @@ KeBugCheckWithTf(IN ULONG BugCheckCode,
|
||||||
KiBugCheckDebugBreak(DBG_STATUS_BUGCHECK_SECOND);
|
KiBugCheckDebugBreak(DBG_STATUS_BUGCHECK_SECOND);
|
||||||
|
|
||||||
/* Shouldn't get here */
|
/* Shouldn't get here */
|
||||||
|
ASSERT(FALSE);
|
||||||
while (TRUE);
|
while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -780,6 +780,7 @@ KeInsertQueueDpc(IN PKDPC Dpc,
|
||||||
{
|
{
|
||||||
/* FIXME: Setup Threaded DPC */
|
/* FIXME: Setup Threaded DPC */
|
||||||
DPRINT1("Threaded DPC not supported\n");
|
DPRINT1("Threaded DPC not supported\n");
|
||||||
|
ASSERT(FALSE);
|
||||||
while (TRUE);
|
while (TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,8 @@ KiSwapProcess(IN PKPROCESS NewProcess,
|
||||||
{
|
{
|
||||||
/* Not handled yet */
|
/* Not handled yet */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update CR3 */
|
/* Update CR3 */
|
||||||
|
|
|
@ -663,6 +663,7 @@ KiTrap06Handler(IN PKTRAP_FRAME TrapFrame)
|
||||||
{
|
{
|
||||||
/* Should only happen in VDM mode */
|
/* Should only happen in VDM mode */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
ASSERT(FALSE);
|
||||||
while (TRUE);
|
while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -735,6 +736,7 @@ KiTrap07Handler(IN PKTRAP_FRAME TrapFrame)
|
||||||
{
|
{
|
||||||
/* Not implemented */
|
/* Not implemented */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
ASSERT(FALSE);
|
||||||
while (TRUE);
|
while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -921,6 +923,7 @@ KiTrap0DHandler(IN PKTRAP_FRAME TrapFrame)
|
||||||
{
|
{
|
||||||
/* Should only happen in VDM mode */
|
/* Should only happen in VDM mode */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
ASSERT(FALSE);
|
||||||
while (TRUE);
|
while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1077,6 +1080,7 @@ KiTrap0DHandler(IN PKTRAP_FRAME TrapFrame)
|
||||||
{
|
{
|
||||||
/* Not implemented */
|
/* Not implemented */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
ASSERT(FALSE);
|
||||||
while (TRUE);
|
while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1133,6 +1137,7 @@ KiTrap0DHandler(IN PKTRAP_FRAME TrapFrame)
|
||||||
{
|
{
|
||||||
/* Otherwise, this is another kind of IRET fault */
|
/* Otherwise, this is another kind of IRET fault */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
ASSERT(FALSE);
|
||||||
while (TRUE);
|
while (TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1191,6 +1196,7 @@ KiTrap0EHandler(IN PKTRAP_FRAME TrapFrame)
|
||||||
{
|
{
|
||||||
/* The stack is somewhere in between frames, we need to fix it */
|
/* The stack is somewhere in between frames, we need to fix it */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
ASSERT(FALSE);
|
||||||
while (TRUE);
|
while (TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1256,6 +1262,7 @@ KiTrap0EHandler(IN PKTRAP_FRAME TrapFrame)
|
||||||
{
|
{
|
||||||
/* Not yet implemented */
|
/* Not yet implemented */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
ASSERT(FALSE);
|
||||||
while (TRUE);
|
while (TRUE);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1439,7 +1446,7 @@ FASTCALL
|
||||||
KiGetTickCountHandler(IN PKTRAP_FRAME TrapFrame)
|
KiGetTickCountHandler(IN PKTRAP_FRAME TrapFrame)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -1447,7 +1454,7 @@ FASTCALL
|
||||||
KiCallbackReturnHandler(IN PKTRAP_FRAME TrapFrame)
|
KiCallbackReturnHandler(IN PKTRAP_FRAME TrapFrame)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
DECLSPEC_NORETURN
|
DECLSPEC_NORETURN
|
||||||
|
@ -1618,6 +1625,7 @@ KiSystemCall(IN PKTRAP_FRAME TrapFrame,
|
||||||
{
|
{
|
||||||
/* Access violation */
|
/* Access violation */
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
ASSERT(FALSE);
|
||||||
while (TRUE);
|
while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1683,6 +1691,7 @@ Kei386EoiHelper(VOID)
|
||||||
{
|
{
|
||||||
/* We should never see this call happening */
|
/* We should never see this call happening */
|
||||||
DPRINT1("Mismatched NT/HAL version");
|
DPRINT1("Mismatched NT/HAL version");
|
||||||
|
ASSERT(FALSE);
|
||||||
while (TRUE);
|
while (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
|
||||||
// Always return success for now
|
// Always return success for now
|
||||||
//
|
//
|
||||||
DPRINT1("NEVER TELL ME THE ODDS!\n");
|
DPRINT1("NEVER TELL ME THE ODDS!\n");
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,7 @@ MiSyncCachedRanges(VOID)
|
||||||
for (i = 0; i < MiLargePageRangeIndex; i++)
|
for (i = 0; i < MiLargePageRangeIndex; i++)
|
||||||
{
|
{
|
||||||
DPRINT1("No support for large pages\n");
|
DPRINT1("No support for large pages\n");
|
||||||
while (TRUE);
|
ASSERT(FALSE); // while (TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2043,7 +2043,7 @@ MmArmInitSystem(IN ULONG Phase,
|
||||||
// Define the basic user vs. kernel address space separation
|
// Define the basic user vs. kernel address space separation
|
||||||
//
|
//
|
||||||
MmSystemRangeStart = (PVOID)MI_DEFAULT_SYSTEM_RANGE_START;
|
MmSystemRangeStart = (PVOID)MI_DEFAULT_SYSTEM_RANGE_START;
|
||||||
MmUserProbeAddress = (ULONG_PTR)MI_HIGHEST_USER_ADDRESS;
|
MmUserProbeAddress = (ULONG_PTR)MI_USER_PROBE_ADDRESS;
|
||||||
MmHighestUserAddress = (PVOID)MI_HIGHEST_USER_ADDRESS;
|
MmHighestUserAddress = (PVOID)MI_HIGHEST_USER_ADDRESS;
|
||||||
|
|
||||||
/* Highest PTE and PDE based on the addresses above */
|
/* Highest PTE and PDE based on the addresses above */
|
||||||
|
|
|
@ -876,7 +876,8 @@ MiDispatchFault(IN BOOLEAN StoreInstruction,
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
PMMPTE SuperProtoPte;
|
PMMPTE SuperProtoPte;
|
||||||
PMMPFN Pfn1, OutPfn = NULL;
|
PMMPFN Pfn1, OutPfn = NULL;
|
||||||
PFN_NUMBER PageFrameIndex, PteCount, ProcessedPtes;
|
PFN_NUMBER PageFrameIndex;
|
||||||
|
PFN_COUNT PteCount, ProcessedPtes;
|
||||||
DPRINT("ARM3 Page Fault Dispatcher for address: %p in process: %p\n",
|
DPRINT("ARM3 Page Fault Dispatcher for address: %p in process: %p\n",
|
||||||
Address,
|
Address,
|
||||||
Process);
|
Process);
|
||||||
|
@ -1055,7 +1056,7 @@ MiDispatchFault(IN BOOLEAN StoreInstruction,
|
||||||
if (ProcessedPtes)
|
if (ProcessedPtes)
|
||||||
{
|
{
|
||||||
/* Bump the transition count */
|
/* Bump the transition count */
|
||||||
InterlockedExchangeAdd(&KeGetCurrentPrcb()->MmTransitionCount, ProcessedPtes);
|
InterlockedExchangeAddSizeT(&KeGetCurrentPrcb()->MmTransitionCount, ProcessedPtes);
|
||||||
ProcessedPtes--;
|
ProcessedPtes--;
|
||||||
|
|
||||||
/* Loop all the processing we did */
|
/* Loop all the processing we did */
|
||||||
|
@ -1208,9 +1209,15 @@ MmArmAccessFault(IN BOOLEAN StoreInstruction,
|
||||||
if (TrapInformation)
|
if (TrapInformation)
|
||||||
{
|
{
|
||||||
PKTRAP_FRAME TrapFrame = TrapInformation;
|
PKTRAP_FRAME TrapFrame = TrapInformation;
|
||||||
|
#ifdef _M_IX86
|
||||||
DbgPrint("MM:***EIP %p, EFL %p\n", TrapFrame->Eip, TrapFrame->EFlags);
|
DbgPrint("MM:***EIP %p, EFL %p\n", TrapFrame->Eip, TrapFrame->EFlags);
|
||||||
DbgPrint("MM:***EAX %p, ECX %p EDX %p\n", TrapFrame->Eax, TrapFrame->Ecx, TrapFrame->Edx);
|
DbgPrint("MM:***EAX %p, ECX %p EDX %p\n", TrapFrame->Eax, TrapFrame->Ecx, TrapFrame->Edx);
|
||||||
DbgPrint("MM:***EBX %p, ESI %p EDI %p\n", TrapFrame->Ebx, TrapFrame->Esi, TrapFrame->Edi);
|
DbgPrint("MM:***EBX %p, ESI %p EDI %p\n", TrapFrame->Ebx, TrapFrame->Esi, TrapFrame->Edi);
|
||||||
|
#elif defined(_M_AMD64)
|
||||||
|
DbgPrint("MM:***RIP %p, EFL %p\n", TrapFrame->Rip, TrapFrame->EFlags);
|
||||||
|
DbgPrint("MM:***RAX %p, RCX %p RDX %p\n", TrapFrame->Rax, TrapFrame->Rcx, TrapFrame->Rdx);
|
||||||
|
DbgPrint("MM:***RBX %p, RSI %p RDI %p\n", TrapFrame->Rbx, TrapFrame->Rsi, TrapFrame->Rdi);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Tell the trap handler to fail */
|
/* Tell the trap handler to fail */
|
||||||
|
|
|
@ -1324,8 +1324,10 @@ MiInitializeSessionPool(VOID)
|
||||||
/* Initialize the first page table */
|
/* Initialize the first page table */
|
||||||
Index = (ULONG_PTR)MmSessionSpace->PagedPoolStart - (ULONG_PTR)MmSessionBase;
|
Index = (ULONG_PTR)MmSessionSpace->PagedPoolStart - (ULONG_PTR)MmSessionBase;
|
||||||
Index >>= 22;
|
Index >>= 22;
|
||||||
|
#ifndef _M_AMD64 // FIXME
|
||||||
ASSERT(MmSessionSpace->PageTables[Index].u.Long == 0);
|
ASSERT(MmSessionSpace->PageTables[Index].u.Long == 0);
|
||||||
MmSessionSpace->PageTables[Index] = *PointerPde;
|
MmSessionSpace->PageTables[Index] = *PointerPde;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Bump up counters */
|
/* Bump up counters */
|
||||||
InterlockedIncrementSizeT(&MmSessionSpace->NonPageablePages);
|
InterlockedIncrementSizeT(&MmSessionSpace->NonPageablePages);
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue