Extraindo componentes de nome de caminho de UNICODE_STRING em um driver WDK usando win32 e C

Estou tentando separar os componentes de um nome de caminho UNICODE_STRING para criar a árvore de diretórios da raiz do dispositivo para a folha do arquivo. Isso precisa ser feito em um driver WDK.

Eu preciso construir a estrutura de diretórios um pedaço de cada vez usandoZwCreateFile() pois ele pode criar apenas o diretório ou folha final, e não o caminho inteiro em uma única chamada.

Peço desculpas por uma pergunta tão simples para você, engenheiro C, mas estou tendo problemas para resolver isso e utilizá-lo em um driver.

Minha abordagem atual é converter umUNICODE_STRING parachar e use ostrtok_s() para quebrar o nome do caminho em seus diretórios e arquivos de componentes.

Eu estou olhando para usar

char string1[] =
    "\\Device\\HarddiskVolume";

char seps[] = "\\";
char *token1 = NULL;

char *next_token1 = NULL;

token1 = strtok_s(string1, seps, &next_token1);

Mas preciso converter umUNICODE_STRING parachar corda.

questionAnswers(2)

yourAnswerToTheQuestion