다음을 통해 공유


mofcomp

MOF(Managed Object Format) 컴파일러는 MOF 문이 포함된 파일을 구문 분석하고 이 파일에 정의된 클래스와 클래스 인스턴스를 WMI 리포지토리에 추가합니다. MOF 파일은 보통 함께 제공되는 시스템이 설치되는 동안 자동으로 컴파일되지만, 이 도구를 사용하여 MOF 파일을 컴파일할 수도 있습니다.

mofcomp.exe를 찾아서 사용하는 방법에 대한 자세한 내용은 WMI 관리 도구 사용을 참조하세요. WMI 리포지토리에서 클래스 및 인스턴스를 제거하는 방법에 대한 자세한 내용은 pragma deleteclass 전처리기 명령을 참조하세요.

다음 코드 예제에서는 파일에서 MOF 컴파일러를 실행하는 방법을 보여 줍니다.

mofcomp
  [-autorecover]
  [-check]
  [-N:<namespacepath>]
  [-class:createonly | -class:forceupdate | 
   -class:safeupdate | -class:updateonly ] 
  [-instance:updateonly | -instance:createonly]
  [-B:<filename>]
  [-WMI]
  [-P:<Password>]
  [-U:<UserName>]
  [-A:<Authority>]
  [-MOF:<path>] 
  [-MFL:<path>] 
  [-AMENDMENT:<Locale>]
  [-ER:<ResourceName>]
  [-L:<ResourceLocale>] 
  <MOFfile>

스위치

-autorecover

리포지토리 복구 중에 컴파일된 파일 목록에 명명된 MOF 파일을 추가합니다. MOF 파일 자동 복구 목록은 다음 레지스트리 키에 저장됩니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\CIMOM\

autorecover 명령을 사용하는 MOF 파일은 원격 컴퓨터에 있는 MOF 파일을 복구할 수 없으므로 이 레지스트리 항목에 나열된 MOF 파일은 로컬 컴퓨터에 있어야 합니다.

참고

WMI에 오류가 있어서 다시 시작될 경우 관리형 개체에 대한 모든 WMI 클래스 정의가 WMI 리포지토리로 복원되도록 하려면 MOF(Managed Object Format) 파일에 있는 #pragma autorecover 전처리기 명령을 사용합니다.

-check

컴파일러가 구문 검사만 수행하고 적절한 오류 메시지를 출력하도록 요청합니다. 이 스위치는 다른 스위치와 함께 사용할 수 없습니다. 이 스위치를 사용하면 WMI(Windows Management Instrumentation)에 대한 연결이 설정되지 않으며 WMI 리포지토리가 수정되지 않습니다.

-N:<namespacepath>

컴파일러가 MOF 파일을 *namespacepath*로 지정된 네임스페이스에 로드하도록 요청합니다. 이 스위치를 사용하지 않으면 컴파일된 MOF는 기본 Mofcomp 네임스페이스인 root\\default에 로드됩니다. MOF 파일에 전처리기 명령 **\#pragma namespace(“***네임스페이스 경로***”)**를 삽입하여 동일한 효과를 얻을 수도 있습니다. **-N:** 스위치와 \#pragma namespace 명령을 모두 사용하는 경우 \#**pragma namespace** **autorecover**가 우선합니다. 이 경우 MOF를 다른 네임스페이스로 컴파일하는 유일한 방법은 MOF 파일을 편집하여 \#**pragma namespace** 명령을 변경하는 것입니다. \\\\machinename\\root\\default를 사용하여 원격 컴퓨터를 지정할 수 있습니다.

-class:createonly

컴파일러가 기존 클래스를 변경하지 않도록 요청합니다. 이 스위치를 사용하면 MOF 파일에 지정된 클래스가 있는 경우 컴파일 작업이 종료됩니다.

-class:forceupdate

