|[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]|
Hi, I'm a newbie to MacOs X, MacOS X device driver development and this mailing list. I'm going to write a mass storage device driver for a SCSI disk device, I plan to use the sample driver VendorSpecificType00 as the start point. I've gone through many of documents about driver development such as 'Writing an I/O Kit Device Driver', 'Writing Drivers for Mass Storage Devices', 'Hello I/O Kit: Creating a Device Driver With Xcode' and some others, but I could not find a place talking about driver installation (not the driver deployment). As 'I/O Kit Fundamentals' says, 'The I/O Catalog maintains entries for all available drivers on a system. When a nub discovers a device, it requests a list of all drivers of the devices family from the I/O Catalog.', so in my understanding, driver installation is not just to simply copy .kext to the directory /System/Library/Extensions, OS must know that there is a .kext existing in some directory for a specific device family, this information must be saved in some place. The document 'Hello I/O Kit: Creating a Device Driver With Xcode' talks a little about driver loading, but it doesn't apply to my case. For my storage driver, because there are generic drivers that will always load in its place at boot time. But none of the above documents talk about driver installation. Here is the info.plist I used for my testing: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd"> <plist version="0.9"> <dict> <key>CFBundleDevelopmentRegion</key> <string>English</string> <key>CFBundleExecutable</key> <string>VendorSpecificType00</string> <key>CFBundleIdentifier</key> <string>com.MyCompany.driver.VendorSpecificType00</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundlePackageType</key> <string>KEXT</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> <string>1.0.0</string> <key>IOKitPersonalities</key> <dict> <key>VendorSpecificType00</key> <dict> <key>CFBundleIdentifier</key> <string>com.MyCompany.driver.</string> <key>IOClass</key> <string>com_MyCompany_driver_VendorSpecificType00</string> <key>IOProviderClass</key> <string>IOSCSIPeripheralDeviceNub</string> <key>Peripheral Device Type</key> <integer>0</integer> <key>Product Identification</key> <string>SM/MS/SD</string> <key>Vendor Identification</key> <string>OEI-USB</string> </dict> </dict> <key>OSBundleLibraries</key> <dict> <key>com.apple.iokit.IOSCSIArchitectureModelFamily</key> <string>1.0.0</string> <key>com.apple.iokit.IOSCSIBlockCommandsDevice</key> <string>1.0.0</string> <key>com.apple.iokit.IOStorageFamily</key> <string>1.0.0</string> </dict> <key>OSBundleRequired</key> <string>Local-Root</string> </dict> </plist> Here are my questions: 1. How should I install an I/O kit device driver? Is copying enough? 2. For SCSI device, what are the format of the value of the keys 'Product Identification' and 'Vendor Identification'? In SCSI specification, they are defined as 8 bytes and 16 bytes, but the storage vendors usually don't use all of them, they just use the first several bytes with the remaining bytes filled up with spaces (0x20) . Because of driver installation issue, my work got stuck, so I'm very anxious to get the answers. Could someone give me some light so that I can continue? Any help will be greatly appreciated. Thanks Wenhua _______________________________________________ Do not post admin requests to the list. They will be ignored. Ata-scsi-dev mailing list (email@hidden) Help/Unsubscribe/Update your Subscription: This email sent to email@hidden
Visit the Apple Store online or at retail locations.
Copyright © 2011 Apple Inc. All rights reserved.