Posted on 2002-04-15
Medium Priority
Last Modified: 2008-02-01
Does anybody know what functions the asp.dll has, and how the IIS interacts with the dll?
Question by:lar_jens
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
LVL 11

Expert Comment

ID: 6942267
ASP .dll runs Active Server Pages, a VB Scripting language for web pages.
LVL 32

Expert Comment

ID: 6942278
If you want to know what functions ASP.DLL has, use the DUMPBIN utility in Visual Studio like:


This will give you a list of all the EXPORT functions from this DLL.

Generally, you would NOT directly interact with ASP.DLL.  IIS interacts with it directly and automatically.

Perhaps if you explained what you are trying to do a better explanation could be offered.

Author Comment

ID: 6942315
Yes, but I want to create another engine (like php and asp), and if it is to be run as a dll, I need to know what functions the IIS is using to communicate with it...

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!


Author Comment

ID: 6942322
The dump of the dll is as follows:

Microsoft (R) COFF Binary File Dumper Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

Dump of file c:\winnt\system32\inetsrv\asp.dll

File Type: DLL

  Section contains the following exports for asp.dll

           0 characteristics
    3AE8ADD2 time date stamp Fri Apr 27 01:22:58 2001
        0.00 version
           1 ordinal base
          61 number of functions
          61 number of names

    ordinal hint RVA      name

          1    0 0001672C ??0BUFFER@@QAE@I@Z
          2    1 00016761 ??0BUFFER@@QAE@PAEI@Z
          3    2 0001682D ??0BUFFER_CHAIN@@QAE@XZ
          4    3 000167D9 ??0BUFFER_CHAIN_ITEM@@QAE@I@Z
          5    4 000168B9 ??0STR@@QAE@ABV0@@Z
          6    5 00016884 ??0STR@@QAE@K@Z
          7    6 0001685F ??0STR@@QAE@PADK@Z
          8    7 0001689A ??0STR@@QAE@PBD@Z
          9    8 0001684D ??0STR@@QAE@XZ
         10    9 00016B0C ??0TS_RESOURCE@@QAE@XZ
         11    A 00016835 ??1BUFFER_CHAIN@@QAE@XZ
         12    B 000167F3 ??1BUFFER_CHAIN_ITEM@@QAE@XZ
         13    C 00016A86 ??1STR@@QAE@XZ
         14    D 00016B19 ??1TS_RESOURCE@@QAE@XZ
         15    E 00016AF8 ??4ALLOC_CACHE_HANDLER@@QAEAAV0@ABV0@@Z
         16    F 000167BD ??4BUFFER@@QAEAAV0@ABV0@@Z
         17   10 0001683A ??4BUFFER_CHAIN@@QAEAAV0@ABV0@@Z
         18   11 00016B59 ??4BUFFER_CHAIN_ITEM@@QAEAAV0@ABV0@@Z
         19   12 00016A72 ??4STR@@QAEAAV0@ABV0@@Z
         20   13 00016B59 ??4TS_RESOURCE@@QAEAAV0@ABV0@@Z
         21   14 000167D1 ??_FBUFFER@@QAEXXZ
         22   15 00016819 ??_FBUFFER_CHAIN_ITEM@@QAEXXZ
         23   16 0001694C ?Append@STR@@QAEHABV1@@Z
         24   17 00016902 ?Append@STR@@QAEHPBD@Z
         25   18 0001692F ?Append@STR@@QAEHPBDK@Z
         26   19 00016A22 ?Append@STR@@QAEXD@Z
         27   1A 00016A3A ?Append@STR@@QAEXDD@Z
         28   1B 00016A5A ?AppendCRLF@STR@@QAEXXZ
         29   1C 00016A02 ?Clone@STR@@QBEHPAV1@@Z
         30   1D 00016B3A ?Convert@TS_RESOURCE@@QAEXW4TSRES_CONV_TYPE@@@Z
         31   1E 000169CF ?Copy@STR@@QAEHABV1@@Z
         32   1F 00016969 ?Copy@STR@@QAEHPBD@Z
         33   20 000169A5 ?Copy@STR@@QAEHPBDK@Z
         34   21 00016700 ?IsDynAlloced@BUFFER@@ABEHXZ
         35   22 000168F6 ?IsEmpty@STR@@QBEHXZ
         36   23 00016782 ?IsValid@ALLOC_CACHE_HANDLER@@QBEHXZ
         37   24 00016723 ?IsValid@BUFFER@@IBEHXZ
         38   25 00016723 ?IsValid@STR@@QBEHXZ
         39   26 00016AE2 ?Lock@ALLOC_CACHE_HANDLER@@AAEXXZ
         40   27 00016B20 ?Lock@TS_RESOURCE@@QAEXW4TSRES_LOCK_TYPE@@@Z
         41   28 000169FE ?QueryCB@STR@@QBEIXZ
         42   29 000169FE ?QueryCCH@STR@@QBEIXZ
         43   2A 00016782 ?QueryPtr@BUFFER@@QBEPAXXZ
         44   2B 00016785 ?QuerySize@BUFFER@@QBEIXZ
         45   2C 00016782 ?QueryStr@STR@@QBEPADXZ
         46   2D 00016782 ?QueryStrA@STR@@QBEPADXZ
         47   2E 0001680B ?QueryUsed@BUFFER_CHAIN_ITEM@@QBEKXZ
         48   2F 0001695F ?Reset@STR@@QAEXXZ
         49   30 00016789 ?Resize@BUFFER@@QAEHI@Z
         50   31 000167A0 ?Resize@BUFFER@@QAEHII@Z
         51   32 000168DA ?SetLen@STR@@QAEHK@Z
         52   33 0001680F ?SetUsed@BUFFER_CHAIN_ITEM@@QAEXK@Z
         53   34 00016707 ?SetValid@BUFFER@@IAEXH@Z
         54   35 00016AED ?Unlock@ALLOC_CACHE_HANDLER@@AAEXXZ
         55   36 00016B52 ?Unlock@TS_RESOURCE@@QAEXXZ
         56   37 000278E6 AspStatusHtmlDump
         57   38 0002B2E4 DllRegisterServer
         58   39 0002B341 DllUnregisterServer
         59   3A 00020ACD GetExtensionVersion
         60   3B 000099C7 HttpExtensionProc
         61   3C 00020B38 TerminateExtension


        3000 .data
        4000 .reloc
        F000 .rsrc
       40000 .text

