ClfsCreateLogFile fails with STATUS_OBJECT_PATH_INVALID

I’m trying to use CLFS in my minifilter for logging purposes but every time it calls ClfsCreateLogFile, STATUS_OBJECT_PATH_INVALID is returned.

  • I’ve tried several create disposition values and always get the failure. What I want to use is OPEN_ALWAYS but I’ve tried the destructive values with no luck.

  • I want to use a dedicated log so the pathname is “log:c:\MyFiltLog” formatted per the MS documentation. I tried putting it in a sub-directory and also added the “.blf” extension.

In every case, I get the same failure. Here’s what the call looks like:

status = **ClfsCreateLogFile**(
    &clfsLogFileObj,
    &logUnicodeName,
    (GENERIC_READ | GENERIC_WRITE),
    (FILE_SHARE_READ | FILE_SHARE_WRITE),
    NULL,
    OPEN_ALWAYS,
    0,
    FILE_ATTRIBUTE_NORMAL,
    CLFS_FLAG_NO_FLAGS,
    NULL,             
    0                
);

Shared read and write are enabled because my minifilter is the producer and my service is the consumer.

I want to replace CLFS_FLAG_NO_FLAGS with CLFS_FLAG_MINIFILTER_LEVEL but that’s the next step - figuring out the context for my minifilter that needs to be passed. Right now, I’ll have it handle re-entrant CLFS IO. I just want to get the log created or opened.