Posted on 2002-04-15
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
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...

Industry Leaders: 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 200 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

Industry Leaders: 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

Suggested Solutions

Errors will happen. It is a fact of life for the programmer. How and when errors are detected have a great impact on quality and cost of a product. It is better to detect errors at compile time, when possible and practical. Errors that make their wa…
C++ Properties One feature missing from standard C++ that you will find in many other Object Oriented Programming languages is something called a Property (…
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.

740 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