2025-11-28 00:35:46 +09:00

152 lines
6.5 KiB
Plaintext

====================================================================================
INDICATION SAMPLE
====================================================================================
The current directory contains source code demonstrating the indication feature
of MIAPI.
NOTE: Please see ..\ReadMe.txt (Section 2. PREPARATION) for instructions on how to
create environment variables which will be used in this sample.
====================================================================================
INSTRUCTIONS
====================================================================================
There are multiple sections below that correspond to each of the sub-folders in this
folder. The sections and folders are
1. Provider
2. NativeClient
3. ManagedClient
4. CIMCmdlet
1. Provider
------------------------------------------------------------------------------------
This directory contains the provider code, most of which are generated by
Convert-MofToProvider.exe tool from SDK.
Following shows you how to generate provider code, implement the provider,
compile the provider, and how to deploy the provider to a Windows 8 or Windows
Server 2012 machine.
1) Generate provider code skeleton
Run the following command line from an elevated command prompt (cmd.exe)
%SDKBINDIR%\convert-moftoprovider.exe -MofFile %MISAMPLEDIR%\sample.mof -ClassList MSFT_WindowsServiceStarted MSFT_WindowsServiceStopped -IncludePath %CIM2260DIR% %MISAMPLEDIR% -ExtraClass Cim_Error -OutPath %MISAMPLEDIR%\indication\provider\temp -SkipLocalize
This command will:
- use the MOF file called Sample.Mof that in the folder identified by %MISAMPLEDIR%
- generate skeleton code for the 2 classes following -Classlist
- use the CIM 2.26 schema located in the folder identified by %CIM2260DIR%
- use MSFT_Qualifiers.MOF located in the folder identified by %MISAMPLEDIR%
- include generated schema & types for the Cim_Error class
- place all output in the folder identified by the -OutPath parameter
- skip the generation of resource IDs used for localization (this is covered
in another sample)
Generated code can be found under %MISAMPLEDIR%\indication\provider\temp.
Following lists the generated files, with notes for each file.
GENERATED FILES
---------------
NOTE: All .h files define class types and helper functions to
manipulate instances of the class, such as set/clear the property
value, construct, clone and destruct.
CIM_Indication.h
CIM_InstIndication.h
CIM_InstModification.h
MSFT_WindowsServiceStarted.h
MSFT_WindowsServiceStopped.h
WindowsService.h
module.c
Defines and implements entry function (MI_Main) of the provider.
Implements function (Load) which will be called once the provider
is being loaded.
Implements function (UnLoad) which will be called once the provider
is being unloaded.
MSFT_WindowsServiceStarted.c
Implements the requested methods of a indication class.
MSFT_WindowsServiceStopped.c
Implements the requested methods of a indication class.
schema.c
Includes full schema of all related classes. This file should not be
modified. To change the schema, modify the original MOF (in this case
sample.mof) and re-generate the code.
WMIAdapter.c
To enable this provider build based on MI API running with WMI,
this file implements several adapter functions.
Provider.DEF
Defines list of exported APIs from this provider.
OTHER FILES USED BY THIS SAMPLE
-----------
WindowsService.c
This is provided as part of the sample code, and was created to show
the most efficient way of working with the generated code. The business logic
for the elements in MSFT_WindowsServiceStopped.c and MSFT_WindowsServiceStarted.c
are implemented in WindowsService.c.
If the schema is extended or updated, a new version of MSFT_WindowsServiceStopped.c
and MSFT_WindowsServiceStarted.c will need to be generated.
By placing the business logic in a separate file,
the work to align the updates is significantly reduced.
WindowsService.h
svcind.vcxproj
Visual studio project file for the indication provider.
2) Implement & compile the provider
See *.c file for the implementation, especially MSFT_WindowsServiceStarted.c and
MSFT_WindowsServiceStopped.c files.
Open %MISAMPLEDIR%\misample.sln file with visual studio 2012 and
make sure following settings are correct, then you will be able to build.
- Click menu Build->Configuration Manager, select desired Active solution platform,
"x64" for example.
- Right Click "svcind" project and select properties.
- Goto 'Configuration Properties' -> Linker -> Input -> Additional Dependencies
Make sure "mi.lib;%(AdditionalDependencies)" was added there.
NOTE: If the target windows 8 is 32bit (x86), then you need to set Active solution platform as Win32.
3) Register provider.
Once the project above is built, you will have created a new provider called svcind.DLL.
Copy the compiled svcind.DLL to a Windows 8 or Windows Server 2012 machine, and invoke
the following command line from elevated commandline prompt (cmd.exe):
Register-CimProvider.exe -Namespace Root/Standardcimv2/sample -ProviderName indication -Path svcind.dll -verbose -ForceUpdate
Once that completes, svcind.dll should be successfully registered into system.
NOTE:
1) This provider depends on service.dll provider, which should be registered into
same namespace Root/Standardcimv2/sample. Refer to ..\service\readme.txt for
registration instructions.
2) Register-CimProvider.exe is shipped in Windows 8 and Windows Server 2012, in
%windir%\system32.
2. NativeClient
------------------------------------------------------------------------------------
See ReadMe.txt for details.
3. ManagedClient
------------------------------------------------------------------------------------
See ReadMe.txt for details.
4. CIMCmdlet
------------------------------------------------------------------------------------
This directory contains a ps1 script file, which demonstrate how to use CimCmdlets
to consume the data from the the indication provider.
To run the script, just open powershell.exe, and paste content of the PS1 file
to PowerShell console.