The hook provider processes the message, optionally returning a different destination folder for the message or returning values that cause the MAPI spooler to delete the message.
The MAPI spooler calls any other hook providers — assuming that HOOK_CANCEL was not returned in step 3 — then delivers the message to its final destination or deletes it as appropriate.