Professional Documents
Culture Documents
## Copyright (C) Huawei Technologies Co., Ltd. 2004-2005. All rights reserved.
##
±¾³ÌÐò°üΪÊý¾Ý¿¨ÖÕ¶ËÉ豸Çý¶‾³ÌÐòµÄ°²×°³ÌÐò, ÔÚDevSetupĿ¼ÏÂÓÐWin2K/WinXPÁ½¸ö×ÓĿ¼, Ö
DevSetup.dllʹÓÃ˵Ã÷:
1, DWORD DevSetup(BYTE byType, bool bDebug);
˵Ã÷: ¿ÉÒÔʵÏÖÇý¶‾³ÌÐòµÄ°²×°¡¢É¾³ý¡¢²éÑ‾¡¢°ïÖú¹¦ÄÜ£¬¿ÉÒÔ´ò¿ª¡¢¹Ø±Õµ÷ÊÔÐÅÏ¢µÄÊä³ö¡£
byType: ±íʾ²Ù×÷ÀàÐÍ£¬È¡ÖµÈçÏ£º
0£º °²×°E600Çý¶‾£»
1£º ɾ³ýE600Çý¶‾£»
2£º ²éÑ‾µ±Ç°ÏµÍ³ÊÇñÒѾ°²×°E600Çý¶‾³ÌÐò£»
3£º Êä³ö°ïÖúÐÅÏ¢£»
bDebug£º´ò¿ª¡¢¹Ø±Õµ÷ÊÔÐÅÏ¢µÄÊä³ö£¬È¡ÖµÈçÏ£º
true: ´ò¿ªµ÷ÊÔÐÅÏ¢µÄÊä³ö£»
false: ¹Ø±Õµ÷ÊÔÐÅÏ¢µÄÊä³ö£»
µ»Ø0±íʾ²Ù×÷³É¹¦£¬ÆäËü±íʾ²Ù×÷ʧ°Ü£¬È¡Öµ²Î¼û¡°´íÎóÂ롱¡£
2, DWORD Install(void);
˵Ã÷: °²×°E600Çý¶‾£»
µ»Ø0±íʾ²Ù×÷³É¹¦£¬ÆäËü±íʾ²Ù×÷ʧ°Ü£¬È¡Öµ²Î¼û¡°´íÎóÂ롱¡£
3, DWORD Uninstall(void);
˵Ã÷: ɾ³ýE600Çý¶‾£»
µ»Ø0±íʾ²Ù×÷³É¹¦£¬ÆäËü±íʾ²Ù×÷ʧ°Ü£¬È¡Öµ²Î¼û¡°´íÎóÂ롱¡£
4, DWORD Detect(void);
˵Ã÷: ²éÑ‾µ±Ç°ÏµÍ³ÊÇñÒѾ°²×°E600Çý¶‾³ÌÐò£»
µ»Ø0±íʾ²Ù×÷³É¹¦£¬ÆäËü±íʾ²Ù×÷ʧ°Ü£¬È¡Öµ²Î¼û¡°´íÎóÂ롱¡£
5, DWORD Help(void);
˵Ã÷: Êä³ö°ïÖúÐÅÏ¢£»
µ»Ø0±íʾ²Ù×÷³É¹¦£¬ÆäËü±íʾ²Ù×÷ʧ°Ü£¬È¡Öµ²Î¼û¡°´íÎóÂ롱¡£
˵Ã÷:
±¾°²×°³ÌÐòÖ´ÐÐÍê³Éºó£¬ÐèÒªÖØвå°ÎÉ豸»òµ÷ÓÃϵͳº‾ÊýCM_Locate_DevNodeÀ´Ë¢ÐÂϵͳÇý¶‾³ÌÐò
´íÎóÂë:
// Ó¦ÓÃÒѾ´æÔÚ/ÒѾ´æÔÚÒ»¸ö²Ù×÷É豸Çý¶‾µÄ½ø³Ì;
#define DEV_SETUP_ERROR_ALREADY_EXISTS DWORD(20001)
// ÃüÁîÐвÎÊý´íÎó;
#define DEV_SETUP_ERROR_INVALID_CMD DWORD(20002)
// ²»Ö§³ÖµÄWINDOWS°æ±¾;
#define DEV_SETUP_ERROR_INVALID_SYS_VER DWORD(20003)
// ûÓÐÕÒµ½Çý¶‾°²×°Îļþ;
#define DEV_SETUP_ERROR_EMPTY_DIR DWORD(20004)
// °²×°Çý¶‾Îļþʧ°Ü;
#define DEV_SETUP_ERROR_INSTALL_FAIL DWORD(20005)
// ɾ³ýÒÑÓÐÇý¶‾ʧ°Ü;
#define DEV_SETUP_ERROR_REMOVE_FAIL DWORD(20006)
// ûÓÐÕÒµ½Çý¶‾;
#define DEV_SETUP_DRIVER_NOT_EXISTS DWORD(10000)
// Çý¶‾ÒѾ´æÔÚ;
#define DEV_SETUP_DRIVER_ALREADY_EXISTS DWORD(10001)
DevSetup.exeʹÓý¨(Àý³Ì):
#include <Windows.h>
#include <Winbase.h>
#include <stdio.h>
void main(void)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
// Start the child process.
if( !CreateProcess( NULL, // No module name (use command line).
"DevSetup /install", // Command line. [/uninstall | /detect |
/help]
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ) // Pointer to PROCESS_INFORMATION struct
ure.
)
{
return;
}
// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );
DWORD dwReturn;
GetExitCodeProcess(pi.hProcess, &dwReturn);
printf("%d", dwReturn);
// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
return;
}