WnAspi32.dll replacement - test needed


I’m trying to release a free wnaspi32.dll clone (the dll can be used freely with writing software, without any restriction).
At this time, for my first test, this dll is adaptec and ahead compatible.
To use it, just rename it “wnaspi32.dll” and replace your actual files (make a backup) with my one.

Why posting this dll?
I’m a student, and this dll is a part of my final studies project.
So, I actually need :

  • testers
  • suggestions \ advices
  • partners to help me

Source files can be available on demand.

If you want I publish other files, freely, please support my work by giving me advices, documentation, time, and why not helping me :slight_smile:

Thanks in advance.



Hey Millenod, I might be able to test this quite a bit. It just depends if I can find, time and remember :wink:

Is it SAFE (free of malicious code)?

If I do get a chance to test this I will let you know the results.

Hi RichMan.

As People can ask the source code, and verify the dll is certify without malicious code!
Personnaly I won’t know what I did that!

I’d like to create a team to work on a 100% free wnaspi.
This project is almost fnished for my part, but i need some potential tests to verify the compatibility.

The main function which is missing are the “admin rights” to exec commands.
But for the moment I don’t know how to code that!

Thanks in advance for your help

I guess you will need to have a system driver for this task. I’m not a good windows programmer, but as far as I know this is probably the only way to let non privileged users issue SPTI commands.

Is it correct that USB2/Firewire drives are not yet supported?

So far, PxScan seems to work with it :slight_smile:

it correct that USB2/Firewire drives are not yet supported

Argh… I thought I corrected this problem…

I have for test, I pluges my ide drives on an external Usb2\firewire box.
And they are working…

Can you confirm me that your usb\firewire aren’t detected?

If you can contact me at this adress : millenod@millenod.com I’ll ask you to test an utility, to see which drives are exactly detected. Or i’ll create a more verbose dll :slight_smile:

PxScan seems to work with it


I guess you will need to have a system driver for this task

I know :frowning:
But it’s right I’d like to find an alternative to a pure system driver…
I don’t like this idea…
i’ve a bad experience of a cd driver, which slow down my ide speed to 8x…:S
so If I imagine that driver A+B+C+D… are loaded to manage cd…
I want to make something of clean.
I’m trying to port my driver for linux, and hope release a software that will use the same way to access drives…

So thanks for your reply.
I’m pleased to see that my project interests people!

So I forget, Thanks for Truman and his code example in a previous post :slight_smile:
His help was very usefull!

Just tested it and it works with my cdreader. But one thing, for invalid or failed calls I get SRB status error code: 103 - I think this is not a valid error code for WinASPI.

Here is the v0.13 of spti.dll : http://millenod.free.fr/appz/spti.zip

The bug reported by Alexander Noé are now fixed.
I’ll work on Truman bug this week.

If someone knows how to implement the Buffer functions…

list changes :


  • V0.13 (2005-09) :

    • first public release
  • V0.14 (2005-09-10) :

    • USB\Firewire drives are now supported (reported by Alexander Noé )
    • Added function ‘GetASPI32DLLVersion’

Thanks to people who helped me :

  • Truman (CDFreaks)
  • Bob (Droppix)
  • Philippe Vitalli (Droppix)
  • Wesson (VSO)
  • Alexander Noé
  • Christophe Fantoni
  • AMcD
  • Bill


alexnoe reporte me that my aspi sems to have problem with firewire drive detection.
Can someone verify this, and reporte me his results.

Sorry Millenod. I’m shamed, it was stupid me who had made a mistake. It does give a correct SRB status error code of 0x04. Please ignore what I said.

I’m now looking on ‘GetAspi32Buffer’ code.
Does anyone use this function and has samples?

For my part, (it’s right I never used it), this functions share a buffer between the application-dll-device.
And it’s right I don’t see the interest of this function…
But others say this function is able to copy directly the bufffer of a scsi card… In this case, I don’t know how to do.

So Does anyone developp this function in the past?

Help and advices will be appreciated and very helpfull

Dont really know how it works. Basically Dynamic VXDs can transfer the 1 Page limit between Higher and Lower Ring . Based on Definetion of DDK , if you want to have more memory to transfer ( For example transferring 8Kb as 2 Page ) the Driver most be Static . Now , were I dont know is , If this Memory is allocated from Physical Memory using the APIX.VXD , or its just kind of buffer in Application Layer that WNASPI holds its references.

