VC++에서는 문자열을 다룰 때 char나 wchar_t 로 선언합니다.
그러나 드라이버 개발을 하다보면 STRING이나 UNICODE_STRING 로 선언된 것을 많이 볼 수 있는데요.
특이하게도 문자열을 구조체로 표현합니다.
각각 길이, 최대 길이(NULL을 포함하는), 문자열 포인터를 표현합니다.
DbgPrint에서 구조체를 직접 출력할 수 있는 특이점이 있습니다. 아래 %wZ 출력을 확인해 주세요.
문자열의 초기화는 RtlInitUnicodeString()를 사용하며, 아래와 같이 PSEUDO 코드를 작성할 수 있습니다.
UnicodeString->Buffer = 초기화 문자열;
UnicodeString->Length = wcslen(초기화 문자열) ;
UnicodeString->MaximumLength = UnicodeString->Length + sizeof(UNICODE_NULL) ;
아래 코드는 동적으로 할당 및 해제 하는 방법입니다. Buffer만 동적으로 할당하니 결국 malloc()과 같다고 볼 수 있습니다.
'Windows > WDK' 카테고리의 다른 글
드라이버 숨기기 (LDR_DATA_TABLE_ENTRY) (0) | 2020.10.13 |
---|---|
코드서명 없이 WDK 드라이버 실행하기 (Windows 10 64비트) (3) | 2020.03.19 |
[64비트] Visual Studio 2010 + WDK + MASM 개발 환경 구축하기 (2) | 2014.08.28 |
WDK 왕초보를 위한 개발 가이드 #2 - 메모리 동적 할당 (0) | 2014.04.04 |
WDK 왕초보를 위한 개발 가이드 #1 (2) | 2014.04.02 |