Microsoft Internet Security and Acceleration Server 2000

Creating the Property Sheet

Follow the procedure in this section to create the property sheet. This must be done on a computer that has the ISA administration tool installed.

To create the property sheet

  1. In Microsoft Visual C++® 6.0, on the File menu, click New.
  2. On the Projects tab, click ATL Com App Wizard.
  3. In the Project Name box, type SMTPFilterConfig.
  4. Click OK, then Finish.
  5. On the Insert menu, click New ATL Object…
  6. In the Objects list view, select MMC Snap-in.
  7. Click Next.
  8. On the Names tab, type SmtpFltrSnapIn in the ShortName box.
  9. On the MMC Snapin tab, select the Extension and IExtendPropertySheet check boxes. (Be sure to leave checked the following check boxes: IComponentData, IComponent, and ISnapInAbout).
  10. Clear the Support Persistence check box.
  11. On the MMC Snapin tab, in the Extends Node box, select ISA Application Filter.

    Warning  Be sure not to select ISA Application Filters.

  12. Edit SmtpFltrSnapIn.cpp:

    Comment out the line

    if (type == CCT_SCOPE || type == CCT_RESULT)
    

    that is shown as a comment in the following code. This line appears several times in the code, so be certain to comment out the right line.

    HRESULT CSmtpFltrSnapInExtData::CreatePropertyPages(LPPROPERTYSHEETCALLBACK lpProvider,
    	long handle, 
    	IUnknown* pUnk,
    	DATA_OBJECT_TYPES type)
    {
    	// if (type == CCT_SCOPE || type == CCT_RESULT) 
    	{
    		CSmtpFltrSnapInPage* pPage = new CSmtpFltrSnapInPage(handle, true, _T("SmtpFltrSnapIn"));
    		lpProvider->AddPage(pPage->Create());
    		// The second parameter to the property page class constructor
    		// should be true for only one page.
     
    		// TODO : Add code here to add additional pages
    		return S_OK;
    }
    	return E_UNEXPECTED;
    }
    
  13. In SmtpFltrSnapIn.h, in the CSmtpFltrSnapInExtData class, comment out the line shown as a comment in the following code:
    	STDMETHOD(QueryPagesFor)(DATA_OBJECT_TYPES type)
    	{
    		// if (type == CCT_SCOPE || type == CCT_RESULT) 
    			return S_OK;
    		return S_FALSE;
    }
    
  14. Build.