In Action , I dont simply use the ASPIBuffer , due to the problems with several versions . The Fact is there is lots of users with wrong ASPI version , BAD Pirated copies of windows and so on and so on . It sounds more safe to allocate memory inside your program . ( Have to mention that I did not used ASPI to read more than 4 Block each Time , There may be Diffrence in the case )

As you are doing a clone for SPTI, I guess there is no need to hard work under NT , its enough to Allocated Memory based on the API requirement and Deallocate it based on both API and DLL Unloading.


Arg :S
I have never developped this kind of thing under W9x :confused:

Actually to access Buffer, i’m doing whats every people do:

  • allocate space for a buffer
  • indicated the buffer adress into spti command
  • execute the command
  • get the result of the buffer
  • free the buffer

That’s why I asked the question, I din’t find why using the GetAspi32Buffer function.

I can use the ‘NeroCdNTNeedAdminPrivilege’ from nero aspi, but i can’t use the ‘NeroCdNTHaveAdminPrivilege’ ones. find the bug :S

So I’ve rewritten into my own dll what I need.

The actual supported functions are :

  • GetASPI32SupportInfo
  • SendASPI32Command
  • GetASPI32DLLVersion
  • NTHaveAdminPrivilege (to know if users can use the spti interface or not. you must have an admin account)

I think I’ll add a :

  • RescanSCSI function. In the case you want to rescan devices.

Which other functions were you interested; For example this are ones include in Ahead aspi?

  • GetDriveHandleByDriveLetter
  • GetDriveHandleBySCSIAddr
  • GetDriveHandleByDriveNo ( get the N th drive in the driver list)
  • GetScsiAddressByCdRomID (get the scsi adress of the N th drive in the driver list)
  • GetScsiAddressByDriveLetter (get the scsi adress of Drive N:)

So, If I don’t have any answer, I 'll supose nobody is interested by these function or to make suggestion, so I will work on an other project.


Hi Again ,
Of course I am interested. In my personal Idea, ASPI is dead now. The only remaining advantage of ASPI comparing with SPTI is where the ASPI does not need Admin Rights. This can only be done writing a Filter Device Driver under NT where At least must be installed on target system once by an admin user.

Basically few ppl use the CDB method to access CD Drives , as Windows NT can handle most required functions for Application Programmers using pre-defined and documented IO Control Codes (IOCTL).

Even the read requests can be directly done opening the CD Drive as a File simply using File Based Windows API such as CreateFile and SetFilePointer and so on without the need of Admin Rights .

I Can simply feel that in Europe most ppl have to write their programs without Admin rights , too many developers should have a net work possible application even… Too many doors are closed in this way. In fact this is the reason why some Protection Companies have their own Drivers, They Install their Driver on system in order to get rid of admin rights and ask you to restart your computer at first run.

The architecture of NT is far from 9x and I guess it is much better than 9x. But as a personal view, If you want to make a real clone to ASPI , it will be nice to add a simple Filtering Driver to be installed once ( Like ASPI Drivers ) in order to ignore the Admin Rights on future start ups. Else , where the author of a program should ask his users “You will need Admin Right in order to work with me” , I Myself prefer to put ASPI into the trashcan and rewrite the code from the base.

I am agree with your way in Buffer Allocation. There is some examples ( I guess in ASPI SDK ) But Useless at all .

It’s just a personal review, I dont want to hit any one by no mean.
Good Luck

Hi persiankitty,

It’s great, I’ve “short” “articles” to read with you :slight_smile:
So For teh admin rights… I’ve found on aother way… juste modify a value on th eregistry and “limited users” can access spti commands too…
I don’t have the knowledge to write a filter driver.
I’d like… just to do what Insektors did in the past.
But without example, it’s hard tu study these concepts.

rewrite the code from the base.

It’s sure it’s better!
you have a better level than me… and as I say, I’m a student, and I’m finding a way to emulate the old aspi. It’s more a wrapper aspi\spti I’m doing than nothing else.
So, If you have code to share with mine…
and technical document for my studies… i don’t say no :slight_smile:

I will return to this thread after a few weeks. Have to see If I can write a driver for the wrapper or not.


If you need a tester I’m interesting.

Good luck.