/* * FindDlgCreate * * Purpose: * * Create and initialize Find Dialog. * */ VOID FindDlgCreate( _In_ HWND hwndParent ) { LVCOLUMN col; HICON hIcon; //do not allow second copy if (g_wobjDialogs[WOBJ_FINDDLG_IDX]) { SetActiveWindow(g_wobjDialogs[WOBJ_FINDDLG_IDX]); return; } FindDialog = CreateDialogParam(g_hInstance, MAKEINTRESOURCE(IDD_DIALOG_SEARCH), hwndParent, &FindDlgProc, 0); if (FindDialog == NULL) { return; } g_wobjDialogs[WOBJ_FINDDLG_IDX] = FindDialog; FindDlgGrip = supCreateSzGripWindow(FindDialog); //set dialog icon, because we use shared dlg template this icon must be //removed after use, see aboutDlg/propDlg. hIcon = LoadImage(g_hInstance, MAKEINTRESOURCE(IDI_ICON_MAIN), IMAGE_ICON, 0, 0, LR_SHARED); if (hIcon) { SetClassLongPtr(g_wobjDialogs[WOBJ_FINDDLG_IDX], GCLP_HICON, (LONG_PTR)hIcon); DestroyIcon(hIcon); } FindDlgList = GetDlgItem(FindDialog, ID_SEARCH_LIST); if (FindDlgList) { bFindDlgSortInverse = FALSE; ListView_SetImageList(FindDlgList, ListViewImages, LVSIL_SMALL); ListView_SetExtendedListViewStyle(FindDlgList, LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER | LVS_EX_GRIDLINES | LVS_EX_LABELTIP); RtlSecureZeroMemory(&col, sizeof(col)); col.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_FMT | LVCF_WIDTH | LVCF_ORDER | LVCF_IMAGE; col.iSubItem = 1; col.pszText = TEXT("Name"); col.fmt = LVCFMT_LEFT | LVCFMT_BITMAP_ON_RIGHT; col.iOrder = 0; col.iImage = ImageList_GetImageCount(ListViewImages) - 1; col.cx = 300; ListView_InsertColumn(FindDlgList, 1, &col); col.iSubItem = 2; col.pszText = TEXT("Type"); col.iOrder = 1; col.iImage = -1; col.cx = 100; ListView_InsertColumn(FindDlgList, 2, &col); } FindDlgAddTypes(FindDialog); }
/* * extrasCreateSSDTDialog * * Purpose: * * Create and initialize KiServiceTable Dialog. * */ VOID extrasCreateSSDTDialog( _In_ HWND hwndParent ) { LVCOLUMN col; //allow only one dialog if (g_wobjDialogs[WOBJ_SSDTDLG_IDX]) { if (IsIconic(g_wobjDialogs[WOBJ_SSDTDLG_IDX])) ShowWindow(g_wobjDialogs[WOBJ_SSDTDLG_IDX], SW_RESTORE); else SetActiveWindow(g_wobjDialogs[WOBJ_SSDTDLG_IDX]); return; } RtlSecureZeroMemory(&SdtDlgContext, sizeof(SdtDlgContext)); SdtDlgContext.hwndDlg = CreateDialogParam(g_hInstance, MAKEINTRESOURCE(IDD_DIALOG_EXTRASLIST), hwndParent, &SdtDialogProc, 0); if (SdtDlgContext.hwndDlg == NULL) { return; } g_wobjDialogs[WOBJ_SSDTDLG_IDX] = SdtDlgContext.hwndDlg; SdtDlgContext.SizeGrip = supCreateSzGripWindow(SdtDlgContext.hwndDlg); SetWindowText(SdtDlgContext.hwndDlg, TEXT("System Service Table")); extrasSetDlgIcon(SdtDlgContext.hwndDlg); SdtDlgContext.ListView = GetDlgItem(SdtDlgContext.hwndDlg, ID_EXTRASLIST); if (SdtDlgContext.ListView) { ListView_SetImageList(SdtDlgContext.ListView, ListViewImages, LVSIL_SMALL); ListView_SetExtendedListViewStyle(SdtDlgContext.ListView, LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER | LVS_EX_GRIDLINES | LVS_EX_LABELTIP); //columns RtlSecureZeroMemory(&col, sizeof(col)); col.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_FMT | LVCF_WIDTH | LVCF_ORDER | LVCF_IMAGE; col.iSubItem++; col.pszText = TEXT("Id"); col.fmt = LVCFMT_LEFT | LVCFMT_BITMAP_ON_RIGHT; col.iImage = ImageList_GetImageCount(ListViewImages) - 1; col.cx = 80; ListView_InsertColumn(SdtDlgContext.ListView, col.iSubItem, &col); col.iSubItem++; col.pszText = TEXT("Service Name"); col.iOrder++; col.iImage = -1; col.cx = 200; ListView_InsertColumn(SdtDlgContext.ListView, col.iSubItem, &col); col.iSubItem++; col.pszText = TEXT("Address"); col.iOrder++; col.cx = 130; ListView_InsertColumn(SdtDlgContext.ListView, col.iSubItem, &col); col.iSubItem++; col.pszText = TEXT("Module"); col.iOrder++; col.cx = 200; ListView_InsertColumn(SdtDlgContext.ListView, col.iSubItem, &col); //remember columns count SdtDlgContext.lvColumnCount = col.iSubItem; SdtListTable(); SendMessage(SdtDlgContext.hwndDlg, WM_SIZE, 0, 0); ListView_SortItemsEx(SdtDlgContext.ListView, &SdtDlgCompareFunc, 0); } }