deactivate_{plugin-filename}

deactivate_{plugin-filename} is triggered when a plugin file of that name is activated. Instead of using it directly, use register_activation_hook($file, $function) where $fileis the plugin file (don't hardcode it... use __FILE__) and $function is the function you want to be run on plugin activation.

Context:

File: wp-admin/plugins.php
	} else if ('deactivate' == $_GET['action']) {
		$current = get_settings('active_plugins');
		array_splice($current, array_search( $_GET['plugin'], $current), 1 ); // Array-fu!
		update_option('active_plugins', $current);
		do_action('deactivate_' . trim( $_GET['plugin'] ));
		header('Location: plugins.php?deactivate=true');
	}

This hook provides no parameters. You use this hook by having your function echo output to the browser, or by having it perform background tasks. Your functions shouldn't return, and shouldn't take any parameters

This hook is an action which means that it primarily acts as an event trigger, instead of a content filter. This is a semantic difference, but it will help you to remember what this hook does if you use it like this: add_action('deactivate_{plugin-filename}', 'your_function');

This hook was introduced in WordPress 2.0, and will not work in earlier versions.