Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 20 kết quả

Đề tài: làm sao để nhận ra USB khi nó được cắm vào máy tính

  1. #1
    Ngày gia nhập
    09 2008
    Bài viết
    328

    Mặc định làm sao để nhận ra USB khi nó được cắm vào máy tính

    em có đọc vài bài về phần cứng nhưng vẫn chưa hiểu VD như 1 con virus đang thừong trú trong máy tính thì cứ cắm USB hoặc copy từ máy vào usb thì sẽ dính virus,em không hiểu tại sao nó lại thế
    anh em có thể chỉ dẫn cách lập trình đơn giản như việc khi cắm USB vào máy tính là nó thông báo cho mình biết không( em có hỏi bên virusvn nhưng rất lờ mờ,khó hiểu....???)

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mặc định Code tự động xác định USB inject/reject

    Đây là code nhận ra usb đơn giản :
    Visual C++ Code:
    1. #include <windows.h>
    2.  
    3. int APIENTRY WinMain(HINSTANCE hInstance,
    4.                      HINSTANCE hPrevInstance,
    5.                      LPSTR     lpCmdLine,
    6.                      int       nCmdShow)
    7. {
    8.     // TODO: Place code here.
    9.     char buffer[1000];
    10.     long i = 0;
    11.     DWORD tmp;
    12.     DWORD DriveType[28];
    13.  
    14.     for (i=0;i<28;i++)
    15.         DriveType[i] = 0;
    16.  
    17.     while (true)
    18.     {
    19.         GetLogicalDriveStrings(1000,buffer);
    20.         for (i=2;i<=26;i+=4)
    21.         {
    22.             tmp = GetDriveType(&buffer[i * 4]);
    23.             if (tmp != DriveType[i])
    24.             {
    25.                 DriveType[i] = tmp;
    26.                 if (tmp == DRIVE_REMOVABLE)
    27.                 {
    28.                     MessageBox(NULL,"USB da duoc cam vao may !","Thong bao",MB_OK);
    29.                 }
    30.             }
    31.         }
    32.  
    33.         SleepEx(500,1);
    34.     }
    35.  
    36.     return 0;
    37. }
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    GetDriveType Function

    Determines whether a disk drive is a removable, fixed, CD-ROM, RAM disk, or network drive.

    To determine whether a drive is a USB-type drive, call SetupDiGetDeviceRegistryProperty and specify the SPDRP_REMOVAL_POLICY property.


    Syntax Code:
    1. UINT WINAPI GetDriveType(
    2.   __in_opt  LPCTSTR lpRootPathName
    3. );
    hàm GetDriveType chỉ có tác dụng với ổ đĩa CD,ổ cứng...,không có tác dụng với ổ USB phải dùng hàm này SetupDiGetDeviceRegistryProperty

    Windows Driver Kit: Device Installation
    SetupDiGetDeviceRegistryProperty

    The SetupDiGetDeviceRegistryProperty function retrieves a specified Plug and Play device property.

    Visual C++ Code:
    1. WINSETUPAPI BOOL WINAPI SetupDiGetDeviceRegistryProperty(
    2.     IN HDEVINFO  DeviceInfoSet,
    3.     IN PSP_DEVINFO_DATA  DeviceInfoData,
    4.     IN DWORD  Property,
    5.     OUT PDWORD  PropertyRegDataType,  OPTIONAL
    6.     OUT PBYTE  PropertyBuffer,
    7.     IN DWORD  PropertyBufferSize,
    8.     OUT PDWORD  RequiredSize  OPTIONAL
    9. );

    Parameters
    DeviceInfoSet
    A handle to a device information set that contains a device information element that represents the device for which to retrieve a Plug and Play property.
    DeviceInfoData
    A pointer to an SP_DEVINFO_DATA structure that specifies the device information element in DeviceInfoSet.
    Property
    One of the following values, indicating the property to be retrieved:

    SPDRP_ADDRESS
    The function retrieves the device's address.
    SPDRP_BUSNUMBER
    The function retrieves the device's bus number.
    SPDRP_BUSTYPEGUID
    The function retrieves the GUID for the device's bus type.
    SPDRP_CAPABILITIES
    The function retrieves a bitwise OR of the following CM_DEVCAP_Xxx flags in a DWORD. The device capabilities that are represented by these flags correspond to the device capabilities that are represented by the members of the DEVICE_CAPABILITIES structure. The CM_DEVCAP_Xxx constants are defined in cfgmgr32.h.

    CM_DEVCAP_Xxx flag Corresponding DEVICE_CAPABILITIES structure member
    CM_DEVCAP_LOCKSUPPORTED LockSupported
    CM_DEVCAP_EJECTSUPPORTED EjectSupported
    CM_DEVCAP_REMOVABLE Removable
    CM_DEVCAP_DOCKDEVICE DockDevice
    CM_DEVCAP_UNIQUEID UniqueID
    CM_DEVCAP_SILENTINSTALL SilentInstall
    CM_DEVCAP_RAWDEVICEOK RawDeviceOK
    CM_DEVCAP_SURPRISEREMOVALOK SurpriseRemovalOK
    CM_DEVCAP_HARDWAREDISABLED HardwareDisabled
    CM_DEVCAP_NONDYNAMIC NonDynamic

    SPDRP_CHARACTERISTICS
    The function retrieves a bitwise OR of a device's characteristics flags in a DWORD. For a description of these flags, which are defined in wdm.h and ntddk.h, see the IoCreateDevice function's DeviceCharacteristics parameter.
    SPDRP_CLASS
    The function retrieves a REG_SZ string that contains the device setup class of a device.
    SPDRP_CLASSGUID
    The function retrieves a REG_SZ string that contains the GUID that represents the device setup class of a device.
    SPDRP_COMPATIBLEIDS
    The function retrieves a REG_MULTI_SZ string containing the list of compatible IDs for a device. For information about compatible IDs, see Device Identification Strings.
    SPDRP_CONFIGFLAGS
    The function retrieves a bitwise OR of a device's configuration flags in a DWORD value. The configuration flags are represented by the CONFIGFLAG_Xxx bitmasks that are defined in regstr.h.
    SPDRP_DEVICE_POWER_DATA
    (Windows XP and later) The function retrieves a CM_POWER_DATA structure containing the device's power management information.
    SPDRP_DEVICEDESC
    The function retrieves a REG_SZ string containing the description of a device.
    SPDRP_DEVTYPE
    The function retrieves a DWORD value representing the device's type (see Specifying Device Types).
    SPDRP_DRIVER
    The function retrieves a string identifying the device's software key (sometimes called the driver key). See Driver Information in the Registry.
    SPDRP_ENUMERATOR_NAME
    The function retrieves a REG_SZ string containing the name of the device's enumerator.
    SPDRP_EXCLUSIVE
    The function retrieves a DWORD value that indicates whether a user can obtain exclusive use of the device. The returned value is one if exclusive use is allowed, or zero otherwise. For more information, see IoCreateDevice.
    SPDRP_FRIENDLYNAME
    The function retrieves a REG_SZ string that contains the friendly name of a device.
    SPDRP_HARDWAREID
    The function retrieves a REG_MULTI_SZ string containing the list of hardware IDs for a device. For information about hardware IDs, see Device Identification Strings.
    SPDRP_INSTALL_STATE
    (Windows XP and later) The function retrieves a DWORD value that indicates the installation state of a device. The installation state is represented by one of the CM_INSTALL_STATE_Xxx values that are defined in Cfgmgr32.h. The CM_INSTALL_STATE_Xxx values correspond to the DEVICE_INSTALL_STATE enumeration values.

    SPDRP_LEGACYBUSTYPE
    The function retrieves the device's legacy bus type as an INTERFACE_TYPE value (defined in wdm.h and ntddk.h).
    SPDRP_LOCATION_INFORMATION
    The function retrieves a REG_SZ string that contains the hardware location of a device.
    SPDRP_LOCATION_PATHS
    (Windows Server 2003 and later) The function retrieves a REG_MULTI_SZ string that represents the location of the device in the device tree.

    SPDRP_LOWERFILTERS
    The function retrieves a REG_MULTI_SZ string that contains the names of a device's lower-filter drivers.
    SPDRP_MFG
    The function retrieves a REG_SZ string that contains the name of the device manufacturer.
    SPDRP_PHYSICAL_DEVICE_OBJECT_NAME
    The function retrieves a REG_SZ string that contains the name that is associated with the device's PDO. For more information, see IoCreateDevice.
    SPDRP_REMOVAL_POLICY
    (Windows XP and later) The function retrieves the device's current removal policy as a DWORD containing one of the CM_REMOVAL_POLICY_Xxx values defined in cfgmgr32.h.
    SPDRP_REMOVAL_POLICY_HW_DEFAULT
    (Windows XP and later) The function retrieves the device's hardware-specified default removal policy as a DWORD containing one of the CM_REMOVAL_POLICY_Xxx values defined in cfgmgr32.h.
    SPDRP_REMOVAL_POLICY_OVERRIDE
    (Windows XP and later) The function retrieves the device's override removal policy (if it exists) from the registry, as a DWORD containing one of the CM_REMOVAL_POLICY_Xxx values defined in cfgmgr32.h.
    SPDRP_SECURITY
    The function retrieves a SECURITY_DESCRIPTOR structure for a device.
    SPDRP_SECURITY_SDS
    The function retrieves a REG_SZ string that contains the device's security descriptor. The format of security descriptor strings is described in Microsoft Windows SDK documentation.
    SPDRP_SERVICE
    The function retrieves a REG_SZ string containing the service name for a device.
    SPDRP_UI_NUMBER
    The function retrieves a DWORD value set to the value of the UINumber member of the device's DEVICE_CAPABILITIES structure.
    SPDRP_UI_NUMBER_DESC_FORMAT
    The function retrieves a format string (REG_SZ) used to display the UINumber value.
    SPDRP_UPPERFILTERS
    The function retrieves a REG_MULTI_SZ string that contains the names of a device's upper filter drivers.

    PropertyRegDataType
    A pointer to a variable that receives the data type of the property that is being retrieved. This is one of the standard registry data types. This parameter is optional and can be NULL.
    PropertyBuffer
    A pointer to a buffer that receives the property that is being retrieved. If this parameter is set to NULL, and PropertyBufferSize is also set to zero, the function returns the required size for the buffer in RequiredSize.
    PropertyBufferSize
    The size, in bytes, of the PropertyBuffer buffer.
    RequiredSize
    A pointer to a variable of type DWORD that receives the required size, in bytes, of the PropertyBuffer buffer that is required to hold the data for the requested property. This parameter is optional and can be NULL.

    Return Value

    SetupDiGetDeviceRegistryProperty returns TRUE if the call was successful. Otherwise, it returns FALSE and the logged error can be retrieved with a call to GetLastError. SetupDiGetDeviceRegistryProperty returns the ERROR_INVALID_DATA error code if the requested property does not exist for a device or if the property data is not valid.

    Requirements

    Versions: The SetupDiGetDeviceRegistryProperty function is available in Microsoft Windows 2000 and later versions of Windows.

    Headers: Declared in Setupapi.h. Include Setupapi.h.

    See Also

    SetupDiGetClassRegistryProperty, SetupDiSetClassRegistryProperty, SetupDiSetDeviceRegistryProperty, IoGetDeviceProperty
    APIScan Requirements
    Header: setupapi.h
    Function: SetupDiGetDeviceRegistryProperty

  4. #4
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Nó vẫn chạy được với usb mà, bạn chạy thử chưa vậy ? USB thuộc nhóm removable.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  5. #5
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    Nó vẫn chạy được với usb mà, bạn chạy thử chưa vậy ? USB thuộc nhóm removable.
    mình chạy sau đó cắm USB vào,rút USB ra -> chẳng có chuyện gì xảy ra

  6. #6
    Ngày gia nhập
    07 2007
    Nơi ở
    TP.HCM
    Bài viết
    199

    Mặc định làm sao để nhận ra USB khi nó được cắm vào máy tính

    Trích dẫn Nguyên bản được gửi bởi coder_gate Xem bài viết
    mình chạy sau đó cắm USB vào,rút USB ra -> chẳng có chuyện gì xảy ra
    Mình cũng thử code của mèo rồi, cũng không thấy dấu hiệu gì cả...

  7. #7
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Lạ nhỉ, mình chạy máy nhà vẫn ok mà. Để mình kiếm máy thằng bạn chạy thử lần nữa coi sao.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  8. #8
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    ném file exe của bạn lên đi
    còn đây là MSDN
    DRIVE_REMOVABLE
    The drive has removable media; for example, a floppy drive, thumb drive, or flash card reader.
    ứng với code này của bạn
    Visual C++ Code:
    1.                 if (tmp == DRIVE_REMOVABLE)
    2.                 {
    3.                     MessageBox(NULL,"USB da duoc cam vao may !","Thong bao",MB_OK);
    4.                 }

    không biết flash card reader có phải là USB không nữa
    Đã được chỉnh sửa lần cuối bởi AlexF : 21-09-2008 lúc 09:23 AM. Lý do: flash card reader

  9. #9
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    đây là 2 file release mình viết = vc6 và vc8, bạn test thử nhé. mình chạy trên máy mình đều ok.

    Trích dẫn Nguyên bản được gửi bởi MATH-INFO Xem bài viết
    Mình cũng thử code của mèo rồi, cũng không thấy dấu hiệu gì cả...
    Có phải đồng chí Math lại dùng vc8 biên dịch nữa phải ko ? Cái này chỉ chạy trên vc6 thôi, vc8 thì mình chưa thử
    Attached Files Attached Files
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  10. #10
    Ngày gia nhập
    09 2008
    Bài viết
    328

    Có phải đồng chí Math lại dùng vc8 biên dịch nữa phải ko ? Cái này chỉ chạy trên vc6 thôi, vc8 thì mình chưa thử
    mình thử cả 2 file của cậu cũng không được,mình tự dịch cũng không được,để mình thử trên máy của các bạn ,mình vậy

Các đề tài tương tự

  1. Sửa máy tính, cài đặt windows, phần mềm tại nhà nhanh nhất, rẻ nhất, hiệu quả nhất …
    Gửi bởi hopluccc trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 08-07-2013, 02:07 PM
  2. Trả lời: 12
    Bài viết cuối: 25-10-2012, 02:48 AM
  3. Bài tập C++ NHập mảng một chiều gồm n phần tử kết thúc nhập khi nhập một chữ cái
    Gửi bởi thienthanoze trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 15
    Bài viết cuối: 09-07-2012, 10:10 PM
  4. Bài tập C++ Viết phương trình nhập vào 1 chuỗi số.Hãy nhập vào 1 số.Đếm xem có bao nhiêu chữ số bạn vừa nhập
    Gửi bởi namtuocdn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 16-10-2011, 10:39 AM
  5. Bài tập C++ Nhập mảng 1 chiều, nếu phần tử nhập trùng nhau thì bắt nhập lại
    Gửi bởi danielh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 09-07-2011, 03:35 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn