driver-online
  log-inmypagesitemap
top
   자유게시판
   로그북
    견우일지
    시스템팀 개발일지
    Beginning Driver
   유용한 팁&강좌
   CrashDump분석(beta)
   개발QnA
    WDM 입문
    USB
    NDIS
    File System
    Debugging 관련
    그 외
 

Unicode String 할당 함수...
 ·작성일 2008.04.02:13.34 (수)  · 작성자 견우  · 조 회 5,867


WDK에서 유니코드 관련 함수중에
있을만할 것 같은데도 없는 함수들이 몇가지가 있습니다.
바로 유니코드 할당/해제 함수이죠...

그래서 아래와 같이
MyAllocateUnicodeString, MyFreeUnicodeString 등을 만들어 쓰면
편리합니다.

uniString.MaximumLength = (USHORT) MAX_PATH ;
status = MyAllocateUnicodeString( &uniString );

... 중간 생략 ...

MyFreeUnicodeString(&uniSTring) ;

NTSTATUS
MyAllocateUnicodeString (
    __inout PUNICODE_STRING String
    )
{
    PAGED_CODE();

    String->Buffer = ExAllocatePoolWithTag( PagedPool,
                                            String->MaximumLength,
                                            NULL );

    if (String->Buffer == NULL) {      

        return STATUS_INSUFFICIENT_RESOURCES;
    }

    String->Length = 0;

    return STATUS_SUCCESS;
}

VOID
MyFreeUnicodeString (
    __inout PUNICODE_STRING String
    )
{
    PAGED_CODE();

    ExFreePoolWithTag( String->Buffer,
                       NULL );

    String->Length = String->MaximumLength = 0;
    String->Buffer = NULL;
}

p.s.

ExAllocatePoolWithTag( PagedPool,
String->MaximumLength,
'10YM' );

ExFreePoolWithTag( String->Buffer,
'10YM' );

위처럼 태깅을 하셔서 쓰시면
메모리 풀 관련 문제가 생겼을때 디버깅하기 유용하실꺼에요~
태그는..원하시는 이름으로 바꿔서 쓰세요

*답변을 받은 후 감사의 글을 남기는 것은 꼭 지켜야할 네티켓입니다.
    

이 전 : WDK6000에서 빌드하여 C2220에러를 만났을 경우 해결책

다 음 : 팁팁팁! KdPrint로 유니코드 출력하기~!


·애교만땅 견우님 많이 배우고 갑니다. 2008.06.13 코멘트 삭제
·견우 ㅋ.. 일부러 Tag는 NULL로 넣었어요~^^.. 사용하시는 분들
께서 맘에 드는 이름 붙이시라고~^^;;
2008.04.03 코멘트 삭제
·Jeff 견우님 이거요 Tag 사용하는 코드로 변경해 주세요 Tag 가
없으면 pool 관련 문제 발생했을 때 디버깅 정말 힘들어져
2008.04.03 코멘트 삭제
 
quick-menu
event
study
QnA
pds
family-site concert used used2 intro
address
address