Implement filesystem services, and the required kernel objects.

I suggest changing this to

    if (false == archive->Initialize()) {
        ERROR_LOG(blah);
        return;
    }
    CreateArchive(archive, "SDMC");

Looks more logical to me (personal preference) and more importantly doesn't require changing the code if anything gets added at the bottom of this function in the future.