How am I supposed to see what to write myself, to get IIS to interact with my own DLL?

Author Comment

ID: 6942329

do you have some sort of utility that interprets the C++ naming convention from DLLs?

Author Comment

ID: 6942335
the dumpbin utility does not tell me the signature of the funtions either... Should I dissassemble the file? That would involve a lot of work...
LVL 32

Expert Comment

ID: 6942459
You might want to look at the key export from above, namely HttpExtensionProc.
LVL 49

Accepted Solution

DanRollins earned 600 total points
ID: 6943071
asp.dll is an ISAPI Http Extension.  These topics are covered in depth by MSDN.  Here is a weblink to get you started:


Even if you don't want to write your own ISAP Extension, the information there will help you see what asp.dll is doing (how it is used by IIS).

-- Dan
LVL 15

Expert Comment

by:Tommy Hui
ID: 6943369
There's also a book called ASP Internals that describes how to rewrite ASP.DLL.
LVL 22

Expert Comment

ID: 6944033
i guess only the un-decorated exports are important to IIS, excluding ofcourse DllRegisterServer and DllUnRegisterServer etc.

asp.dll is a COM dll, you might be interested in viewing it with object browser, and see what Objects and interfaces there are, for e.g. IRequest etc.

But i guess these are relevant to the inner workings of asp runtime and not important to the webserver. So for your ASP you might have a different rumtime environment altogether. HttpExtension seems to the only logical communication medium between the two.

correct me if am wrong ..

Author Comment

ID: 6944218
you're right :)
HttpExtensionProc helped me out.. Thnx..
Points goes to DanRollins for pointing it out to me first.

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When writing generic code, using template meta-programming techniques, it is sometimes useful to know if a type is convertible to another type. A good example of when this might be is if you are writing diagnostic instrumentation for code to generat…
Templates For Beginners Or How To Encourage The Compiler To Work For You Introduction This tutorial is targeted at the reader who is, perhaps, familiar with the basics of C++ but would prefer a little slower introduction to the more ad…
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.

719 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question