DDJ, December 1995: Examining the Windows 95 Layered File System
by Mark Russinovich and Bryce Cogswell

Listing Six

        ; insert our callback in the callback stack as default for all requests

        mov     eax, [ebx.IOP_callback_ptr]                    ; set Callback
        mov     [eax.IOP_cb_address], offset32 VSD_callback    ; pointer

        ; use the calldown pointer as reference data in the callback entry
        ; so that we can find the offset in the IOP to the expansion area

        mov     edx, [ebx.IOP_calldown_ptr]                    ; get CD ptr
        mov     [eax.IOP_cb_ref_data], edx                     ; set reference

        ; add a callback entry to the callback stack, for the next layer

        add     [ebx.IOP_callback_ptr],size IOP_callBack_entry ; move down