충돌하는 자식 클래스가 있으면 클래스를 강제로 업데이트합니다. 예를 들어, 자식 클래스에 클래스 한정자가 정의되어 있는데 기본 클래스가 동일한 한정자를 추가하려고 시도할 수 있습니다. -class:forceupdate 모드에서 MOF 컴파일러는 자식 클래스에서 충돌하는 한정자를 삭제하여 이 충돌을 해결합니다. 자식 클래스에 인스턴스가 있는 경우 강제 업데이트가 실패합니다.

-class:safeupdate

변경으로 인해 자식 클래스와 충돌하지 않는 한, 자식 클래스가 있더라도 클래스가 업데이트되도록 합니다. 예를 들어, 이 플래그를 사용하면 자식 클래스에서 이전에 언급되지 않았던 새 속성을 기본 클래스에 추가할 수 있습니다. 자식 클래스에 인스턴스가 있는 경우 업데이트가 실패합니다.

-class:updateonly

컴파일러가 새 클래스를 만들지 않도록 요청합니다. 이 스위치를 사용하면 MOF 파일에 지정된 클래스가 없는 경우 컴파일 작업이 종료됩니다.

-instance:updateonly

컴파일러가 새 인스턴스를 만들지 않도록 요청합니다. 이 스위치를 사용하면 MOF 파일에 지정된 인스턴스가 없는 경우 컴파일 작업이 종료됩니다.

-instance:createonly

컴파일러가 기존 인스턴스를 변경하지 않도록 요청합니다. 이 스위치를 사용하면 MOF 파일에 지정된 인스턴스가 있는 경우 컴파일 작업이 종료됩니다.

-B:<filename>

컴파일러가 WMI 리포지토리를 수정하지 않고 이름이 filename인 MOF 파일의 이진 버전을 만들도록 요청합니다.

-B:<filename> 옵션을 사용하여 이진 MOF 파일을 만들면 기본 한정자 버전만 WMI 리포지토리에 저장됩니다.

이진 MOF 형식은 WDM 드라이버와 MOF를 리소스로서 결합하기 위한 중간 형식입니다. 이진 MOF는 텍스트 MOF 파일과 동일하게 클래스 및 인스턴스를 나타내며 디스크에 저장되기 전에 압축됩니다.

-WMI

컴파일러가 WMI 구문 검사를 수행하도록 요청입니다. -B: 스위치를 이 스위치와 함께 사용해야 합니다. -WMI 스위치는 WDM 디바이스 드라이버가 사용할 이진 MOF 파일을 빌드하는 데만 사용됩니다. 이 스위치는 이진 MOF 파일이 만들어진 후에 실행되는 별도의 이진 MOF 파일 검사기를 호출합니다.

-P:<Password>

Password를 컴퓨터 사용자가 로그온할 때 입력할 암호로 지정합니다.

-U:<UserName>

UserName을 로그온하는 사용자의 이름으로 지정합니다.

-A:<Authority>

Authority를 WMI에 로그온할 때 사용할 기관(도메인 이름)으로 지정합니다.

-MOF:<path>

언어 중립적 출력의 이름입니다. -AMENDMENT 스위치와 함께 사용되며, 생성될 언어 중립적 MOF 파일의 이름을 지정합니다.

-MFL:<path>

언어별 출력의 이름입니다. -AMENDMENT 스위치와 함께 사용되며, 생성될 언어별 MOF 파일의 이름을 지정합니다.

-AMENDMENT:<Locale>

MOF 파일을 언어 중립적 버전과 언어별 버전으로 분할합니다. MOF 컴파일러는 모든 수정된 한정자가 제거된 MOF 파일의 언어 중립적 형식을 만듭니다. MFL 파일 이름 확장자를 사용하여 지역화된 버전의 MOF 파일도 만들어집니다. Locale 매개 변수는 지역화된 클래스 정의를 포함하는 자식 네임스페이스의 이름을 지정합니다. Locale 매개 변수의 형식은 MS_xxx입니다. 여기서 xxx는 Windows LCID의 16진수 값입니다. 예를 들어, 미국 영어의 로캘은 MS_409입니다.

-ER <ResourceName>

명명된 리소스에서 이진 MOF를 추출합니다. 이 스위치는 WMI 리포지토리의 클래스에서 이진 MOF를 가져오고, -B 스위치는 MOF 파일에서 이진 MOF 형식을 만듭니다.

-L:<ResourceLocale>

(선택 사항) -ER 스위치와 함께 사용하면 이진 MOF에서 지역화된 MOF 설명을 추출합니다.

< MOFfile>

구문 분석할 파일의 이름입니다.

반환 값

첫 번째 작업으로, MOF 컴파일러가 MOF 파일에 대해 구문 검사를 수행합니다. 컴파일러가 오류를 발견하면 오류 메시지를 출력하고 프로세스를 종료합니다.

MOF 컴파일러는 다음 값을 반환할 수 있습니다.

0

MOF 컴파일 작업이 성공했습니다.

1

MOF 컴파일러가 WMI 서버에 연결하지 못했습니다. 기존 WMI 리포지토리와의 비호환성과 같은 의미 체계 오류이거나 WMI 서버 시작 실패와 같은 실제 오류 때문일 수 있습니다.

2

하나 이상의 명령줄 스위치가 유효하지 않습니다.

3

MOF 구문 오류가 발생했습니다.

MOF 파일이 올바르게 구문 분석되었지만 명령줄 스위치에서 사용할 수 없는 조작을 수행하려는 시도가 이루어진 경우, 컴파일러는 위 목록에 나열된 반환 코드 대신 WMI에서 생성된 오류 코드를 반환합니다. 예를 들어, -instance:updateonly 스위치가 지정되어 MOF 파일이 인스턴스를 만들려고 시도하면 WMI 오류 코드가 반환됩니다.

파일에 #pragma autorecover 전처리기 문이 없으면 다음 경고가 반환됩니다.

WARNING: FileYourMof.Mof does not contain #PRAGMA AUTORECOVER.
If the WMI repository is rebuilt in the future, the contents of this 
MOF file   will not be included in the new WMI repository.
To include this MOF file when the WMI Repository is automatically 
reconstructed, place the #PRAGMA AUTORECOVER statement on the first 
line of the MOF file.

설명

MOF 컴파일러는 %Windir%\System32\wbem 디렉터리에 있습니다. MOF 컴파일러의 매개 변수로 MOF 파일을 지정해야 합니다. CIM 리포지토리를 자동으로 복구해야 하는 경우 MOF 파일을 자동으로 다시 컴파일하려면 자동 복구 스위치를 지정할 수도 있습니다. 자세한 내용은 명령 프롬프트에 Mofcomp /?를 입력하여 확인하세요.

유니코드 문자 집합을 사용하는 MOF 파일은 파일의 처음 두 바이트로 서명을 포함합니다. 이 서명은 파일의 바이트 순서에 따라 U+FFFE 또는 U+FEFF입니다.

구문 분석 프로세스에서 오류가 발생하지 않은 경우 -check 스위치가 지정되어 있지 않은 한 MOF 컴파일러는 로컬 컴퓨터에서 실행되는 WMI 서버에 연결됩니다. MOF 파일에 정의된 클래스 및 인스턴스는 WMI 리포지토리에 추가됩니다.

WMI 리포지토리를 업데이트할 때 오류가 발생하는 경우 컴파일러는 컴파일러가 처리를 시작하기 전 상태로 리포지토리를 반환하려고 시도하지 않습니다.

Windows 8: 공급자를 설치할 때 mofcomp는 [Key] 및 [Static] 한정자가 있는 경우 실제 값과 관계없이 두 한정자를 true로 취급합니다. 그 밖의 다른 한정자는 있긴 하나 명시적으로 true로 설정되지 않았다면 false로 취급됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows Vista
지원되는 최소 서버
Windows Server 2008

추가 정보

pragma 네임스페이스

MOF 파일 컴파일

지역화된 MOF 파일 컴파일

공급자 등록

IMOFCompiler::CompileFile