Вы находитесь на странице: 1из 3

##

## 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±íʾ²Ù×÷³É¹¦£¬ÆäËü±íʾ²Ù×÷ʧ°Ü£¬È¡Öµ²Î¼û¡°´íÎóÂ롱¡£

6, DWORD Scan(DWORD dwTime, bool bDebug, DEVSETUP_CALLBACK_TYPE CallBack);;


˵Ã÷: ɨÃèÊý¾Ý¿¨É豸²¢°²×°Çý¶‾³ÌÐò, (Ä¿Ç°²»¶ÔÍâÌṩ, Ò²²»ÌṩӢÎÄ˵Ã÷)£»
dwTime: ɨÃèÉ豸²åÈëµÄʱ³¤, µ¥Î»(Ãë);
bDebug£º´ò¿ª¡¢¹Ø±Õµ÷ÊÔÐÅÏ¢µÄÊä³ö£¬È¡ÖµÈçÏ£º
true: ´ò¿ªµ÷ÊÔÐÅÏ¢µÄÊä³ö£»
false: ¹Ø±Õµ÷ÊÔÐÅÏ¢µÄÊä³ö£»
CallBack: Èç¹ûÓÐÉèÖô˻ص÷º‾Êý, ÔòÔÚɨÃèµ½É豸²åÈëʱ»áµ÷Óô˺‾Êý֪ͨµ÷ÓÃÕß, Ä¿Ç°»Øµ÷º‾Êý²ÎÊ
º‾ÊýÀàÐÍ: typedef void(*DEVSETUP_CALLBACK_TYPE)(DWORD dwStauts, void* pData);
—µ»Ø0±íʾ²Ù×÷³É¹¦£¬ÆäËü±íʾ²Ù×÷ʧ°Ü£¬È¡Öµ²Î¼û¡°´íÎóÂ롱¡£
DevSetup.exeʹÓÃ˵Ã÷:
1, Install
µ÷Óà [—¾¶/]DevSetup /install
2, Uninstall
µ÷Óà [—¾¶/]DevSetup /uninstall
3, Detect
µ÷Óà [—¾¶/]DevSetup /detect
4, Usage
µ÷Óà [—¾¶/]DevSetup /help »ò [—¾¶/]DevSetup ?
Ö´Ðнá¹û:
Ö´Ðгɹ¦—µ»Ø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;
}

Вам также может понравиться