/* * 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); } }
/* * extrasCreateSSDTDialog * * Purpose: * * Create and initialize KiServiceTable Dialog. * */ VOID extrasCreateSSDTDialog( _In_ HWND hwndParent ) { LVCOLUMNW col; HANDLE hIcon; //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; SetWindowText(SdtDlgContext.hwndDlg, TEXT("System Service Table")); hIcon = LoadImage(g_hInstance, MAKEINTRESOURCE(IDI_ICON_MAIN), IMAGE_ICON, 0, 0, LR_SHARED); if (hIcon) { SetClassLongPtr(SdtDlgContext.hwndDlg, GCLP_HICON, (LONG_PTR)hIcon); DestroyIcon(hIcon); } 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); //create ObjectList columns RtlSecureZeroMemory(&col, sizeof(col)); col.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_FMT | LVCF_WIDTH | LVCF_ORDER | LVCF_IMAGE; col.iSubItem = 1; col.pszText = L"Id"; col.fmt = LVCFMT_LEFT | LVCFMT_BITMAP_ON_RIGHT; col.iOrder = 0; col.iImage = ImageList_GetImageCount(ListViewImages) - 1; col.cx = 80; ListView_InsertColumn(SdtDlgContext.ListView, 1, &col); col.iSubItem = 2; col.pszText = L"Service Name"; col.iOrder = 1; col.iImage = -1; col.cx = 200; ListView_InsertColumn(SdtDlgContext.ListView, 2, &col); col.iSubItem = 3; col.pszText = L"Address"; col.iOrder = 2; col.iImage = -1; col.cx = 130; ListView_InsertColumn(SdtDlgContext.ListView, 3, &col); col.iSubItem = 4; col.pszText = L"Module"; col.iOrder = 3; col.iImage = -1; col.cx = 200; ListView_InsertColumn(SdtDlgContext.ListView, 4, &col); //remember columns count SdtDlgContext.lvColumnCount = 4; SdtListTable(); SendMessage(SdtDlgContext.hwndDlg, WM_SIZE, 0, 0); ListView_SortItemsEx(SdtDlgContext.ListView, &SdtDlgCompareFunc, 0); } }