Q&A

  • [질문] inout_ecount_opt를 델파이에서 변환

C언어 변수선언중에 이런 문장은 델파이에서 어떻게 변환을 해야되나요?
<!--CodeS-->
I_STATUS  I_API  ITargets(
    IN         BOOLEAN  ForceUpdate,
    IN OUT  PULONG   BufferSize,
    OUT      __inout_ecount_opt(*BufferSize)  PCHAR  Buffer
<!--CodeE-->
이부분에 대한 변환이 궁금합니다.
OUT      __inout_ecount_opt(*BufferSize)  PCHAR  Buffer
2  COMMENTS
  • Profile
    최용일 2008.11.12 06:08
    흠....
    __inout_ecount_opt 이런것들을 "Header Annotations"이라고 하는데 일종의 주석입니다.
    함수의 파라매터나 리턴값을 어떻게 사용하느냐를 자세히 알려주죠...
    델파이로 컨버팅하는데 아무런 영향이 없습니다. 이전에도 말씀드렸지만 무시하세요.

    아래 MSDN사이트에 보시면 자세히 나옵니다. 셀 수 없이 많구요...
    http://msdn.microsoft.com/en-us/library/aa383701.aspx

    위 사이트에 설명된 예로 모듈의 파일이름을 구하는 GetModuleFileName의 C함수 원형이 아래와 같습니다.

    DWORD WINAPI GetModuleFileName(
    __in_opt HMODULE hModule,
    __out_ecount_part(nSize, return + 1) LPTSTR lpFilename,
    __in DWORD nSize
    );

    하지만 델파이의 Windows.pas소스에는 아래와 같이 컨버팅되어 있습니다.

    function GetModuleFileName(hModule: HINST; lpFilename: PChar; nSize: DWORD): DWORD; stdcall;
    C에서 HMODULE형으로 선언된 hModule파라매터가 델파이에서 HINST로 변경
  • Profile
    coderoad 2008.11.12 06:32
    최용일님 감사합니다.
    자세한 설명으로 가닥이 잡혀갑니다.